STM32F103RBT6,焊了好几块,都出现各别IO不好使.

2020-01-01 17:33发布

STM32F103RBT6,焊了好几块,都出现各别IO不好使. ,经过检查,发现有不能用的IO有规律,就是JTAG的PA13,14,15,PB3,4不能正常工作,当所有IO驱动LED闪烁时,就这几个管脚不能正常使驱动LED闪烁,要么不亮,要么有微光不闪。 而且USB接口也不能用!? 这是怎么回事!!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
15条回答
xinshui
1楼-- · 2020-01-02 06:36
void GPIO_OutPPConfig(void)
{
  GPIO_InitTypeDef GPIO_InitStructure;

        /* Enable all GPIOs Clock*/
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_ALLGPIO, ENABLE);
       
        // 库函数方式禁止JTAG
        GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);                    // 改变指定管脚的映射,JTAG-DP禁用,SW-DP使能
        // 寄存器方式禁止JTAG
        //AFIO->MAPR &= 0xfaffffff;                                                                                                                                                        // 重映射JTAG的JTDO,JNTRST

        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_13 | GPIO_Pin_14 ;       
  GPIO_InitStructure.GPIO_Mode =        GPIO_Mode_Out_PP;        // GPIO_Mode_IN_FLOATING;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;       
  GPIO_Init(GPIOA, &GPIO_InitStructure);                                                 // Some GPIOA pins are used for JTAG and USB
       
  /* Configure all GPIO port pins in Analog Input mode (floating input trigger OFF) */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
  GPIO_InitStructure.GPIO_Mode =        GPIO_Mode_Out_PP;        // GPIO_Mode_IN_FLOATING;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOB, &GPIO_InitStructure);
  GPIO_Init(GPIOC, &GPIO_InitStructure);
  GPIO_Init(GPIOD, &GPIO_InitStructure);
  //GPIO_Init(GPIOE, &GPIO_InitStructure);

}

加了重映射函数,但是仍仍然不能使用JTAG的GPIO口  

些贴和我遇到的问题一样。
http://www.amobbs.com/thread-5414690-1-1.html
xinshui
2楼-- · 2020-01-02 10:08
本帖最后由 xinshui 于 2012-11-17 19:06 编辑

少了一个个语句
         //AFIO时钟
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
        GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);             // 改变指定管脚的映射 GPIO_Remap_SWJ_Disable SWJ 完全禁用(JTAG+SW-DP)
        // GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE);        // 改变指定管脚的映射 GPIO_Remap_SWJ_JTAGDisable ,JTAG-DP 禁用 + SW-DP 使能       

这样就好了
mcuprogram
3楼-- · 2020-01-02 13:26
xinshui 发表于 2012-11-17 19:03
少了一个个语句
         //AFIO时钟
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);

重新上电复位也不可以吗??????????
234918154
4楼-- · 2020-01-02 18:11
遇到了相同的问题,学习!
jianfengxixi
5楼-- · 2020-01-02 20:00
 精彩回答 2  元偷偷看……
cvi670
6楼-- · 2020-01-02 23:36
xinshui 发表于 2012-11-17 19:03
少了一个个语句
         //AFIO时钟
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);

为什么开启   之后SWD仿真不能用了啊  

一周热门 更多>