【LTE CAT1】ML302 OpenCPU | GPIO

2024-06-18 14:32
文章标签 gpio lte opencpu ml302 cat1

本文主要是介绍【LTE CAT1】ML302 OpenCPU | GPIO,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

ML302 共用22个可用的GPIO口,详细定义见 [sdk_root]/inc/cm/cm_gpio.h 文件中的 cm_gpio_id_t 结构体。

typedef enum {CM_GPIO_0,//可用CM_GPIO_1,//可用CM_GPIO_2,//可用CM_GPIO_3,//可用CM_GPIO_4,//可用CM_GPIO_5,//可用CM_GPIO_6,CM_GPIO_7,CM_GPIO_8,CM_GPIO_9,//可用CM_GPIO_10,CM_GPIO_11,//可用CM_GPIO_12,//可用CM_GPIO_13,CM_GPIO_14,//可用CM_GPIO_15,//可用CM_GPIO_16,CM_GPIO_17,//可用CM_GPIO_18,CM_GPIO_19,//可用CM_GPIO_20,//可用CM_GPIO_21,//可用CM_GPIO_22,//可用CM_GPIO_23,//可用CM_GPIO_24,//可用CM_GPIO_25,//可用CM_GPIO_26,//可用CM_GPIO_27,//可用CM_GPIO_28,//可用CM_GPIO_29,CM_GPIO_30,CM_GPIO_31,CM_GPIO_END,
}cm_gpio_id_t;

GPIO初始化配置之前要先填充结构体 cm_gpio_cfg_t :

typedef struct{cm_gpio_id_t id; /// GPIO号cm_gpio_dir_t dir; // GPIO方向unsigned char irq_enable; //中断使能unsigned char level_or_edge; // 边沿触发unsigned char rising; // 高电平触发unsigned char falling; // 低电平触发cm_gpio_cb cb; // 中断回调函数void * param; // 其他自定义参数
}cm_gpio_cfg_t;

GPIO 中断回调函数定义为:

void gpio_irq_cb(void *param)
{
}

填充好结构体 cm_gpio_cfg_t 后需调用函数 int cm_gpio_init(cm_gpio_cfg_t *cfg); 来初始化GPIO。GPIO的去初始化调用函数 void cm_gpio_deinit(cm_gpio_id_t gpio); 即可。

下面以 CM_GPIO_4 为例演示GPIO的输入、输出以及中断功能。

1. GPIO输出

void gpio_write_test(void)
{cm_gpio_cfg_t cfg; // 定义GPIO初始化配置结构体cfg.id = CM_GPIO_4; // 设置管脚号cfg.dir = CM_GPIO_OUT; // 设置GPIO方向为输出cfg.irq_enable = 0; // 禁止GPIO中断cm_gpio_init(&cfg); // GPIO设置初始化cm_gpio_pull_config(cfg.id, CM_GPIO_PULL_UP); //设置引脚为上拉cm_gpio_write(cfg.id,CM_GPIO_HIGH); // 输出高电平
}

2. GPIO输入

int  gpio_write_test(void)
{int gpio_val = 0;cm_gpio_cfg_t cfg; // 定义GPIO初始化配置结构体cfg.id = CM_GPIO_4; // 设置管脚号cfg.dir = CM_GPIO_IN; // 设置GPIO方向为输入cfg.irq_enable = 0; // 禁止GPIO中断cm_gpio_init(&cfg); // GPIO设置初始化cm_gpio_pull_config(cfg.id, CM_GPIO_PULL_UP); //设置引脚为下拉gpio_val = cm_gpio_read(cfg.id); // 读取管脚输入return gpio_val;
}

3. GPIO中断

int test_gpio = 0;
// GPIO 中断回调函数
void gpio_irq_cb(void *param)
{cm_printf("[GPIO_IRQ]%s:%d INTERRUPT\n",param, test_gpio);
}void gpio_irq_test(void)
{cm_gpio_cfg_t cfg; // 定义GPIO初始化配置结构体cfg.id = CM_GPIO_4; // 设置管脚号test_gpio = cfg.id;cfg.dir = CM_GPIO_IN; // 设置GPIO方向为输入cfg.irq_enable = 1; // 使能GPIO中断// 设置触发类型cfg.level_or_edge = 0;cfg.rising = 1;cfg.falling = 1;cfg.cb= gpio_irq_cb; // 调用中断回调函数cfg.param = "GPIO"; // 其他自定义参数cm_gpio_init(&cfg); // GPIO设置初始化cm_gpio_pull_config(cfg.id, CM_GPIO_PULL_UP); //设置引脚为下拉
}

这篇关于【LTE CAT1】ML302 OpenCPU | GPIO的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1072253

相关文章

A20 操作GPIO口

