本帖最后由 TLLED 于 2019-1-29 16:37 编辑 一、使用STM8SCubeMx软件配置串口引脚。' f1 d d0 \ i3 x; G 测试UART串口功能,使用STM8CubeMx 软件来配置STM8S001引脚:3 Q2 z7 q. M5 M, I+ T" K+ F 使用PA3引脚,在程序上配置PA3引脚作为UART口,对应的硬件电路图/ f2 m1 r: l# [. Y" U) J4 I' |( E ( Q E/ G0 Y# o e4 u. u' V5 p2 J 二、程序部分: 8 ^+ u. s% S6 @: f4 P& |) L) [& ` 2.1、主程序:, z" p) |+ Q. T2 g 我设置串口为半双工通信 / L9 r2 K; z' p" ~; O3 ]$ h' ~) K; Q 2.2、串口部分: M/ X- l8 [) m6 w. S7 V" ^& E1 { 由于程序执行结果不理想,程序源码就不上传啦。3 s+ g7 c; }) p) ]2 E; [: u 8 _6 ~1 p+ a% s, ? 三、执行结果:) E% Y6 B& c% a i, w) U4 { 在PA3脚上没有输出串口信号,到是在STM8S001的PIN8引脚(SWIM)输出串口信号,使用USB-TTL模块输出数据 输出数据和波特率正确,引脚不对。查找资料修改程序,重新下载时悲剧发生了,程序下载不进去。使用STVP软件擦除芯片时,软件提示报错,检测不到芯片了,芯片被锁。, t" E( s& g7 N+ ` 5 X0 @* B. ^% u# f# c9 \+ L 分析出错原因: STM8S001芯片没有外部RST引脚,只有一根SWIM引脚,我这个程序串口在SWIM引脚上输出数据,并且速度很快,ST-LINK检测过程中,没有能检测到SWIM引脚的正确回复,导致检测芯片失败。/ g) O& @: C: w3 ]5 M4 C4 v ; h) C+ M5 M: F; E |$ O+ P$ Y* r5 A STM8S001手册中有关SWIM引脚的使用介绍:8 @6 G8 V, }& w% F 简单翻译下:6 ]" A! _3 q; s% U7 W5 m 由于此设备上没有NRST 引脚,如果SWIM引脚需要与I/O引脚功能一起使用,建议在使用SWIM函数更改引脚的功能之前,在固件中添加一个~5秒的延迟。此操作允许用户在设备电源打开后将设备设置为SWIM模式,并能够对设备进行重新编程。如果在设备复位后立即将具有SWIM功能的引脚设置为I/O模式,则设备无法通过SWIM界面连接,将被永久锁定。这个初始延迟可以在最终代码中删除。. `* P* I/ i' N+ V) ` S 如果应用程序不能接受初始延迟,可以选择固件在特定条件下重新启用SWIM功能,例如在固件启动或应用程序运行期间。一旦完成这个过程,SWIM接口就可以用于设备调试/编程。 # U( r, h. t$ C6 I! Y/ L 3 ^2 H5 |9 y8 D; r 通过手册介绍的SWIM引脚的使用,确定我这个芯片寿命已经终止,无法在继续使用了。 希望大家使用这个芯片时注意下SWIM引脚,要不就锁死啦。上面理解的有什么不对的地方,望大家批评指正,共同学习。4 c# s" K- L% `! n, H+ A ! L, Z0 o7 ]6 X+ _) Y ; Y3 W6 H7 Y. i$ ^, ?; K7 g9 V / G4 A4 L. M- v" X $ e/ u& P) l/ J3 h# C& d |