当前位置: 首页 > article >正文

【STM32+HAL库】---- 通用定时器实现外部脉冲计数

硬件开发板:STM32G0B1RET6
软件平台:cubemax+keil+VScode

1 新建cubemax工程

1.1 配置系统时钟RCC

image

1.2 配置定时器

选择通用定时器TIM2,时钟源选择ETR2,对应的输入端口为PA0引脚,预分频系数为0,重装载值选择默认最大值,避免溢出
image

1.3 配置信号输出端口

选择PA1引脚作为信号输出端口,选择输出模式GPIO_Output,自定义标签为OUT_SIGN,其他设置默认即可
image

1.4 配置串口

image

并在keil中的魔术棒界面开启微库
image

2 代码

2.1 printf重定向

usart.h引用头文件和函数声明

#include "stdio.h"

int fputc(int ch,FILE *f);

usart.c中重定向

//重定向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 实验现象

用杜邦线连接PA0PA1引脚,观察串口输出结果
image


http://www.kler.cn/a/289673.html

相关文章:

  • 淘宝代购系统;海外代购系统;代购程序,代购系统源码PHP前端源码
  • 【自用】0-1背包问题与完全背包问题的Java实现
  • 字节跳动Android面试题汇总及参考答案(80+面试题,持续更新)
  • YUM 的使用
  • learn-F12 Performance(性能)前端性能分析(LCP,CLS,INP)
  • 自动驾驶3D目标检测综述(一)
  • 力扣45-跳跃游戏II (java详细题解)
  • 图文解析保姆级教程: IDEA里面创建SpringBoot工程、SpringBoot项目的运行和测试、实现浏览器返回字符串
  • git查看代码提交记录
  • 【C++题解】1002 - 编程求解1+2+3+...+n
  • 【系统架构设计师】论文:论面向服务的架构设计及其应用
  • Vue3其他Api
  • 2024.9.3 Python,二分查找解决在D天内送达包裹的能力,dfs二叉树的层平均值,动态规划二分查找贪心算法解决最长增长子序列和马戏团人塔
  • 第66期 | GPTSecurity周报
  • 无线信道中ph和ph^2的场景
  • gitee 简单使用
  • Storm AI : 最佳长文写作工具
  • 精准设计与高效开发:用六西格玛设计DFSS实现新能源汽车开发突破
  • 解除本地Git仓库与远程仓库关联
  • 【系统架构设计师-2021年】综合知识-答案及详解
  • 卷积神经网络(Datawhale X 李宏毅苹果书AI夏令营)
  • 宝贝甜梦秘籍!康姿百德柔压磁性枕豪华款守护成长每一夜
  • 车辆违停智能监测摄像头
  • 【maxcompute|ODPS|SQL|HSQL】日期数据非标准日期格式(yyyy/M/d),如何转为yyyy-MM-dd HH:mm:ss标准格式
  • ArcGIS Pro SDK (十二)布局 8 布局元素选择和更改
  • 【K8s】专题十三:Kubernetes 容器运行时之 Docker 与 Containerd 详解