例如:先在 Sys_config.fex文件中 [1302_para] 1302_used      = 1 1302_clk             = port:PD05<1><default><default><0> 1302_dat             = port:PD06<1><default><default><0> 1302_rs

Redmine和Admin LTE轻量级整合

文章目录 Redmine和Admin LTE轻量级整合git库地址视频介绍讨论群 Redmine和Admin LTE轻量级整合 git库地址 https://gitee.com/tigergm/redmine 欢迎作为开发者加入 视频介绍 https://www.bilibili.com/video/BV1WZ4y1C7gH 讨论群 群号:138524445

新路程------sil9135 hi3516a gpio功能确认

首先确认SCDT管脚 数据手册解释: 也就是hi3516端应该配置为in,这个pin用来表示有video进来,那么进来前后,pin的状态是如何变化的呢? 还有编程手册里 有寄存器可以读取这个SCDT的值,那么还要这个pin干什么呢?不太理解,以后解释 接下来是int pin,中断好配, hi3516a这边是gpio11_2,先看是否配成gpio /usr #

【STM32开发】GPIO最全解析及应用实例

目录 【1】GPIO概述 GPIO的基本概念 GPIO的应用 【2】GPIO功能描述 1.IO功能框图 2.知识补充 3.功能详述 浮空输入 上拉输入 下拉输入 模拟输入 推挽输出 开漏输出 复用开漏输出和复用推挽输出 【3】GPIO常用寄存器 相关寄存器介绍 4个32位配置寄存器 2个32位数据寄存器 1个32位 置位/复位寄存器 2个32位 复用功能配置寄存器 常用寄存器详述 GPIO端

集成电路学习:什么是GPIO通用输入输出

GPIO:通用输入输出         GPIO,全称General Purpose Input/Output,即通用输入/输出端口,是嵌入式系统中非常重要的基本硬件资源之一。以下是对GPIO的详细解析: 一、GPIO的定义与功能         GPIO是一种非常灵活的接口,可以实现数字输入、数字输出、模拟输入、模拟输出等多种功能。它作为微控制器、嵌入式系统或其他电子设备与外部世界进行

TI DSP TMS320F280025 Note9:GPIO输入输出与外部中断功能原理与应用

TMS320F280025 GPIO输入输出与外部中断功能原理与应用 文章目录 TMS320F280025 GPIO输入输出与外部中断功能原理与应用GPIO原理输入输出模式的共同特性1. 复用设置2. 内部上拉设置3. GPIO状态读取 对于输出模式输出电平设置开漏输出设置 对于输入模式极性设置采样类型不同步(异步输入)只同步到SYSCLKOUT使用采样窗口进行鉴定 外部输入中断G

笔记 10 : 彭老师课本第 5 章 , GPIO , vim 的复制剪切删除 ; uboot读写内存的 md , nm 命令

(77) 进入代码实验以来,开始有机会频繁的修改源代码。补充 vim 的使用: ++ (78) 如何只查看某个文件的权限,属性: (79) 关于 rm 命令: (80) 接着学习 新的 Uboot 命令: md/nm 显示内存与修改内存: uboot 有很多不错的调试命令。之前学习和使用了 loadb 指令指定指令的加载地址, 如 40008000 H: ++ nm

STM32 GPIO的深度了解

STM32的开发学习主要涉及软硬件两个部分的实现,包含众多外设和总线的理解配置。STM32的整个学习曲线并不陡峭,但入门却相当困难,因此在学习之初,多动手实验和测试相当重要,GPIO作为整个STM32与外部连接的端口,难度不高,却十分重要。从深入解析GPIO外设开始,一步步熟悉掌握STM32各个模块,就是STM32的整个学习流程。 GPIO模块回顾     在嵌入式软件开发中,几乎所有功

《Linux操作系统-系统移植》第8章 USB-4G/LTE移植 -第3节 USB-4G移植(移远AG35开发-GPS解析及编程)

查看参考手册,移远带有GPS的芯片的USB Serial如下。 2.1应用简介 1、若不使用 AT+QGPSCFG 指令对AG35进行配置,则会以默认参数开启GPS参数,NMEA端口开始上报,"gpsnmeatype"默认值为31,上报间隔为1s,每次上报所有种类的NMEA数据(GGA\RMC\GSV\GSA\VTG),若采用此默认配置,大多数使用者会觉得单次上报的数据太多且很多信息重复,建

【openwrt-21.02】T750 openwrt-21.02 Linux-5.4.238 input子系统----gpio-keys实现分析

input子系统           输入子系统是由设备驱动层(input driver)、输入核心层(input core)、输入事件处理层(input event handle)组成 input子系统架构图 gpio-keys         gpio-keys是基于input子系统实现的一个通用按键驱动,该驱动也符合linux驱动实现模型,即driver和device分离模型.一