keil makefile lib

Keil2Makefile:将Keil工程自动转化为Makefile工程 概述 传统单片机开发环境是 Keil IDE,它为开发者提供了一套非常方便的开发环境,我们只需要进行很少的设置就可以完成单片机程序的编写、编译、烧录和调试。但 Keil 也有着过于陈旧、闭源和无法跨平台等缺点,用惯了 CLion、VSCode 等现代编译器很难再习惯 Keil;而且众多的开源软件都是使用开源编译链开发的,如果我们对开源编译链没有了解的话,很难上手众多的开源项目。 众多的原因使我们放弃了 Keil IDE,转向 GNU Arm Embedded Toolchain 配上现代编辑器的方案。但不可 阅读详情

脚本文件

@echo on
@echo =====================================================
@echo                make by xxxxxxxxx
@echo =====================================================
@echo off


del *.lib


make -f makefile arm7 > a.txt
make clean


if not exist stm32_led.lib goto make_lib_error


pause
exit


:make_lib_error
@echo on
@echo =====================================================
@echo               make stm32_led.lib error
@echo =====================================================
@echo off
pause
goto :eof


makefile文件

KEIL_PATH = C:\Keil

SRC_PATH = F:\makefile\uart

ARMCC = $(KEIL_PATH)\ARM\BIN40\armcc
ARMASM = $(KEIL_PATH)\ARM\BIN40\armasm
ARMAR = $(KEIL_PATH)\ARM\BIN40\armar

#################################################
# 编译选项
#################################################
CFLAGS := -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork
CMACRO :=
ASMFLAGS := --cpu Cortex-M3 -g --apcs=interwork

APPNAME = stm32_led

OBJS = .\system\delay\delay.o \
   .\system\sys\sys.o \
        .\system\usart\usart.o \
   .\hardware\key\key.o \
   .\hardware\led\led.o \
       .\user\test.o \

   .\user\STM32F10x.o


  
INC += -I.\system\delay
INC += -I.\system\sys
INC += -I.\system\usart
INC += -I.\hardware\key
INC += -I.\hardware\led
INC += -I$(KEIL_PATH)\ARM\INC\St\STM32F10x

INC += -I$(KEIL_PATH)\ARM\RV31\INC



%.o:%.c
$(ARMCC) $(CFLAGS) $(INC) $(CMACRO) $< -o $@  

%.o:%.s

$(ARMASM) $(ASMFLAGS) $(INC) $(CMACRO) $< -o $@ 



arm7:$(OBJS)
$(ARMAR) $(APPNAME).lib -r $(OBJS)


.PHONY : clean

clean:
del $(OBJS) 
keilU5中.lib文件的生成与调用 阅读详情

相关推荐

ARM Compiler 6 下载、安装与迁移实战指南

在嵌入式开发领域,编译器工具链是连接高级语言与底层硬件的核心桥梁,其性能与标准支持直接影响代码效率与开发体验。ARM Compiler 6(AC6)作为ARM官方基于LLVM/Clang架构的现代编译器,在代码优化、对C++14/17等新标准的支持以及错误检查严谨性方面相比前代有显著提升,尤其适合对代码体积和性能有严苛要求的嵌入式项目。其技术价值在于能够为Cortex-M和Cortex-A系列处理器生成更高效、更可靠的机器码,广泛应用于物联网设备、汽车电子和工业控制等场景。本文聚焦于如何合法获取并部署这一工

weixin_28839549的博客 408

使用makefile替换Keil进行编译

KEIL_PATH = C:\Keil\ARM ARMCC = $(KEIL_PATH)\BIN40\armcc ARMASM = $(KEIL_PATH)\BIN40\armasm ARMAR = $(KEIL_PATH)\BIN40\armar ARMLINK = $(KEIL_PATH)\BIN40\armlink FROMELF = $(KEIL_PATH)\BIN40\fromelf

fjweaponlwp的专栏 5909

告别Keil AXF:三种为CubeMonitor生成STM32 GCC ELF文件的方法(含Makefile教程)

本文详细介绍了三种为STM32开发者生成GCC ELF文件以适配CubeMonitor的实用方案,包括使用STM32CubeIDE、基于CubeMX的Makefile工程以及在Keil中配置GCC编译器。重点解析了ELF文件对CubeMonitor的重要性,并提供了各方案的优缺点对比和选型建议,帮助开发者高效实现调试数据监测与导出。

weixin_33727510的博客 756

keil移植linux(makefile)

keil移植linux

qq_42227760的博客 3867

告别Keil/IAR:手把手教你用GNU ARM Toolchain为STM32编译第一个程序(含Makefile模板)

