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

运行中更改定时器定时时间值

[复制链接]
温柔的郎 提问时间:2020-2-28 16:14 /
各位大神,定时器相信大家都常用到,问下,如何在程序运行时,动态改变定时器的定时时间值。
比如,定时器定时时间到,控制的灯就点亮或者熄灭,a为定时器的定时时间值,如果在程序运行过程中,改变a的赋值,这个定时器的定时时间也会自动跟着延长或者减小,
这个定时器赋值,如何实现啊???
请有知道的大神指点指点


timg.jpg
收藏 评论5 发布时间:2020-2-28 16:14

举报

5个回答
wenyangzeng 回答时间:2020-2-28 21:24:41
设置TIMx的控制寄存器TIMx_CR1的D7位(APRE)为1,则改变自动重加载寄存器(TIMx_ARR)的值,即可更新定时器新的定时值。


无标题1.png
STM1024 回答时间:2020-2-29 16:51:27
你初始化的时候不是有给定时器配置周期吗?那个怎么搞,这里就怎么搞,从稳妥角度考虑,建议在修改前,先把定时器关闭,把相应的中断也给关闭了,配置完了再打开。

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

李康1202 回答时间:2020-2-29 19:20:27
按道理说直接改寄存器就可以
aiherong 回答时间:2020-3-1 05:06:56
int a =初始值;  a +=增量; 或 a-=增量; 然后将下一行代码加入你想要的位置:
*(volatile unsigned int *)(TIMx_BASE +0x28)=a ; 其中TIMx具体到某一定时器

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

butterflyspring 回答时间:2020-3-3 11:32:31
二楼的建议,用定时器预装载功能吧,否则在修改定时器寄存器时恰巧计数值到了就产生冲突。当然预装载是一种安全模式,但是产生作用是下一个周期。所以最终取决你的定时时间长短。如果很长的话,直接用软件计数就好了。

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版