天天看點

STM32序列槽擷取氨氣傳感器資料

傳感器:ZE03電化學模組 NH3 (0-100ppm)

同上篇關于STM32序列槽接收雷射粉塵傳感器的博文差不多,因為該傳感器提供了序列槽輸出資料,其他配置可以和粉塵傳感器一樣不變,主要修改序列槽中斷函數即可

void USART2_IRQHandler(void)                    //序列槽2中斷服務程式(氨氣濃度測量)
    {
    u8 Res;
    static char i=, start=;
    if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET)  //接收中斷
        {

            Res =USART_ReceiveData(USART2); //讀取接收到的資料

            if(Res == ) //如果接收的第一位資料是0XFF(這個是檢視傳感器的手冊得知的)
            {
                USART_RX_STA = ;     //讓數組索引值從0開始
                start = ;  //這個變量是來确定第二位是否接收到了0X86(檢視手冊)
            }

            if(start == )
            {
                USART_RX_BUF[USART_RX_STA] = Res ; //把接收到的資料存到數組裡面
                USART_RX_STA++;
                if(USART_RX_STA >=  && (USART_RX_BUF[]==))
                    {
                        printf("氨氣濃度:%d\n",USART_RX_BUF[]*+USART_RX_BUF[]);
                        start  = ;
                        USART_RX_STA=;//重新開始接收   
                        USART_RX_BUF[] = ;
                    }
                }                   
        }
  } 
           

繼續閱讀