NRF528xx 芯片外设常用函数与事件速查(一)-----GPIO/GPIOTE/SysTick

硬件:NRF528XX , 示例SDK版本:nRF5_SDK_17.1.0_ddde560
一、GPIO引脚

  1. 宏函数:#define NRF_GPIO_PIN_MAP(port, pin) (((port) << 5) | ((pin) & 0x1F))
    作用:定义GPIO口引脚
    示例:NRF_GPIO_PIN_MAP(0,13); 表示定义端口0的pin13脚,即P0.13

  2. void nrf_gpio_cfg_output(uint32_t pin_number)
    作用:定义GPIO引脚为输出方向
    示例:nrf_gpio_cfg_output(NRF_GPIO_PIN_MAP(0,13));

  3. void nrf_gpio_range_cfg_output(uint32_t pin_range_start, uint32_t pin_range_end)
    作用:定义连续的GPIO引脚为输出方向
    示例:nrf_gpio_cfg_output(NRF_GPIO_PIN_MAP(0,3),NRF_GPIO_PIN_MAP(0,13));

  4. void nrf_gpio_cfg_input(uint32_t pin_number, nrf_gpio_pin_pull_t pull_config)
    作用:定义GPIO引脚为输入方向并配置上下拉电阻
    示例:nrf_gpio_cfg_input(NRF_GPIO_PIN_MAP(0,3),GPIO_PIN_CNF_PULL_Pullup);

  5. void nrf_gpio_range_cfg_input(uint32_t pin_range_start,
    ---------------------------------------------uint32_t pin_range_end,
    ---------------------------------------------nrf_gpio_pin_pull_t pull_config);
    作用:定义连续GPIO引脚为输入方向并配置上下拉电阻
    示例:nrf_gpio_nrf_gpio_range_cfg_inputcfg_input( NRF_GPIO_PIN_MAP(0,3),
    -------------------------------------------------------------------------NRF_GPIO_PIN_MAP(0,13),
    -------------------------------------------------------------------------GPIO_PIN_CNF_PULL_Pullup);

  6. void nrf_gpio_pin_set(uint32_t pin_number)
    作用:设置GPIO引脚为高电平
    示例:nrf_gpio_pin_set(NRF_GPIO_PIN_MAP(0,3));

  7. void nrf_gpio_pin_clear(uint32_t pin_number)
    作用:设置GPIO引脚为低电平
    示例:nrf_gpio_pin_clear(NRF_GPIO_PIN_MAP(0,3);

  8. void nrf_gpio_pin_write(uint32_t pin_number, uint32_t value);
    作用:设置GPIO引脚的高低电平
    示例:nrf_gpio_pin_clear(NRF_GPIO_PIN_MAP(0,3),1);

  9. void nrf_gpio_pin_toggle(uint32_t pin_number)
    作用:翻转GPIO引脚电平
    示例:nrf_gpio_pin_toggle(NRF_GPIO_PIN_MAP(0,3));

  10. void uint32_t nrf_gpio_pin_read(uint32_t pin_number)
    作用:读取GPIO引脚电平状态
    示例:nrf_gpio_pin_read(NRF_GPIO_PIN_MAP(0,3));

二、GPIOTE(GPIO任务与事件)
在GPIOTE中输出当做任务,输入当做事件

  1. ret_code_t nrf_drv_gpiote_init(void)
    作用:初始化GPIOTE模块

(1)输出模式

  1. ret_code_t nrfx_gpiote_out_init(nrfx_gpiote_pin_t pin,
    nrfx_gpiote_out_config_t const * p_config)
    作用:配置GPIOTE输出通道与GPIO引脚绑定并设置初始电平
    示例:nrf_drv_gpiote_out_config_t outConfig = GPIOTE_CONFIG_OUT_TASK_TOGGLE(true);
    -------nrf_drv_gpiote_out_init(NRF_GPIO_PIN_MAP(0,3), &outConfig);

  2. ret_code_t nrfx_gpiote_out_uninit(nrfx_gpiote_pin_t pin)
    作用:释放GPIOTE输出通道与GPIO引脚绑定
    示例:nrfx_gpiote_out_uninit(NRF_GPIO_PIN_MAP(0,3));

  3. void nrf_drv_gpiote_out_task_enable1. (nrfx_gpiote_pin_t pin)
    作用:使能GPIOTE输出引脚的任务模式
    示例:nrf_drv_gpiote_out_task_enable(NRF_GPIO_PIN_MAP(0,3));

  4. void nrf_drv_gpiote_out_task_disable(nrfx_gpiote_pin_t pin)
    作用:禁止GPIOTE输出引脚的任务模式
    示例:nrf_drv_gpiote_out_task_disable(NRF_GPIO_PIN_MAP(0,3));

  5. void nrf_drv_gpiote_set_task_trigger(nrf_drv_gpiote_pin_t pin)
    作用:手动触发 GPIOTE SET 任务,触发后,对应的引脚输出高电平。
    示例:nrf_drv_gpiote_set_task_trigger(NRF_GPIO_PIN_MAP(0,3));

  6. void nrf_drv_gpiote_clr_task_trigger(nrf_drv_gpiote_pin_t pin)
    作用:手动触发 GPIOTE clr 任务,触发后,对应的引脚输出低电平
    示例:nrf_drv_gpiote_clr_task_trigger(NRF_GPIO_PIN_MAP(0,3));

  7. void nrf_drv_gpiote_out_task_trigger(nrf_drv_gpiote_pin_t pin)
    作用:手动触发 GPIOTE out 任务,触发后,对应的引脚电平翻转
    示例:nrf_drv_gpiote_out_task_trigger(NRF_GPIO_PIN_MAP(0,3));

  8. uint32_t nrf_drv_gpiote_out_task_addr_get(nrfx_gpiote_pin_t pin)
    作用:获取引脚所用的GPIOTE输出任务的寄存器地址
    示例:uint32_t GPIO_task_address = nrf_drv_gpiote_out_task_addr_get(NRF_GPIO_PIN_MAP(0,3));

(2)输入模式

  1. ret_code_t nrf_drv_gpiote_in_init(nrfx_gpiote_pin_t----------------- pin,
    ------------------------------------nrfx_gpiote_in_config_t const * ---p_config,
    ------------------------------------nrfx_gpiote_evt_handler_t --------evt_handler)
    作用:配置GPIOTE输入通道与GPIO引脚绑定并填入事件触发处理函数
    示例://配置通道上升沿,下降沿,任意电平变化产生事件
    -------nrf_drv_gpiote_in_config_t inConfig = GPIOTE_CONFIG_IN_SENSE_HITOLO(true);
    -------//事件处理回调函数
    -------void functionName(nrf_drv_gpiote_pin_t pin, nrf_gpiote_polarity_t action){.....}
    -------nrf_drv_gpiote_in_init(NRF_GPIO_PIN_MAP(0,3),
    -------------------------------&inConfig ,
    -------------------------------functionName);

  2. void nrf_drv_gpiote_in_event_enable(nrfx_gpiote_pin_t pin, bool int_enable)
    作用:使能GPIOTE输入引脚事件
    示例:nrf_drv_gpiote_in_event_enable(NRF_GPIO_PIN_MAP(0,3), true);

  3. void nrf_drv_gpiote_in_event_disable(nrfx_gpiote_pin_t pin)
    作用:禁止GPIOTE输入引脚事件
    示例:nrf_drv_gpiote_in_event_disable(NRF_GPIO_PIN_MAP(0,3));

  4. uint32_t nrf_drv_gpiote_in_event_addr_get(nrfx_gpiote_pin_t pin)
    作用:获取引脚所用的GPIOTE输入事件的寄存器地址
    示例:uint32_t GPIO_event_address = nrf_drv_gpiote_in_event_addr_get(NRF_GPIO_PIN_MAP(0,3));

(3)EVENT事件

  • NRF_GPIOTE_POLARITY_LOTOHI----------/// 电平Low to high.
  • NRF_GPIOTE_POLARITY_HITOLO----------/// 电平High to low.
  • NRF_GPIOTE_POLARITY_TOGGLE----------/// 电平Toggle.

三、SysTick

  1. void nrfx_systick_init(void)
    作用:初始化系统定时器
    示例:nrfx_systick_init();

  2. void nrfx_systick_delay_ms(uint32_t ms)
    作用:阻塞式延迟ms级计时
    示例:nrfx_systick_delay_ms(200);

  3. void **nrfx_systick_delay_us **(uint32_t us)
    作用:阻塞式延迟ms级计时
    示例:nrfx_systick_delay_us(200);

posted @ 2025-05-08 19:48  感兴趣就学  阅读(124)  评论(0)    收藏  举报