STM32新建模板之库文件
一、新建项目文件夹
在桌面创建项目文件夹,用于存放工程,命名为“stm32f10x_project”

在项目文件夹中创建3个文件夹,分别命名为:CMSIS、OUTPUT、STM32F10x_FWLib、USER,并在OUTPUT文件下创建Objects、Listings文件,在CMSIS文件下创建startup文件



名称 作用 CMSIS 系统文件 OUTPUT 编译生成的相关文件 STM32F10x_FWLib stm32相关源码和头文件 USER 用户代码 创建README文件
建议每个项目都创建README.txt或README.md文件,用于说明项目的相关信息,便于别人阅读,建议养成良好的习惯。

二、拷贝项目文件
通过购买开发版时提供的项目案例进行拷贝,这里以“STM32F103C8T6例程”为例
拷贝core_cm3.c、core_cm3.h、stm32f10x.h、system_stm32f10x.c、system_stm32f10x.h文件到CMSIS目录下

拷贝启动文件“startup_stm32f10x_hd.s”到CMSIS\startup目录下

拷贝stm32相关源码和头文件,将案例中FWlib文件下的inc、src文件夹拷贝到STM32F10x_FWLib目录下

将案例中USER文件下的main.c、stm32f10x_conf.h、stm32f10x_it.c、stm32f10x_it.h文件拷贝到USER目录下

三、创建工程项目
打开Keil软件,创建项目,项目名为STM32F10x_Temp



添加GROUP,添加四个GROUP,并改名为startup、STM32F10x_FWlib、CMSIS、USER



为每个GROUP添加文件
- startup,将文件startup_stm32f10x_hd.s添加到startup下

- STM32F10x_FWlib,将文件stm32f10x_rcc.c、stm32f10x_gpio.c添加到STM32F10x_FWlib下
注意:这里添加需要的库文件即可,因为我只用到时钟和GPIO库文件,所以我只添加了两个文件,当然也可以全部添加

- CMSIS,将文件core_cm3.c、system_stm32f10x.c文件添加到CMSIS下

- USER,将文件main.c、stm32f10x_it.c文件添加到USER下

- 添加完成后如下图所示:

- 设置编译文件的输出路径
- Objects输出设置


- Listings设置

设置默认编译版本

设置头文件路径

设置编译器
在Define中填入内容:STM32F10X_HD,USE_STDPERIPH_DRIVER

四、编译
- 将main.c文件中的内容全部删除,替换成一下内用
#include "stm32f10x.h"
/*************** 配置LED用到的I/O口 *******************/
void LED_GPIO_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB, ENABLE); // 使能PC端口时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12; //选择对应的引脚
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure); //初始化PC端口
GPIO_SetBits(GPIOB, GPIO_Pin_12 ); // 关闭LED
}
void Delay(__IO u32 nCount)
{
for(; nCount != 0; nCount--);
}
int main(void)
{
LED_GPIO_Config(); //LED 端口初始化
while (1)
{
GPIO_SetBits(GPIOB,GPIO_Pin_12);
Delay(0x200000);
GPIO_ResetBits(GPIOB,GPIO_Pin_12);
Delay(0x200000);
}
}
编译程序

