您现在的位置是:主页 > news > 小程序怎么做网站/口碑营销的产品有哪些
小程序怎么做网站/口碑营销的产品有哪些
admin2025/5/23 22:07:57【news】
简介小程序怎么做网站,口碑营销的产品有哪些,茶叶网络营销网站建设论文,微信第三方平台PWM输出编程PWM输出原理单路PWM信号输出双路PWM信号输出目的:在特定管脚上产生频率和占空比可调的方波信号。比赛我们主要掌握PA6和PA7就可以了。PWM输出原理 CNT: 定时器中的计数器,配置成1us增加1; ARR: 自动重装载寄存器(相当于计数的周期)ÿ…
PWM输出编程
- PWM输出原理
- 单路PWM信号输出
- 双路PWM信号输出
目的:在特定管脚上产生频率和占空比可调的方波信号。
比赛我们主要掌握PA6和PA7就可以了。
PWM输出原理
CNT: 定时器中的计数器,配置成1us增加1;
ARR: 自动重装载寄存器(相当于计数的周期),当CNT计数到ARR时,即溢出,重新开始计数;
CCRx: 比较寄存器(相当于高电平时间) ,当CNT计数到CCRx时,输出极性会翻转! (CCRx对STM32CUBE里的Pulse)
具体原理见下图:
单路PWM信号输出
比如本次我们让PA7输出1KHZ的方波,应该如何配置ARR重装载寄存器的值呢?
1KHZ对应的周期就是1ms,1ms就是1000微秒,所以对应的就是CNT要一微秒递增一次一共递增1000次才能到ARR。又由于ARR计数都是从0开始的,所以ARR配置为999即可实现。
所以我们按照上图配置好这些参数就可以了。
需要注意的是,这个“auto-reload preload”不是我们说的重装载值,而是一个很不常用的设置“预装载值”,这个启用和不启用关系不大,所以我们保持默认状态就可以了。
还有一点就是PWM输出不需要中断配置,所以不用勾选NVIC
关于下面这部分的配置:
这几个配置是关联起来的。“Mode”里面有两种模式,一种是“PWM mode1”,一种是“PWM mode2”,
文档里查到的定义是这样的:
- PWM mode 1 - Channel 1 is active as long as TIM15 CNT<TIM15 CCR1
elseinactive. - PWM mode 2 - Channel 1 is inactive as long as TIM15 CNT<TIM15 CCR1
else active.
意思就是mode1代表的是当CNT< CCR1的时候采用的是不活跃状态,而mode2相反。
至于什么是活跃状态,什么是不活跃状态,则由下面的“CH Polarity”来控制,如果“CH Polarity”选择“High”,那么高电平就是活跃状态,低电平就是不活跃状态。
所以两个结合起来的意思就是,如果选择mode1并且“CH Polarity”选择“High”,那就意味着CNT< CCR1时输出的方波信号是低电平,而CNT>CCR1时输出的是高电平。我们一般都选择这种组合,比较符合直觉。而“Pulse”这个选项就是规定“活跃状态的时间”,所以我们如果上面选的组合是mode1并且“CH Polarity”选择“High”,那么此处“Pulse”就是在规定高电平的时间,那就是占空比了。
由于ARR已经被设置为了999,也就是一共1000微秒,所以Pulse为100就是占空比百分之十,Pulse为200就是占空比百分之二十。
所以按如上图的配置就可以了。然后直接生成代码。
在主函数中调用tim17的初始化函数之后,用hal库函数开启tim17的1通道的pwm输出即可:
MX_TIM17_Init();HAL_TIM_PWM_Start(&htim17,TIM_CHANNEL_1);
当然我们也可以在主函数里面直接操作寄存器来更改他的频率和占空比:
TIM17->ARR=499;
TIM17->CCR1=250;
双路PWM信号输出
就是把单路的PWM代码重复一次即可。
然后在主函数中加入相应的初始化代码和开启PWM产生的代码:
MX_TIM16_Init();
HAL_TIM_PWM_Start(&htim16,TIM_CHANNEL_1);