你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
查看全部评分
举报
时间的灰 发表于 2018-5-22 09:37 能具体针对这个问题分析一下吗?
时间的灰 发表于 2018-5-22 15:09 谢谢这么详细的回答,有一点我还不明白,因为我使能了预装载功能,按理说应该是同时刻更新的呀。 ...
budaoweng 发表于 2018-5-22 13:21 这个问题就是在更改寄存器值的时候,没有完全同步更新。因为单片机是串行运行代码的,寄存器的值也是一个 ...
す疯Ⅱ恒す 发表于 2018-5-21 16:03 切换完之后立即给一个更新事件,重新开始计数应该可以解决。
时间的灰 发表于 2018-5-21 16:07 切换过程是在更新事件中做的,请问能够详细说一下吗
す疯Ⅱ恒す 发表于 2018-5-21 16:25 应该可以任意点切换频率,设置好新的重装载值与比较值,设置UG位,直接触发更新,用新的参数工作。 ...
wolfgang2015 发表于 2018-5-21 17:55 的确是两个TImer事件中断的问题。
budaoweng 发表于 2018-5-22 08:53 以TIMC为例子,控制寄存器TIMCCR=0X0904000A;主定时器MCR=0X2005000A;剩下的对照手册慢慢体会去吧,想弄懂H ...
这个问题就是在更改寄存器值的时候,没有完全同步更新。因为单片机是串行运行代码的,寄存器的值也是一个一个更新的。所以,在寄存器的值变化非常大的时候就会出现断续的问题。比如,你的频率从400k变到1M,那么周期寄存器,各个比较器都会有一个大幅度变化。比方说,TIMC的CLOCK为1.052Ghz,频率是25000,那么说周期寄存器为42080,占空比为50%的话比较器的值为21040。这时就是输出占空比为50%,频率为25K的PWM,如果此时你更新频率,必须把周期寄存器和比较器同时更新。但实际的情况是,这两个寄存器并不能同时更新,如果你想把PWM变为频率100K占空比为50%,那么周期寄存器的值1052000000/100000=10520,比较寄存器为10520/2=5260;注意,关键问题来了。如果你此时先对周期寄存器更新,在更新完成的一瞬间,周期寄存器的值为10520,比较寄存器为21040。比较寄存器比周期寄存器都大,所以就出现了你看到的问题。此时如果你把比较寄存器更新为5260,PWM就恢复正常了。
评分
查看全部评分
更新触发源没设置好。比如TIMC和TIMD的更新触发源都设置为主定时器更新(MSTU: Master Timer update)。然后主定时器的更新可以设置成软件更新(MSWU: Master Timer Software update)也可以设置成主定时器周期完成时更新(MREPU: Master Timer Repetition update)。我劝你多看看手册,不要着急。我当时也是整了10来天才搞明白的。
谢谢这么详细的回答,有一点我还不明白,因为我使能了预装载功能,按理说应该是同时刻更新的呀。
评分
查看全部评分
切换过程是在更新事件中做的,请问能够详细说一下吗
应该可以任意点切换频率,设置好新的重装载值与比较值,设置UG位,直接触发更新,用新的参数工作。
评分
查看全部评分
评分
查看全部评分
你的意思是disable掉预装载功能吗?
什么意思呢,能详细说明吗?
评分
查看全部评分
评分
查看全部评分
能具体针对这个问题分析一下吗?