# include Makefile
#This file is included in the general Makefile, the libs Makefile and the src Makefile
#Different optimize settings for library and source files can be realized by using arguments
#Compiler optimize settings:
# -O0 no optimize, reduce compilation time and make debugging produce the expected results (default).
# -O1 optimize, reduce code size and execution time, without much increase of compilation time.
# -O2 optimize, reduce code execution time compared to ‘O1’, increase of compilation time.
# -O3 optimize, turns on all optimizations, further increase of compilation time.
# -Os optimize for size, enables all ‘-O2’ optimizations that do not typically increase code size and other code size optimizations.
#Recommended optimize settings for release version: -O3
#Recommended optimize settings for debug version: -O0
#Valid parameters :
# OptLIB=0 --> optimize library files using the -O0 setting
# OptLIB=1 --> optimize library files using the -O1 setting
# OptLIB=2 --> optimize library files using the -O2 setting
# OptLIB=3 --> optimize library files using the -O3 setting
# OptLIB=s --> optimize library files using the -Os setting
# OptSRC=0 --> optimize source files using the -O0 setting
# OptSRC=1 --> optimize source files using the -O1 setting
# OptSRC=2 --> optimize source files using the -O2 setting
# OptSRC=3 --> optimize source files using the -O3 setting
# OptSRC=s --> optimize source files using the -Os setting
# all --> build all
# libs --> build libs only
# src --> build src only
# clean --> clean project
# tshow --> show optimize settings
#Example:
# make OptLIB=3 OptSRC=0 all tshow
TOP=$(shell readlink -f "$(dir $(lastword $(MAKEFILE_LIST)))")
PROGRAM=main
LIBDIR=$(TOP)/libs
#Adust the following line to the library in use
#=========add by embbnux 根据你的库不同,调整这个地方的库目录地址====================#
STMLIB=$(LIBDIR)/STM32_USB-FS-Device_Lib_V4.0.0/Libraries
#=========add by embbnux 根据你的stm32芯片型号容量不同,修改这个地方的TypeOfMCU=======#
#Adjust TypeOfMCU in use, see CMSIS file "stm32f10x.h"#STM32F103RBT (128KB FLASH, 20KB RAM) --> STM32F10X_MD#TypeOfMCU=STM32F10X_MD#STM32F103RET (512KB FLASH, 64KB RAM) --> STM32F10X_HD#STM32F103ZET (512KB FLASH, 64KB RAM) --> STM32F10X_HD
#============================================================================#
TypeOfMCU=STM32F10X_MD
#============================================================================#
TC=arm-none-eabi
CC=$(TC)-gcc
LD=$(TC)-ld -v
OBJCOPY=$(TC)-objcopy
AR=$(TC)-ar
GDB=$(TC)-gdb
INCLUDE=-I$(TOP)/inc
INCLUDE+=-I$(STMLIB)/CMSIS/Include
INCLUDE+=-I$(STMLIB)/CMSIS/Device/ST/STM32F10x/Include
INCLUDE+=-I$(STMLIB)/CMSIS/Device/ST/STM32F10x/Source/Templates
INCLUDE+=-I$(STMLIB)/STM32F10x_StdPeriph_Driver/inc
INCLUDE+=-I$(STMLIB)/STM32_USB-FS-Device_Driver/inc
COMMONFLAGS=-g -mcpu=cortex-m3 -mthumb
COMMONFLAGSlib=$(COMMONFLAGS)
#Commands for general Makefile and src Makefile
ifeq ($(OptSRC),0)
COMMONFLAGS+=-O0
InfoTextSrc=src (no optimize, -O0)
else ifeq ($(OptSRC),1)
COMMONFLAGS+=-O1
InfoTextSrc=src (optimize time+ size+, -O1)
else ifeq ($(OptSRC),2)
COMMONFLAGS+=-O2
InfoTextSrc=src (optimize time++ size+, -O2)
else ifeq ($(OptSRC),s)
COMMONFLAGS+=-Os
InfoTextSrc=src (optimize size++, -Os)
else
COMMONFLAGS+=-O3
InfoTextSrc=src (full optimize, -O3)
endif
CFLAGS+=$(COMMONFLAGS) -Wall -Werror $(INCLUDE)
CFLAGS+=-D $(TypeOfMCU)
CFLAGS+=-D VECT_TAB_FLASH
#Commands for libs Makefile
ifeq ($(OptLIB),0)
COMMONFLAGSlib+=-O0
InfoTextLib=libs (no optimize, -O0)
else ifeq ($(OptLIB),1)
COMMONFLAGSlib+=-O1
InfoTextLib=libs (optimize time+ size+, -O1)
else ifeq ($(OptLIB),2)
COMMONFLAGSlib+=-O2
InfoTextLib=libs (optimize time++ size+, -O2)
else ifeq ($(OptLIB),s)
COMMONFLAGSlib+=-Os
InfoTextLib=libs (optimize size++, -Os)
else
COMMONFLAGSlib+=-O3
InfoTextLib=libs (full optimize, -O3)
endif
CFLAGSlib+=$(COMMONFLAGSlib) -Wall -Werror $(INCLUDE)
CFLAGSlib+=-D $(TypeOfMCU)
CFLAGSlib+=-D VECT_TAB_FLASH
MEMORY {
/*Adust LENGTH to RAMsize of target MCU:*/
/*STM32F103RBT --> 20K*/
/*RAM (RWX) : ORIGIN = 0x20000000 , LENGTH = 20K*/
/*STM32F103RET --> 64K*/
/*STM32F103ZET --> 64K*/
RAM (RWX) : ORIGIN = 0x20000000 , LENGTH = 20K
EXTSRAM (RWX) : ORIGIN = 0x68000000 , LENGTH = 0
/*Adust LENGTH to (FLASHsize - FeePROMsize) of target MCU:*/
/*STM32F103RBT --> 126K*/
/*FLASH (RX) : ORIGIN = 0x08000000 , LENGTH = 126K*/
/*STM32F103RET --> 508K*/
/*FLASH (RX) : ORIGIN = 0x08000000 , LENGTH = 508K*/
/*STM32F103ZET --> 508K*/
FLASH (RX) : ORIGIN = 0x08000000 , LENGTH = 64K
/*Adust ORIGIN to (0x08000000 + (FLASHsize-FeePROMsize)) of target MCU*/
/*and adust LENGTH to FeePROMsize allocated:*/
/*STM32F103RBT --> 0x08000000+126K, 2K*/
EEMUL (RWX) : ORIGIN = 0x08000000+64K, LENGTH = 0K
/*STM32F103RET --> 0x08000000+508K, 4K*/
/*EEMUL (RWX) : ORIGIN = 0x08000000+508K, LENGTH = 4K*/
}
4.编译生成可执行文件
STM32 ST-LINK Utility这个软件工具其实主要就是配套“ST-LINK”这个下载工具一起使用的上位机软件。因此使用STM32 ST-LINK Utility上位机软件需要有一个ST-LINK工具才行。它的功能和J-Link对应的工具类似,用于烧写代码。通过这个工具,加上stlink,就可以烧写hex文件啦,具体安装及使用也不难。
STM32 ST-LINK Utility下载
工程到此结束,本文的目的在于搭建Linux下的stm32的开发环境,主要是提供需要的资源以及搭建过程中的注意事项。其实也不难,详细的细节在参考链接里有描述,在此就不赘述了。感谢各路大牛们,开始学习!
最后,注意工程资源在顶部有!
文章浏览阅读600次,点赞13次,收藏12次。此外,系统还可以提供请假功能,方便学生在线提交请假申请,并得到及时的审批和反馈。最重要的是,基于微信小程序的学生考勤管理系统可以提供数据统计和分析功能,帮助学校领导更好地了解学生的出勤情况,为学校的管理和决策提供有力支持。通过该系统的实施,可以提高学生考勤管理的效率和准确性,减轻教师和辅导员的工作负担,促进学校管理的科学化和规范化。本研究拟解决的主要问题包括如何设计一个用户友好、易操作的学生考勤管理界面,如何实现学生、教师、辅导员和学校领导之间的信息共享和协同工作,以及如何保证考勤数据的准确性和安全性等。_开发学生考勤管理app存在的代码难题和解决办法
文章浏览阅读78次。springboot基于springboot和vue技术的视频与图集网站。springboot基于springbootvue框架的零售店记账系统。springboot基于springboot的学生宿舍管理系统。springboot基于springboot城市智能出行系统。springboot四川工商学院食堂送餐系统的研究与设计。springboot基于javaweb的校友管理系统。springboot基于协同过滤算法的音乐推荐系统。springboot基于微信小程序的社交系统。
文章浏览阅读4.6k次,点赞6次,收藏5次。Softmax函数是逻辑函数的一种推广,广泛应用于神经网络的多分类问题中,然而其计算复杂度与类别大小呈线性关系,在应用于语言模型、机器翻译时会带来高额的计算量,故而不少研究尝试寻找其高效的近似方法,层次Softmax便是其中一种常用的方法,本小节中将介绍层次Softmax中的一些代表模型。1992年,Brown等人在论文《Class-based n-gram models of natural..._softmax论文
文章浏览阅读627次。填空Unix中在当前目录下所有.cc 的文件中找到含有“asiainfo”内容的文件,命令为:grep 'asiainfo' file使用AWK指定分隔符的参数是 -Fawk -F简答找出当前目录下包含127.0.0.1关键字的文件?grep '127.0.0.1' files删除/显示1.txt文件第3行到第10行的内容?sed -n '3,10p' file..._unix中在当前目录下所有.cc 的文件中找到含有“asiainfo”内容的文件,命令为_____
文章浏览阅读274次。sql代码--获取当前的SCN代码如下:select dbms_flashback.get_system_change_number scn1,timestamp_to_scn(sysdate) scn2 from dual;--将SCN转换成功时间代码如下:select to_char(scn_to_timestamp(34607271),'yyyy-mm-dd hh24:mi:ss') chr..._ora-06512: 在 "sys.scn_to_timestamp", line 1
文章浏览阅读1.2k次。近期又整理了一批建筑与建材行业相关深度学习数据集,分享给大家。废话不多说,直接上干货!!_工程施工数据集csdn
文章浏览阅读1k次,点赞9次,收藏16次。当今社会,随着科学技术的发展,以及市场经济的多元化,使人才的流动速度大大增加,因此也对党建工作的管理层面工作带来了空前且复杂的挑战, 从而使得如何高效的开展管理党建工作成为了亟待解决的问题。为此将高速发展的信息科学技术引入到党建工作管理的应用中,力求合理有效的提升全面各项工作的进展,实现以人为本的科学发展思想和意识,是一种高效可实现的方法。 Java作为一种面向对象的、可以撰写跨平台应用软件的程序设计语言,其技术具有卓越的通用性、高效性、平台移植性以及安全性,如今已广泛应用于 PC、数据中心、游戏控制台、科_springboot 和vue框架实现的前后端分离项目系统架构设计
文章浏览阅读246次。随着安卓生态系统的发展,安卓软件的安全性不容忽视。安卓软件的漏洞会导致重大的危害,例如隐私泄露、金钱丢失、钓鱼攻击等。告介绍安卓软件漏洞修复和检测的相关工作。漏洞修复是一个困难的过程,并且在漏洞被修复后经常需要花大量的时间去更新具有漏洞的软件。本次报告提出了一个基于规则进行漏洞修复的系统,可以及时的修复软件中存在的权限泄露漏洞。通过对安卓系统进行改造,告介绍如何使用规则去主动的修复具有漏洞的软件并..._有修复漏洞功能的软件安卓版
文章浏览阅读1.1k次。前面有一段时间,我学习了Python这门语言,所以到现在,总会有人问我:“你觉得Python还是C++实用?哪个更好用?”接下来的文章就想给大家介绍下两者的一些区别以及优缺点。首先不多说,先给大家说下他们俩的一些差异或者优缺点吧:Python是通用的,也是高级编程语言之一。在python中编写代码时,无需声明即可直接使用变量。在C ++中,单个程序需要在要运行代码的每个操作系统上进行编译。Pyth..._学c++还是学python
文章浏览阅读4.8k次。企业微信-通讯录管理-成员管理以及部门管理官方文档通讯录管理的相关接口可以对企业微信里面部门、成员、标签等通讯录信息进行查询、添加、修改、删除等操作。一、开启企业微信通讯录相关权限我们使用通讯录管理的相关接口,原则上需要使用 通讯录管理的 secret,但实际上我们也可以使用企业内应用 secret。但是使用应用 secret 只能进行“查询”、“邀请”等非写操作,而且只能操作应用可见范围内的通讯录。获取通讯录管理 secret 的流程:进入企业微信管理后台,在“管理工具” — “通讯录同步_企业微信 接口创建部门需要通讯录应用吗
文章浏览阅读786次。_mfc cedit 整数
文章浏览阅读9.5k次,点赞15次,收藏77次。VC++控件工具箱:2 按钮(Button):用来接收用户的命令,应用程序在接收到用户命令后,通常需要进行一些后台工作。按钮可以响应单击或双击动作,在按钮接收到鼠标动作后,向其父窗口发送相应的控件通知,用户可以对这些控件通知进行消息映射,从而进行相应的处理。在一个对话框中,可以定义一个默认按钮,这只要选中按钮属性中的“Default”选项。如果在对话框活动的时候按下了Enter键,则等同于单..._mfcgetcheck