编译完成后下载运行,观察现象。到此项目模板已经创建完成,以后需要编写程序时只需要使用这里创建的模板直接开发即可。
参考文献
stm32新建立一个工程:https://blog.csdn.net/weixin_42490436/article/details/90751687
STM32新建模板之库文件的更多相关文章
- STM32新建模板之寄存器
创建寄存器的项目模板相对比较简单,这里是基于库文件的模板进行更改的,有不明白的小伙伴可以浏览STM32新建模板之库文件. 一.项目文件 拷贝库文件的工程模板重命名为"stm32f10x_re ...
- STM32软件复位(基于库文件V3.5)
源:STM32软件复位(基于库文件V3.5) void SoftReset(void) { __set_FAULTMASK(); // 关闭所有中端 NVIC_SystemReset();// 复位 ...
- ecshop 模板与库文件lbi
转: 管理中心的"设置模板"其实就是把特定的[库项目]添加到模板中的[可编辑区域],或从[可编辑区域]中删除/修改某些[库项目],后台的"设置模板"只能对添加特 ...
- stm32开发之标准库的介绍
1 STM32标准外设库概述 STM32标准外设库之前的版本也称固件函数库或简称固件库,是一个固件函数包,它由程序.数据结构和宏组成,包括了微控制器所有外设的性能特征.该函数库还包括每一个外设的驱动描 ...
- STM32F1固件库文件讲解与基于固件库新建MDK工程模板
操作系统:win10 1.文件目录 (在cmd下用"cd 文件夹" 进入到要显示的文件夹,如cd d:\en.stsw-stm32054,然后输入tree 回车就会出现上图的目录结 ...
- STM32固件库文件分析
STM32固件库文件分析 1.汇编编写的启动文件 startup/stm32f10x.hd.s:设置堆栈指针,设置pc指针,初始化中断向量,配置系统时钟,对用c库函数_main最后去c语言世界里. 2 ...
- STM32F407 新建基于固件库的项目模板
1.新建文件夹如图: 2.新建项目在USER文件夹中,选cpu如图: 若再弹出窗口, 直接点cancel 3.删了这俩文件夹: 4.复制文件到fwlib: src 存放的是固件库的.c 文件, inc ...
- STM32嵌入式开发学习笔记(二):将功能封装为库文件
将所有的函数都堆在main.c文件里不是好的选择,庞大的代码文件会是你维护的障碍,明智的做法是,一种功能封装到一个库文件里. 库文件就是你代码开始部分写的#include<xxxx.h>里 ...
- 制作静态库文件(.a文件)
制作静态库文件(.a文件) 1.创建静态库工程: 在Xcode中new一个新的project,选择IOS下面的Framework&Library,下面有一个Cocoa Touch Static ...
随机推荐
- Ajax异步更新网页(使用原生JavaScript)
一.页面代码 <!DOCTYPE html> <html> <head> <title>MyHtml.html</title> <me ...
- Apifox(1)比postman更优秀的接口自动化测试平台
Apifox介绍 Apifox 是 API 文档.API 调试.API Mock.API 自动化测试一体化协作平台,定位 Postman + Swagger + Mock + JMeter.通过一套系 ...
- 【阿菜做实践】利用go语言写一个简单的Pow样例
本篇博客的主要内容是用go写一个简单的Proof-of-Work共识机制,不涉及到网络通信环节,只是一个本地的简单demo.开发IDE用的是JB Golang. 整个项目的文件结构如下: PoWdem ...
- 企业级BI是自研还是采购?
企业级BI是自研还是采购? 上一篇<企业级BI为什么这么难做?>,谈到了企业级BI项目所具有的特殊背景,以及在"破局"方面的一点思考,其中谈论的焦点主要是在IT开发项目 ...
- Jenkins分布式与并行
目录 一.简介 二.agent 通过JNLP协议增加agent 通过Swarm插件增加agent agent部分详解 三.agent放入Docker 使用Docker 配置Docker私有仓库 四.并 ...
- react功能实现-组件创建
这里主要从两个角度来分析创建一个组件需要怎么做,一个是元素,一个是数据.整理向,大量借鉴,非原创. 1.渲染组件. 我们先明确一点,所有的元素都必须通过render方法来输出渲染.所有,每个组件类最终 ...
- SpringCloud微服务实战——搭建企业级开发框架(三十三):整合Skywalking实现链路追踪
Skywalking是由国内开源爱好者吴晟(原OneAPM工程师)开源并提交到Apache孵化器的产品,它同时吸收了Zipkin/Pinpoint/CAT的设计思路,支持非侵入式埋点.是一款基于分 ...
- 有个性的手动计划模式(Project)
<Project2016 企业项目管理实践>张会斌 董方好 编著 任务工作表里默认的标题"工期"."开始时间"."结束时间"这些 ...
- HSPICE 电平触发D触发器仿真
一. HSPICE的基本操作过程 打开HSPICE程序,通过OPEN打开编写好的网表文件. 按下SIMULATE进行网表文件的仿真. 按下AVANWAVES查看波形图(仿真结果). 二. 网表文件结构 ...
- TensorFlow.NET机器学习入门【2】线性回归
回归分析用于分析输入变量和输出变量之间的一种关系,其中线性回归是最简单的一种. 设: Y=wX+b,现已知一组X(输入)和Y(输出)的值,要求出w和b的值. 举个例子:快年底了,销售部门要发年终奖了, ...