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

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

[复制链接]
linggo 提问时间:2014-4-16 13:32 /
阅读主题, 点击返回1楼
收藏 评论17 发布时间:2014-4-16 13:32
17个回答
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管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版