STM32--PWM--函数

TIM_OCInitTypeDef

TIM_OCInitTypeDef 是 STM32 标准外设库中用于配置定时器输出比较(Output Compare, OC)功能的结构体,主要用于 PWM 生成、单脉冲输出等场景。

复制代码
typedef struct {
    uint16_t TIM_OCMode;        // 输出比较模式
    uint16_t TIM_OutputState;   // 输出使能状态
    uint16_t TIM_OutputNState;  // 互补输出使能(高级定时器)
    uint16_t TIM_Pulse;         // 比较值(CCRx 寄存器值)
    uint16_t TIM_OCPolarity;    // 输出极性
    uint16_t TIM_OCNPolarity;   // 互补输出极性(高级定时器)
    uint16_t TIM_OCIdleState;   // 空闲状态(高级定时器)
    uint16_t TIM_OCNIdleState;  // 互补输出空闲状态(高级定时器)
} TIM_OCInitTypeDef;

TIM_OCPolarity--极性选择

复制代码
#define TIM_OCPolarity_High                ((uint16_t)0x0000)
#define TIM_OCPolarity_Low                 ((uint16_t)0x0002)

High:走0接口,输出的波形不反转;

Low:走1接口,波形取反,输出的波形反转;

通道初始化函数

void TIM_OC1Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct);

void TIM_OC2Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct);

void TIM_OC3Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct);

void TIM_OC4Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct);

需要使用哪个通道就调用哪个接口。

运行过程中修改占空比

void TIM_SetCompare1(TIM_TypeDef* TIMx, uint16_t Compare1);

void TIM_SetCompare2(TIM_TypeDef* TIMx, uint16_t Compare2);

void TIM_SetCompare3(TIM_TypeDef* TIMx, uint16_t Compare3);

void TIM_SetCompare4(TIM_TypeDef* TIMx, uint16_t Compare4);

注意,上面的函数本质上是设置CCR的值,从而改变占空比的,并不是直接改变占空比。

设置通道预装载功能

void TIM_OC1PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload);

void TIM_OC2PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload);

void TIM_OC3PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload);

void TIM_OC4PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload);

这些函数用于配置定时器输出比较通道的预装载功能,主要控制CCRx寄存器(捕获/比较寄存器)的更新方式。

  • TIMx:定时器外设指针(如TIM1, TIM2等)

  • TIM_OCPreload

    • TIM_OCPreload_Enable:启用预装载,新设置的CCR值下一个事件触发生效。

    • TIM_OCPreload_Disable:禁用预装载,新设置的CCR值立刻生效。

预装载状态 寄存器访问 生效时机 适用场景
启用 写入预装载寄存器 下一个更新事件(UEV) 需要同步更新的PWM
禁用 直接写入活动寄存器 立即生效 需要即时响应的控制
相关推荐
森焱森13 分钟前
无人机三轴稳定化控制(1)____飞机的稳定控制逻辑
c语言·单片机·算法·无人机
循环过三天17 分钟前
3-1 PID算法改进(积分部分)
笔记·stm32·单片机·学习·算法·pid
天天爱吃肉82181 小时前
ZigBee通信技术全解析:从协议栈到底层实现,全方位解读物联网核心无线技术
python·嵌入式硬件·物联网·servlet
东风点点吹2 小时前
STM32F103的boot跳转APP不成功问题排除
stm32·单片机·嵌入式硬件
猫猫的小茶馆4 小时前
【STM32】预分频因子(Prescaler)和重装载值(Reload Value)
c语言·stm32·单片机·嵌入式硬件·mcu·51单片机
riveting5 小时前
明远智睿H618:开启多场景智慧生活新时代
人工智能·嵌入式硬件·智能硬件·lga封装·3506
三万棵雪松5 小时前
【STM32HAL-第1讲 基础篇-单片机简介】
stm32·单片机·嵌入式硬件
玉树临风江流儿5 小时前
炸鸡派-基础测试例程
单片机·嵌入式硬件
板栗焖小鸡6 小时前
STM32-PWM驱动无源蜂鸣器
stm32·学习
智者知已应修善业8 小时前
【51单片机用数码管显示流水灯的种类是按钮控制数码管加一和流水灯】2022-6-14
c语言·经验分享·笔记·单片机·嵌入式硬件·51单片机