STM32F407单片机读写 MH-Z14A二氧化碳传感器模块并串口输出软件DEMO例程源码,可做为你的学习设计参考。
int main(void)
{
uint32_t strL;
/* 复位所有外设,初始化Flash接口和系统滴答定时器 */
HAL_Init();
/* 配置系统时钟 */
SystemClock_Config();
/* 初始化串口并配置串口中断优先级 */
MX_DEBUG_USART_Init();
MX_USARTx_Init();
HMI_USARTx_Init();
/* 无限循环 */
while (1)
{
/* 发送读取数值指令 */
if(HAL_UART_Transmit(&husartx,&aTxBuffer[0],9,0xFFFF)==HAL_OK)
/* 读取返回值 */
HAL_UART_Receive(&husartx,&aRxBuffer[0],9,0xFFFF);
/* 计算气体浓度值 */
strL=aRxBuffer[2]*256+aRxBuffer[3];
HMI_value_setting("page1.t1.txt",aRxBuffer[0]);
HMI_value_setting("page1.t7.txt",aRxBuffer[1]);
HMI_value_setting("page1.t9.txt",aRxBuffer[2]);
HMI_value_setting("page1.t11.txt",aRxBuffer[3]);
HMI_value_setting("page1.t13.txt",aRxBuffer[4]);
HMI_value_setting("page1.t15.txt",aRxBuffer[5]);
HMI_value_setting("page1.t17.txt",aRxBuffer[6]);
HMI_value_setting("page1.t19.txt",aRxBuffer[7]);
HMI_value_setting("page1.t21.txt",aRxBuffer[8]);
HMI_string_setting("page1.t3.txt",strL);
printf("二氧化碳浓度为:%d ppm\n",strL);
HAL_Delay(5000);
}
}
/**
* 函数功能: 向串口屏发送数据
* 输入参数: 无
* 返 回 值: 无
* 说 明: 无
*/
void HMI_value_setting(const char *val_str,uint32_t value)
{
uint8_t tmp_str[30]={0};
uint8_t i;
sprintf((char *)tmp_str,"%s=\"%x\"",val_str,value);
for(i=0;iDR=tmp_str[i];
while(__HAL_UART_GET_FLAG(&husartx_HMI, UART_FLAG_TXE) == RESET);
}
HMI_USARTx->DR=0xFF;
while(__HAL_UART_GET_FLAG(&husartx_HMI, UART_FLAG_TXE) == RESET);
HMI_USARTx->DR=0xFF;
while(__HAL_UART_GET_FLAG(&husartx_HMI, UART_FLAG_TXE) == RESET);
HMI_USARTx->DR=0xFF;
while(__HAL_UART_GET_FLAG(&husartx_HMI, UART_FLAG_TXE) == RESET);
}
/**
* 函数功能: 向串口屏发送数据
* 输入参数: 无
* 返 回 值: 无
* 说 明: 无
*/
void HMI_string_setting(const char *val_str,int32_t value)
{
uint8_t tmp_str[50]={0};
uint8_t i;
sprintf((char *)tmp_