ML307R OpenCPU GPIO使用
一、GPIO使用流程图
二、函数介绍
三、GPIO 点亮LED
四、代码下载地址
一、GPIO使用流程图

这个图是官网找到的,ML307R GPIO引脚电平默认为1.8V,需注意和外部电路的电平匹配,具体可参考《ML307R_硬件设计手册_OpenCPU版本适用.pdf》中的描述。
二、函数介绍
SDK中有一个GPIO常规使用方法的demo程序,GPIO demo提供了GPIO参数设置、输入输出设置、电平设置和中断设置等功能示例程序,可在cm_demo_gpio.c文件中查看
2.1 cm_gpio_cfg_t结构体说明
typedef struct{cm_gpio_mode_e mode;/*!< 不支持*/cm_gpio_direction_e direction;cm_gpio_pull_e pull;
} cm_gpio_cfg_t;
这个主要是看 cm_gpio_direction_e direction;和cm_gpio_pull_e pull
cm_gpio_direction_e direction 是设置GPIO是输入还是输出
/** I/O方向 */
typedef enum{CM_GPIO_DIRECTION_INPUT = 0,CM_GPIO_DIRECTION_OUTPUT,
}cm_gpio_direction_e;
cm_gpio_pull_e pull 是设置上下拉
/** 上/下拉 */
typedef enum{CM_GPIO_PULL_NONE,CM_GPIO_PULL_DOWN,CM_GPIO_PULL_UP,
}cm_gpio_pull_e;
比如我是要控制lED 闪烁,那么可以配置如下
cm_gpio_cfg_t cfg = {0};cfg.direction = CM_GPIO_DIRECTION_OUTPUT; //配置成输出cfg.pull = CM_GPIO_PULL_UP; //上拉
2.2 cm_iomux_set_pin_func 函数介绍
* @brief IOMUX 设置引脚复用功能** @param [in] pin PIN 定义号* @param [in] fun FUN 定义号** @return * = 0 - 成功 \n* = -1 - 失败*/
int32_t cm_iomux_set_pin_func(cm_iomux_pin_e pin, cm_iomux_func_e fun);
此函数第一个参数 cm_iomux_pin_e 是一个枚举,代表的是那个管脚,这个要和GPIO功能的管脚区分,比如我这里使用GPIO4 控制LED灯,可以查看 “ML307R_OpenCPU资源综述”手册 ,LED对应的引脚号是16,所以我们选择CM_IOMUX_PIN_16,而不是对应的GPIO4,这里需要注意。
第二个参数是复用功能 ,从下图可以看到GPIO4 是OpenCPU复用功能1,既选择CM_IOMUX_FUNC_FUNCTION1

