OpenEdv-开源电子网

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

基本定时器初始化过程中定时器总线使能的顺序问题请教?

[复制链接]

29

主题

338

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1181
金钱
1181
注册时间
2018-4-13
在线时间
170 小时
发表于 2018-10-21 18:54:20 | 显示全部楼层 |阅读模式
5金钱
基本定时器TIM6和TIM7初始化时需要使能定时器时钟总线,但我发现使能总线的顺序是个问题。
一般来讲先要使能定时器总线才进行定时器相关配置,比如PSC/ARR/NVIC等等。
但如果之后需要改变PSC/ARR的值,即使修改改之前都没有使能定时器运行:TIM_Cmd(TIM6, DISABLE),修改后也没有立即使能定时器运行。但是,一经修改立马会发生一次定时器中断,没有经过定时。
我以为是偶发问题,可是却不是。

为了解决这个问题,我一条条地常识屏蔽第二次执行的初始化语句,发现了问题所在。
如果定时器总线已经使能,执行TIM_TimeBaseInit()初始化基本定时器函数就会引发一次中断。此时还没有TIM_Cmd(TIM6,ENABLE)。
如果不执行使能总线,则执行TIM_TimeBaseInit()不会引发一次中断。
我试着把使能总线语句放到TIM_TimeBaseInit的后面执行,发现第一次初始化定时器就不能工作。
但如果第一次初始化时按照一般顺序执行:先使能定时器总线再TIM_TimeBaseInit()。第二次先关闭总线,接着TIM_TimeBaseInit(),然后再使能总线。这次一切正常了。
无论之后修改多少次定时器参数都可以正常进行工作。
-------------------------------
我总结了一下,初次初始化定时器需要先使能定时器总线,之后初始化定时器可以关断和使能总线都可以,但如果不关断总线就初始化会立马产生一次中断意外。
这是什么



最佳答案

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

终于解决了立刻产生中断的问题,感谢正点原子。 原帖是:http://www.openedv.com/forum.php?mod=viewthread&tid=97072&highlight=%B6%A8%CA%B1%C6%F7%2B%D6%D0%B6%CF 不过如何用一个定时器连续产生不同的定时时长还没有测试是否一起被解决。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

29

主题

338

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1181
金钱
1181
注册时间
2018-4-13
在线时间
170 小时
 楼主| 发表于 2018-10-21 18:54:21 | 显示全部楼层
终于解决了立刻产生中断的问题,感谢正点原子。
原帖是:http://www.openedv.com/forum.php ... 6%F7%2B%D6%D0%B6%CF
不过如何用一个定时器连续产生不同的定时时长还没有测试是否一起被解决。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2018-10-22 02:23:34 | 显示全部楼层
貌似都有这个现象。。。
回复

使用道具 举报

29

主题

338

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1181
金钱
1181
注册时间
2018-4-13
在线时间
170 小时
 楼主| 发表于 2018-10-22 06:49:52 | 显示全部楼层
如果使用同一个定时器进行连续两个不同的定时操作,一个定时t1到后修改参数成为定时t2,似乎也不成功。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-21 09:52

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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