STM32 PWM CCR配置解析
在原子哥的PWM输出例程中,感觉对捕获/比较寄存器(CCR)的设置不太合理。
原子哥的主函数如下,
TIM_SetCompare函数设置CCR2的值,从而改变PWM的占空比,但是在上面PWM_Init函数中,最后一段代码是
TIM_Cmd(TIM3, ENABLE);
所以执行完PWM_Init函数后,定时器已经开始工作,但是此时的CCR2寄存器的值我们并没有设置过,所以应该是默认值0,即前面若干个PWM周期的占空比不是我们想要得到的。只有函数执行到上图红色方框中的TIM_SetCompare2函数后,才会设置目标CCR2的值,从而得到目标占空比。
下面是STM32 固件库中TIM_OC2Init函数的源码(截取),可以看到,在初始化TIM_OCInitTypeDef结构体的时候,通过TIM_Pulse成员变量设置了CCR2 的值,但是在原子哥的例程中并没有该结构体变量的初始化。并且在TIM_OC2Init函数之前调用TIM_SetCompare函数设置CCR2的值是无效的,因为TIM_OC2Init函数中会以默认值重新赋给CCR2寄存器。
/* Write to TIMx CR2 */TIMx->CR2 = tmpcr2;/* Write to TIMx CCMR1 */TIMx->CCMR1 = tmpccmrx;/* Set the Capture Compare Register value */TIMx->CCR2 = TIM_OCInitStruct->TIM_Pulse;/* Write to TIMx CCER */TIMx->CCER = tmpccer;
如果想要精准地控制PWM输出,需要注意以下两点:
1、CCRx寄存器的初始化时间
2、定时器的开启时间
STM32 PWM CCR配置解析相关推荐
- stm32 PWM互补输出
stm32高级定时器例子-stm32 PWM互补输出 定时器初始化结构体 TIM_TimeBaseInitTypeDef 时基结构体,用于定时器基础参数设置,与TIM_TimeBaseInit函数配合 ...
- WS2812灯珠(三)-- STM32 PWM+DMA方式驱动
WS2812灯珠(三)-- STM32 PWM+DMA方式驱动 文章目录 WS2812灯珠(三)-- STM32 PWM+DMA方式驱动 一.理论 二.代码实践 一.理论 PWM输出就是对外输出脉宽( ...
- STM32 PWM输出实验
定时器用来产生PWM输出: STM32 的定时器除了 TIM6 和 7.其他的定时器都可以用来产生 PWM 输出.其中高级定时器 TIM1 和 TIM8 可以同时产生多达 7 路的 PWM 输出.而通 ...
- stm32 PWM输入捕获
普通的输入捕获,可使用定时器的四个通道,一路捕获占用一个捕获寄存器. PWM输入,只能使用两个通道,通道1和通道2. 一路PWM输入占用两个捕获寄存器,一个捕获周期,一个捕获占空比. 这里,用通用定时 ...
- 一、STM32启动文件详细解析
一.STM32启动文件详细解析 STM32启动文件详细解析(V3.5.0) 以:startup_stm32f10x_hd.s为例 [cpp] view plain copy ;************ ...
- STM32 PWM控制舵机
目录 舵机简介 舵机工作原理 什么是PWM 硬件连线 代码 实现结果 总结 舵机简介 舵机是指在自动驾驶仪中操纵飞机舵面(操纵面)转动的一种执行部件.分有:①电动舵机,由电动机.传动部件和离合器组成. ...
- STM32 GPIO的配置寄存器(CRL、CRH)输入输出模式配置
STM32 GPIO的配置寄存器(CRL.CRH)输入输出模式配置 1.学会使用寄存器设定所需IO的方向,学会配置CRL.CRH 2.理解如下代码的含义 //IO方向设置 #define DS18B2 ...
- STM32 GPIO的配置寄存器(CRL、CRH)快速学习
1.问题 在使用STM32的时候配置GPIO是最常见的操作,可以使用比较简单明白的库函数配置,但很繁杂.使用寄存器的方式可以快速配置,对于同一个IO口的输入输出都需要使用到的时候,比如IIC通讯的SD ...
- STM32 PWM控制舵机——原理、接线、源程序
STM32--PWM 控制舵机 通用定时输出PWM PWM的工作原理 PWM的模式 TIM_OCMode_PWM1 (边沿对齐模式) TIM_OCMode_PWM2(中央对齐模式) 占空比 舵机 实物 ...
最新文章
- js--webSocket入门
- Service Mesh — APIGW vs ServiceMesh
- c语言结构体老师信息管理系统,C语言课程设计职工信息管理系统结构体数组实现程序源代码.doc...
- 系统试运行总结报告_制药行业计算机化系统验证与数据可靠性实施精要
- Tomcat server.xml配置示例
- 【C++基础】异常处理机制概要
- 将检索出来的列按逗号拼接起来
- [ NOIP 2014 ] TG
- week one(1)—What is machine learning?
- Num37 spring 事务 ssh整合
- [原创]Tsys 2.0 beta 官方版无法使用自定义SQ
- SoapUI SoapUI接口测试之编码设置
- Android中什么是Dex文件
- 华为荣耀9刷Android9.0,华为荣耀手机,安卓9.0/EMUI9.0升级常见问题大汇总!
- multiparty 和 busboy
- linux的网易云音乐界面不显示,linux mint19.1解决网易云音乐安装后打不开的问题...
- 【工具】URLEncode
- GoLang panic 用法
- Error Based Injection和sql注入函数
- 自控力lesson14书摘——克服‘紧张症’的法则
热门文章
- 手机发送短消息(转)
- python explode(0、0.2、0、0)_Python 2
- wordpress vue_使用Vue构建WordPress插件
- SAS与固定收益证券有关的函数(1)
- Excel插入数据透视表,实现合并同类项(office2007)
- micropython遵循的是什么开源协议_ueos
- Vmware ESX 5.0 安装与部署
- 关于保存数据时,提取数据特征的数量和样本数不匹配的原因
- 怎么使用flashfxp,偷偷告诉你怎么使用flashfxp
- android的adb是什么,什么是ADB