本帖最后由 YangTwo 于 2024-11-11 13:49 编辑
STM32WBO的TIM2介绍
通用定时器(TIM2)由一个16位自动重新加载计数器,配有一个可编程预分频器。
它可用于多种用途,包括测量输入的脉冲长度信号(输入捕获)或产生输出波形(输出比较,PWM,带死区插入的互补PWM)。
脉冲长度和波形周期可以从几微秒到几微秒调制,在32 MHz的定时器输入时钟上使用定时器预分频器。
TIM2主要特性
TIM2定时器功能包括:
•16位向上,向下,向上/向下自动加载计数器。
•16位可编程的预分频器允许划分(也“在飞行中”)计数器
频率是1到65536之间的任意因子。
•多达4个独立通道:
-输入捕获
-输出比较
- PWM生成(边缘和中心对齐模式)
—单脉冲输出
•重复计数器,仅在给定次数的循环后更新计时器寄存器
柜台。
•中断/DMA产生以下事件:
-更新:计数器溢出/下溢,计数器初始化(通过软件或
内部/外部触发)
-触发事件(计数器启动、停止、初始化或由内部/外部触发计数)
(只有中断)
-输入捕获
-输出比较
•支持增量(正交)编码器的定位目的
•触发输入外部时钟或周期逐周期电流管理
本次体验使用Tim2生成周期为1Hz的时钟,在中断ISR内部,翻转LED1蓝色小灯的状态。
首先在STM32CubeIDE内置的CubeMX图形化外设配置工具内部,设置Tim2的分频,中断等参数。
其中TIM2模块的时钟来源为:
更新频率:64MHz/64/(TIM2 ARR 9999 + 1) = 1Hz
点击保存,自动生成TIM2初始化代码,
- static void MX_TIM2_Init(void)
- {
- /* USER CODE BEGIN TIM2_Init 0 */
- /* USER CODE END TIM2_Init 0 */
- TIM_ClockConfigTypeDef sClockSourceConfig = {0};
- /* USER CODE BEGIN TIM2_Init 1 */
- /* USER CODE END TIM2_Init 1 */
- htim2.Instance = TIM2;
- htim2.Init.Prescaler = 6400;
- htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
- htim2.Init.Period = 9999;
- htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
- htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;
- if (HAL_TIM_Base_Init(&htim2) != HAL_OK)
- {
- Error_Handler();
- }
- sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
- if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK)
- {
- Error_Handler();
- }
- /* USER CODE BEGIN TIM2_Init 2 */
- /* USER CODE END TIM2_Init 2 */
- }
注意在main.c里面要启动TIM2模块。
- if (HAL_TIM_Base_Start_IT(&htim2) != HAL_OK)
- {
- /* Starting Error */
- Error_Handler();
- }
- printf("** Tim2 Started ** \n\r");
在TIM2的ISR中加入LED控制:
- /**
- * [url=home.php?mod=space&uid=247401]@brief[/url] This function handles TIM2 global interrupt.
- */
- void TIM2_IRQHandler(void)
- {
- /* USER CODE BEGIN TIM2_IRQn 0 */
- /* USER CODE END TIM2_IRQn 0 */
- HAL_TIM_IRQHandler(&htim2);
- /* USER CODE BEGIN TIM2_IRQn 1 */
- HAL_GPIO_TogglePin(PB1_LD1_BLUE_GPIO_Port, PB1_LD1_BLUE_Pin);
- UTIL_SEQ_SetTask(1U << CFG_TASK_SIMPLEBLEAUTONOTIFY, CFG_SEQ_PRIO_0);
- /* USER CODE END TIM2_IRQn 1 */
- }
编译,烧录,验证效果:
|