新闻  |   论坛  |   博客  |   在线研讨会
裸机PPI
电子禅石 | 2017-09-01 19:26:19    阅读:8614   发布文章

#include "nrf51.h"
#include "nrf_gpio.h"
 
#define LED       (22)
#define BUTTON    (18)
 
int main(void){
 
    nrf_gpio_cfg_input(BUTTON, NRF_GPIO_PIN_PULLUP);
   
    NRF_GPIOTE->CONFIG[0] = ( 3 << 0 )
                         | ( LED << 8)
                         | ( 3 << 16 )
                         | ( 1 << 20);
 
    NRF_GPIOTE->CONFIG[1] = ( 1 << 0 )
                         | ( BUTTON << 8)
                         | ( 2 << 16 );
    //将 GPIOTE通道 1 绑定到 PPI 通道 0 的event 输入端。
    //将 GPIOTE通道 0 绑定到 PPI 通道 0 的task 端
    //因为 GPIOTE通道 1和0 已经分别绑定到button和led,并且对应设置为了 event和task。
    //所以当button被按下(产生下降沿)的时候,会产生event事件输入给 ppi通道0的 事件输入端,然后ppi 0的task端就会自动被触发,即led电平翻转
    NRF_PPI->CH[0].EEP = (uint32_t)(&NRF_GPIOTE->EVENTS_IN[1]);
    NRF_PPI->CH[0].TEP = (uint32_t)(&NRF_GPIOTE->TASKS_OUT[0]); //注意,这里赋值要取地址   
   
    //使能PPI通道 0
    NRF_PPI->CHENSET = 0x01;
    while(1);
 
    return 0;
}


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

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