1.编译烧录运行

两颗LED同时闪烁

2.源代码解析

GPIO_TestTask()

GPIO (General Purpose Input Output)通用输入输出接口

要保证引脚功能可以正常使用,在配置IO之前必须将对应IO口的电源打开,使用

bool PM_PowerEnable(Power_Type_t powerType, bool isOn)
```c
函数来打开对应的IO口电源,不同IO口对应的电源如下:
```c
typedef enum{POWER_TYPE_VPAD = 0,            // GPIO0  ~ GPIO7  and GPIO25 ~ GPIO36    2.8V   //always onPOWER_TYPE_MMC,                 // GPIO8  ~ GPIO13                        1.9VPOWER_TYPE_LCD,                 // GPIO14 ~ GPIO18                        1.9VPOWER_TYPE_CAM,                 // GPIO19 ~ GPIO24                        1.9VPOWER_TYPE_MAX
}Power_Type_t;

比如:

  • 需要使用GPIO5,则需要调用PM_PowerEnable(POWER_TYPE_VPAD,true);
  • 需要调用I2C2,因为I2C2是复用IO19和20,所以调用PM_PowerEnable(POWER_TYPE_CAM,true);

模组引脚除了通用IO功能外,部分引脚还有复用功能,具体见开发板中的引脚图

例示代码请参考CSDK demo/gpio


1. 枚举类型

1.1. GPIO_PIN

引脚

typedef enum{GPIO_PIN0 = 0, //IO 可中断GPIO_PIN1,     //IO 可中断GPIO_PIN2,     //IO 可中断GPIO_PIN3,     //IO 可中断GPIO_PIN4,     //IO 可中断GPIO_PIN5,     //IO 可中断GPIO_PIN6,     //IO 可中断GPIO_PIN7,     //IO 可中断GPIO_PIN8,GPIO_PIN9,GPIO_PIN10,GPIO_PIN11,GPIO_PIN12,GPIO_PIN13,GPIO_PIN14,GPIO_PIN15,GPIO_PIN16,GPIO_PIN17,GPIO_PIN18,GPIO_PIN19,GPIO_PIN20,GPIO_PIN21,GPIO_PIN22,GPIO_PIN23,GPIO_PIN24,GPIO_PIN25,GPIO_PIN26,GPIO_PIN27,GPIO_PIN28,GPIO_PIN29,GPIO_PIN30,GPIO_PIN31,GPIO_PIN32,GPIO_PIN33,GPIO_PIN34,GPIO_PIN_MAX
}GPIO_PIN;

1.2. GPIO_MODE

IO模式

typedef enum{GPIO_MODE_OUTPUT = 0,   // 输出模式GPIO_MODE_INPUT,        // 输入模式GPIO_MODE_INPUT_INT,    // 中断模式GPIO_MODE_MAX
}GPIO_MODE;

1.3. GPIO_LEVEL

高低电平

typedef enum{GPIO_LEVEL_LOW  = 0,  //低电平GPIO_LEVEL_HIGH = 1   //高电平
}GPIO_LEVEL;

1.4. GPIO_INT_TYPE

中断类型

typedef enum {GPIO_INT_TYPE_HIGH_LEVEL = 0,      //高电平中断GPIO_INT_TYPE_LOW_LEVEL,           //低电平中断GPIO_INT_TYPE_RISING_EDGE,         //上升沿中断GPIO_INT_TYPE_FALLING_EDGE,        //下降沿中断GPIO_INT_TYPE_RISING_FALLING_EDGE, //上升沿和下降沿中断GPIO_INT_TYPE_MAX
}GPIO_INT_TYPE;

2. 结构体类型

2.1. GPIO_INT_callback_param_t

中断回调函数参数类型

typedef struct{GPIO_PIN pin;
}GPIO_INT_callback_param_t;

2.2. PCallbackINT

中断回调函数类型

typedef void (*PCallbackINT)(GPIO_INT_callback_param_t* param);

