本帖最后由 slotg 于 2019-2-19 23:52 编辑 ( K5 k3 [1 W. s, L" Q, i6 V & H; d$ R% F6 G+ I* q; c, S 测试过 SPI 之后接下来的目标是想熟悉一下 UART 的功能,由于 STM8S001J3 已经摸索了一段时间了,因此有了一个想法就是想改用 STM8L,让 STM8L001J3 与 STM8L050J3 之间透过 UART 的方式互传资料,由于我是使用库函数的方式编写程序,因此直觉上认为 STM8S 与 STM8L 的库函数使用方式应该是相同的,我下载了库 en.stsw-stm8016.zip,新建了一个 STM8L001J3 的工程文件,参考了 【STM8-SO8】01-点灯 的工程文件修改差异之后重新编译后竟然出现了错误! + Q6 I; U3 q5 V( n 5 C& }& Q3 J7 e! Q4 G6 [9 U! i 哦!怎么会有错误呢?查看了库函数说明文件才知道我目前使用的这个 STM8L 库跟原本使用的 STM8S 库 en.stsw-stm8069.zip 是有点不一样的!除了文字会有大小写差异之外,库函数也不是完全相同的。; N! b) U4 D3 O 比如说对于 GPIO 引脚的指定,原本是: #define LED3_GPIO_PINS (GPIO_PIN_5) . [' u- J. g6 y- B/ p1 w 而现在是: #define LED3_GPIO_PINS (GPIO_Pin_5) 原本是:7 j7 G8 ^. s; O* S, }! S GPIO_Init(LED3_GPIO_PORT, (GPIO_Pin_TypeDef)LED3_GPIO_PINS, GPIO_MODE_OUT_PP_LOW_FAST); " {/ R& u# Q1 m* w9 d7 `! `- u 现在是:$ e+ K$ q5 X6 ~& Q GPIO_Init(LED3_GPIO_PORT, (GPIO_Pin_TypeDef)LED3_GPIO_PINS, GPIO_Mode_Out_PP_Low_Fast);. S U, w& L" f" x1 T 在 STM8S 库里使用了 GPIO_WriteReverse() 函数反转 GPIO 的输出状态,而这个函数在 STM8L 库里是没有的,因此改用了 GPIO_ToggleBits() 实现相同的功能。/ @8 ~# R! T+ x7 g + e0 l7 V/ K. ? `( { main 回圈:4 N' s3 v0 {7 D5 j6 g
不太能够理解同样是 STM8 的 MCU 怎么库函数会不一样呢?是不同的库由不同的团队开发,而大家的编程习惯不一样所产生的差异吗?" | `0 C- c |9 M4 ^ 8 Q& e* |: @0 \; }7 O ; D! W+ N+ c2 @% c7 a0 H 源代码:7 u* s+ g$ }% E: C6 G4 @4 r' [' u. g |
程序中我没有使用到 pin1 的功能(SWIM),因此没有加上5秒的延时。