EmbeddedBuilder_v1.4.1.23782 - 在工程中添加自己的C实现文件

news2024/11/15 21:25:54

文章目录

    • EmbeddedBuilder_v1.4.1.23782 - 在工程中添加自己的C实现文件
    • 概述
    • 笔记
    • 添加自己的文件夹
    • 在文件夹中建立新文件
    • 在文件夹中载入已经存在的文件
    • 修改工程编译时的包含路径和库路径
      • 添加包含路径
      • 添加实现路径
    • 在main.c或其他实现中添加自己的头文件引用和自己的函数调用
    • 保存 && 编译工程
    • 备注
    • END

EmbeddedBuilder_v1.4.1.23782 - 在工程中添加自己的C实现文件

概述

用EmbeddedBuilder产生工程代码后,可以在 user code [x] begin 和 user code [x] end 标记之间填写自己的实现。
不过如果想代码重用,这样搞不太好。
想添加自己的库实现(.h, .c),换了新工程后,只需要将库实现包含进来,在EmbeddedBuilder产生的代码中包含自己库的头文件,然后在需要的地方调用自己的库函数,这样维护性和重用性好很多。

试了试,可以的。

笔记

打开 EmbeddedBuilder,建立GD工程, 选定MCU种类,进入IDE
用图形化操作pinout, 时钟树, 配置3个页。
产生代码。

添加自己的文件夹

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在文件夹中建立新文件

如果是新实现,就需要建立新文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

新建后的文件时空的,自己填写实现。如下

// @file my_lib.h

#ifndef __MY_LIB_H__
#define __MY_LIB_H__

// 空的测试函数
void my_lib_fn_empty(void);

#endif // #ifndef __MY_LIB_H__

// @file my_lib.c

#include "my_lib.h"

void my_lib_fn_empty(void)
{

}

在文件夹中载入已经存在的文件

如果是要重用自己写好的实现,就载入已经存在的文件
在这里插入图片描述

要拷贝的已存在的实现文件不能在目标文件夹中(否则会载入失败),然后用鼠标拖拽到工程的myLib节点上,松手。
在这里插入图片描述
出现提示时,选择拷贝文件,点击OK.
在这里插入图片描述
此时,已经存在的库实现文件,就被拖拽添加到了工程的myLib目录中。

修改工程编译时的包含路径和库路径

EmbeddedBuilder产生的工程中的.c, .h 都不能带路径,否则编译报错, 如下
在这里插入图片描述

如果我们添加的文件不在工程已经设置的路径中,那么就会编译报错。
所以在添加了自己的实现后,要确认和修改工程的路径设置。
直接修改main.c所在文件夹src的路径设置就可以。
在这里插入图片描述

添加包含路径

在这里插入图片描述
在这里插入图片描述

添加实现路径

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在main.c或其他实现中添加自己的头文件引用和自己的函数调用