2.3. GPIO_INT_config_t

中断配置选项

typedef struct{uint16_t        debounce; //去抖时间(ms)GPIO_INT_TYPE   type    ;PCallbackINT    callback;
}GPIO_INT_config_t;

2.4. GPIO_config_t

GPIO配置选项

typedef struct{GPIO_PIN          pin         ;  //引脚GPIO_MODE         mode        ;  //模式GPIO_LEVEL        defaultLevel;  //默认电平GPIO_INT_config_t intConfig   ;  //中断配置(中断模式需要配置)
}GPIO_config_t;

3. 功能函数接口

3.1. GPIO_Init

bool GPIO_Init(GPIO_config_t config);

功能

初始化IO

参数

  • config:初始化配置

返回值

  • bool:配置成功/失败

3.2. GPIO_GetConfig

void GPIO_GetConfig(GPIO_PIN pin,GPIO_config_t* config);

功能

获取GPIO配置

参数

  • config:GPIO配置变量地址

返回值


3.3. GPIO_SetLevel

bool GPIO_SetLevel(GPIO_config_t gpioConf, GPIO_LEVEL  level);

功能

设置GPIO电平

参数

  • gpioConf:GPIO初始化配置变量
  • level:电平高低

返回值

  • bool:是否设置成功

3.4. GPIO_Set

bool GPIO_Set(GPIO_PIN pin, GPIO_LEVEL  level);

功能

设置GPIO电平,与GPIO_SetLevel功能一样,只是参数不一样

参数

  • pin:GPIO口
  • level:电平高低

返回值

  • bool:是否设置成功

3.5. GPIO_GetLevel

bool GPIO_GetLevel(GPIO_config_t gpioConf, GPIO_LEVEL* level);

功能

获取GPIO电平

参数

  • gpioConf:GPIO初始化配置变量
  • level:电平高低结果返回值,变量指针

返回值

  • bool:是否获取成功

3.6. GPIO_Get

bool GPIO_Get(GPIO_PIN pin, GPIO_LEVEL* level);

功能

获取GPIO电平,功能与GPIO_GetLevel一样,只是参数不同

参数

  • pin:GPIO口
  • level:电平高低结果返回值,变量指针

返回值

  • bool:是否获取成功

3.7. GPIO_Close

bool GPIO_Close(GPIO_PIN pin);

功能

关闭GPIO口,复位GPIO到默认状态

参数

  • pin:GPIO口

返回值

  • bool:是否成功

