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

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
禁用直接写入活动寄存器立即生效需要即时响应的控制

相关文章:

  • 微软系统 红帽系统 网络故障排查:ping、traceroute、netstat
  • 40-算法打卡-二叉树-深度优先(前、中、后序遍历)-递归遍历-第四十天
  • 蓝绿激光对潜通信介绍
  • 《微机原理》微机程序段 计算机编程数据分区
  • 量化交易策略的运行
  • 【赛元8523触摸按键开发调试】
  • 【某OTA网站】phantom-token 1004
  • 基于 Ubuntu 24.04 部署 WebDAV
  • 【PHP】基于币安链,一个完整的USDT转账示例
  • C语言实现小波变换去噪
  • Go语言的逃逸分析是怎么进行的
  • docker 镜像的导出和导入(导出完整镜像和导出容器快照)
  • Docker存储空间不足与迁移实战:从根目录爆满到高效扩容
  • 在线服务器具体是指什么?
  • 垃圾分类宣教小程序源码介绍
  • Android Framework 记录之一
  • WDG看门狗(独立看门狗和窗口看门狗)
  • 解决SQL Server SQL语句性能问题(9)——正确使用索引
  • 申能集团笔试1
  • Spring Web MVC基础理论和使用
  • 习近平会见缅甸领导人敏昂莱
  • 罕见沙尘再度入川,官方:沙尘传输高度达到平流层,远超以往
  • 上海证监局规范辖区私募经营运作,6月15日前完成自评自纠
  • 欧洲史上最严重停电事故敲响警钟:能源转型如何保证电网稳定?
  • 股价两天涨超30%,中航成飞:不存在应披露而未披露的重大事项
  • 中国证监会印发《推动公募基金高质量发展行动方案》