单片机学习小组
直播中

万物死

8年用户 1283经验值
擅长:MEMS/传感技术
私信 关注

怎样去解决HAL库外部中断的程序出bug的问题呢

为什么HAL库外部中断的程序在测试时会出bug呢?
怎样去解决HAL库外部中断的程序出bug的问题呢?

回帖(1)

傅利

2022-1-20 09:10:16
正文

今天测试HAL库的外部中断的时候发现程序出了一点小bug,就想下载之前的固件库程序对比一下。可是当下载之前完整的程序时弹出no target connected。如图


一直很奇怪魔法棒的配置没有问题,也在设备管理器上看到了ST-Link已连接。程序都是之前的程序,没有任何问题。但是Debug的SWDIO里面一直显示No target connected。想了一会儿应该是之前下载了HAL库的程序有问题,在网上搜找了许多资料,最后判定为之前的程序占用了SWD的引脚,导致现在固件库的程序一直下载不进去。那只能把之前的程序都删除了,但是单纯按复位键是不能清除之前的程序,这让我想起来了ST公司的ST-LINK Utility这个软件可以强制擦除扇区。于是使用Utility先连接device,之后擦除,再断开连接

STM32 ST-LINK Utility这个软件工具其实主要就是配套“ST-LINK”这个下载工具一起使用的上位机软件。因此使用STM32 ST-LINK Utility上位机软件需要有一个ST-LINK工具才行。它的功能和J-Link对应的工具类似,用于烧写代码。
STM32 ST-LINK Utility工具在产品开发过程中测试一些其他版本的代码,可以直接下载hex,而不用打开工程再编译去下载。 当你开发完一个STM32产品,需要量产的时候,就可以用这个工具直接下载hex代码,对代码加密(读保护)
这里我把最新版本直接上传到CSDN,链接在文首,就不必去ST官网注册下载了。
擦除完毕之后,再下载固件库之前的程序就没有报错!
但是,这里问题还没有结束!!!第一次下载没有任何问题,但是!第二次下载程序就会出现这种报错

这个时候打开魔术棒,依次打开Debug->Settings->Flash Download->Erase full chip,选择它即可

此时第二次下载就没有问题了。
下面再说说unknow target connected的问题,实际上很简单,当我下载完固件库的程序后再下载CubeMX生成的时候,它默认接的是JTAG模式,此时把它改成SW下载模式就没有问题啦!

此外报错应该还有其他的原因,这里只是列举了我恰好遇到的一种,其他报错就需要小伙伴们耐心地一点去寻找了。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分