串口配置的一般步骤
① 串口时钟使能,GPIO时钟使能:RCC_ APB2PeriphClockCmd();
串口复位:USART_ Delnit(); (这一步不是必须的)
③ GPIO端口模式设置:GPIO_ Init();模式设置为GPIO _Mode _AF_ PP
④串口参数初始化:USART _Init();
⑤开启中断并且初始化NVIC(如果需要开启中断才需要这个步骤)
USART _ITConig();
⑥使能串口:USART _Cmd();
⑦编写中断处理函数:USART_xIRQHandler();
void USART _SendData(); (发送数据到串口,DR)
uint16 _tUSART ReceiveData(); (接受数据,从DR读取接受到的数据)
FlaqStatus USART _GetFlagStatus(USART_TypeDef USARTx ,uint16_tUSART _FLAG);
void USART_Init(); (串口初始化:波特率,数据字长,奇偶校验,硬件流控以及收发 )
void USART_Cmd; (使能串口)
void USART _ITConfig(); (使能相关中断)
void USART _SendData(); (发送数据到串口,DR)
uint16_t USART_ ReceiveData(); (接受数据,从DR读取接受到的数据)
FlagStatus USART _GetFlagStatus(); (获取状态标志位 )
void USART _ClearFlag(); (清除状态标志位)
ITStatus USART _GetlTStatus(); (获取中断状态标志位)
void USART ClearTPendingBit(); (清除中断状态标志位)

(1)初始化1O口为输入
GPIO Init();
(2)开启1O口复用时钟
RCC_ APB2PeriphClockCmd(RCC _APB2Periph _AFIO,ENABLE);
(4)初始化线上中断,设置触发条件等
(5)配置中断分组(NVIC),并使能中断
(6)编写中断服务函数
EXTIX _IRQHandler();
EXTI _ClearlTPendingBit();


首先调用 KEY_Init 函数,来初始化外部中断输入的 IO 口,接着 调RCC_APB2PeriphClockCmd()函数来使能复用功能时钟。接着配置中断线和 GPIO 的映射 关系,然后初始化中断线。需要说明的是因为我们的 WK_UP 按键是高电平有效的,而 KEY0 和 KEY1 是低电平有效的,所以我们设置 WK_UP 为上升沿触发中断,而 KEY0 和 KEY1 则设 置为下降沿触发。这里我们把所有中断分配到第二组,把按键的抢占优先级设置成一样,而子优先级不同,这三个按键,KEY1 的优先级最高。
