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

#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);
    }
}


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

参与讨论
登录后参与讨论
属于自己的技术积累分享,成为嵌入式系统研发高手。
推荐文章
最近访客