OpenEdv-开源电子网

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

TIM3通用定时器问题

[复制链接]

8

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
77
金钱
77
注册时间
2015-4-29
在线时间
0 小时
发表于 2015-5-28 06:46:54 | 显示全部楼层 |阅读模式
5金钱
[mw_shl_code=c,true]void TIM3_IRQHandler(void) { //if(TIM3->SR&0X0001) LED0=!LED0; LED1=!LED1; //delay_us(1); TIM3->SR&=~(1<<0); } 程序中只有 LED0=!LED0; LED1=!LED1; TIM3->SR&=~(1<<0); 灯就不闪烁,只要加入if(TIM3->SR&0X0001)或者delay_us(1); 灯就闪烁,这是为何? [/mw_shl_code]

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

13

主题

611

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1929
金钱
1929
注册时间
2014-10-6
在线时间
625 小时
发表于 2015-5-28 08:00:54 | 显示全部楼层
这是个奇怪的问题,我开始学习时也遇到这个问题到现在也不知道为什么,记住所有进中断都判断一下,以防出问题!
回复

使用道具 举报

19

主题

107

帖子

0

精华

初级会员

Rank: 2

积分
195
金钱
195
注册时间
2015-3-5
在线时间
44 小时
发表于 2015-5-28 08:28:00 | 显示全部楼层
//if(TIM3->SR&0X0001),这一句的功能是判断中断的类型
TIM3定时器中断有溢出中断、捕获中断等好几种,不管哪一种触发了都会进void TIM3_IRQHandler(void)这个函数,所以要读TIM3->SR寄存器判断是不是你想要的中断触发了。
回复

使用道具 举报

13

主题

611

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1929
金钱
1929
注册时间
2014-10-6
在线时间
625 小时
发表于 2015-5-28 09:20:06 | 显示全部楼层
回复【3楼】阿拓:
---------------------------------
程序中只开了一个中断充许,为什么别的中断也会进入?还有就算我们没有判断是不是我们要的中断触发,但这个中断触发了也会进入中断函数,那为什就没有执行中断里的操作?疑惑!
回复

使用道具 举报

8

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
77
金钱
77
注册时间
2015-4-29
在线时间
0 小时
 楼主| 发表于 2015-5-28 16:59:46 | 显示全部楼层
我就是这么觉得很奇怪,可是我不加if(TIM3->SR&0X0001)
加一条延时函数也可以delay_us(1);所以越发奇怪
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-21 22:05

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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