STM32-创建工程模板

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\*.userdel /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.hqwc.cn/news/339041.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenCV-20卷积操作

一、什么是图像卷积 图像卷积就是卷积在图像上按照滑动遍历像素时不断的相乘求和的过程。 绿色为图片, 黄色为卷积核, 粉色为最终得到的卷积特征。 二、步长 步长就是卷积核在图像上移动的步幅,每次移动一个方格则步幅为1。且一般为1。 若…

vue3中ref和reactive联系与区别以及如何选择

vue3中ref和reactive区别与联系 区别 1、ref既可定义基本数据类型,也可以定义引用数据类型,reactive只能定义应用数据类型 2、ref在js中取响应值需要使用 .value,而reactive则直接取用既可 3、ref定义的对象通过.value重新分配新对象时依旧…

大模型日报-20240111

AI 浪潮席卷 CES 2024,英伟达股价创历史新高!二季度量产国内特供 H20 芯片 https://mp.weixin.qq.com/s/3E0xD4VhP0PMSXjPbJPb-A 本周一,NVIDIA 在 CES 开幕前举行的重磅演讲中,重点介绍了生成式 AI 模型及其在创造逼真角色方面的…

数据库设计规范[掌握好规范,设计出的表一般不会差]

数据库设计 命名规范 数据库表名、字段名、索引名等都要命名规范,可读性高(一般要求用英文),让别人一看命名,就知道这个字段表示什么意思 user_name, user_age 表名,字段名必须使用小写字母或者数字&am…

element ui el-table展示列表,结合分页+过滤功能

vueelement-ui实现的列表展示&#xff0c;列表分页&#xff0c;列表筛选功能 1&#xff0c;分页器 el-table模块下面是分页器代码 <el-pagination></el-pagination> <el-table></el-table> <!-- 分页器 --><div class"block" st…

P4学习(一) 环境搭建

系列文章目录 第一章 P4学习入门之虚拟机环境搭建 文章目录 系列文章目录前言一、P4是什么&#xff1f;二、搭建步骤1.下载虚拟机镜像2.虚拟机管理软件载入镜像2.1 找到你镜像的所在位置2.2 打开VMware Workstation2.3 载入镜像 3.检验环境是否配置成功 P4 的真机环境搭建 前言…

【无标题】山姆奥特曼喊话AI创业者

这里写自定山姆奥特曼充满激情地向创业者们发出呼吁&#xff0c;他表示AI是一个可以媲美互联网早期机遇的巨大机会。与此相关的人士认为&#xff0c;现在是互联网和移动互联网创业者们行动起来的时候了&#xff01;他们应该全面拥抱大模型的应用层创业。第一波红利期在6-8个月内…

中国大学生计算机设计大赛—人工智能实践赛赛道—赛后感想

1.比赛介绍 中国大学生计算机设计大赛是我国高校面向本科生最早的赛事之一&#xff0c;是全国普通高校大学生竞赛排行榜榜单赛事之一。自2008年开赛至2019年&#xff0c;一直由教育部高校与计算机相关教指委等或独立或联合主办。大赛的目的是以赛促学、以赛促教、以赛促创&…

NPS配置https访问web管理页面

因为NPS默认也支持http的访问&#xff0c;所以在部署完后就一直没在意这个事情。 因为服务器是暴露在公网内的&#xff0c;所以还是要安全一点才行。不然一旦远控的机器被破解了就很危险了 一、使用nginx反向代理访问 1、首先在nps的配置文件里关闭使用https选项&#xff0c;…

centOS系统yum安装和卸载mongodb

0.1 什么是mongodb&#xff1f; 0.2 Mongodb是一个基于分布式文件存储的数据库。由C语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。 0.3 Mongodb是一个介于关系数据库和非关系数据库之间的产品&#xff0c;是非关系数据库当中功能最丰富&#xff0c;最像关系数据…

高精度彩色3D相机:开启崭新的彩色3D成像时代

3D成像的新时代 近年来&#xff0c;机器人技术的快速发展促使对3D相机技术的需求不断增加&#xff0c;原因在于&#xff0c;相机在提高机器人的性能和实现多种功能方面发挥了决定性作用。然而&#xff0c;其中许多应用所需的解决方案更复杂&#xff0c;仅提供环境的深度信息是…

【Python机器学习】SVM——调参

下面是支持向量机一个二维二分类数据集的训练结果&#xff1a; import mglearn import matplotlib.pyplot as plt from sklearn.svm import SVCplt.rcParams[font.sans-serif] [SimHei] plt.rcParams[axes.unicode_minus] False X,ymglearn.tools.make_handcrafted_dataset()…