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

STM 32 TIM定时器(1)

基础计时器控制LED灯定时熄灭开启

设置分频器

计时频率为F=72Mhz/7200=1X10^4=10000
这样一次计数就是0.1ms,方便计算

设置ARR

ARR设置为1000,这样计时器1000次进行重装载,也就是0.1msX1000=100ms进行重装载

关于为什么需要减1,那是因为在更新的时候系统会默认+1

配置按键与LED灯

启动中断

//启动定时器中断 HAL_TIM_Base_Start_IT(&htim2);

中断溢出回调函数

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { if (htim -> Instance == TIM2) { //翻转电平 HAL_GPIO_TogglePin(GPIOA,LED_R_Pin|LED_G_Pin|LED_B_Pin); } }

主循环程序

while (1) { if (HAL_GPIO_ReadPin(GPIOA,KEY1_Pin) == GPIO_PIN_SET) { mode = !mode; HAL_TIM_Base_Stop_IT(&htim2); __HAL_TIM_SET_AUTORELOAD(&htim2,tim2_arr[mode]); __HAL_TIM_SET_COUNTER(&htim2,0);//计数值清0 HAL_TIM_Base_Start_IT(&htim2); while(HAL_GPIO_ReadPin(GPIOA,KEY1_Pin) == GPIO_PIN_SET); } /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ }

应用——PWM

PWM(Pulse Width Modulation)即脉宽调制,是一种通过控制**高电平持续时间(占空比)**来模拟连续电压信号的方法。

由定时器的通道输出提供,具有固定频率、可调脉宽的方波信号。信号频率由自动重装寄存器ARR的值决定,占空比由比较寄存器CCR的值决定。

假设分频设置为7200,那么计时频率为F=72Mhz/7200=1X10^4=10000,也就是每次计数就是0.1ms,ARR为自动重装寄存器,如果设置为100,那PWM波的周期就是T=100X0.1毫秒=10ms,那么PWM周期就是10ms,CCR就是控制占空比的。

举个例子:例如ARR=100,CRR为50,这两个都是计数器ARR决定PWM周期,CCR决定在100计数中有多少计数是高电平或者低电平

实验TIM分频采用72,F=72Mhz/72=1X10^4=1000000,那么每次计数为1us,那么ARR=20X1000

CubeX PWM设置

这里没有舵机,我们示波器来测试输出的PWM波

呼吸灯

cubex设置

pwm输出改为低电平

主程序

while (1) { __HAL_TIM_SET_COMPARE(&htim2,TIM_CHANNEL_2,pwm_val); __HAL_TIM_SET_COMPARE(&htim2,TIM_CHANNEL_3,pwm_val); __HAL_TIM_SET_COMPARE(&htim2,TIM_CHANNEL_4,pwm_val); pwm_val += dir; if (pwm_val >= 1000) dir = -10; if (pwm_val <= 0) dir = 10; HAL_Delay(5); /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ } /* USER CODE END 3 */ }

TIM触发ADC采集

TIM触发ADC采集内部温度

流程步骤:

  1. 开始- 流程起点
  2. TIM3 TRGO周期性触发- 定时器每1秒产生一次触发信号
  3. 触发ADC1进行单次转换- ADC被触发执行单次模数转换
  4. 采集内部温度值- 读取内部温度传感器的电压值
  5. 使用公式计算温度- 应用温度计算公式

内部温度计算公式

T(°C) = (1.43 - 当前电压) / 0.0043 + 25

定时器TIM3设置,采集内部数据就是用内部时钟

ADC设置

ADC采集时间

CubeX 界面

编译选项

打开串口软件,实验现象

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

相关文章:

  • Claude 4.7 Opus 新手极速上手指南
  • 装修全屋定制高频问答:新手一站式答疑解惑
  • 2026最新宁德市黄金回收铂金回收白银回收怎么选?多家靠谱门店实测对比及联系方式推荐 - 亦辰小黄鸭
  • 无核边界积分法:Brinkman界面问题的配点法与单位分解求解
  • 别再瞎调了!用这个Python脚本可视化分析你的DeepRacer奖励函数效果
  • python 使用命令 pip install xxx,安装库失败时
  • 2026年焦作市本地黄金回收白银回收铂金回收靠谱门店权威榜第一名:足金首饰+投资金条+银条+旧料黄金上门变现无套路收费+门店地址及联系方式推荐 - 前途无量YY
  • 告别远程桌面!在Win10上像本地一样管理AD域控的保姆级教程
  • 2026最新攀枝花市黄金回收铂金回收白银回收怎么选?多家靠谱门店实测对比及联系方式推荐 - 亦辰小黄鸭
  • 安路Modelsim仿真库编译
  • 从“省电”到“翻车”:深入聊聊NRF24L01+待机模式的那些选择与代价
  • 如何用普通摄像头实现医疗级心率监测:rPPG-Toolbox深度技术解析
  • 视频号怎么保存到相册:全场景操作方法与保存失败问题排查方案 - 科技热点发布
  • Node.js项目依赖下载太慢?试试这3种镜像源加速方案(npm/cnpm/yarn)
  • 2026年揭阳市本地黄金回收白银回收铂金回收靠谱门店权威榜第一名:足金首饰+投资金条+银条+旧料黄金上门变现无套路收费+门店地址及联系方式推荐 - 前途无量YY
  • Hollow Knight Mod终极安装指南:使用Scarab解决版本兼容性问题
  • Seraphine:如何用3分钟让你的英雄联盟游戏体验提升一个段位?
  • 2026最新平顶山市黄金回收铂金回收白银回收怎么选?多家靠谱门店实测对比及联系方式推荐 - 亦辰小黄鸭
  • 基于STM32实现LVGL移植、显示(LVGL版本8.3.10)
  • 不只是算ΔΔG:用PyAutoFEP+Gromacs深入分析FEP模拟结果,从重叠矩阵、收敛性到轨迹稳定性检查
  • RAG增强召回的方法(二)多路召回
  • Spring Boot项目实战:用dynamic-datasource和Druid给你的数据库密码‘上锁’(附自定义密钥教程)
  • Wwise音频处理工具:游戏音效解包与替换的Go语言实现方案
  • 2026年金昌市本地黄金回收白银回收铂金回收靠谱门店权威榜第一名:足金首饰+投资金条+银条+旧料黄金上门变现无套路收费+门店地址及联系方式推荐 - 前途无量YY
  • 瑞祥商联卡回收流程全攻略:快速、安全的操作指南 - 团团收购物卡回收
  • 别再手动建表了!用SpringBoot JPA + PostgreSQL自动生成表结构(附ddl-auto配置详解)
  • 别再傻等接口了!用Playwright的Route拦截,5分钟搞定Mock数据(Python版)
  • 别再只导整个模型了!教你像搭积木一样复用FBX里的网格和材质
  • hermes多Agent协作开发
  • 江西信息流广告服务商哪家好:前五排名深度测评 - 服务品牌热点