前言
新手使用STM32CubeMX要注意的坑,而且还是巨坑
接下来我讲讲我遇到的,大家参考一下,以免掉坑里浪费时间
我在用STM32CubeMX生成代码时,没有在SYS中将Debug那一项配置成Serial Wire,则在生成代码时就会在stm32f1xx_hal_msp.c这个文件中产生一个函数__HAL_AFIO_REMAP_SWJ_DISABLE(),这个函数在我将这个代码烧入单片机后强行锁住,之后下载器再也搜索不到单片机(在魔术棒设置里),情况如下,后面我会说明解决办法。
void HAL_MspInit(void)
{
/* USER CODE BEGIN MspInit 0 */
/* USER CODE END MspInit 0 */
__HAL_RCC_AFIO_CLK_ENABLE();
__HAL_RCC_PWR_CLK_ENABLE();
/* System interrupt init*/
/** NOJTAG: JTAG-DP Disabled and SW-DP Enabled
*/
__HAL_AFIO_REMAP_SWJ_DISABLE(); //就是这个函数,会锁柱单片机
/* USER CODE BEGIN MspInit 1 */
/* USER CODE END MspInit 1 */
}
STM32CubeMX配置及正确程序:
配置正确后正确程序如下:
void HAL_MspInit(void)
{
/* USER CODE BEGIN MspInit 0 */
/* USER CODE END MspInit 0 */
__HAL_RCC_AFIO_CLK_ENABLE();
__HAL_RCC_PWR_CLK_ENABLE();
/* System interrupt init*/
/** NOJTAG: JTAG-DP Disabled and SW-DP Enabled
*/
__HAL_AFIO_REMAP_SWJ_NOJTAG();
/* USER CODE BEGIN MspInit 1 */
/* USER CODE END MspInit 1 */
}
即使你已经将单片机锁住了,没关系啊,下面是解决办法
解决办法
首先要在单片机板子上将BOOT0置1,即将这个引脚手动接到3.3V,BOOT1置0。然后通过串口下载将程序下载到单片机,注意!!!这里的程序是指你在STM32CubeMX上重新配置好SYS(Debug那一栏选择Serial Wire,前面已经说明)所生成的代码。在将程序通过串口下载烧进去后,再将BOOT0置0,手动复位后,程序已经能够运行了,这时你在MDK上通过下载器也能搜索到单片机。YES,it’s over
这里提一嘴,串口下载程序自己查找,度娘上很多方法。
结果如下:
希望这个解答能帮助到大家,遇到问题解决问题