傳感器: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[] = ;
}
}
}
}