高中生
最后登录1970-1-1
在线时间 小时
注册时间2017-4-20
|
楼主 |
发表于 2017-4-21 18:05:49
|
显示全部楼层
- void CO_USART_IRQHandler(void) //串口2中断服务函数
- {
- uint8_t Res; //用来暂存接收到的数据
- uint8_t USART_RX_BUF[9]; //用来保存接受到的数据
- static char USART_RX_STA=0,start=0; //标志符
-
- if(USART_GetITStatus(CO_USARTx,USART_IT_RXNE)!=RESET) //接收中断
- {
- Res = USART_ReceiveData(CO_USARTx); //读取接收的数据
-
- if(Res == 0XFF) //判断首位OXFF
- {
- USART_RX_STA = 0; //数组从0开始保存数据
- start = 1;
- }
-
- if(start == 1) //确定读到了首位0XFF
- {
- USART_RX_BUF[USART_RX_STA] = Res; //开始保存数据
- USART_RX_STA++;
-
- if(USART_RX_STA >=9 && USART_RX_BUF[1] == 0X04) //判断全部读取完
- {
- printf("CO浓度:%d\n",(USART_RX_BUF[4]*256+USART_RX_BUF[5])*0.1); //串口1 打印浓度值
- start = 0; //重新开始接收
- USART_RX_STA = 0;
- USART_RX_BUF[0] = 0;
- }
- }
-
- }
- }
复制代码 |
|