2.3 cm_gpio_init介绍
/*** @brief 初始化GPIO* * @param [in] gpio_num GPIO号* @param [in] cfg 配置* * @return * = 0 - 成功 \n* < 0 - 失败, 返回值为错误码* * @details 初始化之前一定要先设置引脚复用*/
int32_t cm_gpio_init(cm_gpio_num_e gpio_num, cm_gpio_cfg_t *cfg);
第一个参数是cm_gpio_num_e 是指对应的GPIO,LED控制是使用了 GPIO4,既选择CM_GPIO_NUM_4
第二个参数 cm_gpio_cfg_t,就是上面配置的方向和上下拉
2.4 cm_gpio_set_level函数介绍
/*** @brief 设置输出电平* * @param [in] gpio_num GPIO号* @param [in] level 输出电平* * @return * = 0 - 成功 \n* < 0 - 失败, 返回值为错误码* * @details More details*/
int32_t cm_gpio_set_level(cm_gpio_num_e gpio_num, cm_gpio_level_e level);
这个函数设置对应GPIO 输出高低电平
第一个参数 cm_gpio_num_e 对应的GPIO
第二个参数cm_gpio_level_e 对应的是设置的电平
/** 高低电平 */
typedef enum{CM_GPIO_LEVEL_LOW,CM_GPIO_LEVEL_HIGH,
}cm_gpio_level_e;
2.5 cm_gpio_get_level函数介绍
/*** @brief 读取输入电平* * @param [in] gpio_num GPIO号* @param [out] level 输入电平* * @return * = 0 - 成功 \n* < 0 - 失败, 返回值为错误码* * @details More details*/
int32_t cm_gpio_get_level(cm_gpio_num_e gpio_num, cm_gpio_level_e *level);
这个函数是读对应的GPIO 电平
第一个参数 cm_gpio_num_e 对应的GPIO
第二个参数cm_gpio_level_e 对应的是读的电平
三、GPIO 点亮LED
osTimerId_t gpio_timer_id = NULL;// LED定时器回调函数
void gpio_TimerCallback(void *argument) {static unsigned char i = 0;if(i == 0){cm_gpio_set_level(CM_GPIO_NUM_4, CM_GPIO_LEVEL_LOW);i = 1;}else{cm_gpio_set_level(CM_GPIO_NUM_4, CM_GPIO_LEVEL_HIGH);i = 0;}
}
void gpio_create_timer(void)
{osTimerAttr_t timer_attr = {.name = "Gpio_Timer",
};gpio_timer_id = osTimerNew(gpio_TimerCallback, osTimerPeriodic, NULL, &timer_attr);osTimerStart(gpio_timer_id, 200);
}void gpio_set_output(void)
{cm_gpio_cfg_t cfg = {0};cfg.direction = CM_GPIO_DIRECTION_OUTPUT;cfg.pull = CM_GPIO_PULL_UP;cm_iomux_set_pin_func(CM_IOMUX_PIN_16, CM_IOMUX_FUNC_FUNCTION1);//初始化之前一定要先设置引脚复用cm_gpio_init(CM_GPIO_NUM_4, &cfg);gpio_create_timer();
}void bsp_gpio_init(void)
{gpio_set_output();}
以上就是控制LED灯闪烁,在定时器里面实现 ,实际上是1S闪烁一次
四、代码下载地址
ML307R OpenCPU GPIO使用 代码
相关文章:
ML307R OpenCPU GPIO使用
一、GPIO使用流程图 二、函数介绍 三、GPIO 点亮LED 四、代码下载地址 一、GPIO使用流程图 这个图是官网找到的,ML307R GPIO引脚电平默认为1.8V,需注意和外部电路的电平匹配,具体可参考《ML307R_硬件设计手册_OpenCPU版本适用.pdf》中的描…...
python基于深度学习的聊天机器人设计
python基于深度学习的聊天机器人设计 开发语言:Python 数据库:MySQL所用到的知识:Django框架工具:pycharm、Navicat、Maven 系统功能实现 登录注册功能 用户在没有登录自己的用户名之前只能浏览本网站的首页,想要使用其他功能都…...
Golang设计模式(四):观察者模式
观察者模式 什么是观察者 观察者模式(Observer Pattern):定义对象之间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新。观察者模式的别名包括发布-订阅(Publish/Subscribe…...
huggingface 笔记:查看GPU占用情况
0 准备部分 0.1 创建虚拟数据 import numpy as npfrom datasets import Datasetseq_len, dataset_size 512, 512 dummy_data {"input_ids": np.random.randint(100, 30000, (dataset_size, seq_len)),"labels": np.random.randint(0, 1, (dataset_size…...
JavaSE 学习记录
1. Java 内存 2. this VS super this和super是两个关键字,用于引用当前对象和其父类对象 this 关键字: this 关键字用于引用当前对象,即调用该关键字的方法所属的对象。 主要用途包括: 在类的实例方法中,通过 this …...
HTML与CSS的学习
什么是HTML,CSS? HTML(HyperText Markup Language):超文本标记语言。 超文本:超越了文本的限制,比普通文本更强大。除了文字信息,还可以定义图片、音频、视频等 标记语言:由标签构成的语言 >HTML标签都是预定义好的。例如:使用<a>…...
【单片机】STM32F070F6P6 开发指南(一)STM32建立HAL工程
文章目录 一、基础入门二、工程初步建立三、HSE 和 LSE 时钟源设置四、时钟系统(时钟树)配置五、GPIO 功能引脚配置六、配置 Debug 选项七、生成工程源码八、生成工程源码九、用户程序下载 一、基础入门 f0 pack下载: https://www.keil.arm…...
源码编译安装Rsync数据同步
源码编译安装 RPM软件包:rpm -ivh 或者 yum -y install 需要开发编译工具gcc、gcc-c、make等... 源码包----开发工具gcc与make----》可以执行的程序-----》运行安装 •主要优点 –获得软件的最新版,及时修复bug –软件功能可按需选择/定制ÿ…...
SQL Server2019安装步骤教程(图文)_最新教程
一、下载SQL Server2019 1.到微软官网下载SQL Server Developer版本,官网当前的2019版本下载需要注册账号。 不想注册的朋友,可以选择从网盘下载:点击此处直接下载 2.下载之后先解压,解压后执行exe安装程序。打开之后的界面如下…...
【SpringBoot】SpringBoot中防止接口重复提交(单机环境和分布式环境)
📝个人主页:哈__ 期待您的关注 目录 🌼前言 🔒单机环境下防止接口重复提交 📕导入依赖 📂项目结构 🚀创建自定义注解 ✈创建AOP切面 🚗创建Conotroller 💻分布…...
零基础学Java(全170集)
课程概述 本课程旨在全面深化对 Java 语言的核心技术理解,并提升编程实践能力。课程内容涵盖以下关键领域: 掌握Java核心语法,为后续学习打下扎实的基础。熟练运用Java常用的类库与开发工具,提高开发效率与质量。解决面向对象编…...
摄像头应用测试
作者简介: 一个平凡而乐于分享的小比特,中南民族大学通信工程专业研究生在读,研究方向无线联邦学习 擅长领域:驱动开发,嵌入式软件开发,BSP开发 作者主页:一个平凡而乐于分享的小比特的个人主页…...
Golang框架HTTP客户端框架zdpgo_resty发送表单请求
核心代码 这里通过字典传递了一个简单的表单数据。 发送的是POST请求。 resp, err : client.R().SetFormData(map[string]string{"username": "jeeva","password": "mypass",}).Post("http://127.0.0.1:3333/login")fmt.P…...
【机器学习300问】99、多通道卷积神经网络在卷积操作时有哪些注意事项?
一、多通道卷积神经网络示例 还是以图像处理为例,如果你的目标不仅是分析灰度图像特性,还打算捕捉RGB彩色图像的特征。如下图,当面对一张66像素的彩色图像时,提及的“3”实际上是指红、绿、蓝三种颜色通道,形象地说&am…...
Rust之函数、单元测试
1、函数 类似于C函数。 1.1、普通函数 在Rust中,函数的定义使用fn关键字,后跟函数名、参数列表、返回类型和函数体。函数体由一系列语句组成,用于执行特定的操作和计算。 函数定义: 使用fn关键字定义函数,函数由函数…...
Linux环境下TensorFlow安装教程
TensorFlow是学习深度学习时常用的Python神经网络框 下面以Mask R-CNN 的环境配置为例: 首先进入官网:www.tensorflow.org TensorFlow安装的总界面: 新建anaconda虚拟环境: conda create -n envtf2 python3.8 (Pyth…...
基于Open3D的点云处理19-模拟生成点云
如果没有设备,怎么得到点云进行学习研究呢,一般通过以下方法: 模型采样+增加噪声:简单方便,但结果比较理想与真实扫描不一致;光线投射:简单方便,可以模仿传感器的一个扫描视角Blensor点云仿真:能够模仿传感器本身的一些噪声,适合激光雷达和tof相机的仿真,传感器较少…...
安全分析[1]之网络协议脆弱性分析
文章目录 威胁网络安全的主要因素计算机网络概述网络体系结构 网络体系结构脆弱性分组交换认证与可追踪性尽力而为匿名与隐私对全球网络基础实施的依赖无尺度网络互联网的级联特性中间盒子 典型网络协议脆弱性IP协议安全性分析IPSec(IP Security)IPv6问题 ICMP协议安…...
数据湖对比(hudi,iceberg,paimon,Delta)
Delta 数据湖 Delta 更新原理 update/delete/merge 实现均基于spark的join功能。 定位 做基于spark做流批一体的数据处理 缺点 本质为批处理。强绑定spark引擎。整体性能相较其他数据湖比较差 hudi 数据湖 hudi 更新原理 通过hudi自定义的主键索引hoodiekey 布隆过…...
基于ssm的蛋糕商城系统java项目jsp项目javaweb
文章目录 蛋糕商城系统一、项目演示二、项目介绍三、系统部分功能截图四、部分代码展示五、底部获取项目源码(9.9¥带走) 蛋糕商城系统 一、项目演示 蛋糕商城管理系统 二、项目介绍 系统角色 : 管理员、用户 一,管理员 管理员有…...
STM32 串口通信入门:printf 重定向 + 调试技巧
作为STM32新手,串口通信是嵌入式调试的万能钥匙。很多新手调试程序时,只能靠LED亮灭判断运行状态,出错后无从排查;想查看变量、确认函数执行情况,也没有有效方法。串口通信可解决这一问题,通过printf函数&a…...
如何快速掌握TensorFlow模块化架构:开发者终极指南
如何快速掌握TensorFlow模块化架构:开发者终极指南 【免费下载链接】community Stores documents used by the TensorFlow developer community 项目地址: https://gitcode.com/gh_mirrors/community1/community TensorFlow作为全球最流行的机器学习框架&…...
告别代码阅读疲劳:Source Code Pro编程字体让你的编程体验提升50%
告别代码阅读疲劳:Source Code Pro编程字体让你的编程体验提升50% 【免费下载链接】source-code-pro Monospaced font family for user interface and coding environments 项目地址: https://gitcode.com/gh_mirrors/so/source-code-pro 还在为代码阅读时眼…...
飞腾D2000/FT2000全国产化标准COMe模块
板贴DDR4,有8GB 16GB 32GB等容量,标准type6 COMe模块,有少量现货。...
Cursor无限制使用解决方案:cursor-free-vip完全指南
Cursor无限制使用解决方案:cursor-free-vip完全指南 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reached your trial…...
生物感知层级与真实维度跃迁理论 ——基于三场正交统一论与电磁神经学的生命认知重构
摘要:本文以三场正交统一论(电磁场为主导、引力场与强弱力相位场正交耦合)与电磁神经学(神经元树突为电磁场收发天线、潜意识为全域场处理器、显意识为集中式符号网关)为底层框架,系统性重构生物感知器官的…...
VideoDownloadHelper终极解决方案:让网络视频下载效率提升300%的神器
VideoDownloadHelper终极解决方案:让网络视频下载效率提升300%的神器 【免费下载链接】VideoDownloadHelper Chrome Extension to Help Download Video for Some Video Sites. 项目地址: https://gitcode.com/gh_mirrors/vi/VideoDownloadHelper 您是否还在为…...
Python爬虫入门零门槛!30分钟爬取软科中国大学排名,生成交互式可视化排名表
做Python入门学习的同学,是不是都想找一个反爬弱、代码清晰、爬下来有用、能快速看到成果的实战项目? 很多入门教程要么爬一些过时的、没用的静态页面,要么代码写得晦涩难懂,要么爬下来的数据只是打印在控制台,完全没有…...
3步轻松解密QQ音乐加密文件:qmc-decoder终极指南
3步轻松解密QQ音乐加密文件:qmc-decoder终极指南 【免费下载链接】qmc-decoder Fastest & best convert qmc 2 mp3 | flac tools 项目地址: https://gitcode.com/gh_mirrors/qm/qmc-decoder 你是否曾经在QQ音乐下载了心爱的歌曲,却发现只能在…...
LiuJuan20260223Zimage国风美学生成模型v1.0入门:Node.js环境调用与API开发
LiuJuan国风美学生成模型v1.0入门:Node.js环境调用与API开发 最近在尝试一些AI图像生成项目,发现很多模型对中文场景和东方美学的支持还不够好。直到我遇到了LiuJuan国风美学模型,它专门针对国风、古风、东方元素进行优化,生成的…...
