请问用定时器A能产生我想要的频率吗?比如说100kHZ,200KHZ,300KHZ,400KHZ,.......,2Mhz,?
我用定时器A定时管脚取反最高频率只有800多Khz,请问有更好的办法吗,并且能输出我要的任何频率(2Mhz以内)
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
用定时器可以产生你需要的100K-2M的波形。
基本思路如下:
1. 采用内部DCO作为系统时钟源,输出给MCLK,SMCLK, TIMERA选用SMCLK作为时钟。
2.在频率输出较低时,可以用TIMER的定时器来实现管脚翻转,但是频率较高时,由于TIMER中断和IO口翻转设置都需要消耗时钟,这时,较低的DCO频率就不能满足较高的频率输出 。
3. 建议直接用TIMER的PWM输出功能,DCO最好设置在16M,这样输出2M时才比较合适。
输出1M的PWM波的时候就不能用TIMER中断+GPIO翻转的方式来做了。
要用TIMER的PWM功能。同时为了得到精确的1M方波,需要提高DCO的频率。
没有实际测试过。按照道理讲16M主频应该可以给TIMER准确输出2MPWM信号的。你可以把你的代码贴出来看下。
如果确实你用16M的主频,使用TIMER的PWM功能还不能精确输出2M的频率的话,我建议你直接用SMCLK的输出作为PWM的输出,主频设置16M, SMCLK 1/4分频,然后从GPIO口输出。
优点是可以输出较为准确的50%占空比的PWM,缺点是不能输出任意频率的波形。波形频率只能是主频的1/2,1/4,1/8 ..分频。
如果这样还达不到你的需求,可能你要考虑换至支持更高主频的MCU了。