本文详细介绍了如何使用GNU ARM Toolchain为STM32开发环境编译第一个程序,包括环境搭建、工具链配置、项目结构设计以及智能Makefile模板。通过命令行工具链,开发者可以获得更高的透明度和灵活性,同时避免商业IDE的授权费用。文章还提供了关键组件深度解析和高级开发技巧,帮助开发者快速上手专业级STM32开发。

weixin_30321709的博客 316

DAVE与Keil工程集成:编译调试全流程避坑指南

在嵌入式开发中,集成开发环境(IDE)与芯片专用配置工具的结合是提升开发效率的常见实践。其核心原理在于通过图形化工具自动生成底层驱动代码和初始化配置,再导入到功能强大的传统IDE中进行深度开发和调试。这种工作流的技术价值在于兼顾了开发便捷性与代码控制力,广泛应用于基于ARM Cortex-M内核的微控制器开发,特别是在使用英飞凌XMC系列等平台时。典型的应用场景包括外设驱动配置、时钟树初始化和低功耗管理。本文将聚焦于DAVE与Keil MDK的工程集成,针对编译报错、调试器连接失败、内存溢出等高频问题,提供

weixin_30394669的博客 337

【Makefile】Makefile 编译 Keil 工程(Linux 环境)

【Makefile】Makefile 编译 Keil 工程(Linux 环境)

challenglistic的博客 3359

Windows环境中,脱离Keil,使用Makefile来编译标准库STM32工程 - STM32F103C8T6

Windows环境中,脱离Keil,使用Makefile来编译标准库STM32工程 - STM32F103C8T6

keil git 编译文件_交叉编译链下的Makefile(STM32F4xx)

文章围绕makefile文件的编写方式,向读者讲述如何在ubuntu平台上用交叉编译链 arm-none-eabi- 编译出 STM32F4xx 系列 MCU 的执行文件。文章核心在于讲述 arm-none-eabi- 在 Makefile 中的应用过程,对比于嵌入式可视编译器 keil_v5 有什么共同点,编译思维是怎样的,并完成一个简单项目 STM32F4xx_LED-Makefile 的编译...

weixin_39915267的博客 336

手把手带你搞懂电压跌落测试DIP

砖一用4分钟时间手把手带你搞懂电压跌落测试DIP,希望对你有用~

qq_45508321的博客 7919

第二次 PX4仿真环境搭建过程全记录

参考链接 https://blog.csdn.net/yanwumuxi/article/details/80097294 https://www.ncnynl.com/archives/201709/2013.html 一、安装依赖项 我们使用Debian / Ubuntu LTS 作为Linux的标准支持版本,但是也支持Cent OS 和 Arch Linux的发行版本。 权限设置 警告:永远...

移步换景的博客 2263

完全舍弃keil,使用vscode+openocd开发STM32

这篇博客文章以STM32F103C8T6为示例介绍了如何使用VSCode和OpenOCD替代Keil

weixin_46056277的博客 1万+

知道LPDDR和DDR什么关系吗?

话不多说,先上大白话,一个网友总结的很好:简单地说DRR4是标准电压版的PC和服务器内存,LPDDR4属于手机等嵌入式移动设备使用的低电压低功耗内存,LPDDR4X则是LPDDR4的升级版,下面详细看看老哥的博客。LPDDR4是与DDR4内存等效的移动设备。。LPDDR4具有两个16位通道,从而使每个DIMM的总线总长度为32位。相比之下,DDR4每个DIMM具有64位通道。

叫好与叫座虽然不是对立面,但想在同一个作品中达到双重效果很难。 2806

matlab 编译 makefile,【嵌入式】基于makefile的STM32编译方法探索

0.前言初学单片机的时候通常使用IDE(通常是keil),IDE的好处是上手快捷;但是IDE将很多东西屏蔽了,例如什么是编译、链接、加载文件等。编译、链接功能均是由一个个命令实现的,如果把这些命令比作工地上干活的工人,那么makefile就是指导工人干活的图纸,make命令这是负责解读makefile这张图纸的工程师。出于好奇心驱使决定尝试使用makefile方式编译stm32的程序。先介绍总体思...

weixin_39830323的博客 632

卸载python弹框报错:Could not set file security for file ‘D:\Config.Msi\abd5.rbf‘. Error: 5. Verify...如何解决?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 6488

基于Python的彩票数据爬虫:数据抓取与趋势分析

爬虫是一种用于从互联网上自动抓取信息的程序。在抓取彩票数据时,我们首先需要确定目标网站并获取其网页内容,接着提取彩票的开奖结果信息并保存。彩票数据通常是以HTML表格或列表的形式展示,爬虫可以利用Python的requests和来抓取静态网页,或使用Selenium来抓取动态页面。在本篇博客中,我们深入探讨了如何使用Python编写彩票数据爬虫,抓取并分析彩票开奖结果。通过Python爬虫技术,结合数据分析与可视化工具,我们能够全面分析历史开奖数据,揭示彩票号码的频率分布、趋势变化以及未来的可能走势。

