Grove Vision AI V2之GPIO

news2025/1/10 11:34:12

一、说明

        实现一个LED闪烁的Demo,Grove Vision AI V2开发板上有一个USER_LED,由GPIO SEN_D2驱动,SEN_D2为高电平是USER_LED亮,SEN_D2为低电平时USER_LED灭。

USER_LED部分电路如下:

二、创建例程

1、创建文件

在Seeed_Grove_Vision_AI_Module_V2/EPII_CM55M_APP_S/app/scenario_app/目录下创建gpio目录。将Seeed_Grove_Vision_AI_Module_V2/EPII_CM55M_APP_S/app/scenario_app/imu_read/下的drv_user_defined.mk

imu_read_app.c

imu_read_app.h

imu_read_app.ld

imu_read_app.mk 

imu_read_app.sct

六个文件复制到gpio目录下,然后修改文件名字:

2、增加一个APP类型

打开gpio_app.mk文件,修改内容:

APPL_DEFINES += -DIMU_READ_APP
改为
APPL_DEFINES += -DGPIO_APP

override LINKER_SCRIPT_FILE := $(SCENARIO_APP_ROOT)/$(APP_TYPE)/imu_read_app.sct
改为
override LINKER_SCRIPT_FILE := $(SCENARIO_APP_ROOT)/$(APP_TYPE)/gpio_app.sct

override LINKER_SCRIPT_FILE := $(SCENARIO_APP_ROOT)/$(APP_TYPE)/imu_read_app.ld
改为
override LINKER_SCRIPT_FILE := $(SCENARIO_APP_ROOT)/$(APP_TYPE)/gpio_app.ld

打开Seeed_Grove_Vision_AI_Module_V2/EPII_CM55M_APP_S/app/main.c,增加内内容:

#ifdef GPIO_APP
#include "gpio_app.h"

/* main entry */
int main(void)
{
	board_init();
	app_main();
	return 0;
}
#endif
3、编写代码

将gpio_app.h文件改为如下内容:

/*
 * gpio_app.h
 *
 *  Created on: Aug 22, 2024
 *      Author: huochaigun
 */

#ifndef APP_SCENARIO_GPIO_APP_
#define APP_SCENARIO_GPIO_APP_

#define APP_BLOCK_FUNC() do{ \
	__asm volatile("b    .");\
	}while(0)

int app_main(void);

#endif /* APP_SCENARIO_GPIO_APP_ */

 将gpio_app.c文件改为如下内容:

#include <stdio.h>
#include <assert.h>
#include <stdbool.h>
#include <stdint.h>
#include <string.h>
#include <stdlib.h>


#ifdef TRUSTZONE_SEC
#ifdef FREERTOS
/* Trustzone config. */
//
/* FreeRTOS includes. */
//#include "secure_port_macros.h"
#else
#if (__ARM_FEATURE_CMSE & 1) == 0
#error "Need ARMv8-M security extensions"
#elif (__ARM_FEATURE_CMSE & 2) == 0
#error "Compile with --cmse"
#endif
#include "arm_cmse.h"
//#include "veneer_table.h"
//
#endif
#endif

#include "xprintf.h"
#include "timer_interface.h"
#include "hx_drv_scu.h"
#include "hx_drv_gpio.h"
#include "gpio_app.h"

/*!
 * @brief Main function
 */
int app_main(void) {

	xprintf("Start gpio App\n");
  hx_drv_gpio_init(GPIO_GROUP_2, HX_GPIO_GROUP_2_BASE);

	while ( 1 )
	{
    hx_drv_gpio_set_out_value(GPIO20, GPIO_OUT_HIGH);          //LED ON.
		hx_drv_timer_cm55x_delay_ms(500, TIMER_STATE_DC);
   
    hx_drv_gpio_set_out_value(GPIO20, GPIO_OUT_LOW);          //LED OFF.
		hx_drv_timer_cm55x_delay_ms(500, TIMER_STATE_DC);
	}
	return 0;
}

三、编译

1、指定APP_TYPE

将Seeed_Grove_Vision_AI_Module_V2/EPII_CM55M_APP_S/makefile中的APP_TYPE赋值为gpio:

APP_TYPE = gpio
2、导入编译工具的环境变量
export PATH="$HOME/arm-gnu-toolchain-13.2.Rel1-x86_64-arm-none-eabi/bin/:$PATH"
3、编译

cd到EPII_CM55M_APP_S目录,然后执行make clean,再执行make:

cd EPII_CM55M_APP_S
make clean
make

如果之前编译过其它应用,必须执行make clean,不然编译会失败。

