完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
刚接触STM32F407, 在下载和在线调试阶段碰到了问题,请求帮助,具体如下: 1、第一次烧写很顺利,程序烧写进去,好像也可以进行在线调试; 2、第二次烧写时就不能烧写进去,提示“No Cortex-M SW device found”. 经过寻求帮助得以解决,方法如下: (1)B0拉高,按一下复位按钮;(2)B0拉低, 点击烧写,即可烧写进去。 原因可能是SWDIO和SWDCLK被设置为IO口了, 但是我下载一个什么都没有的空程序若不按照上面的方法也是 写不进去。即使成功下载了,按下KEIL的仿真按钮,也是提示:No Cortex-M SW device found”。 说明SWD和芯片的链接又断开了。 3、有成功使用SWD+JLINK进行仿真的麻烦帮助下,谢谢。 |
|
相关推荐
16个回答
|
|
原因就是SWDIO和SWDCLK被设置为IO口。库函数里面应该有,设置一下就可以了。
|
|
|
|
我也设置了,但是没有起作用,不知道是不是代码写的不对,请看如下: RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);//使能PA的时钟 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13|GPIO_Pin_14; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//复用功能 GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//弱上拉 GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化 GPIO_PinAFConfig(GPIOA,GPIO_PinSource13,GPIO_AF_SWJ); //复用 GPIO_PinAFConfig(GPIOA,GPIO_PinSource14,GPIO_AF_SWJ); //复用 |
|
|
|
前面的GPIO设置错误,应该不需要,或者设置成输入高阻模式。你试一试。
|
|
|
|
默认是开启的,楼主不要对这两个引脚丛操作即可。
|
|
|
|
我把main里的东西全部删除,烧写进去,然后点仿真按钮也是不行的,提示 no cortex-m sw device found |
|
|
|
改了如下代码,也不行 GPIO_InitTypeDef GPIO_InitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);//ʹÄÜGPIOAʱÖÓ //GPIOFB3,4,5³õʼ»¯ÉèÖà GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13|GPIO_Pin_14;//PA13~14¸´Óù¦ÄÜÊä³ö GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//¸´Óù¦ÄÜ GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;// GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;// GPIO_Init(GPIOA, &GPIO_InitStructure);//³õʼ»¯ GPIO_PinAFConfig(GPIOA,GPIO_PinSource13,GPIO_AF_SWJ); //PA13¸´Óà GPIO_PinAFConfig(GPIOA,GPIO_PinSource14,GPIO_AF_SWJ); //PA14¸´Ó |
|
|
|
不要对这两个引脚进行初始化设置,进入boot模式。重新烧写程序,再测试。
|
|
|
|
dsdaiztt 发表于 2019-1-2 06:30 最后面的两行remap设置,需要打开remap的时钟,F103是这样的: RCC->APB2ENR |= RCC_APB2ENR_AFIOEN; F407的,你要查一查。 |
|
|
|
后面的两行可能不对,我F103是设置寄存器,而不是设置GPIO,像这样: RCC->APB2ENR |= RCC_APB2ENR_AFIOEN; AFIO->MAPR |= AFIO_MAPR_SWJ_CFG_ENABLE; |
|
|
|
谢谢各位指点,看来一下子 我还搞不好了,再慢慢看下。
|
|
|
|
dsdaiztt 发表于 2019-1-2 06:30 楼主应该把PA13,PA14的初始化修改成其他GPIO口后再下载就可以了。 |
|
|
|
PA13,PA14,根本不需要编程的改变的,按缺省的就行了。现在这种情况就麻烦了,你需要用串口1和改变BOOT0引脚的电平,才能把程序重新刷进去,祝你好运。
|
|
|
|
本帖最后由 toofree 于 2018-7-17 23:46 编辑
第一次能烧,以后不能烧的话,八成是SWD或JTAG的管脚被REMAP成普通IO了。 有没有引出USART1、USART3,这两个口都可以做为ISP串口。可以用ISP把Flash擦除,然后重新烧一个正常的程序。 在ISP的时候需要将BOOT0拉高,在正常下载的时候不需要将BOOT0拉高,你拉高后,反而不一定能下载成功。 如果你的SWD接了复位信号RESET的话,应该也是可以下载的;如果JTAG方式的话,RESET更是接了的。 种种猜测,你用的是4线SWD,没有接RESET。 |
|
|
|
SWDIO和SWDCLK设置成IO口,在线仿真是不行了,直接下载板子测试。
|
|
|
|
应该就是楼上说的GPIO设置问题
|
|
|
|
总结: 1、谢谢热心的朋友;
2、问题原因找到, 是因为外部晶振给的25MHz,内部系统时钟配置没动(开发板的原理图),导致超出ARM的时钟; 3、用JLINK仿真也成功了。时钟正常这个仿真器也可以找到ARM芯片了. |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
2255 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
2071 浏览 3 评论
4687 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
2215 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
2757 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-27 06:51 , Processed in 0.977219 second(s), Total 103, Slave 87 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号