完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
根据st技术手册,F4的定时器tiM2和TIM5是32位定时器,测试发现TIM2->cnt读数只有16位(0-FFFF),求解,有哪里设置不对,还是st有什么问题啊???
|
|
相关推荐
16个回答
|
|
手册中描述了CNT就是16位的寄存器。
|
|
|
|
回复第 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. |
|
|
|
有使用过STM32F4自带32位定时器的吗,这个不会是个摆设吧
|
|
|
|
TIM2确实是32位计数器,是不是楼主读取的方式不对啊,比如你读取时使用的变量位宽限定不是32位而是16位,就是*(ulong *)和*(uint *)的差别。
|
|
|
|
可以去看一下datasheet
|
|
|
|
使用324cG-EVAL的例程重新写了代码,终于看到32位的数据跳变了,问题解决,谢谢大师们支持啊
|
|
|
|
|
|
|
|
是代码问题?
|
|
|
|
这页是错的 往下接着看
|
|
|
|
应该是datasheet寄存器哪里没更新过来。tim2是32位的计数
|
|
|
|
确实是32位的,这个我以前用过
|
|
|
|
是不是定义时用成了uint_t16,不是uint_t32
|
|
|
|
|
|
|
|
楼主你好,我现在也遇到这个问题了,用JTAG调试的时候发现TIM2的CNT寄存器确实是32位的,有CNT_H和CNT_L之分,但是CNT_H总是0,只有CNT_L在变化。 楼主能把你的配置代码贴出来给我参考一下吗?多谢了!! |
|
|
|
库里面是这样的
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; } 对于不同的定时器,库自己可以区分的,直接调库就可以了,不用纠结 |
|
|
|
我发现TIM2~TIM5的32位计数器真是一个摆设。 你的那个库函数,其实就是给TIM2_CNT寄存器赋值,我试过了,除非给TIM_CNT的高16位赋值,否则,计数器的高16位永远不会有值。赋值之后,计数器会从赋给的值的基础上往上加,直到溢出变为0x0000 0000。而且当高16位从0xFFFF溢出之后,高16位就永远变为0x0,再也不会有值,只是低16位会不断计数。真是好笑。 用JTAG调试看寄存器的值的。如下图所示: 图1、赋值后,计数器从计数的值基础上往上加: 2、溢出之后,高16位永远为0,只有低16位在不断计数: 3、测试代码 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1763 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
917 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
1304 浏览 1 评论
LL库F030进行3个串口收发,2个串口为232,一个为485,长时间后,会出现串口1停止运行,另外两个正常,只有重启复原
1769 浏览 1 评论
559 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-15 01:25 , Processed in 0.913715 second(s), Total 104, Slave 86 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号