文章目录
- 前言
- 一、函数介绍
- 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. 硬件
- 2. 软件
- 三、GPIO demo示例
- 1. main.c
- 2. 项目框架
- 3. 注意
- 四、 烧录
- 总结
前言
本文简单介绍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粘贴项目进行二次开发。
四、 烧录
https://blog.csdn.net/qq_54193285/article/details/136510966?spm=1001.2014.3001.5501
在上面的链接基础下,烧录文件修改为如下图所示的编译出来的文件选择:
总结
上面就是堆PB-03F模组二次开发的简单介绍。
以上就是本期分享的内容,更多资料可从安信可官网上获取。
官方官网:https://www.ai-thinker.com
开发资料:https://docs.ai-thinker.com/
官方论坛:http://bbs.ai-thinker.com
技术支持:support@aithinker.com