hzhehe 发表于 2022-4-28 14:04 谢谢指点,我研究研究 |
Mr.zxw 发表于 2022-4-28 14:15 判断的值为这样 if(ture)执行接下来的代码ture可以为变量,只要值为ture(1)都会执行 |
lkc8210 发表于 2022-4-28 13:15 您好,可以麻烦您说详细点吗,谢谢 |
yzwzfyz 发表于 2022-4-28 12:11 啊,能不能指出比较具体一点的方向,我好去改一下,谢谢您。 |
这里提一下我的看法,定时器中断在不使用的时候关闭就好,占用资源浪费cpu时间。然后微亮可能是楼主硬件问题最好贴一下原理图,这里个人的看法是可能定时器没有关闭导致的进入中断后重复赋值导致的翻转。为什么要在中断里做判断,如果是要做两个不同设备的PWM为什么不用两路定时器,就算只用一路为什么不做标志位回到主函数或者子函数再判断,如果需要进行的运算复杂的话可以做成子函数再调用会比在中断中做三四次判断快得多。最好仔细研究一下你子函数判断次数,优化代码冗余,不要做多余判断 |
为什么要在定时器里做比较再做翻转,既然要稳定的PWM那每做一次判断和io翻转的时间不会更长吗?这边建议进入中断后先不要赋值,万一还没比较完又开始了第二次中断就不好了,可以的话计算,比较等问题放在主函数或者子函数调用会比直接在中断程序中处理更迅速。如果出现微亮那可能是没有关闭中断导致IO存在翻转的情况。可以的话能贴一下原理图和相关引脚输出波形(上示波器看)是最好的了,希望能帮助到楼主 |
改为if(led1){Compare1=5…… |
与你的硬件结构有关。 上图。 |