前言
在调试自己做的STM8S003F3P6实验板,已经调试几天了,都正常。
今天要调试一下串口1,写了测试程序。编译完,不能单步调试。
打开前几天写好能用的测试工程,也不能单步调试。
弹框后,在IAR提示区显示如下信息:
Sat Oct 03, 2020 12:56:59: Failed to set configuration with MCU name STM8S003F3: SWIM error [30006]: Comm init error: chip does not answer
因为我板子可能是有问题(MAX3485那块没验证呢,但是采用的成熟电路),但是不出在MCU这块,SWIM通讯是最基本的,要不咋玩啊。
去网上查这个报错(SWIM error [30006]), 有人说到要用STVP先搞一下MCU.
这个板子打样回来后,第一次使用时,确实用 “ST Visual Programmer”和MCU通讯后,才能单步调试。
又用“ST Visual Programmer”和MCU通讯了一次,将代码区擦掉,将编译好的hex也能烧录到MCU.
将缓冲区清成0,读回MCU代码区的内容,也能看到是烧入的编好的HEX内容。
然后再用自己当前的测试程序单步调试,就正常了。
估计可能是IAR和MCU通讯时的实现有bug, 导致MCU不响应调试命令。
为啥用STVP就行呢,这可能是ST没有将全部通讯协议告诉IAR厂家吧。或者IAR对通讯协议运用的细节和ST原厂不一样(e.g. 执行B指令之前,必须要先执行A指令之类的)。