最近在用STM32CubeMX配置STM32芯片,可以配置时钟,管脚,SPI串口等.免去了复杂的计算过程,不用记各种功能寄存器,相当的方便.用过的都说好,强烈推荐大家一试
但刀太锋利了用不熟练也容易误伤.在分配IO口功能的过程中,忘记了SWD的口线的事情,把SWD口给占用了.生成代码下进开发板后无法再下程序了.
弹出对话框提示 No Cortex-M SW Device Found.
状态栏提示:
* JLink Info: STM32 (connect): Can not attach to CPU. Trying connect under reset.
* JLink Info: STM32 (connect): Can not attach to CPU. Trying connect under reset.
***JLink Error: STM32: Connecting to CPU via connect under reset failed.
Error: Flash Download failed - Target DLL has been cancelled
Flash Load finished at 10:35:27
上网查询后找到解决方法,BOOT0接高电平,可以把BOOT0短接到VCC,然后按Reset按钮或者短接NRST对地短接一下.然后就可以用SWD正常下载正确程序了.stm32cubemx更改配置重新生成代码后别忘了在KEIL中重新编译.
stm32cubemx中的debug选项默认不管是可以下载的,但如果将相应口线配置成其他功能,将无法使用调试功能,建议在配置的时候选择为 serial wire,并配置SWD口线,避免以后疏忽大意挪作他用.
BOOT0接高电平,BOOT1接低电平状态下复位芯片,可以从系统存储器启动BootLoader将程序下载到系统的Flash中。程序下载完成后,需要将BOOT0设置为低电平,手动复位芯片,这样STM32才可以从Flash中正常启动.
(1) 用户闪存 : 正常的工作模式。STM32内置的Flash,一般我们使用JTAG或者SWD模式下载程序时,就是下载到这个里面,重启后也直接从这启动程序。
(2)SRAM: 芯片内置的RAM区, 就是内存,既然是SRAM,自然也就没有程序存储的能力了,这个模式一般用于程序调试。
(3)系统存储器: 系统存储器是芯片内部一块特定的区域,STM32厂家在这个区域内部预置了一段BootLoader,也就是我们常说的ISP程序,这是一块只读ROM存储器,出厂后无法修改。选用这种模式启动,可以从串口下载程序,因为厂家提供的BootLoader提供了串口下载程序的固件,可以通过这个BootLoader将程序下载到系统的Flash中。