蓝牙BLE---DA14683的GPIO操作

添加GPIO初始化函数

在main.c中,添加以下子函数,初始化GPIO口,按键的引脚设置为输入,LED灯的引脚设置为输出。

/*按键GPIO设置*/
void key_led_init()
{
        hw_gpio_set_pin_function(HW_GPIO_PORT_1,HW_GPIO_PIN_6, HW_GPIO_MODE_INPUT,
                        HW_GPIO_FUNC_GPIO);//按键
        hw_gpio_set_pin_function(HW_GPIO_PORT_1,HW_GPIO_PIN_5, HW_GPIO_MODE_OUTPUT,
                        HW_GPIO_FUNC_GPIO);//LED
}

然后在以下位置调用该函数:

这样我们的GPIO口初始化就完成了。

添加按键和LED开关定义

同样在main.c中添加以下宏定义和子函数

/*按键宏定义*/
#define IS_KEY1_DONE()\
        !hw_gpio_get_pin_status(HW_GPIO_PORT_1,HW_GPIO_PIN_6)




/*LED状态翻转*/
void led_toggle()
{
        hw_gpio_toggle(HW_GPIO_PORT_1, HW_GPIO_PIN_5 );
}

 

以上代码定义了按键按下的状态,低电平表示按下按键

led_toggle函数为GPIO输出状态取反。

 

添加任务实体函数

在main.c中加入以下任务处理函数:

/*简单的按键处理线程*/
void key_led_task(void *keydeal)
{
        static unsigned char key_press_sta=0;//按键标志位
        for( ;; )//等同while(1)
        {
                if(IS_KEY1_DONE()&&key_press_sta==0)
                {
                        printf("IS_KEY1_DONE\r\n");
                        led_toggle();
                        key_press_sta=1;// 按下一次,标志位置1,防止抖动和长按多次执行
                }
                if(!IS_KEY1_DONE())//按键抬起则标志位置0
                        key_press_sta=0;
        }
}

 这个是任务线程处理函数。

创建按键LED任务

在mian.c的system_init函数中创建按键LED任务,代码如下:

OS_TASK handle1;// 创建新的任务句柄
        OS_TASK_CREATE("KEY_LED_TASK",
                       key_led_task, 
                       NULL,                        
                       512,                            
                       mainPXP_REPORTER_TASK_PRIORITY,  
                       handle1);
        OS_ASSERT(handle1);

 

编译、下载、运行

完成以上代码添加以后,编译程序,下载运行,把按键的GPIO接地,LED灯的引脚就会输出反状态。

通过以上的简单GPIO操作,用户即可了解GPIO口的大致操作方法。

更多GPIO操作方法请查阅hw_gpio.h,了解具体实现方法请查阅hw_gpio.c

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jim天河

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值