【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 实验现象

用杜邦线连接PA0和PA1引脚,观察串口输出结果

相关推荐
小程序设计9 小时前
本科毕设避坑|大数据 / 单片机物联网 / 网络工程 / PLC / 机械设计选题与落地心得
java·hive·hadoop·单片机
Zw-awa14 小时前
先让程序开口说话:为什么把人机交互放在最前面
stm32
Zwawa14 小时前
把按键和 LED 状态显示出来:第一次看见程序到底在干什么
单片机·嵌入式
Zw-awa14 小时前
把按键和 LED 状态显示出来:第一次看见程序到底在干什么
stm32
Zw-awa14 小时前
面包板接线为什么这样接:从模块需求到芯片资源分配
stm32
小程序设计14 小时前
基于STM32的办公室智能空气净化系统设计
stm32·单片机
Zw-awa14 小时前
用 OLED 给 STM32 做实时调试面板
stm32
Zw-awa15 小时前
按键为什么会乱跳:一次按下为什么变成很多次
stm32
不悔哥6 天前
开源OV-Watch:怎么做一个智能手表
单片机·开源·嵌入式
XiHongShi20166 天前
STM32F407 RTC定时器例程,建议保存
stm32·单片机·学习