Discuz! Board
标题:
关于如何关闭NRF51822外部中断
[打印本页]
作者:
hu25886
时间:
2016-5-4 10:15
标题:
关于如何关闭NRF51822外部中断
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脚的中断,但是实验发现执行该语句后所有中断都失效了,这是什么原因呢?
作者:
timi81@163.com
时间:
2017-5-8 21:51
单独编写中断处理函数 例如:
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.}
欢迎光临 Discuz! Board (http://qfv8.com/)
Powered by Discuz! X3