使用库函数在keil平台生成NRF52832的P0.18引脚和P0.20引脚的上升沿中断
时间: 2024-05-07 09:15:12 浏览: 281
基于keil的NRF52832蓝牙芯片程序模板
3星 · 编辑精心推荐
以下是使用nrf5 SDK库函数在keil平台生成NRF52832的P0.18引脚和P0.20引脚的上升沿中断的步骤:
1. 打开keil工程,并在工程文件夹下的“\components\drivers_nrf\gpio\nrf_drv_gpiote.h”头文件中添加以下代码:
```
#define PIN_INT1 NRF_GPIO_PIN_MAP(0,18) // 定义P0.18引脚
#define PIN_INT2 NRF_GPIO_PIN_MAP(0,20) // 定义P0.20引脚
```
2. 在main函数中添加以下代码:
```
uint32_t err_code;
err_code = nrf_drv_gpiote_init(); // 初始化GPIO中断模块
APP_ERROR_CHECK(err_code);
nrf_drv_gpiote_in_config_t config = GPIOTE_CONFIG_IN_SENSE_LOTOHI(true); // 配置GPIO中断的触发方式为上升沿
config.pull = NRF_GPIO_PIN_PULLUP; // 配置GPIO的上拉电阻
err_code = nrf_drv_gpiote_in_init(PIN_INT1, &config, gpio_handler1); // 初始化P0.18引脚的中断
APP_ERROR_CHECK(err_code);
err_code = nrf_drv_gpiote_in_init(PIN_INT2, &config, gpio_handler2); // 初始化P0.20引脚的中断
APP_ERROR_CHECK(err_code);
nrf_drv_gpiote_in_event_enable(PIN_INT1, true); // 使能P0.18引脚的中断
nrf_drv_gpiote_in_event_enable(PIN_INT2, true); // 使能P0.20引脚的中断
```
3. 在main函数之外添加以下代码:
```
void gpio_handler1(nrf_drv_gpiote_pin_t pin, nrf_gpiote_polarity_t action)
{
// P0.18引脚的中断处理函数
}
void gpio_handler2(nrf_drv_gpiote_pin_t pin, nrf_gpiote_polarity_t action)
{
// P0.20引脚的中断处理函数
}
```
这样就可以在NRF52832的P0.18引脚和P0.20引脚上生成上升沿中断了。需要注意的是,中断处理函数中的代码应该尽可能短小精悍,不要进行过多的处理,以免影响系统的实时性。
阅读全文