zpchan95 发表于 2023-5-9 16:29

关于F415定时器TMR2,CLKDIV配置无效的疑问

今天使用F415定时器TMR2,发现CLKDIV无论配置为多少,计数频率都不变。如下代码,不知是不是我理解错了CLKDIV的含义
void peripheral_time_base_init(void)
{
    tmr_32_bit_function_enable(TMR2, TRUE); //开启32位
    tmr_base_init(TMR2, 0xFFFFFFFF, 36000 - 1); //TMR2时钟为36MHz,1ms计数一次
    tmr_cnt_dir_set(TMR2, TMR_COUNT_UP);//向上计数
    tmr_clock_source_div_set(TMR2, TMR_CLOCK_DIV1); //不管是TMR_CLOCK_DIV1,还是TMR_CLOCK_DIV4,实测定时器都是1ms计数一次
    tmr_counter_enable(TMR2, TRUE); //开始计数
}


附时钟树配置,使用官方工具生成:
/**
* @briefsystem clock config program
* @NOTE   the system clock is configured as follow:
*         system clock (sclk)   = hext * pll_mult
*         system clock source   = pll (hext)
*         - hext                = 8000000
*         - sclk                = 144000000
*         - ahbdiv            = 1
*         - ahbclk            = 144000000
*         - apb1div             = 8
*         - apb1clk             = 18000000
*         - apb2div             = 2
*         - apb2clk             = 72000000
*         - pll_mult            = 18
*         - flash_wtcyc         = 4 cycle
* @paramnone
* @retval none
*/


ArterySW 发表于 2023-5-10 09:23

CLKDIV这个bit 是用于 fDTS 分频的,而fDTS是用于滤波输入(CxDF),外部信号滤波(ESF)和死区时间(DTC)配置的。也就是说CLKDIV是用于配置TMR时钟和这三个信号(CxDF、ESF、DTC)的分频比率的,而不是直接对TMR时钟进行分频。

zpchan95 发表于 2023-5-10 11:47

ArterySW 发表于 2023-5-10 09:23
CLKDIV这个bit 是用于 fDTS 分频的,而fDTS是用于滤波输入(CxDF),外部信号滤波(ESF)和死区时间(DTC)配 ...

明白了,感谢
页: [1]
查看完整版本: 关于F415定时器TMR2,CLKDIV配置无效的疑问