新闻| 论坛| 博客| 在线研讨会
裸机GPIOTE 产生中断
电子禅石| 2017-09-01 17:23:51 阅读:9307 发布文章

#include "nrf_gpio.h"
#include "nrf51.h"
//定义自己板子上的按键和led灯
#define BUTTON_PIN 17
#define LED_PIN 21
int main(void){
//讯联的板子上按钮上没有接上拉电阻,所以需要下面这两句来设置输入有
//上拉电阻,不然的话每次按键后几秒钟内再按键都会没反应,要等一会按
//才会有反应
nrf_gpio_pin_pull_t config = NRF_GPIO_PIN_PULLUP;
nrf_gpio_cfg_input(BUTTON_PIN, config);
//配置GPIOTE通道0作为event,”绑定”按键引脚,设置下降沿产生event
NRF_GPIOTE->CONFIG[0] = 1 << 0
|(BUTTON_PIN << 8)
|(2 << 16);
//配置LED输出
nrf_gpio_cfg_output(LED_PIN);
//配置 event发生的时候产生中断,
NRF_GPIOTE->INTENSET = 0X01;
//配置GPIOTE中断优先级,并使能GPIOTE中断
NVIC_SetPriority(GPIOTE_IRQn, 1);
NVIC_ClearPendingIRQ(GPIOTE_IRQn);
NVIC_EnableIRQ(GPIOTE_IRQn);
while(1);
return 0;
}
//中断处理函数:
void GPIOTE_IRQHandler(void){
if ( NRF_GPIOTE->EVENTS_IN[0] == 1 ){
//首先清楚event,不然会导致中断退出有event任然存在导致一直
//触发中断
NRF_GPIOTE->EVENTS_IN[0] = 0;
nrf_gpio_pin_toggle(LED_PIN);
}
}


*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
属于自己的技术积累分享,成为嵌入式系统研发高手。
最近文章
签名类型
2024-04-29 16:28:59
cat 文件名
2024-04-29 15:05:34
推荐文章
最近访客