多喝水少吃饭 2022-07-05 16:24 采纳率: 83.3%
浏览 35
已结题

用pwm做led呼吸灯的问题

img

img


这两个是只是重装载值不一样,但是第一个程序亮度的变化很慢,第二个很快,这是为什么呢,照理说,重装载值大的话,进入中断很快的话,亮度变化应该更快才对

  • 写回答

1条回答 默认 最新

  • 乐观的study123 2022-07-05 22:05
    关注

    按你做的这个,开始当count第一次达到100,LED=1;已经输出了10ms,但是此时count=0,而PWM=10,LED=0,再过count再计数10次,也就是过了1ms,而PWM是11,count又计数超过了11则LED=1;那么LED维持低电平只有1ms多点,所以不行;
    其实一个count就能实现占空比了,(去掉主程序里的PWM那段)在定时器中断里这么改
    #define peroid 20000////周期值
    #define PWMH 10000///高电平宽度
    count++;
    if(count<peroid)
    {
    if(count==PWMH)
    LED=1;
    else
    LED=0;
    }
    else
    count=0;

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 12月4日
  • 已采纳回答 11月26日
  • 创建了问题 7月5日