二氧化碳传感器MH-Z19/STM32串口测试代码
串口调试
简介
单片机源程序如下:
- #include "sys.h"
- #include "delay.h"
- #include "usart.h"
- #include "led.h"
- int CO2Data;
- u8 USART1Count;
- //定义串口发送命令
- uint16_t CO2TxBuffer[9]={0xFF,0x01,0x86,0x00,0x00,0x00,0x00,0x00,0x79};
- uint16_t USART_RX_BUF_2[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
- /*******************************************************************************
- * 函 数 名 : CO2_Tx
- * 函数功能 : 串口发送
- * 输 入 : 无
- * 输 出 : 无
- *******************************************************************************/
- void CO2_Tx()
- {
- int i;
- for(i = 0; i < 9; i++)
- {
- USART_ClearFlag(USART1, USART_FLAG_TC);
- USART_SendData(USART1, CO2TxBuffer[i]);
- while(USART_GetFlagStatus(USART1, USART_FLAG_TC)==RESET);
- }
- }
- /*******************************************************************************
- * 函 数 名 : CheckSum
- * 函数功能 : 校验和函数
- * 输 入 : 无
- * 输 出 : 无
- *******************************************************************************/
- void CheckSum()
- {
- char i,checksum=0;
- for( i = 1; i < 8; i++)
- {
- checksum += USART_RX_BUF_2[i];
- }
- checksum = 0xff - checksum;
- checksum += 1;
- if(checksum == USART_RX_BUF_2[8])
- CO2Data = USART_RX_BUF_2[2] * 256 + USART_RX_BUF_2[3];
- if(CO2Data > 9999)
- CO2Data=0;
- printf("CO2浓度= %d ppm \n", CO2Data);
- }
- /*******************************************************************************
- * 函 数 名 : main
- * 函数功能 : 主函数
- * 输 入 : 无
- * 输 出 : 无
- *******************************************************************************/
- int main(void)
- {
- delay_init(); //延时函数初始化
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
- LED_Init();
- USART1_Init(9600);//串口1初始化,与传感器的通信波特率固定位9600
- while(1)
- {
- CO2_Tx();
- delay_ms(1000);// 间隔一毫秒进行一次命令发送
- CheckSum();
- }
- }
- /*******************************************************************************
- * 函 数 名 : USART1_IRQHandler
- * 函数功能 : 串口通信中断函数
- * 输 入 : 无
- * 输 出 : 无
- *******************************************************************************/
- void USART1_IRQHandler(void)
- {
- if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
- {
- USART_ClearFlag(USART1 , USART_FLAG_RXNE);
- USART_RX_BUF_2[USART1Count++] = USART1->DR;
- }
- if(USART1Count>=9)
- {
- USART1Count=0;
- }
- }
复制代码
所有资料51hei提供下载:
二氧化碳传感器MH-Z19代码.7z
(179.83 KB, 下载次数: 181)
|