安信可A9G-Pudding开发板 GPIO功能使用及固件开发
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功能使用及固件开发相关推荐
- 安信可A9G-Pudding开发板 ADC功能使用及固件开发
开发板pudding 1. 特征: 1个A9G模块(A9和A9G采用相同封装,引脚相同,所以开发板通用) 引出模块29个GPIO(包括2个下载调试引脚(HST_TX,HST_RX) 1个SIM卡(Mi ...
- 安信可A9G-Pudding开发板 GPS功能使用及固件开发
使用 注意: 1.板子上UART2_TX与UART2_RX丝印层位置错误: 2.波特率默认9600,UART2_RX需要悬空 3.天线最好在室外 固件开发 1.编译烧录运行 源代码在demo/gps文 ...
- RV1109开发板ssh服务器移植到arm开发板
RV1109开发板ssh服务器移植到arm开发板 ssh功能移植到RV1109开发板的,由于RV1109的SDK中,没有telnet功能,有时候adb功能在量产中需要关闭,避免造成设备留有漏洞,造成安 ...
- 【安信可A9G专题④】A9G模块/开发板GPS定位注意事项 坐标系转换
本系列博客学习由 安信可科技 - 官方博客 技术分享,如有疑问请留言或联系邮箱. 1.A9G环境在windows上搭建并编译,串口打印 Hello GPRS 2.A9G在微信公众号上的定位功能笔记分享 ...
- 【GPRS模组】 安信可A9G 基于OpenCPU的SDK二次开发
采用安信可基于A9G的pudding开发板,支持SDK片上开发和AT指令开发,SDK开发不需要另外使用单片机作为控制板,用起来非常方便,适合开发短小精悍的产品! 一.硬件介绍 采用安信可基于A9G的p ...
- 【安信可A9G专题①】A9G环境在windows上搭建并编译,串口打印 Hello GPRS
本系列博客学习由 安信可科技 - 官方博客 技术分享,如有疑问请留言或联系邮箱. 1.A9G环境在windows上搭建并编译,串口打印 Hello GPRS 2.A9G在微信公众号上的定位功能笔记分享 ...
- 【安信可A9G专题⑤】A9G模组AT指令MQTT接入阿里云实现APP控制
本系列博客学习由 安信可科技 - 官方博客 技术分享,如有疑问请留言或联系邮箱. 1.A9G环境在windows上搭建并编译,串口打印 Hello GPRS 2.A9G在微信公众号上的定位功能笔记分享 ...
- 【安信可A9G专题③】安信可A9G模块连接机智云APP教程;
本系列博客学习由 安信可科技 - 官方博客 技术分享,如有疑问请留言或联系邮箱. 1.A9G环境在windows上搭建并编译,串口打印 Hello GPRS 2.A9G在微信公众号上的定位功能笔记分享 ...
- 【安信可A9G专题②】A9G在微信公众号上的定位功能笔记分享;
本系列博客学习由 安信可科技 - 官方博客 技术分享,如有疑问请留言或联系邮箱. 1.A9G环境在windows上搭建并编译,串口打印 Hello GPRS 2.A9G在微信公众号上的定位功能笔记分享 ...
最新文章
- Const *ptr ptr
- R语言ggplot2可视化在箱图中为箱图添加均值的标签及对应数值实战
- 所需依赖_个体的发展阶段和过程,用发展性理论解释依赖共生
- CSS3 Filter的十种特效
- 面试java回答优缺点_阿里Java开发面经分享,面试题(附回答)
- 10、HTML的基本结构
- java jdbc(mysql)驱动源码分析,JAVA JDBC(MySQL)驱动源码分析(四)
- Nacos配置管理-配置热更新
- Vue学习(常用实例、脚手架搭建)-学习笔记
- 洛谷-DFS-1101-单词方阵-个人AC题解及公共题解的笔记
- 顶岗实习周记java方向_会计学院顺利召开2021届毕业生顶岗实习动员大会
- UVa 571 Jugs(经典倒水问题)
- 【渝粤教育】国家开放大学2018年春季 8668-22T汽车涂装技术(A) 参考试题
- 牢记31种CSS选择器
- Windows下杀进程的命令
- 如何学习单片机?单片机c语言编程入门教程
- matlab2010改语言,[转载]ubuntu下安装matlab2010及语言环境设置和创建桌面启动
- 抓取网易云音乐歌曲热门评论生成词云
- springboot项目启动报Ambiguous mapping. Cannot map ‘xxxController‘ method
- 亚马逊 Alexa skill开发
热门文章
- PHP编写主机内容过滤,Ecshop教程:通过修改过滤模板里的php代码,防止模板被挂马...
- Solana 推出区块链手机Saga,内建Web 3.0覆盖范围扩大到主流受众。
- android 应用对内存是如何限制的?我们应该如何合理使用内存?如何限制的?
- APP常用第三方SDK隐私协议
- tiktok最新风控算法以及视频播放量问题研究
- 字节TikTok暑期实习一面二面三面面经(以OC)
- TikTok逆向,全球的小姐姐们,我来啦!
- C语言小白上楼梯问题(递归)
- 连连看的程序c语言,连连看游戏源程序
- java 过滤掉 v_Javav中危险字符过滤工具类