OpenEdv-开源电子网

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

外部中断的一个现象?

[复制链接]

16

主题

112

帖子

0

精华

高级会员

Rank: 4

积分
818
金钱
818
注册时间
2014-10-22
在线时间
589 小时
发表于 2016-8-8 17:23:52 | 显示全部楼层 |阅读模式
5金钱
当外部中断服务函数里只写一句翻转io的代码的时候,实验现象是有时能翻转有时不能翻转,但当我加一句延时1us后,就每次都能翻转了,为什么会这样?

最佳答案

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

1,在中断里面,一定要清除中断标志。 2,按键必须加延时,去抖动,否则很容易受干扰导致结果错误。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2016-8-8 17:23:53 | 显示全部楼层
1,在中断里面,一定要清除中断标志。
2,按键必须加延时,去抖动,否则很容易受干扰导致结果错误。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

0

主题

34

帖子

0

精华

高级会员

Rank: 4

积分
968
金钱
968
注册时间
2016-7-18
在线时间
109 小时
发表于 2016-8-8 17:54:32 | 显示全部楼层
中断速度过快导致不响应?你试试在中断中先关了中断  翻转完IO后再开中断试试
回复

使用道具 举报

16

主题

112

帖子

0

精华

高级会员

Rank: 4

积分
818
金钱
818
注册时间
2014-10-22
在线时间
589 小时
 楼主| 发表于 2016-8-8 19:08:33 | 显示全部楼层
white_fox 发表于 2016-8-8 17:54
中断速度过快导致不响应?你试试在中断中先关了中断  翻转完IO后再开中断试试

不行,现象依旧;
回复

使用道具 举报

16

主题

112

帖子

0

精华

高级会员

Rank: 4

积分
818
金钱
818
注册时间
2014-10-22
在线时间
589 小时
 楼主| 发表于 2016-8-8 19:15:29 | 显示全部楼层
也不是抖动造成,因为我用另一块单片机的io当触发信号也是这个现象,所以排除是外部因素,另外我用n多的代码(长度已经大于1us了)代替delay_us(1)也不行。只能用延时函数,哪怕延时1us就有效。大家不信可以试试。
回复

使用道具 举报

6

主题

201

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1149
金钱
1149
注册时间
2015-11-13
在线时间
267 小时
发表于 2016-8-9 11:09:37 | 显示全部楼层
无法接受在中断服务程序里加延时的做法,即使只有1us,中断服务程序就应当是尽可能简洁简单而高效。如果要延时的话那就设一个标志(flag)在主程序里对该标志进行判断后做I/O翻转的处理。

另外,问一句,楼主你在外部中断服务程序里只写了一句翻转I/O,那么你翻转I/O之前有没有判断外部中断的状态寄存器?判断完状态寄存器之后有没有清除对应的中断标志位?
回复

使用道具 举报

48

主题

208

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1371
金钱
1371
注册时间
2015-3-24
在线时间
190 小时
发表于 2016-8-9 11:27:43 | 显示全部楼层
学习、没遇到过这个问题、我每次外部中断翻转都没出现过这样子的问题!! 加一个机械延时试一试?asm("nop");
小时在工地上玩,捡了一个根木棒回家,麻麻问我捡这破玩意回来有什么用?我脑子一热,就说“你可以用它来打我啊!!”
于是,一根木棒伴随了我很多年。
回复

使用道具 举报

16

主题

112

帖子

0

精华

高级会员

Rank: 4

积分
818
金钱
818
注册时间
2014-10-22
在线时间
589 小时
 楼主| 发表于 2016-8-9 12:20:54 | 显示全部楼层
特朗姆斯 发表于 2016-8-9 11:09
无法接受在中断服务程序里加延时的做法,即使只有1us,中断服务程序就应当是尽可能简洁简单而高效。如果要 ...

这帖子不是要讨论io翻转方法那个好,而是对这一现象希望能得到解释,至于状态标志,我直接用的是原子的例子,你可以试下就知道了。
回复

使用道具 举报

16

主题

112

帖子

0

精华

高级会员

Rank: 4

积分
818
金钱
818
注册时间
2014-10-22
在线时间
589 小时
 楼主| 发表于 2016-8-9 12:21:59 | 显示全部楼层
