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

复制代码
硬件开发板:STM32G0B1RET6
软件平台:cubemax+keil+VScode

1 新建cubemax工程

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引用头文件和函数声明

c 复制代码
#include "stdio.h"

int fputc(int ch,FILE *f);

usart.c中重定向

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函数

c 复制代码
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引脚,观察串口输出结果

相关推荐
云山工作室9 小时前
2025年单片机毕业设计选题物联网计算机电气电子通信类
单片机·物联网·课程设计
Ching·11 小时前
STM32L4xx编译提示Keil MDK Warning: L6989W警告问题及其解决办法
stm32·单片机·嵌入式硬件
小莞尔11 小时前
【51单片机】【protues仿真】基于51单片机温度测量系统
c语言·单片机·嵌入式硬件·物联网·51单片机
晓风凌殇11 小时前
单片机按键检测与长短按识别实现
c语言·单片机
Zaki_gd13 小时前
GPIO 引脚速度(Speed)
单片机·嵌入式硬件
武文斌7713 小时前
复习总结最终版:单片机
linux·单片机·嵌入式硬件·学习
xiaofei55800814 小时前
CAN 波特率的几个参数说明和计算方式(以STM32为例)
单片机·嵌入式硬件·汽车
应用市场14 小时前
STM32运行原理深度解析:从软件到硬件的神奇之旅
stm32·单片机·嵌入式硬件
点灯小铭14 小时前
基于单片机的64位多模式流水灯控制系统设计
单片机·嵌入式硬件·毕业设计·课程设计
恒锐丰小吕15 小时前
SA8203 输入耐压36V 过流保护0.3-2.5A可调 过压/过流保护器 SOT23-6
嵌入式硬件·硬件工程