在编写STM32F103C8T6程序时,发现RGB灯始终无法被点亮,经测量,这3个引脚始终为高电平且无法被拉低。
经查阅资料发现,PA13、PA14、PA15、PB3、PB4在复位的时候这几个引脚被作为JTAG的功能。当我们要使用这些引脚作为普通的I/O时必须进行引脚的功能复用。
void LED_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO | LED_R_CLK | LED_G_CLK | LED_B_CLK, ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE); //对三个引脚进行重映射
GPIO_SetBits(LED_R_PORT,LED_R_PIN);
GPIO_SetBits(LED_G_PORT,LED_G_PIN);
GPIO_SetBits(LED_B_PORT,LED_B_PIN); //关
GPIO_InitStructure.GPIO_Pin = LED_R_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(LED_R_PORT, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = LED_G_PIN;
GPIO_Init(LED_G_PORT, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = LED_B_PIN;
GPIO_Init(LED_B_PORT, &GPIO_InitStructure);
}