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

[复制链接]
10432|28
xiong2088 发表于 2016-4-22 14:02 | 显示全部楼层
我量了一下,原来复位端RST一直是低电平,是不是单片机已经坏了?
xiong2088 发表于 2016-4-22 14:09 | 显示全部楼层
我量了一下,发现复位端RST一直是低电平,单片机是不是已经坏了?
xiong2088 发表于 2016-4-22 14:11 | 显示全部楼层
怎么回复不了呢?
我量了一下,发现复位端RST一直是低电平,是不是单片机已经坏了?
crystal1987 发表于 2016-4-22 14:29 | 显示全部楼层
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);
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就没有问题。
豆腐块 发表于 2016-4-22 21:12 | 显示全部楼层
SWD接口操作成了普通IO了
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
desertsailor 发表于 2016-4-23 12:50 | 显示全部楼层
老生常谈的问题了,要么以后在主程序执行前加适当延时以便复位时有机会进入SWD,要么用串口给烧回来。
liujiahui 发表于 2020-7-20 23:01 | 显示全部楼层
点击下载,按下复位健即可,其他不能代码不能禁止SW的data数据先和CLK时钟线
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部