STM32-创建工程模板

news2024/11/20 10:43:03

STM32 工程模板没有统一的格式,可以参考 ST 官方的示例模板或者根据自己的开发经验和使用习惯总结。

Project Template

文档以库函数工程模板为例,HAL 库工程模板对应参考即可。

Official Project Template

ST 发布的标准外设库 (STM32 Standard Peripheral Libraries) 中都会包含示例工程模板。以笔者正在使用的 STM32L151RET6 为例,截止在写这篇文档的时候最新的版本为 1.4.0

示例工程模板路径为 en.stsw-stm32077_v1-4-0\STM32L1xx_StdPeriph_Lib_V1.4.0\Project\STM32L1xx_StdPeriph_Templates。用 KEIL v5 打开后如下:

Official_Project_Template

整个工程被分为了 4 部分:

  • User
  • StdPeriph_Driver
  • CMSIS
  • MDK-ARM

User 下是一些和用户有关的源文件;StdPeriph_Driver 下是标准外设库源文件;CMSIS 下是和系统有关的源文件(主要是和系统时钟有关);MDK-ARM 下是启动文件。

Custom Project Template

参考 ST 官方示例模板,自定义工程模板一般包含 6 个目录,一个批处理文件,一个说明文档:

  1. Core:存放和系统有关的源文件
  2. Doc:存放文档
  3. Driver:存放用户基于标准外设库编写的外设驱动源文件
  4. Libraries:存放 CMSIS 和 STM32L1xx_StdPeriph_Driver,这 2 个目录均来自标准外设驱动库
  5. Project:存放 KEIL 工程有关的文件
  6. User:存放用户代码
  7. Clean.bat: 清理 KEIL 编译过程中产生的临时文件
  8. Readme.txt: 记录信息,典型信息是版本更迭记录

Template_Structure

Clean.bat 内容如下:

del /Q Project\*.bak
del /Q Project\*.dep
del /Q Project\JLink*
del /Q Project\*.scvd
del /Q Project\*.user

del /Q Project\Objects\*.dep
del /Q Project\Objects\*.lnp
del /Q Project\Objects\*.htm
del /Q Project\Objects\*.o
del /Q Project\Objects\*.d
del /Q Project\Objects\*.crf
del /Q Project\Objects\*.iex

Core 目录下包含 5 个文件,这 5 个文件对应 ST 官方示例模板中的文件:

  1. startup_stm32l1xx_hd.s
  2. stm32l1xx_conf.h
  3. stm32l1xx_it.c
  4. stm32l1xx_it.h
  5. system_stm32l1xx.c

其中启动文件 startup_stm32l1xx_hd.s 要根据使用的 MCU 的 Flash 大小区分,笔者使用的 STM32L151RET6Flash 的大小为 512KB,所以这里选择 高密度 类型的启动文件。

Libraries 目录下暂时只有 CMSISSTM32L1xx_StdPeriph_Driver 连个目录,这两个目录均拷贝于标准外设驱动库

User 目录下包含 2 个文件,这 2 个文件对应 ST 官方示例模板中的文件:

  1. main.h
  2. main.c

整个自定义工程模板如下:

Custom_Project_-Template

KEIL Settings

Target

Target

  • ARM Compiler: Use default compiler version 5
  • Use MicroLIB: Enable
  • IROM1: Start - 0x08000000, Size - 0x8000 (根据 MCU 配置)
  • IRAM1: Start - 0x20000000, Size - 0x14000 (根据 MCU 配置)
Output

Output

C/C++

C_C++

Define 定义以下两个宏:

  • USE_STDPERIPH_DRIVER:表示使用标准库函数
  • STM32L1XX_HD:表示使用的是 STM32L1 系列高密度类型的芯片

STM32L1XX_HD 是根据所使用的芯片来的,参考对应工程的 stm32l1xx.h 头文件,里面会有宏的定义。其它型号的 MCU 参考即可:

#if !defined (STM32L1XX_MD) && !defined (STM32L1XX_MDP) && !defined (STM32L1XX_HD) && !defined (STM32L1XX_XL)
 #error "Please select first the target STM32L1xx device used in your application (in stm32l1xx.h file)"