#include "gd32f3x0_hal.h"
#include "gd32f3x0_hal_init.h"
/* user code [global 0] begin */
#include "my_lib.h" // add my .h
/* user code [global 0] end */
int main(void)
{
    /* user code [local 0] begin */
	my_lib_fn_empty();
    /* user code [local 0] end */

    msd_system_init();
    msd_clock_init();

保存 && 编译工程

在这里插入图片描述

Finished building: test_seg_lcd.siz
 
 

14:33:40 Build Finished. 0 errors, 0 warnings. (took 1s.762ms)

工程编译0错误,0警告

备注

在重新用.gdc产生代码后,工程中自己添加的实现和在main.c中添加的实现不受影响。
只是个demo, 基本能看出来,可以在GD project中添加自己的实现,使重用性成为可能。
具体细节再试试,按理说是可以的。等demo写完,如果有问题,再补充。

END

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

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

相关文章

Seaborn库

目录 主要功能和特点 使用方法 实例应用 Seaborn库的最新版本有哪些新功能和改进? 如何在Seaborn中实现复杂的数据预处理步骤,例如数据清洗和转换? Seaborn与其他数据可视化库(如Matplotlib、Plotly)相比有哪些优…

【图像去雾系列】使用暗通道先验去雾算法对图像进行去雾处理

目录 一 暗通道先验去雾算法 1 雾形成机理-大气散射模型 2 暗通道先验的整体思想 二 实践 一 暗通道先验去雾算法 论文名称:Single Image Haze Removal Using Dark Channel Prior 论文地址:Single Image Haze Removal Using Dark Channel Prior | IEEE Journals & …

合合信息的OCR技术在智能文档处理方面有哪些具体的应用案例?

智能文档处理(IDP)是利用人工智能技术,自动从复杂的非结构化和半结构化文档中抽取关键数据,并将其转换成结构化数据的技术。能够自动识别、提取并结构化处理文档中的关键信息。这种技术通常基于自然语言处理(NLP)和计算机视觉等先进技术,可以…

【连续4届EI检索,SPIE 出版】第五届信号处理与计算机科学国际学术会议(SPCS 2024,8月23-25)

第五届信号处理与计算机科学国际学术会议(SPCS 2024) 将于2024年8月23-25日在中国哈尔滨举行。会议主要围绕信号处理与计算机科学等研究领域展开讨论。 会议旨在为从事信号处理与计算机科学研究的专家学者、工程技术人员、技术研发人员提供一个共享科研成果和前沿技…

如何使用Wireshake解密Wi-Fi QoS Data报文?

1. 使用Wireshake解密Wi-Fi数据报文 通常当Wi-Fi发生某些问题时,我们都会抓取Wi-Fi sniffer log,用以协助分析问题,但是如果Wi-Fi使用了加密,则我们无法从sniffer log中获取到IP数据的层级,因为在Wi-Fi报文中&#xf…

非专业人士的编程梦:低代码开发平台的崛起与挑战

文章目录 每日一句正能量前言技术概览基本概念主要特点市场现状适用性分析结论 效率与质量的权衡效率提升质量与安全的挑战企业应用开发中的利弊应对策略结论 挑战与机遇挑战机遇应对策略结论 后记 每日一句正能量 书读的越多而不加思考,你就会觉得你知道得很多&…

24/8/14算法笔记 复习_逻辑回归sigmoid

import numpy as np import matplotlib.pyplot as pltdef sigmoid(x):return 1/(1np.exp(-x))x np.linspace(-5,5,100) y sigmoid(x)plt.plot(x,y,colorgreen) #损失函数 from sklearn import datasets from sklearn.linear_model import LogisticRegression from mpl_toolki…

SpringBoot教程(二十一) | SpringBoot实现定时任务

SpringBoot教程(二十一) | SpringBoot实现定时任务 单点定时任务方式一:使用ScheduledEnableScheduling注解巨坑(Scheduled任务都用了同一个线程去执行,导致定时任务存在堵塞)解决办法一:添加自…

linux监控命令

在 Linux 中,有许多命令可以用于监控系统的性能和状态。以下是一些常用的监控命令及其用途: 1. top​ 和 htop​ top ​top​ 命令显示当前系统中运行的进程列表及其资源使用情况。 top​​ ‍ htop ​htop​ 是 top​ 命令的增强版,提…

使用 Spring Event 解耦代码

​ 博客主页: 南来_北往 系列专栏:Spring Boot实战 前言 在Spring框架中,事件机制扮演着至关重要的角色,它不仅促进了组件间的互动,还在提高系统灵活性方面迈出了重要步伐。相较于常规的方法调用,这种机制显著提…

前端组件库汇总

文章目录 一、前端组件库1. ElementUI(基于 Vue 2.0 的桌面端组件库)2. Element Plus(基于 Vue 3,面向设计师和开发者的组件库)3. Vue DevUI(一个基于 DevUI Design 的 Vue3 组件库)4. vant(轻量、可定制的移动端 Vue 组件库)5. Ant Design(助力设计开发者「更灵活」…

使用Spring Boot整合ip2region获取客户端IP地理位置信息

😄 19年之后由于某些原因断更了三年,23年重新扬帆起航,推出更多优质博文,希望大家多多支持~ 🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志 🎐 个人CSND主页——Mi…

Spring之@Import注解

1. 前言 Import 注解 在 Spring 中占据重要地位,是 Spring 的一个重要扩展点。这篇博文我们以案例、源码、应用相结合,来系统的学习一下这个注解 2. 案例演示 2.1 代码准备 2.1.1 创建配置类 AppConfig ComponentScan("com.ys") public c…

实战项目:贪吃蛇游戏的实现(上)

前言 Hello, 今天我们来一起完成一个实战项目:贪吃蛇。 相信大家都不会对这个游戏感到陌生,贪吃蛇游戏是久负盛名的游戏,他和俄罗斯方块,扫雷游戏等游戏位列世界经典游戏之列。这次我们旨在通过实战项目贪吃蛇的实现&#xff0c…

opencv2.4.9源码在Windows下VS2019的编译

1、opencv2.4.9解压后根目录下建立build文件夹 2、采用CMake-gui进行编译 记得把上面两个√去掉,用老版本的opencv再用cuda完全没有意义,我们只是验证算法用。 把这个√也去掉。 重新Configure和Generate,如下图: 然后&#xff1…

大模型汇总:文心一言大模型、腾讯混元大模型、通义千问大模型、字节豆包大模型、智普清言大模型、KIMI 大模型、紫东太初大模型、讯飞星火大模型

文心一言大模型 作为百度自主研发的大型语言模型,具有显著的特点、广泛的应用场景以及独特的优势。以下是对文心一言特点、应用、优势的详细介绍: 特点:知识增强: 文心一言通过持续学习技术,不断吸收海量数据和知识…

Postman接口测试基础教程--2024最新版

文章目录 一、Postman 简介二、Postman 功能概览三、Postman 安装说明1. 下载与安装2. 界面导航说明3. 发送第一个请求 四、Postman 基础功能1. 常见类型的接口请求查询参数的接口请求表单类型的接口请求上传文件的表单请求JSON 类型的接口请求 2. 接口响应数据解析3. 接口管理…

基于GA遗传算法的拱桥静载试验车辆最优布载matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 基于GA遗传算法的拱桥静载试验车辆最优布载matlab仿真。主要是为了实现桥梁静载试验自动化布载(确定车辆位置使得满足加载效率ηq的要求,0…

初级python代码编程学习---- 简单记事本小程序

简单记事本小程序 提供一个基于Python的简单记事本小程序示例。这个小程序将允许用户添加、查看和删除记事条。 # Simple Note Pad Mini-Application # 记事本数据结构 notes [] def add_note(note): """添加一条新的记事条""" …

可重用性功能 在 Jira 中扩展测试管理

在当今动态的软件开发环境中,高效且可扩展的测试管理对于确保软件产品的质量和可靠性至关重要。Jira 是一种流行的项目管理工具,它通过与Zephyr Scale的集成为测试管理提供了强大的解决方案。 在这篇博文中,我们将探讨可重用性功能在测试管理…