编译成功之后生成如下文件:

Memory region         Used Size  Region Size  %age Used
 CM55M_S_APP_ROM:       60596 B       256 KB     23.12%
CM55M_S_APP_DATA:       12452 B       256 KB      4.75%
    CM55M_S_SRAM:          0 GB      1924 KB      0.00%
arm-none-eabi-size obj_epii_evb_icv30_bdv10/gnu_epii_evb_WLCSP65/EPII_CM55M_gnu_epii_evb_WLCSP65_s.elf
   text    data     bss     dec     hex filename
  62492     440   10108   73040   11d50 obj_epii_evb_icv30_bdv10/gnu_epii_evb_WLCSP65/EPII_CM55M_gnu_epii_evb_WLCSP65_s.elf
四、生成镜像

请参照Himax SDK Download and Build-CSDN博客的3.4节。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2065298.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL的源码安装及基本部署(基于RHEL7.9)

这里源码安装mysql的5.7.44版本 一、源码安装 1.下载并解压mysql , 进入目录: wget https://downloads.mysql.com/archives/get/p/23/file/mysql-boost-5.7.44.tar.gz tar xf mysql-boost-5.7.44.tar.gz cd mysql-5.7.44/ 2.准备好mysql编译安装依赖: yum install cmake g…

上线eleme项目

&#xff08;一&#xff09;搭建主从从数据库 主服务器master 首先下载mysql57安装包&#xff0c;然后解压 复制改目录到/usr/local底下并且改个名字 cp -r mysql-5.7.44-linux-glibc2.12-x86_64 /usr/local/mysql 删掉/etc/my.cnf 这个会影响mysql57的启动 rm -rf /etc…

浪潮服务器主板集成RAID常见问题

★主板集成RAID出现Initialize初始化&#xff0c;如下图 判断及解决方案&#xff1a; 1.机器是否有过插拔硬盘等操作。 2.系统初始化-系统启动会非常的慢。一般为非法关机或者断电导致。 3.出现此情况耐心等待磁盘初始化完成即可。系统初始化时间以具体的数据大小来决定&#…

CLion IDE用MSVC和cmake编译darknet(带GPU)

这个配置教程给用过pytorch&#xff0c;懂得深度学习代码的基本流程&#xff0c;但又不熟悉windows c开发环境的宝子们使用。 安装CUDA&#xff0c;CUDNN 一般都有&#xff0c;不说了。注意上nvidia官网看一下显卡架构&#xff0c;后面要用&#xff0c;比如我的丽台M2000架构…

从零开始Dify本地部署|Windows

参考官方文档部署 Dify本地源码启动 windows最好结合WSL使用&#xff0c;懒得配置WSL&#xff0c;就是硬肝&#xff01; 1.Clone Dify 代码 先找到项目GitHub 开源链接clone 下来&#xff0c;使用docker部署运行&#xff08;Windows配置docker环境这里不赘述&#xff09; gi…

Prometheus Alertmanager告警之邮件、钉钉群、企业微信群机器人报警

文章目录 一、部署alertmanager相关组件1.alertmanager-config2.alertmanager-message-tmpl3.alertmanager 二、调试邮件告警三、钉钉群/企业微信群 报警3.1添加钉钉群机器人3.2添加企业微信群机器人3.3部署alertmanager-webhook-adaptermessage-tmplalertmanager-webhook-adap…

Windows环境下,使用bat脚本配置本地域名解析(含新增、修改、清理)

适用场景&#xff1a; 1.内部不存在DNS服务器的客户&#xff1b; 2.客户电脑不知道前期是否过某域名的本地解析。 整体思路&#xff1a; 1.备份原始hosts配置文件&#xff1b; 2.将hosts配置文件中包含xxxxxxxxxx.com域名的解析清空&#xff1b; 3.写入正确的解析到hosts配置文…

发布MindSearch到ModelScope创空间

一、创建空间 1.点击【我要创建】来创建一个应用 2.填写完基础信息 会出现一个未发布的应用 二、上传代码 1.参照当前页的指示一步一步将MindSearch部署需要的文件上传到指定的repo即可 2.在当前页点击【空间文件】查看刚才通过命令上传的文件 三、上线应用 1.点击【设置】可…

【论文阅读】A Closer Look at Parameter-Efficient Tuning in Diffusion Models

Abstract 大规模扩散模型功能强大&#xff0c;但微调定制这些模型&#xff0c;内存和时间效率都很低。 本文通过向大规模扩散模型中插入小的学习器(称为adapters)&#xff0c;实现有效的参数微调。 特别地&#xff0c;将适配器的设计空间分解为输入位置、输出位置、函数形式的…

