[STM32WBA] 【NUCLEO-WBA65RI 测评】+ 03定时器16实现LED的闪烁
2026/6/19 3:26:52 网站建设 项目流程

一:定时器知识
该设备中最多可嵌入五个可同步的一般用途定时器(有关差异,请参见表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 初始化定时器

复制

  1. void MX_TIM16_Init(void)
  2. {
  3. /* USER CODE BEGIN TIM16_Init 0 */
  4. /* USER CODE END TIM16_Init 0 */
  5. /* USER CODE BEGIN TIM16_Init 1 */
  6. /* USER CODE END TIM16_Init 1 */
  7. htim16.Instance = TIM16;
  8. htim16.Init.Prescaler = 63;
  9. htim16.Init.CounterMode = TIM_COUNTERMODE_UP;
  10. htim16.Init.Period = 999;
  11. htim16.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  12. htim16.Init.RepetitionCounter = 0;
  13. htim16.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;
  14. if (HAL_TIM_Base_Init(&htim16) != HAL_OK)
  15. {
  16. Error_Handler();
  17. }
  18. /* USER CODE BEGIN TIM16_Init 2 */
  19. if (HAL_TIM_Base_Start_IT(&htim16) != HAL_OK)
  20. {
  21. /* Starting Error */
  22. Error_Handler();
  23. }
  24. /* USER CODE END TIM16_Init 2 */
  25. }

3.2 添加回调函数

复制

  1. int TimePoint16 = 0 ;
  2. void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
  3. {
  4. if(htim ->Instance==TIM16)
  5. {
  6. TimePoint16++ ;
  7. if(TimePoint16>=1000)
  8. {
  9. TimePoint16 = 0 ;
  10. HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_8);
  11. }
  12. }
  13. }

烧录之后,可以看到板载的LED灯(红色),以1s 的时间间隔闪烁。


---------------------
作者:聪聪哥哥
链接:https://bbs.21ic.com/icview-3502501-1-1.html?_dsign=21939905
来源:21ic.com
此文章已获得原创/原创奖标签,著作权归21ic所有,任何人未经允许禁止转载。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询