1206447373 发表于 2016-8-9 11:27
学习、没遇到过这个问题、我每次外部中断翻转都没出现过这样子的问题!! 加一个机械延时试一试?asm("nop" ...

你的中断翻转有没有延时函数?
回复

使用道具 举报

16

主题

112

帖子

0

精华

高级会员

Rank: 4

积分
818
金钱
818
注册时间
2014-10-22
在线时间
589 小时
 楼主| 发表于 2016-8-9 12:23:08 | 显示全部楼层
本帖最后由 dfbb123 于 2016-8-9 12:24 编辑

1.png 这是加了延时函数的
回复

使用道具 举报

16

主题

112

帖子

0

精华

高级会员

Rank: 4

积分
818
金钱
818
注册时间
2014-10-22
在线时间
589 小时
 楼主| 发表于 2016-8-9 12:23:25 | 显示全部楼层
本帖最后由 dfbb123 于 2016-8-9 12:33 编辑

2.png 这是没有延时函数的
回复

使用道具 举报

16

主题

112

帖子

0

精华

高级会员

Rank: 4

积分
818
金钱
818
注册时间
2014-10-22
在线时间
589 小时
 楼主| 发表于 2016-8-9 12:29:37 | 显示全部楼层
本帖最后由 dfbb123 于 2016-8-9 12:38 编辑

绿的是另一个单片机的触发信号,黄的是要翻转的io,从2个图我觉得不加延时中断应该是进了2次,说明一下黄的脉宽长度是由我加的n多代码的多少决定的,我前面讲过的,n多代码加在翻转io前,加后面也一样。用的例子就是原子的,寄存器板,大家可以试试就知道了。其实问题变成了为什么加延时哪怕就1us就进一次中断,不加就进2次?
回复

使用道具 举报

6

主题

201

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1149
金钱
1149
注册时间
2015-11-13
在线时间
267 小时
发表于 2016-8-9 14:28:00 | 显示全部楼层
本帖最后由 特朗姆斯 于 2016-8-9 14:33 编辑
dfbb123 发表于 2016-8-9 12:29
绿的是另一个单片机的触发信号,黄的是要翻转的io,从2个图我觉得不加延时中断应该是进了2次,说明一下黄的 ...

建议贴一下关键部分的代码,有时候发生问题的原因是其它因素导致的
回复

使用道具 举报

43

主题

481

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1352
金钱
1352
注册时间
2014-12-24
在线时间
321 小时
发表于 2016-8-9 15:01:20 | 显示全部楼层
也曾遇到过个问题,用STM32F103R8的PB8还是PB9来的?记不太准了,反正是这两个IO的其中一,与你的问题一样,试了多种办法无解,最后不用那个IO,问题才得以解决。
回复

使用道具 举报

43

主题

481

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1352
金钱
1352
注册时间
2014-12-24
在线时间
321 小时
发表于 2016-8-9 15:02:42 | 显示全部楼层
更奇怪的是,换程序来测试,又测试不出问题。
回复

使用道具 举报

4

主题

290

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1130
金钱
1130
注册时间
2015-8-4
在线时间
107 小时
发表于 2016-8-9 17:22:00 | 显示全部楼层
IO操作频率设置到最大试试,103的最大貌似是50MHZ吧?
活到老,学到老。
回复

使用道具 举报

16

主题

112

帖子

0

精华

高级会员

Rank: 4

积分
818
金钱
818
注册时间
2014-10-22
在线时间
589 小时
 楼主| 发表于 2016-8-9 19:10:56 | 显示全部楼层
本帖最后由 dfbb123 于 2016-8-9 19:12 编辑
特朗姆斯 发表于 2016-8-9 14:28
建议贴一下关键部分的代码,有时候发生问题的原因是其它因素导致的

你觉得有必要?好吧那就贴下中断服务函数里的内容吧
void EXTI4_IRQHandler(void)
{
        c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);
c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);
        c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);
c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);
        c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);
c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);
        c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);
c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);
        c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);
c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);
        c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);
c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);
delay_us(1);        
        c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);
c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);
        c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);
c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);
        c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);
c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);
        c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);
c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);
        c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);
c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);
        c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);