2201_76125261的博客 1939

库 keil 编译很慢_交叉编译链下的Makefile(STM32F4xx)

文章围绕makefile文件的编写方式,向读者讲述如何在ubuntu平台上用交叉编译链 arm-none-eabi- 编译出 STM32F4xx 系列 MCU 的执行文件。文章核心在于讲述 arm-none-eabi- 在 Makefile 中的应用过程,对比于嵌入式可视编译器 keil_v5 有什么共同点,编译思维是怎样的,并完成一个简单项目 STM32F4xx_LED-Makefile 的编译...

weixin_29956897的博客 554

AUTOSAR进阶图解==>AUTOSAR_SWS_ADCDriver

本文深入解析了AUTOSAR ADC Driver的架构设计和技术实现。主要内容包括:1)ADC Driver在AUTOSAR分层架构中的定位及核心功能;2)详细的模块架构设计,涵盖初始化管理、组转换管理、优先级处理等核心子组件;3)全面的配置模型说明,包括主配置类、通用配置、通道配置等关键数据结构;4)状态机机制和操作序列分析。通过分层设计和标准化接口,ADC Driver实现了硬件抽象和软件解耦,提供了良好的可移植性和可维护性。

一名留德华的,康德的信徒的,专注于汽车电子领域的博客 786

基于makefile的STM32编译方法探索(armcc编译链)

0.前言 初学单片机的时候通常使用IDE(通常是keil),IDE的好处是上手快捷;但是IDE将很多东西屏蔽了,例如什么是编译、链接、加载文件等。编译、链接功能均是由一个个命令实现的,如果把这些命令比作工地上干活的工人,那么makefile就是指导工人干活的图纸,make命令这是负责解读makefile这张图纸的工程师。出于好奇心驱使决定尝试使用makefile方式编译stm32的程序。 先介绍总体思路,makefile只是一个工具,makefile也需要调用IDE背后的命令工具,所以要想实现用make

丨晋丨 7248

HighTec安装使用

HighTec安装使用

qq_43552564的博客 3835

【面试系列】软件架构师 高频面试题及详细解答

本文介绍了软件架构师岗位的初级、中级和高级面试题及详细解答,涵盖了系统设计、面向对象设计、分布式系统、云计算技术、性能优化等关键领域。通过这些问题和解答,候选人可以深入理解软件架构师的核心职责和技能要求。此外,文章总结了在面试中需要掌握的常考知识点,包括架构模式、分布式系统管理、安全性、数据管理和DevOps实践。通过掌握这些知识点,软件架构师能够有效设计和指导复杂系统的结构,确保系统的可扩展性、性能和维护性。

在路上的专栏 850

交叉编译链下的Makefile(STM32F4xx)

文章围绕makefile文件的编写方式,向读者讲述如何在ubuntu平台上用交叉编译链 arm-none-eabi- 编译出 STM32F4xx 系列 MCU 的执行文件。文章核心在于讲述 arm-none-eabi- 在 Makefile 中的应用过程,对比于嵌入式可视编译器 keil_v5 有什么共同点,编译思维是怎样的,并完成一个简单项目的Makefile编写。

Lanceli 2234

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

keil如何添加h文件_如何为你的硬件开发Simulink Toolbox(6)

上次我们写了一个可以自动化配置模型选项的Block,双击它即可完成模型的配置,即配置了模型的基本信息,也配置了系统tlc、makefile模板、代码模板等和代码生成关系紧密的几个文件。这次我们关注的是mytarget_proc.tlc这两个文件,它对应的是ERTCustomFileTemplate这个选项,可以用它来生成自定义的main函数,真正和我们的硬件发生联系。翻箱倒柜从灰尘堆里把STM32...

weixin_39604516的博客 550

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

告别Keil依赖:在Windows下用Makefile高效编译STM32标准库工程(基于STM32F103C8T6)

本文详细介绍了如何在Windows环境下,使用Makefile替代Keil MDK,高效编译STM32标准库工程。以STM32F103C8T6为例,手把手指导搭建基于GNU Arm Toolchain、MinGW和OpenOCD的开发环境,实现从代码编译到一键烧录的完整命令行工作流,提升开发透明度和效率。

gg901的博客 503

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

上一篇: 计算结构体大小
下一篇: 使用makefile替换Keil进行编译
fjweaponlwp
博客等级 码龄15年 4粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值