STM8S单片机的定时器TIM4 的程序问题

发布网友 发布时间:2022-04-20 07:57

我来回答

2个回答

热心网友 时间:2023-07-12 03:57

虽然是好久的问题了,但是我还要说两句。LED闪烁频率不就是1/16320/2吗?(与2MHZ/128/255/2=30.63一样的)定时器周期是16320US,因为每个定时器周期LED状态翻转一次,所以要除以2。(TIM4_PSCR = 0x07; // 计数器时钟=主时钟/128=2MHZ/128)这分频系数是没错的。分频系数7。实际分频数是2的7次方(128)的意思。

热心网友 时间:2023-07-12 03:57

你的预分频值有问题
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追问你怎么记将分频(0x07+1)=2MHZ/8=250K 还要加1 这个是直接分频的。后面的计数加一是对的。
还有就是LED的闪烁频率具体是怎么算法 请教

追答st的不管stm8还是stm32的TIM预分频器都差不多,肯定是没有0分频的,最小是1分频,所以0x00时是1分频,手册也写有的,一般习惯给预分频和重新装载寄存器减一,官方例程上也有这个习惯

声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com