当前位置: 首页 > news >正文

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效果演示

http://www.jsqmd.com/news/335619/

相关文章:

  • 从零开始玩转QWEN-AUDIO:3步完成专业级语音合成部署
  • springboot公司项目活动管理系统-开题报告
  • 办公神器DeepSeek-OCR-2:纸质文档秒变结构化电子档
  • SpringBoot Servlet 容器全解析:嵌入式配置与外置容器部署
  • springboot基于Vue+Golang的视频娱乐网站-开题报告
  • AI读脸术企业落地案例:连锁门店顾客画像系统搭建
  • FaceRecon-3D应用案例:电商虚拟试妆的3D人脸解决方案
  • Mumbai: 1靶机记录
  • deepaccident复现个人问题记录
  • springboot货物物流管理系统-开题报告
  • AI scientist天塌了! 不到1小时,斯坦福教授用AI独立,自动完成1篇实证论文, 并且过程和结论都相当精准.
  • springboot基于JavaWeb的人事管理系统-开题报告
  • MedGemma Medical Vision Lab部署案例:云原生架构下MedGemma Web服务弹性扩缩容
  • LLaVA-v1.6-7B新功能实测:672x672高清图片识别解析
  • java现代农业博览园旅游管理系统 开题报告
  • DeepChat实战:一键部署Llama3实现私密高质量对话
  • springboot基于javaWeb的商店管理系统-开题报告
  • nodejs篮球资讯网站开题报告
  • python-热门音乐可视化的设计与实现-开题报告
  • 如何突破数据采集瓶颈?三招解锁高效评论分析
  • ChatTTS GPU加速实战:从环境配置到性能优化全解析
  • springboot基于JavaWeb的网上书城设计与实现-开题报告
  • 手把手教你用ccmusic-database实现音乐自动分类
  • 2026年云南手提袋工厂综合实力与选型指南 - 2026年企业推荐榜
  • 如何用ChatGPT高效生成科研课题与实验设计提示词:实战指南与避坑策略
  • springboot基于springboot和vue前后端分离的网上商城-开题报告
  • 实测VibeVoice:如何用AI语音合成技术提升视频配音效率
  • ChatGLM-6B惊艳效果展示:中英文流畅对话真实案例
  • MusePublic中英混合Prompt技巧:提升SDXL模型理解准确率的实测方法
  • springboot基于J2EE酒店管理系统设计与实现-开题报告