上位机图像处理和嵌入式模块部署(mcu之静态库生成和使用)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

很多同学做了很长时间的mcu和keil开发,都认为keil工程中必须包含所有的源代码,其实这是不对的。如果有一些代码我们不希望别人看到,那么就可以把h文件和lib文件提供给别人,这样就避免了代码暴露的风险。甚至于说,我们也可以自己来实现dll的调用,动态加载算法插件,这都是可以的,不过这个等到遇到的时候再说。

1、创建lib工程

第一步要做的,就是创建一个lib工程,

填写好工程名之后,我们可以选择一个arm mcu类型,

选择好之后,就可以添加add.c文件了,

这里,我们选择了add.c这个文件名,大家可以根据自己的需要,换成其他的文件名,都是可以的。

以上这些都做好之后,就可以补充一下add.c代码。可以写一个简单的递归函数,

复制代码
int iterate(int data)
{
	  if(data == 1)
			return 1;
		else
			return iterate(data-1) +data ;
}

既然是静态库,那么最后生成的肯定就不是hex文件了。所以生成目标这部分也需要修改一下。我们在output tab页面里面选择输出lib即可,

至此,所有的工作都已经准备好了。我们直接单击编译,不出意外的话,就可以看到生成lib文件了。

复制代码
*** Using Compiler 'V5.06 update 4 (build 422)', folder: 'C:\Keil_v5\ARM\ARMCC\Bin'
Build target 'Target 1'
compiling add.c...
creating Library...
".\Objects\test.lib" - 0 Error(s), 0 Warning(s).
Build Time Elapsed:  00:00:01

2、使用lib

和创建代码、生成lib就更简单了。前面我们创建了一个stm32使用的lib,同样我们打开一个stm32的工程,把lib文件直接拖进去就可以,

这样lib文件就可以参与编译了。如果要使用的话,可以自己准备一个头文件,

复制代码
extern int iterate(int data);
int data = iterate(100);

3、总结

虽然mcu是一个相对独立的工程,开发规模不是很大。不过,还是建议大家可以把用的比较多的模块整理成lib。这样不仅能提高开发进度,开发的代码质量也有保障。另外不想share的一些code,也可以以这种方式share给客户。

相关推荐
点灯小铭4 小时前
基于单片机的窗帘、灯光、空调智能家居控制系统设计
单片机·嵌入式硬件·毕业设计·智能家居·课程设计·期末大作业
飞凌嵌入式6 小时前
【玩转多核异构】T153核心板RISC-V核的实时性应用解析
linux·嵌入式硬件·嵌入式·risc-v
怎么就重名了6 小时前
STM32+蓝牙模块+超声波模块+QT
stm32·嵌入式硬件·qt
oshan20127 小时前
小华HC32L136K8TA 单片机新建 MDK5 工程模板(二)
单片机·嵌入式硬件
三品吉他手会点灯8 小时前
STM32F103学习笔记-16-RCC(第4节)-使用 HSI 配置系统时钟并用 MCO 监控系统时钟
笔记·stm32·单片机·嵌入式硬件·学习
Lester_11019 小时前
嵌入式学习笔记 - 关于看门狗定时器的喂狗的操作放在中断还是放在主循环
笔记·单片机·学习
bai5459369 小时前
LED闪烁功能代码详解
单片机·嵌入式硬件
吃货界的硬件攻城狮12 小时前
【STM32】低功耗模式下的IO配置详解(标准库实现)
stm32·单片机·嵌入式硬件
DIY机器人工房12 小时前
嵌入式面试题:物联网协议怎么选?Zigbee/蓝牙/LoRa/4G/WiFi优缺点一文读懂
stm32·嵌入式硬件·嵌入式·diy机器人工房·嵌入式面试题
ivy1598683771513 小时前
JM20329是一款高性能、低功耗的USB桥接芯片,实现串行接口(如SATA、IDE)与USB接口之间的数据转换。
c语言·开发语言·ide·嵌入式硬件·eureka·音视频·视频编解码