LoRa终端设备ASR6505普通GPIO操作
前言:ASR6505是基于STM8L和SX1262的SIP封装,因此操作ASR6505的GPIO实质上就是STM8L的GPIO,因此可以直接使用STM8的标准库,也可以使用SDK提供的API来操作GPIO。
开发板上的普通GPIO
如图中,H2针脚引出的正是普通GPIO。
普通GPIO说明
ASR6505引出了5个引脚作为普通GPIO,其中GPIO0用作射频开关控制、GPIO1用作NSS控制引脚,因此可二次开发的只剩下3个,与STM8对应关系如下:
ASR6505 STM8
GPIO2 PC4
GPIO3 PE6
GPIO4 PE7
SDK中关于延时
整个使用TIM4来产生延时。
(1)秒延时
void Delay( float s );
(2)毫秒延时
void DelayMs( uint32_t ms );
SDK中关于GPIO的操作
SDK关于GPIO的库函数主要在gpio.c、gpio.h、gpio-borad.c、gpio-borad.h文件中,其中gpio.c、gpio.h是剥离硬件的一些关于gpio操作的通用函数,gpio-borad.c、gpio-borad.h里面主要是硬件相关的gpio的操作。
(1)gpio初始化函数:
void GpioInit( Gpio_t *obj, PinNames pin, PinModes mode, PinConfigs config, PinTypes type, uint32_t value )
Gpio_t *obj是定义一个gpio对象;PinNames pin是具体的引脚;PinModes mode是初始化为输入或输出;PinConfigs config是开漏或者推挽输出;PinTypes type是上下拉设置;uint32_t value 是初始值。
(2)gpio输出函数:
void GpioWrite( Gpio_t *obj, uint32_t value )
Gpio_t *obj同上一样,定义的gpio对象;uint32_t value 。输出值,一般是0或1。
(3)gpio读取函数:
uint32_t GpioRead( Gpio_t *obj )
Gpio_t *obj同上一样;返回值是gpio的值。
实战应用
使用GPIO2输出高低电平,逻辑分析仪抓取波形。
代码实现
periph_gpio.h/c部分代码:
#define ASR6505_GPIO2 PC_4
#define ASR6505_GPIO3 PE_6
#define ASR6505_GPIO4 PE
主函数部分代码:
void main( void )
{
BoardInitMcu( );
BoardInitPeriph( );
printf("ASR6505 GPIO test!rn");
GPIO_PeriphInit();
while(1)
{
GPIO_SetHigh();
DelayMs(500);
GPIO_SetLow();
DelayMs(200);
printf("-------------------------------------------------- rnrn");
}
}
实验现象
可以清晰的看出,周期700ms,高电平500ms,和我们实验设计的一样。
——————END——————
- HDUOJ-----Robot Motion
- 对康托展开的一些心得...
- MySQL 5.7 General Tablespace学习(r11笔记第34天)
- Veeam Backup & Replication(一):安装及配置
- HDUOJ-----Computer Transformation
- Veeam Backup & Replication(二):添加虚拟化主机和配置备份存储
- HDUOJ 2672---god is a girl 《斐波那契数》
- Golang语言--一些基础用法
- 复杂SQL性能优化的剖析(一)(r11笔记第36天)
- hduoj1073--Online Judge
- Golang语言--- channel
- Golang语言--将byte的int转换
- HDUOJ------Daydream字符查找-并求其始末位置
- HDUOJ------敌兵布阵
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android 隐式Intent的实例详解
- Android编程使用加速度传感器实现摇一摇功能及优化的方法详解
- 微信小程序分页加载数据~上拉加载更多~小程序云数据库的分页加载
- TextView实现跑马灯效果 就这么简单!
- Android自带emoji表情的使用方法详解
- Android EditText实现输入表情
- Android编程实现使用Intent传输包含自定义类的ArrayList示例
- EditText实现输入限制和校验功能实例代码
- java零基础入门006~springboot实现多文件的上传(java多文件的上传)
- Android编程实现随机生成颜色的方法示例
- Android中将Bitmap对象以PNG格式保存在内部存储中的方法
- python入门012~使用python3爬取网络图片并保存到本地
- java入门015~springboot2整合mybatis,轻松实现mysql数据的增删改查
- 详解Android activity与fragment之间的通信交互
- Android App内监听截图加二维码功能代码