STM32+HAL库实现外部脉冲计数
创作时间:
作者:
@小白创作中心
STM32+HAL库实现外部脉冲计数
引用
CSDN
1.
https://blog.csdn.net/weixin_66509332/article/details/141867081
本文将介绍如何使用STM32G0B1RET6开发板和HAL库实现外部脉冲计数功能。通过配置通用定时器TIM2,结合串口输出,可以实时监测外部脉冲信号的计数值。
硬件与软件环境
- 硬件开发板:STM32G0B1RET6
- 软件平台:Cubemx + Keil + VScode
1. 新建Cubemx工程
1.1 配置系统时钟RCC
1.2 配置定时器
选择通用定时器TIM2,时钟源选择ETR2(外部触发输入),对应的输入端口为PA0引脚。预分频系数设置为0,重装载值选择默认最大值以避免溢出。
1.3 配置信号输出端口
选择PA1引脚作为信号输出端口,设置为输出模式(GPIO_Output),自定义标签为OUT_SIGN,其他设置保持默认。
1.4 配置串口
配置串口用于输出计数结果。在Keil的魔术棒界面开启微库。
2. 代码实现
2.1 printf重定向
在usart.h中引用必要的头文件和函数声明:
#include "stdio.h"
int fputc(int ch,FILE *f);
在usart.c中实现printf重定向:
// 重定向printf
int fputc(int ch,FILE *f)
{
uint8_t temp[1]={ch};
HAL_UART_Transmit(&huart2,temp,1,2);
return ch;
}
2.2 main函数
int main(void)
{
/* USER CODE BEGIN 1 */
uint32_t count;
/* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* USER CODE BEGIN Init */
/* USER CODE END Init */
/* Configure the system clock */
SystemClock_Config();
/* USER CODE BEGIN SysInit */
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_TIM2_Init();
MX_USART2_UART_Init();
/* USER CODE BEGIN 2 */
HAL_TIM_Base_Start(&htim2); /* 开启定时器2,用于外部计数 */
printf("TIMER IS OK!\n");
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
HAL_GPIO_TogglePin(OUT_SIGN_GPIO_Port,OUT_SIGN_Pin); /* 每隔500ms翻转一次LED */
HAL_Delay(500);
count=__HAL_TIM_GET_COUNTER(&htim2); /* 读取计数值 */
printf("计数值:%d\n",count); /* 输出结果 */
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}
3. 实验现象
使用杜邦线连接PA0和PA1引脚,观察串口输出结果。预期现象是串口会持续输出计数值,每当外部脉冲信号触发时,计数值会相应增加。
注意事项
- 确保外部脉冲信号正确连接到PA0引脚
- 串口输出需要在PC端使用串口助手软件进行监控
- 代码中未包含错误处理,实际应用中需要添加相应的异常处理机制
本文介绍了如何使用STM32G0B1RET6开发板和HAL库实现外部脉冲计数功能。通过配置通用定时器TIM2,结合串口输出,可以实时监测外部脉冲信号的计数值。希望对从事嵌入式开发的读者有所帮助。
热门推荐
脑出血后血压管理
如何在VUCA时代有效地建立和管理敏捷组织?
硅、碳化硅与氮化镓材料的结构及特性对比
八字命理中的“羊刃”:定义、查法与影响
退市的股票怎么处理?退市股票还能重新上市吗?
TPE颜色是不是每次都要调?
2025冥想-探索灵性和内心力量
忘记密码时如何快速打开行李箱?三种实用方法帮你轻松应对
原神芙闲体系配队攻略:芙宁娜与闲云的完美搭配
墨尔本机场有哪些
专利申请初步审查:内容、标准与常见问题解答
怎么熟悉excel基础公式
Socket与TCP/IP协议详解:从基础概念到编程实践
日式烧烤技巧:从食材选择到烧烤守则的全面指南
品非遗、见生活、跨越"江湖山海",来东莞感受"沉浸式"体验游
螺纹钢期货价格影响因素及供需关系解析
关于电子大小的讨论
建立长久感情联系的五个建议
世界八大奇迹:人类文明的巅峰之作
杜仲叶产业:创新传统与现代连接让非遗焕发独特魅力
密封胶和玻璃胶的区别及密封胶的种类介绍
如何区分数据库和数据表
小彩站传递大爱心 福彩站点成了劳务工人的“休息驿站”
基督教的起源、发展及其核心信仰
南宁德天瀑布一日游攻略
美国学校升学制度的全貌是什么
修高速公路占地怎样才算合理赔偿
宠物到家,快速训练指南!
樱桃汁的健康益处与营养成分分析:从选购到保存的全面指南
银发族网上冲浪?“银发经济”新型互联网产品场景