什么是ConcurrentHashMap?实现原理是什么?

什么是ConcurrentHashMap&#xff1f;实现原理是什么&#xff1f; 在多线程环境下&#xff0c;使用HashMap进行put操作时存在丢失数据的情况&#xff0c;为了避免这种bug的隐患&#xff0c;强烈建议使用ConcurrentHashMap代替HashMap。 HashTable是一个线程安全的类&#xff…

HashMap是线程安全的吗?为什么呢?

HashMap是线程安全的吗&#xff1f;为什么呢&#xff1f; HashMap是线程不安全的&#xff01; 线程不安全体现在JDK.1.7时在多线程的情况下扩容可能会出现死循环或数据丢失的情况&#xff0c;主要是在于扩容的transfer方法采用的头插法&#xff0c;头插法会把链表的顺序给颠倒…

【亲测有效】JS Uncaught TypeError: [function] is not a constructor

【亲测有效】JS Uncaught TypeError: [function] is not a constructor 在JavaScript编程中&#xff0c;Uncaught TypeError: [function] is not a constructor 是一个相对常见的错误&#xff0c;通常发生在尝试使用某个值作为构造函数&#xff0c;但实际上它不是构造函数的情况…

鸿蒙卡片服务开发

首先先创建一个项目 在该项目下创建一个卡片服务 在module.json5文件下配置 {"module": {..."extensionAbilities": [{"name": "EntryFormAbility","srcEntry": "./ets/entryformability/EntryFormAbility.ets",…

Linux文件操作:文件描述符fd

文章目录 前言&#xff1a;回顾一下文件提炼一下关于文件的理解&#xff1a; 理解文件&#xff1a;通过系统调用操作文件&#xff1a;理解标志位传参&#xff1a;打开文件 open写入信息 write 理解文件描述符&#xff1a;对于open的返回值&#xff1a;文件描述fd的本质是什么呢…

设计模式之Decorator装饰者、Facade外观、Adapter适配器(Java)

装饰者模式 设计模式的基本原则&#xff0c;对内关闭修改。 Decorator Pattern&#xff0c;装饰者模式&#xff0c;也叫包装器模式(Wrapper Pattern)&#xff1a;将一个对象包装起来&#xff0c;增加新的行为和责任。一定是从外部传入&#xff0c;并且可以没有顺序&#xff0…

Qml 实现仿前端的 Notification (悬浮出现页面上的通知消息)

【写在前面】 经常接触前端的朋友应该经常见到下面的控件&#xff1a; 在前端中一般称它为 Notification 或 Message&#xff0c;但本质是一种东西&#xff0c;即&#xff1a;悬浮弹出式的消息提醒框。 这种组件一般具有以下特点&#xff1a; 1、全局/局部显示&#xff1a;它不…

基于单片机的信号发生器设计

本设计采用了STM32F103C8T6单片机作为控制核心&#xff0c;通过控制DDS模块产生不同频率且高稳定和低失真的信号&#xff0c;再通过放大电路对信号的幅值进行放大。此外通过按键可以使用户对频率进行调节以及对输出波形进行切换&#xff0c;由于AD9833输出的幅值是固定的&#…

启动docker镜像

1、运行容器 2、当前运行的进程 3、当前位置和启动时间 4、cat/etc/redhat-release查看版本 5.镜像是模版&#xff0c;容器是实例 6.容器中没有命令运 7.容器总是能轻易获取 8.配置yum 9.安装http 10.修改index⽂件 11.httpd -k start 12.访问 13.退出就没有服务了 14…

细谈LCM驱动电压VGHVGL电路原理

前言&#xff1a; ***在液晶显示屏驱动电路中&#xff0c;VGH电压负责对TFT栅极电容进行充电开启&#xff0c;并使电容电压保持一个场周期&#xff0c;VGL电压负责TFT栅极的关闭。 如果VGH和VGL电压出现不稳或者幅度变化&#xff0c;都会引起图像显示故障&#xff0c;例如花屏…

委托发布 | 进迭时空联合移动云能力中心实现业界首个RISC-V IO虚拟化方案

仟江水商业电讯&#xff08;8月22日 北京 委托发布&#xff09;虚拟化是云计算技术基石&#xff0c;是RISC-V走进云计算等高性能计算场景的必然要求。RISC-V国际基金会2021年制定了Hypervisor 1.0规范&#xff0c;2023年制定了AIA 1.0规范和IOMMU 1.0规范&#xff0c;这3个规范…