OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2698|回复: 2

定时器TIM 的相关讨论

[复制链接]

12

主题

51

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
237
金钱
237
注册时间
2016-6-26
在线时间
29 小时
发表于 2016-11-17 15:15:33 | 显示全部楼层 |阅读模式
10金钱
说明:stm32f103zet6     战舰V3

前言:
前天在想使用一个超声波模块,使用到了TIM4,但是结果始终不准确。所以想深入了解一下TIM。

问题:
设计经验尚浅,我花这么多时间了解这东西真的有必要吗?
你们在工业生产中是如何应对这些问题的?


贡献:
经几位大神指点,做了三组试验:
1.单纯的调用TIM4->CNT = 0; 或TIM_SetCounter(TIM4,0);
无法得到预期效果。(有图)

2.修改掉“stm32f10x_tim.c”中的一个函数,即执行两次TIMx->CNT = Counter;或者直接在“main.c”中调用两次
TIM_SetCounter(TIM4, 0);
可以达到预期效果。(有图)


3.使用TIMx时就ENABLE,不使用时就DISABLE。
可以达到预期效果。(有图)

4.将预分频器调的足够大,0.1ms。
无法得到预期效果。(无图)


最后感谢刚才各位大神的指点。

@lycreturn @操作系统 @空心杯 @龙之谷 @正点原子
无法得到结果.jpg
调试成功1_修改库函数.jpg
调试成功2_使能失能.jpg

关于TIMx的试验报告.zip

220.76 KB, 下载次数: 233

关于TIMx的试验报告

最佳答案

查看完整内容[请看2#楼]

好久不用stm32了,不知道具体是怎么回事,给楼主个小建议。 首先,注释掉串口,不要用printf打印变量的值,因为这样就会涉及到中断优先级的问题,printf也会占用一些时间,提高程序复杂度,建议直接看TIM4计数器的寄存器里面的值。 至于为啥要清两次CNT,我也不清楚,楼主仿真看看CNT寄存器里的值。 另外楼主再看看手册吧,这种问题,谁想要解决,基本步骤也就是看手册,仿真调试。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

17

主题

344

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1280
金钱
1280
注册时间
2013-12-14
在线时间
567 小时
发表于 2016-11-17 15:15:34 | 显示全部楼层
本帖最后由 东北小辉辉 于 2016-11-17 15:28 编辑

好久不用stm32了,不知道具体是怎么回事,给楼主个小建议。

首先,注释掉串口,不要用printf打印变量的值,因为这样就会涉及到中断优先级的问题,printf也会占用一些时间,提高程序复杂度,建议直接看TIM4计数器的寄存器里面的值。

至于为啥要清两次CNT,我也不清楚,楼主仿真看看CNT寄存器里的值。
另外楼主再看看手册吧,这种问题,谁想要解决,基本步骤也就是看手册,仿真调试。
半导体->模拟电路->数字电路->单片机->汇编->C->操作系统->java
回复

使用道具 举报

12

主题

51

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
237
金钱
237
注册时间
2016-6-26
在线时间
29 小时
 楼主| 发表于 2016-11-18 12:58:26 | 显示全部楼层
东北小辉辉 发表于 2016-11-17 15:15
好久不用stm32了,不知道具体是怎么回事,给楼主个小建议。

首先,注释掉串口,不要用printf打印变量的 ...

谢谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-25 08:21

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表