虽然是好久的问题了,但是我还要说两句。LED闪烁频率不就是1/16320/2吗?(与2MHZ/128/255/2=30.63一样的)定时器周期是16320US,因为每个定时器周期LED状态翻转一次,所以要除以2。(TIM4_PSCR = 0x07; // 计数器时钟=主时钟/128=2MHZ/128)这分频系数是没错的。分频系数7。实际分频数是2的7次方(128)的意思。
你的预分频值有问题
TIM4_PSCR = 0x07; // 计数器时钟=主时钟/(0x07+1)=2MHZ/8=250K
TIM4_ARR = 255; // 设定重装载时的寄存器值,255是最大值
TIM4_CNTR = 255; // 设定计数器的初值
定时器溢出时钟频率=250K/(ARR+1)=250K/256=976.5625Hz
定时时间=1024uS
PB_ODR = PB_ODR ^ 0x08; // LED驱动信号取反
则闪烁频率为1/2 -> 488.28125Hz
// LED闪烁频率=2MHZ/8/256/2=488.28125Hz
周期2048uS