本文简单介绍PB-03F模组GPIO中断二次开发;
一、函数介绍
下图是引脚对应的宏定义:
1. hal_gpioin_register
2. hal_gpio_init
3. hal_gpio_pin_init
4. hal_gpio_fast_write
5. hal_gpio_read
6. hal_gpioin_enable
7. hal_gpioin_disable
二、工具
1. 硬件
PB-03F开发板
USB-安卓数据线
2. 软件
二次开发环境keil(安装链接)
SDK下载链接
三、GPIO demo示例
1. main.c
- #include "bus_dev.h"
- #include "gpio.h"
- #include "clock.h"
- #include "timer.h"
- #include "jump_function.h"
- #include "pwrmgr.h"
- #include "mcu.h"
- #include "gpio.h"
- #include "log.h"
- #include "rf_phy_driver.h"
- #include "flash.h"
- #include "version.h"
- //宏定义ms级延时宏
- #define STANDBY_WAIT_MS(a) WaitRTCCount((a)<<5)
- //定义一个4字节对齐的无符号8位整数
- #define LARGE_HEAP_SIZE (4*1024)
- ALIGN4_U8 g_largeHeap[LARGE_HEAP_SIZE];
- volatile uint8 g_clk32K_config;
- volatile sysclk_t g_spif_clk_config;
- void posedge_int_wakeup_cb(GPIO_Pin_e pin,IO_Wakeup_Pol_e type)
- {
- if(type == POSEDGE)
- {
- LOG("int or wakeup(pos):gpio:%d type:%d\n",pin,type);
- hal_gpio_fast_write(P7, 1);
- }
- else
- {
- LOG("error\n");
- }
- }
- void negedge_int_wakeup_cb(GPIO_Pin_e pin,IO_Wakeup_Pol_e type)
- {
- if(type == NEGEDGE)
- {
- LOG("int or wakeup(neg):gpio:%d type:%d\n",pin,type);
- hal_gpio_fast_write(P7, 0);
- }
- else
- {
- LOG("error\n");
- }
- }
- static void hal_init(void)
- {
- //系统时钟初始化,使用串口需要先初始化系统时钟
- clk_init(g_system_clk); //system init
-
- //LOG串口初始化
- LOG_INIT();
-
- //GPIO初始化
- hal_gpio_init();
- }
- static void simple_code(void)
- {
- gpio_pin_e pin0 = P0;
-
- gpio_pin_e pin7 = P7;
- //设置P7引脚为输出模式(红灯)
- hal_gpio_pin_init(pin7, GPIO_OUTPUT);
-
- //使P7引脚输出高电平
- hal_gpio_fast_write(P7, 1);
- hal_init();
- //设置GPIO中断,并设置回调函数
- hal_gpioin_register(pin0,posedge_int_wakeup_cb,negedge_int_wakeup_cb);
- }
- int main(void)
- {
- simple_code();
- while(1)
- {
-
- }
- }
复制代码 2. 项目框架
3. 注意
为避免不必要的麻烦,建议在SDK框架demo示例同目录下复制demo粘贴项目进行二次开发。
四、烧录
【蓝牙5.2 PB-03F教程】烧录流程
在上面的链接基础下,烧录文件修改为如下图所示的编译出来的文件选择:
|