TIM_SetCompare1(TIM1,led0pwmval),led0pwmval不能为1吗?

2019-07-21 00:40发布

我发现将原子哥的MINISTM32板子上的PWM例程稍微改动一点后,便出现LED0不在改变亮度,既没有PWM输出。将原子哥的源程序里面MAIN函数中的led0pwmval一开始初始化改动下,将led0pwmval=1,问题便出现。将这个变量改为其他值不会出现此现象。感到很奇怪,其他所有设置都没变。原子哥看看什么问题?
主函数现在改为:
 int main(void)
 {
u16 led0pwmval=1;    
u8 dir=1;
delay_init();     //延时函数初始化  
LED_Init();   //初始化与LED连接的硬件接口
TIM1_PWM_Init(899,0);//不分频。PWM频率=72000/(899+1)=80Khz 
    while(1)
{
  delay_ms(10);  
if(dir)led0pwmval++;
else led0pwmval--;  
  if(led0pwmval>300)dir=0;
if(led0pwmval==0)dir=1;    
TIM_SetCompare1(TIM1,led0pwmval);   

}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
Times
1楼-- · 2019-07-21 16:00
我发现led0pwmval是偶数的时候可以,但是奇数的时候就不行。具体什么问题也不太清楚,希望有大神们帮助解决!
下一个定义
2楼-- · 2019-07-21 20:19
我改了一下, 没有看到你说的现象,LED还是会变化
YHC369
3楼-- · 2019-07-21 21:03
你的这个没有问题的,频率太高你的眼睛分辨不出来,你把你主程序里的300改成850你再试一下
shichuang
4楼-- · 2019-07-22 00:47
 精彩回答 2  元偷偷看……
shichuang
5楼-- · 2019-07-22 06:00
 精彩回答 2  元偷偷看……

一周热门 更多>