你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

[复制链接]
linggo 提问时间:2014-4-16 13:32 /
阅读主题, 点击返回1楼
收藏 评论17 发布时间:2014-4-16 13:32
17个回答
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、赋值后,计数器从计数的值基础上往上加:
从赋值的基础上往上加.png



2、溢出之后,高16位永远为0,只有低16位在不断计数:
溢出之后,只有CNT_L在不断计数,CNT_H一直为0.png





3、测试代码
测试代码.png






sky10 回答时间:2019-1-11 21:47:28
和楼主遇到同样问题,求大神解答
12
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版