[STM32WBA] 【NUCLEO-WBA65RI 测评】+ 03定时器16实现LED的闪烁
一:定时器知识
该设备中最多可嵌入五个可同步的一般用途定时器(有关差异,请参见表17)。
每个一般用途定时器均可用于生成PWM 输出,或用作简单的计时基准。
TIM2、TIM3和TIM4
它们是功能齐全的通用定时器,TIM2和TIM4具有32位自动重载加/减计数器,TIM3具有16位自动重载加/减计数器,并均配备16位预分频器。
这些计时器具备4个独立的通道,用于输入捕获/输出比较、PWM 或单脉冲模式输出。它们既可以独立运行,也可以通过"计时器链接"功能与其他通用型计时器协同工作,以实现同步或事件链接。
计数器可在调试模式下冻结。
所有定时器均具有独立的DMA请求生成功能,并支持四象限编码器。TIM16和17
它们是具有中等特性的通用定时器。它们具有16位自动重载加计数器和16位预分频器,并且有一个通道和一个互补通道。
所有通道均可用于输入捕获/输出比较、PWM或单脉冲模式输出。
定时器可通过Timer Link功能协同工作,实现同步或事件链式操作。各定时器具有独立的DMA请求生成能力。
计数器可在调试模式下冻结。
所有定时器均具有独立的DMA请求生成功能。
二:STM32 cube MX 软件配置
2.1 时钟配置
定时器16的配置如下:配置分频系数和重装值;
使能定时器16的中断
三:STM32软件代码
3.1 初始化定时器
复制
void MX_TIM16_Init(void){/* USER CODE BEGIN TIM16_Init 0 *//* USER CODE END TIM16_Init 0 *//* USER CODE BEGIN TIM16_Init 1 *//* USER CODE END TIM16_Init 1 */htim16.Instance = TIM16;htim16.Init.Prescaler = 63;htim16.Init.CounterMode = TIM_COUNTERMODE_UP;htim16.Init.Period = 999;htim16.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;htim16.Init.RepetitionCounter = 0;htim16.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;if (HAL_TIM_Base_Init(&htim16) != HAL_OK){Error_Handler();}/* USER CODE BEGIN TIM16_Init 2 */if (HAL_TIM_Base_Start_IT(&htim16) != HAL_OK){/* Starting Error */Error_Handler();}/* USER CODE END TIM16_Init 2 */}
3.2 添加回调函数
复制
int TimePoint16 = 0 ;void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim){if(htim ->Instance==TIM16){TimePoint16++ ;if(TimePoint16>=1000){TimePoint16 = 0 ;HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_8);}}}
烧录之后,可以看到板载的LED灯(红色),以1s 的时间间隔闪烁。
。
---------------------
作者:聪聪哥哥
链接:https://bbs.21ic.com/icview-3502501-1-1.html?_dsign=21939905
来源:21ic.com
此文章已获得原创/原创奖标签,著作权归21ic所有,任何人未经允许禁止转载。