c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);c=(((a+b)/999+300)*((a+b)/999+300))*((a+b)/999+300)*((a+b)/999+300)*((a+b)/999+300);        
        
        PEout(2)=!PEout(2);
        PBout(9)=!PBout(9);
        

        EXTI->PR=1<<4;  //&#199;&#229;3yLINE0é&#207;μ&#196;&#214;D&#182;&#207;±ê&#214;&#190;&#206;&#187;  
}         
还有中断初始化的部分
void EXTIX_Init(void)
{
        KEY_Init();
        Ex_NVIC_Config(GPIO_E,4,1);                 //&#207;&#194;&#189;μ&#209;&#216;′¥·¢
//        Ex_NVIC_Config(GPIO_E,3,FTIR);                 //&#207;&#194;&#189;μ&#209;&#216;′¥·¢
//        Ex_NVIC_Config(GPIO_E,4,FTIR);                 //&#207;&#194;&#189;μ&#209;&#216;′¥·¢
//         Ex_NVIC_Config(GPIO_A,0,RTIR);                  //é&#207;éy&#209;&#216;′¥·¢
//        MY_NVIC_Init(3,2,EXTI2_IRQn,2);                //&#199;à&#213;&#188;3£&#172;×óó&#197;&#207;è&#188;&#182;2£&#172;×é2
//        MY_NVIC_Init(2,2,EXTI3_IRQn,2);                //&#199;à&#213;&#188;2£&#172;×óó&#197;&#207;è&#188;&#182;2£&#172;×é2           
//        MY_NVIC_Init(1,2,EXTI4_IRQn,2);                //&#199;à&#213;&#188;1£&#172;×óó&#197;&#207;è&#188;&#182;2£&#172;×é2           
        MY_NVIC_Init(0,2,EXTI4_IRQn,2);                //&#199;à&#213;&#188;0£&#172;×óó&#197;&#207;è&#188;&#182;2£&#172;×é2           
}
还有的就是io的初始化这没什么好贴的吧,其他就是原子的例程部分我没动。
回复

使用道具 举报

16

主题

112

帖子

0

精华

高级会员

Rank: 4

积分
818
金钱
818
注册时间
2014-10-22
在线时间
589 小时
 楼主| 发表于 2016-8-9 19:13:42 | 显示全部楼层
kingnike 发表于 2016-8-9 17:22
IO操作频率设置到最大试试,103的最大貌似是50MHZ吧?

就是用的最大速度
回复

使用道具 举报

16

主题

112

帖子

0

精华

高级会员

Rank: 4

积分
818
金钱
818
注册时间
2014-10-22
在线时间
589 小时
 楼主| 发表于 2016-8-9 19:17:52 | 显示全部楼层
jinggx 发表于 2016-8-9 15:01
也曾遇到过个问题,用STM32F103R8的PB8还是PB9来的?记不太准了,反正是这两个IO的其中一,与你的问题一样 ...

以你的说法,我们是现象一样,但成因是否一样就不知道了,只是我的是换io也还那样的
至于换程序,就说的通了,说不定你刚好换了个有延时的。
回复

使用道具 举报

16

主题

112

帖子

0

精华

高级会员

Rank: 4

积分
818
金钱
818
注册时间
2014-10-22
在线时间
589 小时
 楼主| 发表于 2016-8-9 19:23:01 | 显示全部楼层
103和407都有这个现象。我估计我是找不出问题所在了,其实这现象到也好克服大不了加一句delay_us(1);好了,只是不能弄明白,总觉学stm32学得不那么踏实罢了。
回复

使用道具 举报

16

主题

112

帖子

0

精华

高级会员

Rank: 4

积分
818
金钱
818
注册时间
2014-10-22
在线时间
589 小时
 楼主| 发表于 2016-8-10 06:18:25 | 显示全部楼层
正点原子 发表于 2016-8-8 17:23
1,在中断里面,一定要清除中断标志。
2,按键必须加延时,去抖动,否则很容易受干扰导致结果错误。

大清早起来,想看看有没有新回复,让我惊奇的是看到原子哥百忙之中来我帖子了,更让我惊奇的是居然是前天回复的,这真的怪了,我昨天都没看到有原子哥的回复,更更让我惊奇的是我的贴变成已解决了,这本来是高兴的事,可这最佳答案不能让我满意,可居然就成了我的最佳答案了,这。。这。。。有点像被强奸了似的,呵呵,开玩笑了。
对于回复的2点,1我的中断有没有清标志,我想你是最清楚的,因为用的就是你的代码,就加了点翻转io的内容,代码我也已经贴出来了。
                             2我开始确实用的是按键,我也考虑到了是否是抖动的原因,所以我后来改成用另一块单片机当触发信号,但现象依旧,再说我就加1us的延时就能起消抖吗
另外特别想感谢原子,你对我学习stm32是有很大的帮助的,谢谢!!!
回复

使用道具 举报

6

主题

