原本想使用定时器1 定时一个溢出时间为1ms的计时
下面是我的定时器1初始化参数
TMR_BaseConfig_T baseConfig;
/* TMR1 Configure */
baseConfig.clockDivision = TMR_CLOCK_DIV_1;
baseConfig.countMode = TMR_COUNTER_MODE_UP;
baseConfig.division = 8;
baseConfig.period = 1000;
TMR_ConfigTimeBase(TMR1, &baseConfig);
在中断函数中选择了一个输出脚进行电平翻转
示波器测量到的频率是 1KHz
反推回去计算:1000 * 1000 * (8 + 1) = 9000000 计算出才为9M的定时器1输入频率
查了一下数据手册和仿真时候的寄存器数值
系统时钟选的是PLL,原理图上接入XTAL-IN 和 XTAL-OUT 引脚的晶振为8MHz,经过9倍倍频之后输入AHB,AHB也没有分频直接给到的APB1 和 APB2。APB1的输入时钟寄存器是2分频,我通过使用与定时器1配置相同的配置去配置定时器2,一样在中断函数中翻转同一个输出脚,示波器测量得到的频率是4KHz,反推计算:4000 * 1000 * (8 + 1) = 36000000 计算为36MHz,符合寄存器设定中的系统时钟72MHz 2分频之后的数值,仿真时查看 RCM_CFG 寄存器中 APB1PSC的值为0x04,APB2PSC的值为0x03,PLLMULCFG的值为0x07,我尝试过将APB2PSC的值修改为0x04但是输出和0x03相同,只有改为0x05时输出频率会再次减少一半从1KHz变为500Hz,现在找不出是什么原因导致定时器1的时钟不是所设定的72M
球球了,帮帮孩子把 |