#endif

C99 Mode:Enable
Include Paths: 指定包含的头文件路径

Folder_Setup

Debug

仿真器选择对应的即可。

Debug

Flash_Download

User

设置编译后产生 bin 文件。

命令:fromelf --bin -o "$L@L.bin" "#L"

User

Note

对于启动文件 startup_stm32l1xx_hd.s 来说,可以直接拷贝 ST 官方示例模板中的文件,也可以通过 KEIL 自带的包管理直接下载。

Manage_Run_Time_Environment

下载成功后显示绿色

Project_Sturcture_Keil

不过对比 KEIL 下载的 startup_stm32l151xe.s 和拷贝于 ST 官方示例模板中的启动文件 startup_stm32l1xx_hd.s 发现,KEIL 自动下载的启动文件日期为 11-July-2014,拷贝于 ST 官方示例模板中的启动文件日期为 17-November-2021。所以建议一般还是直接从 ST 官方示例模板中拷贝文件。

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

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

相关文章

docker搭建部署mysql并挂载指定目录

Docker是一种轻量级、可移植的容器化平台,可以简化应用程序的部署和管理。在本文中,我们将探讨如何使用Docker来搭建和部署MySQL数据库,并将数据和配置文件挂载到外部目录,以实现数据持久化和方便的配置管理。 1: 安装Docker 首…

git撤销提交到本地的commit

有些时候,当我们提交代码到本地后,突然发现因为某些原因需要撤销提交本地的代码。 就比如我,因为代码写错了分支,已经提交到本地了,而我需要取消,并且还要把代码搞得另外的分支上。 提交前: …

MIB 变更周期

MIB 始终以 80 ms 的周期在 BCH 上传输并在 80 ms 内重复,并且它包括从小区获取 SIB1 所需的参数;如果 SSB 的周期大于 80 ms,则 MIB 的发送周期与 SSB 的周期相同。 在UE初始搜索时,SSB在半帧内的周期是20ms;所以对于…

Embedded-Project项目介绍

Embedded-Project项目介绍 Server后端项目后端启动连接数据库启动时可能遇到的问题架构介绍 web前端项目前端启动启动时可能遇到的问题架构介绍 前后端分离开发流程 项目地址: https://github.com/Catxiaobai/Embedded-Project Server后端项目 系统后端项目&#…

锂电池制造设备中分布式IO模块优势

在“碳达峰、碳中和”目标推动下,新能源汽车当下发展势头正盛,而纯电动车的核心部件则是:锂电池。动力型锂电池作为新能源汽车核心零部件,其发展与新能源汽车行业息息相关,迎来广阔的市场空间。 为何采用I/O模块&#…

网络安全B模块(笔记详解)- 漏洞扫描与利用

漏洞扫描与利用 1.通过Kali对服务器场景server2003以半开放式不进行ping的扫描方式并配合a,要求扫描信息输出格式为xml文件格式,从生成扫描结果获取局域网(例如172.16.101.0/24)中存活靶机,以xml格式向指定文件输出信息(使用工具Nmap,使用必须要使用的参数),并将该操…

信息系统安全——基于 AFL 的模糊测试

实验 3 基于 AFL 的模糊测试 3.1 实验名称 《基于 AFL 的模糊测试》 3.2 实验目 1 、熟悉模糊测试方法 2 、熟悉模糊测试工具 AFL 的使用 3.3 实验步骤及内容 1 、 安装 AFL 2 、 任意选择一个有源代码的样本 这里采用教材上一个包含栈溢出漏洞的样本。 3 、 结合源代码分析用 …

Yolov5双目测距-双目相机计数及测距教程(含代码)

Yolov5双目测距是一种基于深度学习模型的双目相机计数及测距方法,它可以用于在不同场景下进行物体检测、识别和测距。 以下是 Yolov5双目测距的主要特点和步骤: 1. 双目相机: Yolov5双目测距需要使用一对双目相机来获取场景中的图像数据。…

vercel部署twikoo后评论收不到通知邮件问题解决方法

