stm32学习笔记---串口中断

 

 



//中断初始化
void uart1_NVIC_init(void)
{
    NVIC_InitTypeDef NVIC_InitStruct;
    
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);  //中断分组
    
    NVIC_InitStruct.NVIC_IRQChannel      = USART1_IRQn;  
    NVIC_InitStruct.NVIC_IRQChannelCmd   = ENABLE;
    NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority  = 1;
    NVIC_InitStruct.NVIC_IRQChannelSubPriority   = 6;
    
    NVIC_Init(&NVIC_InitStruct);
}

在user下找到此文件

unsigned char CMD = 0;
void USART1_IRQHandler(void)
{

    if(USART_GetITStatus(USART1, USART_IT_RXNE) == SET)
    {
     
        USART_ClearITPendingBit(USART1, USART_IT_RXNE);
        CMD = USART1->DR; 
    
        switch(CMD)
        {
            case '1':
                led_control(LED_ALL,LED_OFF);
                led_control(LED_RED,LED_ON);
                uart1_putc(CMD);  
                break;
            case '2':
                led_control(LED_ALL,LED_OFF);   
                led_control(LED_GREEN,LED_ON);
                uart1_putc(CMD);
                break;
            case '3':
                led_control(LED_ALL,LED_OFF);
                led_control(LED_BLUE,LED_ON);
                uart1_putc(CMD);  
                break;
        }
    

        CMD = 0;
    }


}

猜你喜欢

转载自blog.csdn.net/weixin_42471952/article/details/81173732