以中断的形式解析灯的open,close

以中断的形式解析灯的open,close
一.接收数据寄存器的中断1.1 对于USART1的初始化1.1.1 开时钟USART1是挂载在APB2下面的外设GPIOA是挂载在APB1下面的外设先打开两个外设的时钟1.1.2 配置GPIOUSART1的收发引脚默认设在在PA9和PA10上面将PA9引脚配置为复用推挽输出--------USART1_TX发送TX是单片机向外发送电平需要主动输出高/低电平复用AF:让引脚输出电平由USART外设控制器控制而非手动控制ODR寄存器PA10配置为复用输入---------------------USART1_RX(接收)RX是单片机读取外部发出的电平只收不发设置为输入复用AF输入:开启复用之后引脚电平直接送入USART接收移位寄存器硬件自动采样串口波形这两个引脚是复用功能引脚不做普通的GPIO要交给串口外设控制1.1.3 配置usart1的参数参数说明①波特率串口通信速率115200是调试最常用的值收发双发波特率必须完全一致②收发模式|按位或同时开启接收 Rx和发送 Tx双工模式只发就只写Tx只收只写Rx。1.1.4 串口中断配置NVIC:Cortex-M4内核内置的中断控制器管理所有外设中断USART1_IRQnUSART1专属中断号对应中断服务函数void USART1_IRQHandler(void)。1.1.5 中断函数二.问题最开始写中断函数的时候并没有对\r的情况考虑到在串口调试助手的设置中对于换行符有三种类型①\r\n②\r③\n2.1问题发现在排除代码逻辑没有问题之后调试过程中当通过串口调试助手给USART外设发送数据引起中断的时候一直没有通过发送open或者close完成对于灯开关的控制。后面才发现是由于串口调试助手的设置当把换行符设置为“\r\n”的时候如果没有对于\r这种情况进行判断每次在buffer数组里面就会多一个\r会导致当在串口调试助手输入open的时候buffer数组此时是open\r始终不会和open匹配上close原理同上。当在我的中断函数里面对于\r这种情况进行判断之后就可以使用中断的方式完成对于灯open和close的解析了