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

STM32F407 TIM pwm 调试笔记, LL库

问题:调试STM32F407 TIM3定时器的PWM功能时,出现的问题,特此记录

  1. 初始化的时候,PWM引脚的电平是低,而我要求的是高电平。
  2. 定时器会在使能后立马进入一次中断;

配置:TIM3 CH3 被我设置成PWM1模式,有效电平是高,OC3PE置一,使能了预加载寄存器. 使能了定时器中断。定时器初始计数值是0。

功能需求:初始化的时候,默认成有效电平,使能定时器后,按照计数值来拉高拉低引脚。

分析:OC3PE置一后,CCR3 的初始值不会立即生效,需等待更新事件(UG 位触发或计数器溢出)才能加载到影子寄存器。若不主动触发更新事件,初始化时 CCR3 可能处于默认值(如 0),导致比较逻辑异常,所以需要手动更新一下EGR中的UG寄存器,

LL_TIM_GenerateEvent_UPDATE(TIM3)

手动更新后发现一个新的问题,更新会导致SR的UIF寄存器也更新,如果在此函数是处在中断使能之后,则立马会产生一个中断;

此时可以在先写UG,再清除UIF,再来使能中断。

	LL_TIM_SetCounter(TIM3, 0); //清0,重新计数LL_TIM_DisableIT_UPDATE(TIM3);LL_TIM_GenerateEvent_UPDATE(TIM3);// 手动更新寄存器LL_TIM_ClearFlag_UPDATE(TIM3);LL_TIM_EnableIT_UPDATE(TIM3);//TIM3更新使能LL_TIM_EnableCounter(TIM3);//TIM3计数使能

这样的话,就不会产生提前的中断。

http://www.dtcms.com/a/333910.html

相关文章:

  • 安卓11 12系统修改定制化_____如何去除安卓11 12的系统签名验证
  • 【大模型应用开发 1.嵌入模型与向量数据库 Chroma】
  • JavaEE 初阶第十九期:网络编程“通关记”(一)
  • C# 应用特性的更多内容:多维度解析与深度拓展
  • AI安全防御框架:纵深防御与零信任策略浅谈
  • 【C 学习】06-算法程序设计举例
  • pnpm(Performant npm)的安装
  • 欧姆龙CP系列以太网通讯实现上位机与触摸屏监控
  • ClickHouse的学习与了解
  • 基于隐私保护的旅游信息共享平台(LW+源码+讲解+部署)
  • 数据结构:迭代方法(Iteration)实现树的遍历
  • 新手向:Python异常处理(try-except-finally)详解
  • k8sday08深入控制器(3/3)
  • Arduino通过MQTT发送消息到树莓派
  • 【大模型核心技术】Dify 入门教程
  • GitHub 热榜项目 - 日榜(2025-08-16)
  • 心路历程-三个了解敲开linux的大门
  • 基于Uni-app+vue3实现微信小程序地图固定中心点范围内拖拽选择位置功能(分步骤详解)
  • 基于uni-app+vue3实现的微信小程序地图范围限制与单点标记功能实现指南
  • SpringBoot 整合 Langchain4j:系统提示词与用户提示词实战详解
  • uniapp:微信小程序使用Canvas 和Canvas 2D绘制图形
  • 【Java笔记】synchronized
  • GitHub宕机时的应急协作方案
  • 【Java学习】锁、线程死锁、线程安全2
  • Go语言实战案例:连接MySQL数据库
  • webrtc弱网-VideoSendStreamImpl类源码分析与算法原理
  • debian 13 显示中文字体 不再显示菱形块 终端显示中文
  • OpenCompass傻瓜式入门教程
  • 命令模式C++
  • Point-LIO技术文档中文翻译解析