function get(my)
--这个是选择系统的时钟源,这里默认选择内置的24M时钟HIRC
Fhirc=24000000
--下面几个变量都是临时变量使用,初始化多少都行
CKDIV=0
Fsys=0
pre=1
Fpwm=0
i=0
for CKDIV=0,255 do
for i=0,7 do
pre=2^i
if(CKDIV==0) then Fsys=Fhirc
elseif((CKDIV>0)and(CKDIV<=0xFF))
then Fsys=Fhirc/(2*CKDIV)
end
Fpwm=Fsys/pre
if(my==Fpwm) then
print("PWM时钟频率为"..my.."Hz".." 需要设置".."pre="..pre..", CKDIV="..CKDIV)
end
end
end
end
get(10000)
print("-----------------------------------")
get(15000)
print("-----------------------------------")
get(20000)
优化了一下显示形式,输出结果,可以看出为了达到某个结果,实际上可以通过多组分频组合实现。
PWM时钟频率为10000Hz 需要设置pre=16.0, CKDIV=75
PWM时钟频率为10000Hz 需要设置pre=8.0, CKDIV=150
-----------------------------------
PWM时钟频率为15000Hz 需要设置pre=32.0, CKDIV=25
PWM时钟频率为15000Hz 需要设置pre=16.0, CKDIV=50
PWM时钟频率为15000Hz 需要设置pre=8.0, CKDIV=100
PWM时钟频率为15000Hz 需要设置pre=4.0, CKDIV=200
-----------------------------------
PWM时钟频率为20000Hz 需要设置pre=8.0, CKDIV=75
PWM时钟频率为20000Hz 需要设置pre=4.0, CKDIV=150
|