1.nrf52 ble GPIO 输入输出 测试

1.GPIO 输入输出 测试

#include “nrf52.h”
#include “nrf_gpio.h”
#define KEY_1 13
#define KEY_2 14

输入引脚功能定义

nrf_gpio_cfg_input(13,NRF_GPIO_PIN_PULLUP);

输出引脚定义

nrf_gpio_cfg_output(LED_0);

输入状态 获取

nrf_gpio_pin_read(KEY_1)

io 电平设置

nrf_gpio_pin_clear(LED_2 ) 低

nrf_gpio_pin_set ( LED_2) 高

nrf_gpio_pin_toggle(LED_2 ) 翻转

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MjVrxlR1-1658913491113)(assets/image-20220727112057-2wp7kdb.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1CEggBbt-1658913491113)(assets/image-20220727112123-8gbeqrl.png)]

只下载 外设 功能测试程序

2.GPIOTE 与中断

GPIOTE 提供了任务和事件,减少 cpu 参与,支持外部中断

中断和任务脚设定为 GPIOTE

task 和 event 与 ppi(可编程外设系统)结合绑定, event (io,中断) 触发,执行 task(io 翻转)

功能特性:

  1. 事件模式做中断触发 使用(上升,下降沿,任何变化)
  2. 任务模式做输出使用(置位,清零,翻转)

库函数方式 APP_ERROR_CHECK错误定位

/**
GPIOTE 中断处理
/
void in_pin_handler( )
{
if(nrf_gpio_pin_read(PIN_IN)== 0)//按键防抖
{
nrf_gpio_pin_toggle(PIN_OUT);
}
}
/
*
配置 GPIOTE 初始化
*/
static void gpio_init(void)
{
nrf_gpio_cfg_output(PIN_OUT);//led 灯的输出
ret_code_t err_code;

err_code = nrf_drv_gpiote_init();//初始化 GPIOTE
APP_ERROR_CHECK(err_code);

nrf_drv_gpiote_in_config_t in_config = GPIOTE_CONFIG_IN_SENSE_TOGGLE(true); //敏感模式 电平翻转
in_config.pull = NRF_GPIO_PIN_PULLUP; //上拉模式
//设置 GPIOTE 输入,极性,模式,任务绑定 in_pin_handler
err_code = nrf_drv_gpiote_in_init(PIN_IN, &in_config, in_pin_handler);
APP_ERROR_CHECK(err_code);
//使能 GPIOTE
nrf_drv_gpiote_in_event_enable(PIN_IN, true);
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-38xrTTRc-1658913491113)(assets/16589074801-20220727153809-653afht.png)]

2.1中断组 port

nrf_gpio_cfg_output(LED_4); //设置 输出io
ret_code_t err_code;
 //初始化GPIOTE
err_code = nrf_drv_gpiote_init();<br />    APP_ERROR_CHECK(err_code);

//配置SENSE模式,选择fales为gpiote port模式 配置 ,true 为单引脚输入
nrf_drv_gpiote_in_config_t in_config = GPIOTE_CONFIG_IN_SENSE_HITOLO(false);
in_config.pull = NRF_GPIO_PIN_PULLUP;//输入下降沿触发

//配置按键0绑定POTR及in_pin_handler事件解析
err_code = nrf_drv_gpiote_in_init(BSP_BUTTON_0, &in_config, in_pin_handler);
APP_ERROR_CHECK(err_code);
nrf_drv_gpiote_in_event_enable(BSP_BUTTON_0, true);//更多引脚配置相似

void in_pin_handler(nrf_drv_gpiote_pin_t pin, nrf_gpiote_polarity_t action)
{
//事件由按键S1产生,即按键S1按下
if(pin == BUTTON_1)
{
//翻转指示灯D1的状态
nrf_gpio_pin_toggle(LED_1);
}

if(pin == BUTTON_2)
{
//翻转指示灯D1的状态
nrf_gpio_pin_toggle(LED_2);
}

}

GPIOTE_CONFIG_IN_SENSE_HITOLO(false) 所有io的触发事件都是 port中断,都指向一个中断配置

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FA2z6rSK-1658913491114)(assets/image-20220727161030-1pnmmnn.png)]

2.2任务输出模式

初始化

#define GPIOTE0 19

void GPIOTE_TASK_Init(void)
{

ret_code_t err_code;

err_code = nrf_drv_gpiote_init();
APP_ERROR_CHECK(err_code);

//定义GPIOTE输出初始化结构体,主要是配置为翻转模式
nrf_drv_gpiote_out_config_t config1 = GPIOTE_CONFIG_OUT_TASK_TOGGLE(true);//

//绑定GPIOTE输出引脚

err_code = nrf_drv_gpiote_out_init(GPIOTE0, &config1);
APP_ERROR_CHECK(err_code);

//配置为引脚LED_3所在GPIOTE通道的任务模式
nrf_drv_gpiote_out_task_enable(GPIOTE0);

while(true)
{ //触发输出,即指示灯D3 翻转状态
nrf_drv_gpiote_out_task_trigger(GPIOTE0);
nrf_delay_ms(500);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
nrf52833是Nordic Semiconductor推出的一款多协议无线SoC芯片,适用于Bluetooth Low Energy (BLE)、ANT和2.4GHz无线应用。以下是关于nrf52833的开发教程的一些主要步骤: 1. 硬件准备:为了开始nrf52833的开发,首先需要一块nRF52833开发板或模块,并确保连接了适当的电源。 2. 开发环境搭建:安装Nordic Semiconductor提供的nRF5软件开发工具包,并配置IDE(如Keil、Segger Embedded Studio等)。 3. 项目创建:在IDE中创建一个新的nRF52833项目,配置软件包含所需的库和驱动程序。 4. 驱动程序开发:根据项目需求,编写所需的驱动程序。这可能包括GPIO、UART、SPI等外设的初始化和配置。 5. BLE应用开发:根据项目需求,创建BLE应用程序,如BLE外设或BLE中央设备。编写代码以初始化BLE协议栈、配置服务和特征,并处理BLE连接和数据传输。 6. 测试和调试:通过使用nRF52833开发板上的调试接口(如J-Link)进行调试,检查代码是否按预期工作。可以通过串口输出、断点调试等方法进行实时监视。 7. 固件烧录:确保硬件连接稳定后,使用调试器将编译好的固件烧录到nRF52833芯片上。 8. 系统集成和应用调试:在实际应用中,将nRF52833与其他硬件或传感器集成,通过调试和测试确保整个系统的稳定性和功能性。 9. 优化和改进:根据实际需求,对项目进行性能优化和功能改进。可以考虑使用低功耗模式、电源管理等技术,以减少功耗并提高效率。 以上是nrf52833开发教程的主要步骤,希望能够对您有所帮助。当然,这只是一个概览,具体的开发过程可能会有所不同,取决于项目的需求和开发环境。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值