Eagleson 发表于 2014-4-18 09:21:42

回复:STM32F4直接使用32位定时器(tim2)计数问题

应该是datasheet寄存器哪里没更新过来。tim2是32位的计数

有缘于你 发表于 2014-4-18 11:21:55

RE:STM32F4直接使用32位定时器(tim2)计数问题

确实是32位的,这个我以前用过

feiante-155820 发表于 2014-4-20 12:29:58

RE:STM32F4直接使用32位定时器(tim2)计数问题

是不是定义时用成了uint_t16,不是uint_t32

wkuang 发表于 2014-4-22 23:31:01

RE:STM32F4直接使用32位定时器(tim2)计数问题

TIME2是 32bit的定时器,这个我使用过的,
估计楼主是在读取的时候,定时器读出来的数据被软截断了。导致看到的是低16位的数据

世界在变 发表于 2016-8-15 17:48:13

linggo 发表于 2014-4-17 08:59
 使用324cG-EVAL的例程重新写了代码,终于看到32位的数据跳变了,问题解决,谢谢大师们支持啊 ...

楼主你好,我现在也遇到这个问题了,用JTAG调试的时候发现TIM2的CNT寄存器确实是32位的,有CNT_H和CNT_L之分,但是CNT_H总是0,只有CNT_L在变化。

楼主能把你的配置代码贴出来给我参考一下吗?多谢了!!

zhangxu56726 发表于 2016-8-15 20:02:11

库里面是这样的
void TIM_SetCounter(TIM_TypeDef* TIMx, uint32_t Counter)
{
/* Check the parameters */
   assert_param(IS_TIM_ALL_PERIPH(TIMx));

/* Set the Counter Register value */
TIMx->CNT = Counter;
}
对于不同的定时器,库自己可以区分的,直接调库就可以了,不用纠结

世界在变 发表于 2016-8-16 09:27:42

zhangxu56726 发表于 2016-8-15 20:02
库里面是这样的
void TIM_SetCounter(TIM_TypeDef* TIMx, uint32_t Counter)
{


我发现TIM2~TIM5的32位计数器真是一个摆设。

你的那个库函数,其实就是给TIM2_CNT寄存器赋值,我试过了,除非给TIM_CNT的高16位赋值,否则,计数器的高16位永远不会有值。赋值之后,计数器会从赋给的值的基础上往上加,直到溢出变为0x0000 0000。而且当高16位从0xFFFF溢出之后,高16位就永远变为0x0,再也不会有值,只是低16位会不断计数。真是好笑。
用JTAG调试看寄存器的值的。如下图所示:



图1、赋值后,计数器从计数的值基础上往上加:




2、溢出之后,高16位永远为0,只有低16位在不断计数:






3、测试代码







sky10 发表于 2019-1-11 21:47:28

和楼主遇到同样问题,求大神解答:)
页: 1 [2]
查看完整版本: STM32F4直接使用32位定时器(tim2)计数问题