📌 前言:本文主要是总结一下在vercel部署twikoo后收不到评论邮件通知问题的解决方法,本人在各种查资料无果后最终去twioo的git官方项目的issue中找到某位大佬给出的原因以及解决方案,故做此记录,希望对遇到此问题的同学…

74应急响应-winlinux分析后门勒索病毒攻击

#操作系统(windows,linux)应急响应: 1.常见危害:暴力破解,漏洞利用,流量攻击,木马控制(Webshell,PC 木马等),病毒感染(挖矿,蠕虫,勒索等)。 2.常见分析:计算机账户&…

Navicat 16 for MySQL:打造高效数据库开发管理工具

随着数据的快速增长和复杂性的提升,数据库成为了现代应用开发中不可或缺的一部分。而在MySQL数据库领域,Navicat 16 for MySQL作为一款强大的数据库开发管理工具,正受到越来越多开发者的青睐。 Navicat 16 for MySQL拥有丰富的功能和直观的界…

D55XT80-ASEMI配电箱整流桥D55XT80

编辑:ll D55XT80-ASEMI配电箱整流桥D55XT80 型号:D55XT80 品牌:ASEMI 封装:DXT-4 特性:插件、整流桥 平均正向整流电流(Id):55A 最大反向击穿电压(VRM&#xff09…

nginx(1.13.7)首次安装出现:【make: *** 没有规则可以创建“default”需要的目标“build” 问题】解决措施

目录 前言: 一.龙蜥(Anolis)操作系统上安装GCC 1.安装gcc 2.检验安装 二.安装出现 make: *** 没有规则可以创建“default”需要的目标“build” 问题 1.解压安装nginx 2.安装出现问题展示 3.解决措施 4.重新编译进行安装 5…

2024 年 API 管理新趋势预测

本文译自:What Will Be the API Management Trends for 2024? 原文链接:What Will Be the API Management Trends for 2024? - The New Stack 原文作者:Kenn Hussey 预计到 2030 年末,API 管理 市场的规模将增长六倍&…

理论U3 决策树

文章目录 一、决策树算法1、基本思想2、构成1)节点3)有向边/分支 3、分类步骤1)第1步-决策树生成/学习、训练2)第2步-分类/测试 4、算法关键 二、信息论基础1、概念2、信息量3、信息熵: 二、ID3 (Iterative Dichotomis…

基于JavaWeb+BS架构+SpringBoot+Vue+Spark的共享单车数据存储系统的设计和实现

基于JavaWebBS架构SpringBootVueSpark的共享单车数据存储系统的设计和实现 文末获取源码Lun文目录前言主要技术系统设计功能截图订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 文末获取源码 Lun文目录 第一章 概述 2 1.1课题研究背景 2 1.2 课题研究意义 2 1.3国内…

wy的leetcode刷题记录_Day74

wy的leetcode刷题记录_Day74 声明 本文章的所有题目信息都来源于leetcode 如有侵权请联系我删掉! 时间:2024-01-10 前言 目录 wy的leetcode刷题记录_Day74声明前言2696. 删除子串后的字符串最小长度题目介绍思路代码收获 64. 最小路径和题目介绍思路代码收获 63.…

DataFrame详解

清洗相关的API 清洗相关的API: 1.去重API: dropDupilcates 2.删除缺失值API: dropna 3.替换缺失值API: fillna 去重API: dropDupilcates dropDuplicates(subset):删除重复数据 1.用来删除重复数据,如果没有指定参数subset,比对行中所有字段内容,如果全部相同,则认为是重复数据,…

Maven报错:Malformed \uxxxx encoding 解决办法

maven构建出现这个Malformed \uxxxx encoding问题,应该是maven仓库里面有脏东西进入了! 解决: 将仓库中的resolver-status.properties文件全部干掉。 我使用的everything工具全局搜索resolver-status.properties文件,然后Ctrla,再…

Go语言学习笔记(二)

Go语言的学习资源 以下是一些推荐的Go语言学习资源的链接: Go语言教程:https://golang.org/doc/Go by Example:Go by ExampleGolang Tutorials:https://golangtutorials.com/Go语言第一课(慕课网)&#x…