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
禁用 直接写入活动寄存器 立即生效 需要即时响应的控制
相关推荐
Wave8459 小时前
基于 STM32 + ESP8266 + W25Q64 的双核 OTA 底层架构总结
stm32·嵌入式硬件·架构
xiangw@GZ10 小时前
WiFi 全世代(WiFi1~WiFi7)技术规范与核心参数总结
嵌入式硬件
振南的单片机世界10 小时前
CPU时钟:频率越高跑越快,但物理极限在“拖后腿”
stm32·单片机·嵌入式硬件
普中科技12 小时前
【普中 51-Ai8051 开发攻略】-- 第 20 章 输入捕获实验
单片机·嵌入式硬件·输入捕获·pca·普中科技·ai8051u·aicube
d111111111d12 小时前
直流电机位置式 PID 控制 和 舵机的区别
笔记·stm32·单片机·嵌入式硬件·学习
d111111111d14 小时前
了解Modbus
网络·笔记·stm32·单片机·嵌入式硬件·学习
三佛科技-1341638421214 小时前
主控FT32F031便携式吸尘器方案,迷你手持吸尘器MCU控制方案开发
单片机·嵌入式硬件·物联网·智能家居·pcb工艺
一个平凡而乐于分享的小比特15 小时前
一文读懂MCU与FPGA:核心区别、协同之道与双修秘籍
单片机·fpga开发·职场发展·mcu开发
踏着七彩祥云的小丑16 小时前
嵌入式——认识电子元器件——微动开关系列
单片机·嵌入式硬件
调光IC-小雅16 小时前
解析FP62××系列限流保护机制:为何它是DC/DC芯片的安全底线
单片机·嵌入式硬件