|
本帖最后由 slotg 于 2019-2-19 23:52 编辑 测试过 SPI 之后接下来的目标是想熟悉一下 UART 的功能,由于 STM8S001J3 已经摸索了一段时间了,因此有了一个想法就是想改用 STM8L,让 STM8L001J3 与 STM8L050J3 之间透过 UART 的方式互传资料,由于我是使用库函数的方式编写程序,因此直觉上认为 STM8S 与 STM8L 的库函数使用方式应该是相同的,我下载了库 en.stsw-stm8016.zip,新建了一个 STM8L001J3 的工程文件,参考了 【STM8-SO8】01-点灯 的工程文件修改差异之后重新编译后竟然出现了错误!" p; e( l9 f/ M 8 B& z4 C: v, }# z4 p. l2 f3 n
哦!怎么会有错误呢?查看了库函数说明文件才知道我目前使用的这个 STM8L 库跟原本使用的 STM8S 库 en.stsw-stm8069.zip 是有点不一样的!除了文字会有大小写差异之外,库函数也不是完全相同的。7 N+ t, q) w6 e/ x. X \ 比如说对于 GPIO 引脚的指定,原本是:; J9 S9 V# S6 f #define LED3_GPIO_PINS (GPIO_PIN_5) + |* B0 n- V2 m4 A( {- W6 O/ u 而现在是: #define LED3_GPIO_PINS (GPIO_Pin_5)/ X4 |- _9 f0 \$ Z( x6 s. k 原本是:7 P; A* ?/ O2 q8 T9 B# N/ p+ o# E GPIO_Init(LED3_GPIO_PORT, (GPIO_Pin_TypeDef)LED3_GPIO_PINS, GPIO_MODE_OUT_PP_LOW_FAST); 8 y5 \8 h W3 b& l 现在是: GPIO_Init(LED3_GPIO_PORT, (GPIO_Pin_TypeDef)LED3_GPIO_PINS, GPIO_Mode_Out_PP_Low_Fast);3 k3 V: y# G% a# N p1 s& z7 E* D. z+ m 在 STM8S 库里使用了 GPIO_WriteReverse() 函数反转 GPIO 的输出状态,而这个函数在 STM8L 库里是没有的,因此改用了 GPIO_ToggleBits() 实现相同的功能。 ; {1 F' i& [6 z3 n main 回圈:
不太能够理解同样是 STM8 的 MCU 怎么库函数会不一样呢?是不同的库由不同的团队开发,而大家的编程习惯不一样所产生的差异吗? ( }- r. q9 w2 T$ R0 M4 s, A # b9 J0 O$ T) s; a) I 源代码:8 R7 @3 |* H: o2 v k. Z
B10.rar
(1.12 MB, 下载次数: 94)
|
STM8自学笔记(推荐STM8很好的入门电子书)
无刷直流电机控制应用+基于STM8S系列单片机---电子书
【精华资料】STM8Sxx固件库FOR IAR
基于STM8的DALI (数字可寻址调光协议)
分享STM8 风驰光盘的资料,是完整的(包括原理图+例程+PDF注释)
《无刷直流电机控制应用 基于STM8S系列单片机》
STM8S库函数中文参考 小软件
【资料分享】STM8L的智能手持血糖监测设备的源码
基于STM8S207工程模板
【培训资料】STM8系列PPT培训资料
微信公众号
手机版
程序中我没有使用到 pin1 的功能(SWIM),因此没有加上5秒的延时。