安信可A9G-Pudding开发板 GPIO功能使用及固件开发相关推荐

  1. 安信可A9G-Pudding开发板 ADC功能使用及固件开发

    开发板pudding 1. 特征: 1个A9G模块(A9和A9G采用相同封装,引脚相同,所以开发板通用) 引出模块29个GPIO(包括2个下载调试引脚(HST_TX,HST_RX) 1个SIM卡(Mi ...

  2. 安信可A9G-Pudding开发板 GPS功能使用及固件开发

    使用 注意: 1.板子上UART2_TX与UART2_RX丝印层位置错误: 2.波特率默认9600,UART2_RX需要悬空 3.天线最好在室外 固件开发 1.编译烧录运行 源代码在demo/gps文 ...

  3. RV1109开发板ssh服务器移植到arm开发板

    RV1109开发板ssh服务器移植到arm开发板 ssh功能移植到RV1109开发板的,由于RV1109的SDK中,没有telnet功能,有时候adb功能在量产中需要关闭,避免造成设备留有漏洞,造成安 ...

  4. 【安信可A9G专题④】A9G模块/开发板GPS定位注意事项 坐标系转换

    本系列博客学习由 安信可科技 - 官方博客 技术分享,如有疑问请留言或联系邮箱. 1.A9G环境在windows上搭建并编译,串口打印 Hello GPRS 2.A9G在微信公众号上的定位功能笔记分享 ...

  5. 【GPRS模组】 安信可A9G 基于OpenCPU的SDK二次开发

    采用安信可基于A9G的pudding开发板,支持SDK片上开发和AT指令开发,SDK开发不需要另外使用单片机作为控制板,用起来非常方便,适合开发短小精悍的产品! 一.硬件介绍 采用安信可基于A9G的p ...

  6. 【安信可A9G专题①】A9G环境在windows上搭建并编译,串口打印 Hello GPRS

    本系列博客学习由 安信可科技 - 官方博客 技术分享,如有疑问请留言或联系邮箱. 1.A9G环境在windows上搭建并编译,串口打印 Hello GPRS 2.A9G在微信公众号上的定位功能笔记分享 ...

  7. 【安信可A9G专题⑤】A9G模组AT指令MQTT接入阿里云实现APP控制

    本系列博客学习由 安信可科技 - 官方博客 技术分享,如有疑问请留言或联系邮箱. 1.A9G环境在windows上搭建并编译,串口打印 Hello GPRS 2.A9G在微信公众号上的定位功能笔记分享 ...

  8. 【安信可A9G专题③】安信可A9G模块连接机智云APP教程;

    本系列博客学习由 安信可科技 - 官方博客 技术分享,如有疑问请留言或联系邮箱. 1.A9G环境在windows上搭建并编译,串口打印 Hello GPRS 2.A9G在微信公众号上的定位功能笔记分享 ...

  9. 【安信可A9G专题②】A9G在微信公众号上的定位功能笔记分享;

    本系列博客学习由 安信可科技 - 官方博客 技术分享,如有疑问请留言或联系邮箱. 1.A9G环境在windows上搭建并编译,串口打印 Hello GPRS 2.A9G在微信公众号上的定位功能笔记分享 ...

最新文章

  1. Const *ptr ptr
  2. R语言ggplot2可视化在箱图中为箱图添加均值的标签及对应数值实战
  3. 所需依赖_个体的发展阶段和过程,用发展性理论解释依赖共生
  4. CSS3 Filter的十种特效
  5. 面试java回答优缺点_阿里Java开发面经分享,面试题(附回答)
  6. 10、HTML的基本结构
  7. java jdbc(mysql)驱动源码分析,JAVA JDBC(MySQL)驱动源码分析(四)
  8. Nacos配置管理-配置热更新
  9. Vue学习(常用实例、脚手架搭建)-学习笔记
  10. 洛谷-DFS-1101-单词方阵-个人AC题解及公共题解的笔记
  11. 顶岗实习周记java方向_会计学院顺利召开2021届毕业生顶岗实习动员大会
  12. UVa 571 Jugs(经典倒水问题)
  13. 【渝粤教育】国家开放大学2018年春季 8668-22T汽车涂装技术(A) 参考试题
  14. 牢记31种CSS选择器
  15. Windows下杀进程的命令
  16. 如何学习单片机?单片机c语言编程入门教程
  17. matlab2010改语言,[转载]ubuntu下安装matlab2010及语言环境设置和创建桌面启动
  18. 抓取网易云音乐歌曲热门评论生成词云
  19. springboot项目启动报Ambiguous mapping. Cannot map ‘xxxController‘ method
  20. 亚马逊 Alexa skill开发

热门文章

  1. PHP编写主机内容过滤,Ecshop教程:通过修改过滤模板里的php代码,防止模板被挂马...
  2. Solana 推出区块链手机Saga,内建Web 3.0覆盖范围扩大到主流受众。
  3. android 应用对内存是如何限制的?我们应该如何合理使用内存?如何限制的?
  4. APP常用第三方SDK隐私协议
  5. tiktok最新风控算法以及视频播放量问题研究
  6. 字节TikTok暑期实习一面二面三面面经(以OC)
  7. TikTok逆向,全球的小姐姐们,我来啦!
  8. C语言小白上楼梯问题(递归)
  9. 连连看的程序c语言,连连看游戏源程序
  10. java 过滤掉 v_Javav中危险字符过滤工具类