comprends 发表于 2022-7-6 16:14

HC32L110定时器及PWM计算方式

请问一下,HC32L110高级定时器,定时的时间该怎么计算,我现在设置24MHz RCH,
stcAdtBaseCntCfg.enCntClkDiv = AdtClkPClk0Div256;
u16TimePeriod = 0x5FFF;
u16TimeCompareA = 0;这样定时差不多是500ms。

用另外一个定时器输出PWM 设置的参数是
stcAdtBaseCntCfg.enCntMode = AdtSawtoothMode;
stcAdtBaseCntCfg.enCntDir = AdtCntUp;
stcAdtBaseCntCfg.enCntClkDiv = AdtClkPClk0Div2;
u16PwmPeriod = 0x6000;
u16PwmCompare = 0x2000;
输出的是1KHz的PWM

这个时间跟频率具体是怎么计算,有像STM32那样的计算公式吗,我对照了一下 没太弄懂,有没有懂的人帮忙解答一下,谢谢!

comprends 发表于 2022-7-7 10:59

没人知道吗。。

51xlf 发表于 2022-7-8 09:49

时间和频率是反比的。

pklong 发表于 2022-7-8 16:36

这个看手册了。

aspoke 发表于 2022-7-9 12:17

是pwm模块还是定时器实现的?

comprends 发表于 2022-7-11 08:47

aspoke 发表于 2022-7-9 12:17
是pwm模块还是定时器实现的?

高级定时器实现的,没有用PCA,不知道这个计数对应的计算方法,手册也没看到有写

comprends 发表于 2022-7-11 08:47

pklong 发表于 2022-7-8 16:36
这个看手册了。

手册好像并没看到计算公式

comprends 发表于 2022-7-11 08:48

51xlf 发表于 2022-7-8 09:49
时间和频率是反比的。

嗯..这个我知道 那时间怎么算的呢

martinhu 发表于 2022-7-11 09:00

如果不分频,那么ADT的clk就是PCLK,比如默认HCLK和PCLK都是4M,要是ADT没有设置分频,那么ADT就是4M。
ADT的计数CNT是从0计数到周期寄存器值PERAR,再从0开始计数,所以PERAR的值就是周期(如果是锯齿波模式),
比如PERAR的值是4000,时钟clk是4M,那么周期就是1ms,频率1K,
如果是三角波模式,上述PERAR4000,周期就是2ms,频率500Hz

PERAR可以设置缓存传送,这个可以看看手册的描述

comprends 发表于 2022-7-11 10:29

martinhu 发表于 2022-7-11 09:00
如果不分频,那么ADT的clk就是PCLK,比如默认HCLK和PCLK都是4M,要是ADT没有设置分频,那么ADT就是4M。
ADT ...

明白了 谢谢!

yangxiaor520 发表于 2022-7-13 08:44

建议你看看手册说明吧

onlycook 发表于 2022-7-14 15:48

手册上有说明把,有空可以好好看看

tpgf 发表于 2022-8-1 16:47

还有分频倍频的设置呢

nawu 发表于 2022-8-1 16:57

那得看时钟如何配置

aoyi 发表于 2022-8-1 17:15

两个定时器的时钟源是一样的吗

zljiu 发表于 2022-8-1 17:26

时钟源是多大的呢

gwsan 发表于 2022-8-1 17:38

虽然公式好算 但是对寄存器也得非常了解才行啊

tfqi 发表于 2022-8-1 17:49

多更改一下参数对比计算看看
页: [1]
查看完整版本: HC32L110定时器及PWM计算方式