在工程设计的时候,使用了48脚的STM32F103C8T6,引脚数量不够,导致使用了PB3,PB4,PA15,按标准GPIO配置完毕后发现不受控。
查找相关资料发现,这三个脚的功能时JTAG功能。用这几个脚时,需要禁用JTAG功能开启SWD功能,并且要对引脚功能进行REMAP。
以PB3为例(其他引脚同理):
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO,ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);//禁用JTAG功能,开启SWD
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3; //选择端口号(0~15或all)
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //选择IO接口工作方式 //浮空输入
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //设置IO接口速度(2/10/50MHz)
GPIO_Init(GPIOB,&GPIO_InitStructure);