/**
  ******************************************************************************
  *                           硬石YS-F1Pro开发板例程功能说明
  *
  *  例程名称: 1.二氧化碳浓度值读取(串口方式)
  *   
  ******************************************************************************
  * 说明:
  * 本例程配套硬石stm32开发板YS-F1Pro使用。
  * 
  * 淘宝:
  * 论坛:硬石电子社区
  * 版权归硬石嵌入式开发团队所有,请勿商用。
  ******************************************************************************
  */

【1】例程简介
  MH-Z14A二氧化碳气体传感器(以下简称传感器)是一个通用只能小型传感器,利用非色散红外
(NDIR)原理对空气中存在的CO2气体进行探测,具有很好的选择性和无氧气依赖性,寿命长。内
置温度补偿;同时具有数字输出、模拟输出及PWM输出,方便使用。该传感器是将成熟的红外吸收
气体检测技术与精密光路设计、精良电路设计紧密结合而制作出的高性能传感器。
  
【2】跳线帽情况
******* 为保证例程正常运行,必须插入以下跳线帽 **********
丝印编号     IO端口      目标功能引脚        出厂默认设置
  JP1        PA10        TXD(CH340G)          已接入
  JP2        PA9         RXD(CH340G)          已接入
  
  
【3】操作及现象
把3.5寸TFT液晶模组插入开发板中间液晶接口上,使用开发板配套的MINI USB线连接到开发
板标示“调试串口”字样的MIMI USB接口(需要安装驱动),在电脑端打开串口调试助手工
具,设置参数为115200 8-N-1。下载完程序之后,将MH-Z14A模块的串口输出接入USART2的两
个引脚,可以观察到LCD上显示原始9个字节数据和计算得出的二氧化碳浓度值。

 
bsp_usartx.c文件内容
/********************************************************************************* 文件名程: bsp_usartx.c * 作    者: 硬石嵌入式开发团队* 版    本: V1.0* 编写日期: 2015-10-04* 功    能: 二氧化碳模块读取数值(串口方式)******************************************************************************* 说明:* 本例程配套硬石stm32开发板YS-F1Pro使用。* * 淘宝:* 论坛:http://www.ing10bbs.com* 版权归硬石嵌入式开发团队所有,请勿商用。*******************************************************************************//* 包含头文件 ----------------------------------------------------------------*/
#include "usart/bsp_usartx.h"/* 私有类型定义 --------------------------------------------------------------*/
/* 私有宏定义 ----------------------------------------------------------------*/
/* 私有变量 ------------------------------------------------------------------*/
UART_HandleTypeDef husartx;/* 扩展变量 ------------------------------------------------------------------*/
/* 私有函数原形 --------------------------------------------------------------*/
/* 函数体 --------------------------------------------------------------------*/
/*** 函数功能: 串口硬件初始化配置* 输入参数: huart:串口句柄类型指针* 返 回 值: 无* 说    明: 该函数被HAL库内部调用*/
void CO2_GPIO_Init(void)
{GPIO_InitTypeDef GPIO_InitStruct;/* 串口外设时钟使能 */USART_RCC_CLK_ENABLE();USARTx_GPIO_ClK_ENABLE();/* 串口外设功能GPIO配置 */GPIO_InitStruct.Pin = USARTx_Tx_GPIO_PIN;GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;HAL_GPIO_Init(USARTx_Tx_GPIO, &GPIO_InitStruct);GPIO_InitStruct.Pin = USARTx_Rx_GPIO_PIN;GPIO_InitStruct.Mode = GPIO_MODE_INPUT;GPIO_InitStruct.Pull = GPIO_NOPULL;HAL_GPIO_Init(USARTx_Rx_GPIO, &GPIO_InitStruct);}/*** 函数功能: 串口参数配置.* 输入参数: 无* 返 回 值: 无* 说    明:无*/
void MX_USARTx_Init(void)
{CO2_GPIO_Init();husartx.Instance = USARTx;husartx.Init.BaudRate = USARTx_BAUDRATE;husartx.Init.WordLength = UART_WORDLENGTH_8B;husartx.Init.StopBits = UART_STOPBITS_1;husartx.Init.Parity = UART_PARITY_NONE;husartx.Init.Mode = UART_MODE_TX_RX;husartx.Init.HwFlowCtl = UART_HWCONTROL_NONE;husartx.Init.OverSampling = UART_OVERSAMPLING_16;HAL_UART_Init(&husartx);//  /* 配置串口中断并使能,需要放在HAL_UART_Init函数后执行修改才有效 */
//  MX_NVIC_USARTx_Init();
}/******************* (C) COPYRIGHT 2015-2020 硬石嵌入式开发团队 *****END OF FILE****/
main.c文件内容
/********************************************************************************* 文件名程: main.c * 作    者: 硬石嵌入式开发团队* 版    本: V1.0* 编写日期: 2015-10-04* 功    能: 在LCD显示二氧化碳浓度值(串口方式)******************************************************************************* 说明:* 本例程配套硬石stm32开发板YS-F1Pro使用。* * 淘宝:* 论坛:http://www.ing10bbs.com* 版权归硬石嵌入式开发团队所有,请勿商用。*******************************************************************************/
/* 包含头文件 ----------------------------------------------------------------*/
#include "stm32f1xx_hal.h"
#include "usart\bsp_debug_usart.h"
#include "lcd\bsp_lcd.h"
#include "spiflash\bsp_spiflash.h"
#include "usart/bsp_usartx.h"
#include "stdlib.h"/* 私有类型定义 --------------------------------------------------------------*/
/* 私有宏定义 ----------------------------------------------------------------*/
/* 私有变量 ------------------------------------------------------------------*/
uint8_t aTxBuffer[9]={0xFF,0x01,0x86,0x00,0x00,0x00,0x00,0x00,0x79};
uint8_t aRxBuffer[9];/* 扩展变量 ------------------------------------------------------------------*/
/* 私有函数原形 --------------------------------------------------------------*/
/* 函数体 --------------------------------------------------------------------*/
/*** 函数功能: 系统时钟配置* 输入参数: 无* 返 回 值: 无* 说    明: 无*/
void SystemClock_Config(void)
{RCC_OscInitTypeDef RCC_OscInitStruct;RCC_ClkInitTypeDef RCC_ClkInitStruct;RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;  // 外部晶振,8MHzRCC_OscInitStruct.HSEState = RCC_HSE_ON;RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1;RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9;  // 9倍频,得到72MHz主时钟HAL_RCC_OscConfig(&RCC_OscInitStruct);RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;       // 系统时钟:72MHzRCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;              // AHB时钟:72MHzRCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;               // APB1时钟:36MHzRCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;               // APB2时钟:72MHzHAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2);// HAL_RCC_GetHCLKFreq()/1000    1ms中断一次// HAL_RCC_GetHCLKFreq()/100000         10us中断一次// HAL_RCC_GetHCLKFreq()/1000000 1us中断一次HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);  // 配置并启动系统滴答定时器/* 系统滴答定时器时钟源 */HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);/* 系统滴答定时器中断优先级配置 */HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);
}/*** 函数功能: 主函数.* 输入参数: 无* 返 回 值: 无* 说    明: 无*/
int main(void)
{  int i;uint16_t strL;uint32_t lcdid;char str1[50];char str2[50];/* 复位所有外设,初始化Flash接口和系统滴答定时器 */HAL_Init();/* 配置系统时钟 */SystemClock_Config();/* 初始化3.5寸TFT液晶模组,一般优先于调试串口初始化 */lcdid=BSP_LCD_Init(); MX_USARTx_Init();/* 初始化串口并配置串口中断优先级 */MX_DEBUG_USART_Init();MX_SPIFlash_Init();/* 调用格式化输出函数打印输出数据 */printf("LCD ID=0x%08X\n",lcdid);LCD_Clear(0,0,LCD_DEFAULT_WIDTH,LCD_DEFAULT_HEIGTH,BLACK);/* 开背光 */LCD_BK_ON();LCD_DispString_CH(40,100,(uint8_t *)"二氧化碳浓度浓度读取",BLACK,MAGENTA,USB_FONT_24);LCD_DispString_EN_CH(30,158,(uint8_t *)"返回值:Byte0~Byte8",BLACK,LIGHTYELLOW,USB_FONT_24);/* 无限循环 */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];    for(i=0;i<=8;i++){sprintf(str2,"原始数据为:%x",aRxBuffer[i]);       LCD_DispString_EN_CH(30,180+22*i,(uint8_t *)str2,BLACK,LIGHTCYAN,USB_FONT_24);  }sprintf(str1,"二氧化碳浓度为:%d ppm",strL);  LCD_DispString_EN_CH(30,400,(uint8_t *)str1,BLACK,WHITE,USB_FONT_24);  printf("二氧化碳浓度为:%d ppm",strL);HAL_Delay(5000);       }
}/******************* (C) COPYRIGHT 2015-2020 硬石嵌入式开发团队 *****END OF FILE****/

