NRF528xx 芯片外设常用函数与事件速查(一)-----GPIO/GPIOTE/SysTick
硬件:NRF528XX , 示例SDK版本:nRF5_SDK_17.1.0_ddde560
一、GPIO引脚
-
宏函数:#define NRF_GPIO_PIN_MAP(port, pin) (((port) << 5) | ((pin) & 0x1F))
作用:定义GPIO口引脚
示例:NRF_GPIO_PIN_MAP(0,13); 表示定义端口0的pin13脚,即P0.13 -
void nrf_gpio_cfg_output(uint32_t pin_number)
作用:定义GPIO引脚为输出方向
示例:nrf_gpio_cfg_output(NRF_GPIO_PIN_MAP(0,13)); -
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)); -
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); -
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); -
void nrf_gpio_pin_set(uint32_t pin_number)
作用:设置GPIO引脚为高电平
示例:nrf_gpio_pin_set(NRF_GPIO_PIN_MAP(0,3)); -
void nrf_gpio_pin_clear(uint32_t pin_number)
作用:设置GPIO引脚为低电平
示例:nrf_gpio_pin_clear(NRF_GPIO_PIN_MAP(0,3); -
void nrf_gpio_pin_write(uint32_t pin_number, uint32_t value);
作用:设置GPIO引脚的高低电平
示例:nrf_gpio_pin_clear(NRF_GPIO_PIN_MAP(0,3),1); -
void nrf_gpio_pin_toggle(uint32_t pin_number)
作用:翻转GPIO引脚电平
示例:nrf_gpio_pin_toggle(NRF_GPIO_PIN_MAP(0,3)); -
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中输出当做任务,输入当做事件
- ret_code_t nrf_drv_gpiote_init(void)
作用:初始化GPIOTE模块
(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); -
ret_code_t nrfx_gpiote_out_uninit(nrfx_gpiote_pin_t pin)
作用:释放GPIOTE输出通道与GPIO引脚绑定
示例:nrfx_gpiote_out_uninit(NRF_GPIO_PIN_MAP(0,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)); -
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)); -
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)); -
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)); -
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)); -
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)输入模式
-
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); -
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); -
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)); -
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
-
void nrfx_systick_init(void)
作用:初始化系统定时器
示例:nrfx_systick_init(); -
void nrfx_systick_delay_ms(uint32_t ms)
作用:阻塞式延迟ms级计时
示例:nrfx_systick_delay_ms(200); -
void **nrfx_systick_delay_us **(uint32_t us)
作用:阻塞式延迟ms级计时
示例:nrfx_systick_delay_us(200);