STM32控制DS-HCHO甲醛传感器

一、环境描述

    主控:STM32F103ZET6

    传感器:DS-HCHO  

    编译环境:keil5

    通信方式:串口4通信

二、传感器描述

    STM32控制DS-HCHO甲醛传感器_第1张图片

 

STM32控制DS-HCHO甲醛传感器_第2张图片

STM32控制DS-HCHO甲醛传感器_第3张图片

STM32控制DS-HCHO甲醛传感器_第4张图片

STM32控制DS-HCHO甲醛传感器_第5张图片

三、关键代码

发送读取指令:

uint16_t  CHOTxBuffer[7]={0x42,0x4d,0x01,0x00,0x00,0x00,0x90};
void HCHO_Tx()
{
int i;
  for(i = 0; i < 7; i++) 
   { 
USART_ClearFlag(UART4,USART_FLAG_TC);
USART_SendData(UART4,CHOTxBuffer[i]);  
while(USART_GetFlagStatus(UART4, USART_FLAG_TC)==RESET);  
   } 

 }

串口中断程序:

void UART4_IRQHandler(void)                
{  
uint8_t st;
    if(USART_GetITStatus(UART4, USART_IT_RXNE) != RESET) //½ÓÊÕÖжÏ
        {  
USART_ClearFlag(UART4,USART_FLAG_RXNE);
/*起始位为0x42*/
st=UART4->DR;
if(UART4Count==0)
{
if(st==0x42)
UART_RX_BUF_4[UART4Count++] = st;
}
if(UART4Count!=0&&st!=0x42)
UART_RX_BUF_4[UART4Count++] =st;
}
if(UART4Count>=10)
{
UART4Count=0;
}     

}   

校验和:

 check_num=UART_RX_BUF_4[0]+UART_RX_BUF_4[1]+UART_RX_BUF_4[2]+UART_RX_BUF_4[3]+UART_RX_BUF_4[4]+UART_RX_BUF_4[5]+UART_RX_BUF_4[6]+UART_RX_BUF_4[7];
num = (((u16)(UART_RX_BUF_4[8]))<<8) + UART_RX_BUF_4[9];
if(UART_RX_BUF_4[0]==0x42&&UART_RX_BUF_4[1]==0x4d)
{
if(UART_RX_BUF_4[3]==0x14)
{
if(check_num==num)
{
CHOData=(((u16)(UART_RX_BUF_4[6]<<8)) |UART_RX_BUF_4[7])/100;

    参考代码下载:

https://download.csdn.net/download/hshiya0412/12505099

你可能感兴趣的:(stm32)