硬石YS-F1Pro开发板HAL库例程持续更新\2. 软件设计之高级裸机例程(HAL库版本)\YSF1_HAL-121. MH-Z14A二氧化碳传感器模块
/**
******************************************************************************
* 硬石YS-F1Pro开发板例程功能说明
*
* 例程名称: 1.二氧化碳浓度值读取(串口方式)
*
******************************************************************************
* 说明:
* 本例程配套硬石stm32开发板YS-F1Pro使用。
*
* 淘宝:
* 论坛:硬石电子社区
* 版权归硬石嵌入式开发团队所有,请勿商用。
******************************************************************************
*/
【1】例程简介 |
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二氧化碳传感器模块相关推荐
- Android常用热门开源库汇总(持续更新)
原文转载:https://www.yundashi168.com/344.html 请及时关注原文网站,因为后续持续更新都在原网站更新.请多多点赞和关注. 前言 收集了一些比较常见的开源库,特此记录( ...
- 自己总结的 iOS ,Mac 开源项目以及库,知识点------持续更新
自己在 git 上看到一个非常好的总结的东西,但是呢, fork 了几次,就是 fork 不到我的 git 上,干脆复制进去,但是,也是认真去每一个每一个去认真看了,并且也是补充了一些,感觉非常 ...
- 信贷风控知识问答库(持续更新)
原文链接:信贷风控知识问答库(持续更新 写了几篇关于风控求职或者从业的文章,吸引了不少同学的关注,也吊足了一些伙伴的胃口,为解答常见疑惑,现贴一个持续更新的风控问答链接:<信贷风控知识问答库&g ...
- 香橙派(Orange Pi)树莓派开发板USBCAN适配器usb转can调试软件使用教程
一.硬件准备 1.windows7电脑*1 2.Orange Pi zero开发板*1(可以不带显示设备,六叶树的USBCAN调试软件可以使用远程桌面) 硬件要求很低,不需要显示屏,相当于只要手里有1 ...
- 龙芯2K1000开发板资料1.2版更新了
叮,今日更新已送达. 本次指南更新新增了pmon下操作GPIO章节和pmon下Ejtag使用章节,感兴趣的快来看看吧~ 更新重点 1.新增了9.6 pmon下操作GPIO章节 2.新增了9.7 pmo ...
- 基于Basys2开发板的简易电子琴和音乐播放器设计
背景:华中科技大学 电测综合实验 主要功能:Basys2开发板外接一个扬声器(或无源蜂鸣器也可)实现电子琴和音乐播放器的功能.其中由于开发板上只有4个按键,所以电子琴功能只做了4个音调,分别对应于4个 ...
- python开发题库-进阶(持续更新2020-3-18)
文章目录 1.网络相关 01 IP地址的正则 03 三次握手四次挥手全过程 为什么握手不是三次或者两次 04 使用python打开百度页面 05 进程 线程 协程 06 IO多路复用 07 TCP和U ...
- 自动驾驶面试题汇总(2022秋招题库)——持续更新
这份面试题整理自12家大厂的2022年秋招面试题.题目基本涵盖了自动驾驶和机器人定位方向的主要知识点,包括惯性导航.点云.状态估计.CV/VIO.C++等部分. 建议大家先自己答题,再对照参考答案~( ...
- 前端开发技术栈(插件篇):400+常用前端开发插件总结清单(持续更新......)
常用前端开发插件总结清单,日常前端开发的时候,尤其在使用一些常用的功能的时候,例如:表单,,动画效果,时间选择,文件上传,下拉框等功能.直接用插件可以让自己节省更多的开发时间,更多的去关心业务,自己封 ...
最新文章
- 2022-2028年中国六氟化硫行业市场研究及前瞻分析报告
- easyui combobox设置只读属性
- rails.vim环境安装(ubuntu)
- jquery 找不到live方法解决
- ubuntu连不上wifi解决办法
- Crowdin 使用指南
- 顶尖中文大学计算机专业课程体系
- 【只推荐一位】推荐一位资深Python爱好者,现任世界500强架构师
- 使用 SqlDependency 对象缓存数据以提高性能
- Qt添加qrc文件_添加pri文件_添加预编译头文件
- H3C 无线控制器+瘦ap 配置
- 免苹果开发者账号申请iOS上架及证书打包ipa测试(2022最新详解)
- 我是不是该安静的走开
- 商城尺码选择效果 jquery
- 微信小程序wx.createInnerAudioContext使用方法
- peewee和peewee_async常用汇总(持续更新)
- 浏览器标签中显示京东logo
- 易点易动助力企业固定资产信息化管理
- 改版后的PMP值得考吗?
- git 本地回退到某个版本