美文网首页我爱编程
STM32F407串口中断服务程序

STM32F407串口中断服务程序

作者: yuanliangx | 来源:发表于2017-12-19 09:52 被阅读0次

  在对串口进行配置时首先需要对对应的引脚进行端口复用映射,因为STM32一个端口有多个用处,另外即使对于同一个功能,也可以用不同的引脚进行实现,所以在使用串口前需要先对引脚进行端口复用映射,对应API接口为

GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_USART1);  //GPIOA9复用USART1

注意,第二个参数GPIO_PinSource9区别去端口I/O配置时的GPIO_Pin9

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10; //选择GPIOA9和GPIOA10

  以下为串口中断服务程序

//串口中断服务程序
void USART1_IRQHandler(void)  
{
    u8 rec_data;
    if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) {//接收中断
        rec_data =(u8)USART_ReceiveData(USART1);  //读取接收到的数据       
        if(rec_data=='S'){                        //接收到S
            uart_byte_count=0x01; 
        }else if(rec_data=='E'){       //接收到E
            if(strcmp("Light_led1",(char *)receive_str)==0)           
                               LED1=0;
            else if(strcmp("Close_led1",(char *)receive_str)==0)   
                               LED1=1;  
        else if(strcmp("Open_beep",(char *)receive_str)==0)    
                        BEEP=1;     
        else if(strcmp("Close_beep",(char *)receive_str)==0)   
                        BEEP=0;                 
        for(uart_byte_count=0;uart_byte_count<32;uart_byte_count++)
               receive_str[uart_byte_count]=0x00;
        uart_byte_count=0;    
    }else if((uart_byte_count>0)&&(uart_byte_count<=USART1_REC_NUM)){       //接收到数据
        receive_str[uart_byte_count-1]=rec_data;
        uart_byte_count++;
    }                        
   } 
} 

  从以上程序可以看出,串口在接收和发送数据的时候是按照位来发送的,例如通过串口工具发送数据“SLight_LED1E”,则串口中断服务程序首先受到字符S,判断是数据起始位置,然后开始接收指令数据,最后接收到字符E代表接收数据终止,进而处理数据。
  串口通信中的数据都是通过位来发送和接收的。

相关文章

  • STM32F407串口中断服务程序

      在对串口进行配置时首先需要对对应的引脚进行端口复用映射,因为STM32一个端口有多个用处,另外即使对于同一个功...

  • 灵动微MM32F003硬件最小系统 --- 串口循环发送,中断接

    本例程为中断服务程序接收串口数据,当缓存达到10个字节后,利用循环发送接收到的10个字节数据。 1 中断服务程序 ...

  • 51单片机采用中断进行串口通信

    51单片机采用中断方式的串口通信过程及程序分析: 所谓中断方式,就是串口收/发标志位出发中断后,在中断中执行既定操...

  • 灵动微MM32F003硬件最小系统 --- 串口中断服务程序验证

    本例程示范了利用串口中断服务程序进行串口数据的接受与发送。从电脑接收数据,当接收到\n字符后,将接收的所有数据,通...

  • 12/20

    stm32f407接收串口数据 : void UART1_config(void) { GPIO_InitType...

  • 9.22

    今天上午主要讲的是在串口中加中断设置,然后编写程序,用串口中断控制LED灯、蜂鸣器,这个是今天的主要任务,后来老师...

  • 12/19

    stm32f407串口通信: void UART1_config(void) { GPIO_InitTypeDef...

  • Arduino 中断

    中断介绍 “中断”顾名思义就是中断Arduino当前正在处理的事情而优先去执行中断服务程序。当中断服务程序完成以后...

  • 2018-08-31 uart通信

    usart通信 第一步 串口通行设置 中断服务函数 最终实现功能: 是在串口助手上获取数据打印数据。

  • kernel 中断

    中断# 中断分 向量中断 和 非向量中断## 向量中断由硬件提供中断服务程序入口地址 非向量中断由软件提供中断服务...

网友评论

    本文标题:STM32F407串口中断服务程序

    本文链接:https://www.haomeiwen.com/subject/ujqbwxtx.html