OpenEdv-开源电子网

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

函数体执行中去关闭其它中断使能,请问是用哪个函数啊?

[复制链接]

210

主题

318

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1998
金钱
1998
注册时间
2015-10-27
在线时间
216 小时
发表于 2018-7-24 07:07:28 | 显示全部楼层 |阅读模式
1金钱


我程序里写了两个中断函数,我想在执行第一个中断时在这个语句里去关闭另一个中断,只要这个中断过来了,另一个中断我就得关掉,那么关闭另一个中断的语句怎么写?

最佳答案

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

例如: USART_Cmd(USART2, ENABLE); //使能串口二 USART_Cmd(USART2, DISABLE); //失能串口二,这样串口二就不能用了,后面再使能就可以了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

39

主题

535

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1065
金钱
1065
注册时间
2018-3-27
在线时间
378 小时
发表于 2018-7-24 07:07:29 | 显示全部楼层
例如:
USART_Cmd(USART2, ENABLE);    //使能串口二
USART_Cmd(USART2, DISABLE);   //失能串口二,这样串口二就不能用了,后面再使能就可以了
回复

使用道具 举报

39

主题

535

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1065
金钱
1065
注册时间
2018-3-27
在线时间
378 小时
发表于 2018-7-24 08:09:14 | 显示全部楼层
直接disable就好了
回复

使用道具 举报

210

主题

318

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1998
金钱
1998
注册时间
2015-10-27
在线时间
216 小时
 楼主| 发表于 2018-7-24 19:32:17 | 显示全部楼层
qiuzhicheng 发表于 2018-7-24 08:24
例如:
USART_Cmd(USART2, ENABLE);    //使能串口二
USART_Cmd(USART2, DISABLE);   //失能串口二,这样 ...

那这个外部中断有这种Cmd函数吗?
回复

使用道具 举报

39

主题

535

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1065
金钱
1065
注册时间
2018-3-27
在线时间
378 小时
发表于 2018-7-25 08:02:52 | 显示全部楼层
lili0231 发表于 2018-7-24 19:32
那这个外部中断有这种Cmd函数吗?

库函数我没找到,寄存器有
外部中断屏蔽寄存器EXTI->IMR
你可以去看一下
回复

使用道具 举报

210

主题

318

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1998
金钱
1998
注册时间
2015-10-27
在线时间
216 小时
 楼主| 发表于 2018-7-26 23:05:00 | 显示全部楼层
qiuzhicheng 发表于 2018-7-25 08:02
库函数我没找到,寄存器有
外部中断屏蔽寄存器EXTI->IMR
你可以去看一下

试了一下,没有效果,其它中断还依然会执行
回复

使用道具 举报

39

主题

535

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1065
金钱
1065
注册时间
2018-3-27
在线时间
378 小时
发表于 2018-7-27 08:02:46 | 显示全部楼层
lili0231 发表于 2018-7-26 23:05
试了一下,没有效果,其它中断还依然会执行

你有屏蔽相应的中断吗?怎么屏蔽的?
回复

使用道具 举报

39

主题

535

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1065
金钱
1065
注册时间
2018-3-27
在线时间
378 小时
发表于 2018-7-27 08:04:46 | 显示全部楼层
lili0231 发表于 2018-7-26 23:05
试了一下,没有效果,其它中断还依然会执行

你有屏蔽相应的中断吗?怎么屏蔽的?
回复

使用道具 举报

210

主题

318

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1998
金钱
1998
注册时间
2015-10-27
在线时间
216 小时
 楼主| 发表于 2018-7-27 22:18:25 | 显示全部楼层
qiuzhicheng 发表于 2018-7-27 08:04
你有屏蔽相应的中断吗?怎么屏蔽的?


        //EXTI->IMR &= ~(EXTI_Line4); //Æá±Îía2¿ÖD¶Ï4
我是这么试的,但是没有效果
回复

使用道具 举报

39

主题

535

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1065
金钱
1065
注册时间
2018-3-27
在线时间
378 小时
发表于 2018-7-30 08:16:40 | 显示全部楼层
lili0231 发表于 2018-7-27 22:18
//EXTI->IMR &= ~(EXTI_Line4); //Æá±Îía2¿ÖD¶Ï4
我是这么试的, ...

建议你不要这样写,EXTI->IMR &= ~(EXTI_Line4);
EXTI->IMR &= ~(1<<4); //对相应的位操作就行了
这样就屏蔽了GPIOx_Pin_4所有的外部中断
你是怎么判断他还会进中断的
回复

使用道具 举报

210

主题

318

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1998
金钱
1998
注册时间
2015-10-27
在线时间
216 小时
 楼主| 发表于 2018-7-30 19:58:44 | 显示全部楼层
qiuzhicheng 发表于 2018-7-30 08:16
建议你不要这样写,EXTI->IMR &= ~(EXTI_Line4);
EXTI->IMR &= ~(1

因为另一个中断里是点灯的程序,就那个程序在里面,所以灯亮了,说明程序肯定是执行进去了
回复

使用道具 举报

39

主题

535

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1065
金钱
1065
注册时间
2018-3-27
在线时间
378 小时
发表于 2018-7-31 08:05:46 | 显示全部楼层
lili0231 发表于 2018-7-30 19:58
因为另一个中断里是点灯的程序,就那个程序在里面,所以灯亮了,说明程序肯定是执行进去了

我试了,是可以关掉的
看看你程序哪里写错了吧
回复

使用道具 举报

210

主题

318

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1998
金钱
1998
注册时间
2015-10-27
在线时间
216 小时
 楼主| 发表于 2018-8-2 22:38:19 | 显示全部楼层
qiuzhicheng 发表于 2018-7-31 08:05
我试了,是可以关掉的
看看你程序哪里写错了吧


        //编写中断服务函数
void EXTI2_IRQHandler(void){  //KEY2 PE2
       
        //EXTI->IMR &= ~(EXTI_Line4); //屏蔽外部中断4
        //EXTI->IMR !=   EXTI_Line4;        //使能外部中断4
                 delay_ms(10);
         if(KEY2 == 0)
         {
                 BEEP = 1;//响
                 LED0 = 1;//灭
                 LED1 = 1;//灭
         }
        //清除中断标志位
         EXTI_ClearITPendingBit(EXTI_Line2);
         No_status = 2;
         
        }
       
        //编写中断服务函数
void EXTI4_IRQHandler(void){  //KEY0 PE4
                 
         delay_ms(10);
         if(KEY0 == 0)
         {
                 LED0 = 0;//亮
                 LED1 = 0;//亮
                 BEEP = 0;//不叫
         }
        //清除中断标志位
        EXTI_ClearITPendingBit(EXTI_Line4);
         No_status = 4;
        }
回复

使用道具 举报

210

主题

318

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1998
金钱
1998
注册时间
2015-10-27
在线时间
216 小时
 楼主| 发表于 2018-8-2 22:38:32 | 显示全部楼层
lili0231 发表于 2018-8-2 22:38
//编写中断服务函数
void EXTI2_IRQHandler(void){  //KEY2 PE2
       

我是这么写的,关不掉。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-1 02:22

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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