硬石YS-F1Pro开发板HAL库例程持续更新\2. 软件设计之高级裸机例程(HAL库版本)\YSF1_HAL-121. MH-Z14A二氧化碳传感器模块相关推荐

  1. Android常用热门开源库汇总(持续更新)

    原文转载:https://www.yundashi168.com/344.html 请及时关注原文网站,因为后续持续更新都在原网站更新.请多多点赞和关注. 前言 收集了一些比较常见的开源库,特此记录( ...

  2. 自己总结的 iOS ,Mac 开源项目以及库,知识点------持续更新

    自己在 git  上看到一个非常好的总结的东西,但是呢, fork  了几次,就是 fork  不到我的 git 上,干脆复制进去,但是,也是认真去每一个每一个去认真看了,并且也是补充了一些,感觉非常 ...

  3. 信贷风控知识问答库(持续更新)

    原文链接:信贷风控知识问答库(持续更新 写了几篇关于风控求职或者从业的文章,吸引了不少同学的关注,也吊足了一些伙伴的胃口,为解答常见疑惑,现贴一个持续更新的风控问答链接:<信贷风控知识问答库&g ...

  4. 香橙派(Orange Pi)树莓派开发板USBCAN适配器usb转can调试软件使用教程

    一.硬件准备 1.windows7电脑*1 2.Orange Pi zero开发板*1(可以不带显示设备,六叶树的USBCAN调试软件可以使用远程桌面) 硬件要求很低,不需要显示屏,相当于只要手里有1 ...

  5. 龙芯2K1000开发板资料1.2版更新了

    叮,今日更新已送达. 本次指南更新新增了pmon下操作GPIO章节和pmon下Ejtag使用章节,感兴趣的快来看看吧~ 更新重点 1.新增了9.6 pmon下操作GPIO章节 2.新增了9.7 pmo ...

  6. 基于Basys2开发板的简易电子琴和音乐播放器设计

    背景:华中科技大学 电测综合实验 主要功能:Basys2开发板外接一个扬声器(或无源蜂鸣器也可)实现电子琴和音乐播放器的功能.其中由于开发板上只有4个按键,所以电子琴功能只做了4个音调,分别对应于4个 ...

  7. python开发题库-进阶(持续更新2020-3-18)

    文章目录 1.网络相关 01 IP地址的正则 03 三次握手四次挥手全过程 为什么握手不是三次或者两次 04 使用python打开百度页面 05 进程 线程 协程 06 IO多路复用 07 TCP和U ...

  8. 自动驾驶面试题汇总(2022秋招题库)——持续更新

    这份面试题整理自12家大厂的2022年秋招面试题.题目基本涵盖了自动驾驶和机器人定位方向的主要知识点,包括惯性导航.点云.状态估计.CV/VIO.C++等部分. 建议大家先自己答题,再对照参考答案~( ...

  9. 前端开发技术栈(插件篇):400+常用前端开发插件总结清单(持续更新......)

    常用前端开发插件总结清单,日常前端开发的时候,尤其在使用一些常用的功能的时候,例如:表单,,动画效果,时间选择,文件上传,下拉框等功能.直接用插件可以让自己节省更多的开发时间,更多的去关心业务,自己封 ...

最新文章

  1. 2022-2028年中国六氟化硫行业市场研究及前瞻分析报告
  2. easyui combobox设置只读属性
  3. rails.vim环境安装(ubuntu)
  4. jquery 找不到live方法解决
  5. ubuntu连不上wifi解决办法
  6. Crowdin 使用指南
  7. 顶尖中文大学计算机专业课程体系
  8. 【只推荐一位】推荐一位资深Python爱好者,现任世界500强架构师
  9. 使用 SqlDependency 对象缓存数据以提高性能
  10. Qt添加qrc文件_添加pri文件_添加预编译头文件
  11. H3C 无线控制器+瘦ap 配置
  12. 免苹果开发者账号申请iOS上架及证书打包ipa测试(2022最新详解)
  13. 我是不是该安静的走开
  14. 商城尺码选择效果 jquery
  15. 微信小程序wx.createInnerAudioContext使用方法
  16. peewee和peewee_async常用汇总(持续更新)
  17. 浏览器标签中显示京东logo
  18. 易点易动助力企业固定资产信息化管理
  19. 改版后的PMP值得考吗?
  20. git 本地回退到某个版本

热门文章

  1. 无刷直流电机(BLDC)无传感器控制,采用的是容积卡尔曼观测,能够很好的估计转速和转子位置,有对应的simulink文件跟ckf代码
  2. HTML:Input元素标签的详细介绍
  3. 【已解决】‘node‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件 / 全新安装node
  4. 2012.07.11
  5. git入门(msysgit安装)
  6. MinGW下载与配置
  7. Huawei LiteOS
  8. 测试的价值不仅仅是找
  9. ubuntu14安装TOOL工具
  10. 基于android开发的简易五子棋游戏(附带学习源码)