201

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1149
金钱
1149
注册时间
2015-11-13
在线时间
267 小时
发表于 2016-8-11 10:34:17 | 显示全部楼层
dfbb123 发表于 2016-8-9 19:10
你觉得有必要?好吧那就贴下中断服务函数里的内容吧
void EXTI4_IRQHandler(void)
{

我看了一下你是先翻转电平再清中断标志,那么进入两次中断也没有什么好奇怪的

你试一下进中断服务程序之后先清中断标志,再翻转电平看效果。
回复

使用道具 举报

16

主题

112

帖子

0

精华

高级会员

Rank: 4

积分
818
金钱
818
注册时间
2014-10-22
在线时间
589 小时
 楼主| 发表于 2016-8-11 21:41:30 | 显示全部楼层
本帖最后由 dfbb123 于 2016-8-12 03:31 编辑
特朗姆斯 发表于 2016-8-11 10:34
我看了一下你是先翻转电平再清中断标志,那么进入两次中断也没有什么好奇怪的

你试一下进中断服务程序 ...

高手啊,如此写现象确实正常了,不过我又发现也可以不把翻转代码放到请标志之后,只要在清标志后面加代码效果一样,加的代码可以是任意无用的,why?
总结一下,排除此现象有2个方法,1:加delay_us(1);2是清标志后面要有代码;比如GPIOF->CRL=0X33333333;
你讲的方法可以归到2。
你可以验证下我说的,并请你把结果发上来。

回复

使用道具 举报

6

主题

201

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1149
金钱
1149
注册时间
2015-11-13
在线时间
267 小时
发表于 2016-8-12 10:06:59 | 显示全部楼层
dfbb123 发表于 2016-8-11 21:41
高手啊,如此写现象确实正常了,不过我又发现也可以不把翻转代码放到请标志之后,只要在清标志后面加代码 ...

很敬佩你的钻研精神,但是你表达出来的意思有点难以理解

“加的代码可以是任意无用的”这句话是什么意思?后面一句“清标志后面要有代码”又是什么意思?

回复

使用道具 举报

16

主题

112

帖子

0

精华

高级会员

Rank: 4

积分
818
金钱
818
注册时间
2014-10-22
在线时间
589 小时
 楼主| 发表于 2016-8-12 18:30:19 | 显示全部楼层
本帖最后由 dfbb123 于 2016-8-12 18:32 编辑
特朗姆斯 发表于 2016-8-12 10:06
很敬佩你的钻研精神,但是你表达出来的意思有点难以理解

“加的代码可以是任意无用的”这句话是什么意 ...

谢谢你的夸奖,原来这叫专研精神,我还以为是走火入魔呢
我贴个代码给我看吧,
void EXTI2_IRQHandler(void)
{
        PCout(13)=!PCout(13);
        num++;
         EXTI-> PR=1<<2;  // &#199;&#229;3yLINE2é&#207;μ&#196;&#214;D&#182;&#207;±ê&#214;&#190;&#206;&#187;  
        LED0=1;
        
}
看到那个LED0=1;了吗,这个就是任意无用的代码,你也可以写别的随便什么代码,关键是要放在清标志后面,有了这个代码程序就正常,拿掉就会进2次中断。
同理 EXTI->IMR&=~(1<<11); // 屏蔽line11上的中断
        EXTI-> PR=1<<11;  // 清除LINE11上的中断标志位
这样写也是会进2次中断才关闭中断的。要掉过来写的。
你讲的把翻转放到清标志后面就是起到标志后面有代码的作用,当然区别是这是有用的代码,所以当然也有效了。我观察到现象,也能排除现象,就是不懂为什么会这样?
      
回复

使用道具 举报

6

主题

201

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1149
金钱
1149
注册时间
2015-11-13
在线时间
267 小时
发表于 2016-8-15 09:49:30 | 显示全部楼层
void EXTI2_IRQHandler( void )
{
       if(EXTI_GetITStatus(EXTI_Line2)!=RESET)
       {
                PCout(13)=!PCout(13);
        EXTI_ClearITPendingBit(EXTI_Line2);
       }       
}

你可以像上面这个函数,尝试一下在进入中断后先判断一下中断状态标志,看看中断会不会进两次。
回复

使用道具 举报

16

主题

112

帖子

0

精华

高级会员

Rank: 4

积分
818
金钱
818
注册时间
2014-10-22
在线时间
589 小时
 楼主| 发表于 2016-8-15 19:09:07 | 显示全部楼层
特朗姆斯 发表于 2016-8-15 09:49
void EXTI2_IRQHandler( void )
{
       if(EXTI_GetITStatus(EXTI_Line2)!=RESET)

你为什么不自己验证下再告诉我呢?我已经动手做了很多实验了,我看论坛里没人关心这个现象,既没人说不存在这个现象,也没人说确实有这个现象,大家是不相信有这个现象还是不感兴趣?算了,我累了,让它沉了吧。
回复

使用道具 举报

6

主题

201

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1149
金钱
1149
注册时间
2015-11-13
在线时间
267 小时
发表于 2016-8-16 09:33:49 | 显示全部楼层
dfbb123 发表于 2016-8-15 19:09
你为什么不自己验证下再告诉我呢?我已经动手做了很多实验了,我看论坛里没人关心这个现象,既没人说不存 ...

其实我是在我做完项目里的外部中断的服务函数里选取的,我知道这样写可行才推荐给你。。





回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-28 03:38

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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