发新帖我要提问
12
返回列表
打印
[STM32F1]

SWD下载,第一次可以,第二次就不行了,什么原因?

[复制链接]
楼主: yaoyutaoTom
手机看帖
扫描二维码
随时随地手机跟帖
21
xiong2088| | 2016-4-22 14:02 | 只看该作者 回帖奖励 |倒序浏览
我量了一下,原来复位端RST一直是低电平,是不是单片机已经坏了?

使用特权

评论回复
22
xiong2088| | 2016-4-22 14:09 | 只看该作者
我量了一下,发现复位端RST一直是低电平,单片机是不是已经坏了?

使用特权

评论回复
23
xiong2088| | 2016-4-22 14:11 | 只看该作者
怎么回复不了呢?
我量了一下,发现复位端RST一直是低电平,是不是单片机已经坏了?

使用特权

评论回复
24
crystal1987| | 2016-4-22 14:29 | 只看该作者
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);

使用特权

评论回复
25
xiong2088| | 2016-4-22 15:34 | 只看该作者
本帖最后由 xiong2088 于 2016-4-22 15:35 编辑
crystal1987 发表于 2016-4-22 14:29
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);

默认JTAG和SWD都是开启的,我可以不管它啊,JTAG的引脚我也没使用,没有必要关掉JTAG,启用SWD吧。

而我在正点原子的开发板上用SWD就没有问题。

使用特权

评论回复
26
豆腐块| | 2016-4-22 21:12 | 只看该作者
SWD接口操作成了普通IO了

使用特权

评论回复
27
xiong2088| | 2016-4-23 10:27 | 只看该作者
本帖最后由 xiong2088 于 2016-4-23 10:30 编辑

我没有操作SWD的IO,也没有操作JTAG的IO,也没有操作BOOT1,GPIO的初始化很简单,如下:
void Gpio_Init(void)
{
                        RCC->APB2ENR |= 1<<2;    //使能A口时钟
                        RCC->APB2ENR |= 1<<3;    //使能B口时钟
                        
                        
        
                                GPIOA->CRL &= 0xffff0fff;     //PA3推挽输出(通过一个1k的电阻接了LED。)
                                GPIOA->CRL |= 0x00003000;
//                                GPIOA->CRH &= 0xfff00fff;
//                                GPIOA->CRH |= 0x000b8000;    //CAN_RX(PA11)ÉÏÀ­ÊäÈë CAN_TX(PA12)¸´ÓÃÍÆÍìÊä³ö
                                GPIOA->ODR |= 1<<3;          //PA3输出高(LED熄灭)
//                                GPIOA->ODR |= 1<<11;
//                        GPIOA->ODR |= 0x8fff;        //1000 1111 1111 1111
        
//                        RCC->APB2ENR |= 1<<0;           //¿ªÆôAFIOʱÖÓ
//                        AFIO->MAPR&=0XF8FFFFFF;
//                        AFIO->MAPR |= 1<<25;                                        //JTAG½ûÖ¹£¬SWDʹÄÜ
        
//                                GPIOB->CRL &= 0xf0ffffff;
//                                GPIOB->CRL |= 0x03000000;      //PB6ÍÆÍìÊä³ö
//                                GPIOB->CRH &= 0xfffffff0;      //PB8ÍÆÍìÊä³ö
//                                GPIOB->CRH |= 0x00000003;
//                                GPIOB->ODR |= 1<<14;
//                        GPIOB->ODR = 0xfc9f;          //1111 1100 1001 1011

使用特权

评论回复
28
desertsailor| | 2016-4-23 12:50 | 只看该作者
老生常谈的问题了,要么以后在主程序执行前加适当延时以便复位时有机会进入SWD,要么用串口给烧回来。

使用特权

评论回复
29
liujiahui| | 2020-7-20 23:01 | 只看该作者
点击下载,按下复位健即可,其他不能代码不能禁止SW的data数据先和CLK时钟线

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则