news 2026/4/16 18:06:10

STM32L475定时器实验

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
STM32L475定时器实验
配置定时器TIM2


配置项解释:
Slave Mode: 正常情况下, TIM2的启动通过代码HAL_TIM_Base_Start()来控制, 但是开启Slave Mode之后, TIM2的核心操作将由外部信号触发, 如另一个定时器, GPIO电平等等, 外部触发源通过Trigger Source来配置

Prescaler(PSC - 16 bits value)通过设置PSC值, 确定定时器分频后的频率
这个值的目的是为了将输入到TIM2的时钟频率分频, 计算公式为
定时器计数频率 = 定时器输入频率 / (PSC值 + 1)
要确定定时器输入频率, 需要先看系统框图, 如下:

通过这里可以看到, TIM2定时器挂在APB1总线上, 而我们通过时钟树可知, APB1总线时钟为80MHz.

我们需要将TIM2的输入时钟设置为10kHz, 那么 10kHz = 80,000kHz / 8000
所以PSC = 8000 - 1 = 7999, 我们填写7999即可.
Counter Mode: 计数模式, Up Mode, 计数器从0开始, 每来一个计数时钟脉冲, CNT加1, 当计数器到达Auto-reload-value(ARR)是触发更新事件. Down Mode, 计数器从ARR值开始, 每个脉冲减1, 当CNTV减到0时, 触发更新事件
Counter Period (AutoReload Register - 32 bits value): 计数边界, 这个值减到0时触发一次定时事件.
这个值和PSC共同确定了定时时长, 公式如下:
定时时长 = (PCS + 1) x (ARR + 1) / 输入时钟 = 8000 x 5000 / 80000000 = 0.5s
也就是说, 每0.5秒触发一次定时事件

开启定时器中断

生成代码

tim.h

#ifndef__TIM_H__#define__TIM_H__#ifdef__cplusplusextern"C"{#endif#include"main.h"externTIM_HandleTypeDef htim2;voidMX_TIM2_Init(void);#ifdef__cplusplus}#endif#endif/* __TIM_H__ */

tim.c

#include"tim.h"/* USER CODE BEGIN 0 *//* USER CODE END 0 */TIM_HandleTypeDef htim2;/* TIM2 init function */voidMX_TIM2_Init(void){TIM_ClockConfigTypeDef sClockSourceConfig={0};TIM_MasterConfigTypeDef sMasterConfig={0};htim2.Instance=TIM2;htim2.Init.Prescaler=7999;htim2.Init.CounterMode=TIM_COUNTERMODE_UP;htim2.Init.Period=4999;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();}sMasterConfig.MasterOutputTrigger=TIM_TRGO_RESET;sMasterConfig.MasterSlaveMode=TIM_MASTERSLAVEMODE_DISABLE;if(HAL_TIMEx_MasterConfigSynchronization(&htim2,&sMasterConfig)!=HAL_OK){Error_Handler();}}voidHAL_TIM_Base_MspInit(TIM_HandleTypeDef*tim_baseHandle){if(tim_baseHandle->Instance==TIM2){/* TIM2 clock enable */__HAL_RCC_TIM2_CLK_ENABLE();/* TIM2 interrupt Init */HAL_NVIC_SetPriority(TIM2_IRQn,0,0);HAL_NVIC_EnableIRQ(TIM2_IRQn);}}voidHAL_TIM_Base_MspDeInit(TIM_HandleTypeDef*tim_baseHandle){if(tim_baseHandle->Instance==TIM2){/* Peripheral clock disable */__HAL_RCC_TIM2_CLK_DISABLE();/* TIM2 interrupt Deinit */HAL_NVIC_DisableIRQ(TIM2_IRQn);}}

stm32l4xx_it.h

voidTIM2_IRQHandler(void);

stm32l4xx_it.c

externTIM_HandleTypeDef htim2;/** * @brief This function handles TIM2 global interrupt. */voidTIM2_IRQHandler(void){HAL_TIM_IRQHandler(&htim2);}

stm32l4xx_hal_conf.h

#defineHAL_TIM_MODULE_ENABLED

main.c

#include"tim.h"intmain(void){// ...MX_TIM2_Init();// ...}
编写中断处理代码定时器翻转LED灯

main.c

// 测试定时器反转电平HAL_TIM_Base_Start_IT(&htim2);TRACE_INFO("Tagged the LED pin in interrupt");while(1){//...}

tim.h

voidHAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef*htim);

tim.c

voidHAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef*htim){if(htim->Instance==TIM2){HAL_GPIO_TogglePin(GPIOE,LED_R_Pin);// 翻转红色LED电平}}
运行效果

使用定时器反转LED效果演示

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 7:26:32

AI读脸术企业落地案例:连锁门店顾客画像系统搭建

AI读脸术企业落地案例:连锁门店顾客画像系统搭建 1. 为什么连锁门店需要“读懂”顾客的脸? 你有没有注意过,走进一家奶茶店,店员会下意识观察你是学生、上班族还是带孩子的家长?再比如,路过一家美妆专柜&…

作者头像 李华
网站建设 2026/4/16 7:30:38

springboot基于JavaWeb商品销售管理系统-开题报告

目录项目背景与意义系统功能概述技术选型优势预期成果创新点项目技术支持可定制开发之功能亮点源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作项目背景与意义 随着电子商务的快速发展,传统商品销售管理方式效率低下、数据易丢失…

作者头像 李华
网站建设 2026/4/16 7:30:20

springboot基于JavaWeb的人事管理系统-开题报告

目录 项目背景与意义技术选型与优势系统功能模块预期成果 项目技术支持可定制开发之功能亮点源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作 项目背景与意义 随着企业规模扩大,传统纸质或Excel管理人事信息效率低下&#xff0c…

作者头像 李华
网站建设 2026/4/16 7:26:09

Z-Image-Turbo实战:用简单英文描述秒出专业级壁纸

Z-Image-Turbo实战:用简单英文描述秒出专业级壁纸 你有没有试过——输入一句话,三秒后,一张堪比摄影大师作品的高清壁纸就出现在屏幕上?不是渲染十分钟等得心焦,不是调参半小时还黑图连连,而是真正“敲下回…

作者头像 李华
网站建设 2026/4/16 7:26:08

300M参数大能量!EmbeddingGemma本地部署实战指南

300M参数大能量!EmbeddingGemma本地部署实战指南 1. 为什么你需要一个“能装进笔记本”的嵌入模型? 你有没有试过在自己的MacBook Air上跑一个文本嵌入服务?打开终端,输入ollama run bge-m3,然后等——等三分钟&…

作者头像 李华
网站建设 2026/4/16 9:03:15

OFA视觉问答模型惊艳效果:支持否定式提问如‘Is there no dog?’

OFA视觉问答模型惊艳效果:支持否定式提问如‘Is there no dog?’ 1. 为什么这个VQA模型让人眼前一亮 你有没有试过对着一张图问:“这张照片里没有狗吗?”——不是“有狗吗”,而是明确用否定句式提问。大多数视觉问答…

作者头像 李华