新手入门
- 积分
- 16
- 金钱
- 16
- 注册时间
- 2019-7-12
- 在线时间
- 5 小时
|
1金钱
在STM32库函数实验9,PWM输出实验中,有如下代码:
TIM3_PWM_Init(899,0); //不分频。PWM频率=72000000/900=80Khz
while(1)
{
delay_ms(10);
if(dir)led0pwmval++; //目前是灭,那么led++,等会0是亮
else led0pwmval--; //1是灭
if(led0pwmval>300)dir=0; //dir是状态标志位
if(led0pwmval==0)dir=1;
TIM_SetCompare2(TIM3,led0pwmval);
}
我已经知道TIM3_PWM_Init(899,0);可以控制一个周期的时长,但是它能控制哪个时长呢?
其次我发现改变if(led0pwmval>300)dir=0;中灯的亮灭频率会300这个值改变,值越大,灯近乎于一直亮;值越小,灯的亮灭很频繁,这是为什么呢?然而,查看代码后发现led0pwmval在本代码里面指的就是阈值CCR2,但这又违背常理,因为一直等于阈值,所以led应该一直在亮。
|
|