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计数使能

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

### STM32G030F6P6 PWM 配置与使用 对于STM32G030F6P6而言,在配置PWM功能时,通常借助于STM32CubeMX软件来简化初始化过程[^3]。通过该工具可以轻松设置定时器资源用于生成PWM信号。 #### 使用STM32CubeMX进行初步设定 启动STM32CubeMX并选定目标设备为STM32G030F6P6之后,进入Pinout & Configuration界面调整TIMx外设(其中x代表具体使用的定时器编号),将其模式更改为PWM输出。随后可指定通道、极性以及其他必要参数以适应特定应用场景需求。 #### 编程实现PWM控制 完成硬件抽象层(HAL)的基础配置后,编程部分主要围绕着对`HAL_TIM_PWM_Start()`函数的应用展开。此API允许开启所选定时器的PWM输出操作,并接受指向相应句柄结构体实例及所需激活的通道作为输入参数: ```c // 假定已创建好 TIM_HandleTypeDef 类型变量 htim1 并完成了必要的初始化工作 if (HAL_OK != HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1)) { // 错误处理逻辑... } ``` 为了动态改变占空比从而调节PWM波形特性,可以通过调用如下接口达成目的: ```c __weak void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim){ /* 用户自定义回调 */ } /* 修改占空比 */ uint32_t newDutyCycle = ... ; // 新的目标占空比率值 __IO uint32_t channelCCRx; channelCCRx = (__LL_TIM_CALCULATE_AUTORELOAD(htim->Instance,newDutyCycle)/100)*(__LL_TIM_GET_COUNTER(htim->Instance)); __HAL_TIM_SET_COMPARE(htim,TIM_CHANNEL_1,channelCCRx); ``` 上述代码片段展示了如何利用中断服务程序或者周期性的事件触发时机更新比较寄存器中的数值,进而影响最终输出至GPIO引脚上的电平高低时间比例关系即所谓的“脉宽”。 #### 进一步优化与调试技巧 当遇到实际开发过程中产生的问题时,建议参考官方提供的数据手册和应用笔记获取更多细节指导;同时也可以考虑加入社区论坛交流经验心得,共同解决难题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值