OpenEdv-开源电子网

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

STM32F103RCT6的普通定时器T3,T4中断问题,存在开机后初始化,一打开允许中断,定时器立刻进入中断函数一次

[复制链接]

7

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
79
金钱
79
注册时间
2012-6-29
在线时间
0 小时
发表于 2014-10-6 13:39:25 | 显示全部楼层 |阅读模式
5金钱
STM32F103RCT6的普通定时器T3,T4中断问题:
存在开机后初始化,在TIM3_Int_Init()里面,一打开允许中断函数TIM_ITConfig(),定时器立刻进入中断函数一次。只进一次。
初始化函数最后已经关闭定时器:
TIM_Cmd(TIM3, DISABLE);  //暂关闭TIMx外设。将这个函数提到初始化最前面也没用。

最佳答案

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

http://www.openedv.com/posts/list/38198.htm 看看我的回答,试试。20楼
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

17

主题

342

帖子

0

精华

高级会员

Rank: 4

积分
544
金钱
544
注册时间
2014-4-24
在线时间
20 小时
发表于 2014-10-6 13:39:26 | 显示全部楼层
http://www.openedv.com/posts/list/38198.htm
看看我的回答,试试。20楼
回复

使用道具 举报

7

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
79
金钱
79
注册时间
2012-6-29
在线时间
0 小时
 楼主| 发表于 2014-10-6 13:39:26 | 显示全部楼层
回复【4楼】ahamao:
---------------------------------
谢谢,答案是正解。
不过软件步骤没有那么严格。我先开的中断,再清零中断标志,最后开启定时器也可以的。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2014-10-6 23:48:56 | 显示全部楼层
这个问题,貌似无法避免,论坛之前有网友说找到解决办法了,但是后面有网友测试,也是一样。
你从其他地方详细解决方法吧。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

7

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
79
金钱
79
注册时间
2012-6-29
在线时间
0 小时
 楼主| 发表于 2014-10-11 21:25:12 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
谢谢,可能这确实是STM32在芯片设计上面存在的小BUG吧。不过通过楼下的方法也可以软件弥补。
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手上路

积分
22
金钱
22
注册时间
2014-12-11
在线时间
0 小时
发表于 2015-6-22 11:51:12 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
在做程序的时候出现了:一开允许中断函数TIM_ITConfig(),定时器立刻进入中断函数一次。
看了好几个原子的帖子;然后试着解决了自己的问题。

总结:应该是TIM_TimeBaseInit(TIM5, &TIM_TimeBaseStructure);产生了更新事件,只要将
TIM_ClearFlag(TIM5, TIM_FLAG_Update);
 TIM_ITConfig(TIM5,TIM_IT_Update,ENABLE); 放在TIM_TimeBaseInit(TIM5, &TIM_TimeBaseStructure);的后面,就不会出现一开允许中断函数TIM_ITConfig(),定时器立刻进入中断函数一次的情况。
IM_Cmd(TIM5, ENABLE); 放前放后无所谓,他只是让计数器开始计数,只是放后面的话可能需要将计数器清零。

希望对:解决一开允许中断函数TIM_ITConfig(),定时器立刻进入中断函数一次;有帮助。
我就是我
回复

使用道具 举报

26

主题

64

帖子

0

精华

初级会员

Rank: 2

积分
190
金钱
190
注册时间
2015-7-24
在线时间
0 小时
发表于 2015-8-6 16:22:18 | 显示全部楼层
回复【3楼】STM32VBT6:
---------------------------------
您好,谢谢你的回答,让我解决了定时器中断的定时器启动后会立即进入更新中断的问题,现在我遇到一个问题想向你请教一下。
   while((40<tp_dev.x[t]&&tp_dev.x[t]><160)&&(160<tp_dev.y[t]&&tp_dev.y[t]><280))
{
                                        TIM3_Int_Init(50000-1,8400-1);
break;
}

如上述程序,我想通过触摸触摸屏上相应区域才开始初始化定时器3,但是一按下去之后,它并没有定时5s后进入中断,而是立即进入中断,这该怎么解决呢?感激不尽,谢谢.
M4小白菜,求各位大牛多多指导
回复

使用道具 举报

3

主题

39

帖子

0

精华

初级会员

Rank: 2

积分
160
金钱
160
注册时间
2015-8-12
在线时间
19 小时
发表于 2015-8-26 14:09:49 | 显示全部楼层
我也遇到这个问题了,RCT6,通过串口命令改变定时器的设定值。结果一改变后重新初始化定时器就进入中断。并且
TIM_ITConfig()这个歌函数我已经禁能,在外部中断才开启 也不行啊啊啊
回复

使用道具 举报

0

主题

43

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
233
金钱
233
注册时间
2014-6-5
在线时间
37 小时
发表于 2015-10-9 12:30:38 | 显示全部楼层
5楼的方案可行,已测试可用,谢谢!
回复

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2015-5-8
在线时间
3 小时
发表于 2015-10-9 14:43:26 | 显示全部楼层
回复【9楼】zhanghan431回复【9楼】zhanghan4310:
---------------------------------
为什么我用了不行呀,你怎么用的,代码能贴出来看看么
回复

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2015-5-8
在线时间
3 小时
发表于 2015-10-9 14:48:36 | 显示全部楼层
回复【6楼】wjw520:
---------------------------------
TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStructure);

TIM_ClearFlag(TIM3,TIM_FLAG_Update); 
TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);

TIM_ARRPreloadConfig(TIM3,DISABLE);
TIM_Cmd(TIM3,ENABLE);
你好,这是我的代码顺序,没有达到预期效果,请指教
回复

使用道具 举报

0

主题

43

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
233
金钱
233
注册时间
2014-6-5
在线时间
37 小时
发表于 2015-10-21 09:13:39 | 显示全部楼层
回复【11楼】pnm_0881:
---------------------------------
和你一样的配置顺序  你的中断分组初始化了没   我测试的是TIM2  芯片F103RBT6  控制的LED 亮灭
回复

使用道具 举报

张木木 该用户已被删除
发表于 2017-2-16 12:11:48 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-8 11:58

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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