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

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

[复制链接]
linggo 提问时间:2014-4-16 13:32 /
 根据st技术手册,F4的定时器TIM2和TIM5是32位定时器,测试发现TIM2->cnt读数只有16位(0-FFFF),求解,有哪里设置不对,还是st有什么问题啊???
收藏 评论17 发布时间:2014-4-16 13:32

举报

17个回答
世界在变 回答时间: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






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-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在变化。

楼主能把你的配置代码贴出来给我参考一下吗?多谢了!!
废鱼 回答时间:2014-4-16 16:43:05

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

手册中描述了CNT就是16位的寄存器。
linggo 回答时间:2014-4-16 19:24:35

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

回复第 2 楼 于2014-04-16 16:43:05发表:
手册中描述了CNT就是16位的寄存器。
 
手册28,29页有说明 是32位的计数器啊
TIM2, TIM3, TIM4, TIM5
The STM32F40x include 4 full-featured general-purpose timers: TIM2, TIM5, TIM3, and
TIM4.The TIM2 and TIM5 timers are based on a 32-bit auto-reload up/downcounter
and a 16-bit prescaler.

 
linggo 回答时间:2014-4-16 21:10:33

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

有使用过STM32F4自带32位定时器的吗,这个不会是个摆设吧
我爱下载 回答时间:2014-4-17 07:49:34

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

TIM2确实是32位计数器,是不是楼主读取的方式不对啊,比如你读取时使用的变量位宽限定不是32位而是16位,就是*(ulong *)和*(uint *)的差别。
那片清茶 回答时间:2014-4-17 08:39:22

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

可以去看一下datasheet
linggo 回答时间:2014-4-17 08:59:04

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

 使用324cG-EVAL的例程重新写了代码,终于看到32位的数据跳变了,问题解决,谢谢大师们支持啊
废鱼 回答时间:2014-4-17 09:16:59

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

我看手册上写的确实是16位的,可以看一下下图:
1234.jpg
dlyt03 回答时间:2014-4-17 12:45:24

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

是代码问题?
linggo 回答时间:2014-4-17 13:05:01

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

这页是错的 往下接着看
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位的数据
12下一页
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版