STM32 除了GPIO_Remap设置SWD口使能外还有那些地方可能会导致芯片无法下载?

2019-08-14 07:34发布

最近移植论坛大神 @Badu_Space 的usb转串口用在自己大项目上,我只是原来工程的基础上把LCD显示部分删除,编辑后通过串口调试软件监控到usb串口通信成功了。调试期间MDK下用仿真和flashdownload都没问题,但后来不知道为什么boot0接GND的情况下只能下载一次程序,如果同一芯片不更改boot0再次下载就显示“* JLink Info: Found SWD-DP with ID 0x1BA01477 **JLink Warning: CPU core not found.***JLink Error: Wrong AHB ID (15:3). Expected 0x04770001 (Mask 0x0FFFFFCF), Found 0xF0000001”
只有把boot0 上拉到VCC下载玩程序在下拉到GND运行,boot0 接地时仿真下载都无法运行了。这个是什么原因呢?因为不是在开发板上运行,boot0很难改设置,要飞线。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
正点原子
1楼-- · 2019-08-14 09:04
PA13,PA14,一定不能作为他用.
你检查这两个IO,有没有被其他外设使用,就知道了.
ArchiChain
2楼-- · 2019-08-14 10:31
回复【2楼】正点原子:
---------------------------------
我自己没有使用或者定义PA13 14
我发现原工程注销LCD_Init() 就会导致只能下载一次程序,但LCD_Init()里面 LCD_RST_BL_Init()只涉及到GPIOB,另外一个是STM32_FSMC_Init(); 好像也没涉及到GPIOA,我注销掉LCD_Init() ,自己写初始化函数:
SystemInit();
RCC_GetClocksFreq(&RCC_ClockFreq);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOB , ENABLE);
  GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);
设置GPIO还是只能下载一次程序。
ArchiChain
3楼-- · 2019-08-14 11:31
 精彩回答 2  元偷偷看……
正点原子
4楼-- · 2019-08-14 17:30
回复【3楼】ArchiChain:
---------------------------------
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);
你这句话就把JTAG和SWD都枪毙了.
ArchiChain
5楼-- · 2019-08-14 17:37
回复【5楼】正点原子:
---------------------------------
这个不是   JTAG-DP 禁用 + SW-DP 使能吗?我一直这么设置都没事?全毙的是GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);?
正点原子
6楼-- · 2019-08-14 20:55
回复【6楼】ArchiChain:
---------------------------------
不是吧,你试试去掉这句吧。

一周热门 更多>