本帖最后由 TLLED 于 2019-1-29 16:37 编辑 1 S- |5 [+ {6 L1 u7 M) p# F b2 ^ 一、使用STM8SCubeMx软件配置串口引脚。 测试UART串口功能,使用STM8CubeMx 软件来配置STM8S001引脚:1 k! {" A0 O; G9 W/ v 使用PA3引脚,在程序上配置PA3引脚作为UART口,对应的硬件电路图 二、程序部分:3 O2 i1 ]. u4 H, ~* N 2.1、主程序:5 o6 A" o+ F* U: a" Y 我设置串口为半双工通信6 C- l" ]- G- n 2.2、串口部分 由于程序执行结果不理想,程序源码就不上传啦。0 K4 o# m- w6 S/ e, L 5 S3 v1 f; Y; A0 U' F" e* U- Z) C 三、执行结果:& I; I; L. T* d1 ^" ]/ q6 z 在PA3脚上没有输出串口信号,到是在STM8S001的PIN8引脚(SWIM)输出串口信号,使用USB-TTL模块输出数据+ c5 s3 k2 P$ [2 W+ ?( o 输出数据和波特率正确,引脚不对。查找资料修改程序,重新下载时悲剧发生了,程序下载不进去。使用STVP软件擦除芯片时,软件提示报错,检测不到芯片了,芯片被锁。 分析出错原因: STM8S001芯片没有外部RST引脚,只有一根SWIM引脚,我这个程序串口在SWIM引脚上输出数据,并且速度很快,ST-LINK检测过程中,没有能检测到SWIM引脚的正确回复,导致检测芯片失败。! N& {5 i& M5 k( t; q; Q4 s STM8S001手册中有关SWIM引脚的使用介绍: ) w, H* W1 z" [+ S' n) | 简单翻译下:( Y+ Z" o6 Q8 M! i/ \" g# ]; I 由于此设备上没有NRST 引脚,如果SWIM引脚需要与I/O引脚功能一起使用,建议在使用SWIM函数更改引脚的功能之前,在固件中添加一个~5秒的延迟。此操作允许用户在设备电源打开后将设备设置为SWIM模式,并能够对设备进行重新编程。如果在设备复位后立即将具有SWIM功能的引脚设置为I/O模式,则设备无法通过SWIM界面连接,将被永久锁定。这个初始延迟可以在最终代码中删除。8 C+ P0 v7 W9 W" P0 {9 g3 s) h 如果应用程序不能接受初始延迟,可以选择固件在特定条件下重新启用SWIM功能,例如在固件启动或应用程序运行期间。一旦完成这个过程,SWIM接口就可以用于设备调试/编程。 8 h& U6 b5 O( }- @- D% t ; q% e. g. A8 k& y 通过手册介绍的SWIM引脚的使用,确定我这个芯片寿命已经终止,无法在继续使用了。- v) h1 W. W3 f$ G 希望大家使用这个芯片时注意下SWIM引脚,要不就锁死啦。上面理解的有什么不对的地方,望大家批评指正,共同学习。 . c. [5 [ C# P1 y; R 3 K5 W2 S2 w, L# s . } V4 |+ G8 H4 m& Q 8 w9 C! K: k# q: D T6 r$ S Q1 {" O( q9 b1 q; b6 b |