
前言 在CubeMx中配置PWM,预分频系数和计数的值决定了波形的周期,pulse决定了占空比。 PWM边沿对齐模式(向上计数) 在PWM模式1下,TIMx_CNT<TIMx_CCRx时,PWM参考信号OCxREF为高,否则为低。 ![]() PWM边沿对齐模式(向下计数) TIMx_CR1中的DIR为1时,执行向下计数。在PWM模式1时,TIMx_CNT>TIMx_CCRx时OCxREF为低,否则为高。 PWM模式1与PWM模式2区别 PWM模式1 在向上计数时,一旦TIMx_CNT<TIMx_CCR1时通道1为有效电平,否则为无效电平 在向下计数时,一旦TIMx_CNT>TIMx_CCR1时通道1为无效电平(OC1REF=0),否则为有效 电平(OC1REF=1)。 PWM模式2 在向上计数时,一旦TIMx_CNT<TIMx_CCR1时通道1为无效电平,否则为有效电平 在向下计数时,一旦TIMx_CNT>TIMx_CCR1时通道1为有效电平,否则为无效电平。 有效电平和无效电平由CCER这个寄存器的CCxP来决定 CC1P:输入/捕获1输出极性(Capture/Compare 1 output polarity) 配置为输出:0:OCx高电平有效 1:OCx低电平有效 实验步骤 生成一个10ms周期的PWM波形,占空比从10~100.。 CubeMx生成芯片工程,配置SWD调试接口,HSE使用"Crystal/Ceramic Resonator" PA0引脚配置为GPIO_EXTI0(配置EXTI中断) ![]() ![]() PB1引脚配置为TIM3_CH4,在TIM3视图中Clock Source 选择"Internal Clock",Channel4选择"PWM Generation CH4" 预分频系数填6400-1,计数值填100-1。(计算方法) ![]() 在工程项目栏中填入项目名称、路径、版本 在代码生成中选择自己需要的选项,最后生成代码 ![]() 在int main函数里面添加pwm初始化代码
在int main() { }后面添加EXTI上升沿中断回调函数
在int main() { }前面添加自定义改变PWM参数的函数
在debug选项卡中勾上"Reset and Run",编译。烧录 当你不停按下按钮时,就会看到LED等从暗到亮,从亮到暗变化。 ![]() ———————————————— 版权声明:SCCELE |