设为首页收藏本站

Discuz! Board

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 3810|回复: 1
打印 上一主题 下一主题

关于如何关闭NRF51822外部中断

[复制链接]

11

主题

30

帖子

176

积分

注册会员

Rank: 2

积分
176
跳转到指定楼层
楼主
hu25886 发表于 2016-5-4 10:15:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
static void gpiote_init(void)
{
NRF_GPIOTE->CONFIG[0] =
(GPIOTE_CONFIG_POLARITY_HiToLo << GPIOTE_CONFIG_POLARITY_Pos)
| (17 << GPIOTE_CONFIG_PSEL_Pos)
| (GPIOTE_CONFIG_MODE_Event << GPIOTE_CONFIG_MODE_Pos);          //初始化17脚及触发方式
NRF_GPIOTE->CONFIG[1] =
(GPIOTE_CONFIG_POLARITY_HiToLo << GPIOTE_CONFIG_POLARITY_Pos)
| (16 << GPIOTE_CONFIG_PSEL_Pos)
| (GPIOTE_CONFIG_MODE_Event << GPIOTE_CONFIG_MODE_Pos);         //初始化16脚及触发方式
NRF_GPIOTE->INTENSET =
(GPIOTE_INTENSET_IN0_Set << GPIOTE_INTENSET_IN0_Pos)
| (GPIOTE_INTENSET_IN1_Set << GPIOTE_INTENSET_IN1_Pos);             //设置中断
NVIC_EnableIRQ(GPIOTE_IRQn);                                                           //使能中断
}

利用NVIC_DisableIRQ(GPIOTE_IRQn);可以关闭所有中断。现在想关闭其中的某一路,根据中断设置想利用
NRF_GPIOTE->INTENCLR=
(GPIOTE_INTENCLR_IN0_Clear << GPIOTE_INTENCLR_IN0_Pos);关闭17脚的中断,但是实验发现执行该语句后所有中断都失效了,这是什么原因呢?

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

0

主题

4

帖子

47

积分

新手上路

Rank: 1

积分
47
沙发
timi81@163.com 发表于 2017-5-8 21:51:22 | 只看该作者
单独编写中断处理函数 例如:
void GPIOTE_IRQHandler(void)  
02.{  
03.    if((NRF_GPIOTE->EVENTS_IN[0]==1)&&(NRF_GPIOTE->INTENSET&GPIOTE_INTENSET_IN0_Msk))      
04.    {  
05.        NRF_GPIOTE->EVENTS_IN[0]=0;  
06.        rocker_ready_flag=1;  
07.    }  
08.}
回复 支持 反对

使用道具 举报

Archiver|手机版|小黑屋|Comsenz Inc.   

GMT+8, 2024-11-23 07:09 , Processed in 0.510498 second(s), 29 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

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