STM32H750芯片通过JTAG烧录一次程序后,就连接不到芯片
我的问题是这样的:我使用STM32CubeMX配置的工程,第一次用JTAG可以连接到芯片,但当程序下载完成后,就再也连接不到芯片了,这是什么原因?我已经在GPIO初始化中,人工增加了以下代码:GPIO_InitStruct.Pin = GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
GPIO_InitStruct.Alternate = GPIO_AF0_SWJ;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
GPIO_InitStruct.Pin = GPIO_PIN_3|GPIO_PIN_4;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
GPIO_InitStruct.Alternate = GPIO_AF0_SWJ;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
但是还是有同样问题。(我外部晶振是接24MHZ,程序配置成480Mhz运行)
看我的配置管脚图的话,我感觉我写了初始化代码是对的,然后我感觉是否是STM32CubeMX配置的漏洞?
PA13、PA14是SDW下载接口,楼主将其挪作它用,当然下一次就无法下载了。使用ST-LINK Utility工具全片删除,并把这2口修改成用其他口代替。 一般情况是JTAG(SWD)口被关了。 我也遇到过,开始学习STM32F103时不小心将JTAG关闭了,开始还以为系统板坏了,重新买了一块最小系统板,同样是无法烧录第二次,最后发帖求助才明白是关闭了JTAG。 啊,当您用 cubeMX 选上 SYS 的Debug 为 Serial Wire时【JTAG 打开 啊】 ,
没注意到 PA13、PA14是SDW下载接口 变绿色了? 把JATG上的复位引脚也一起用来烧录吧。ST-link也是一样的。你在程序里修改了下载引脚的功能,不能被识别很正常。也很简单,在系统复位阶段,这两个引脚还是可以作烧录用,所以用复位脚一起,烧录的时候,会自动先发复位信号,然后就可以正常烧录了。 JTAG接口被禁用了 进入BOOT模式可以解决重新下载程序的问题。 GPIO_InitStruct.Pin = GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
GPIO_InitStruct.Alternate = GPIO_AF0_SWJ;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
不是很理解,我以上代码,不就是定义PA13和PA14复用为JTAG么? GPIO_InitStruct.Pin = GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
GPIO_InitStruct.Alternate = GPIO_AF0_SWJ;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
我以上定义,不就是复定义PA13和PA14为JTAG么? 不知道哪里不对了?