一、新建项目文件夹

  1. 在桌面创建项目文件夹,用于存放工程,命名为“stm32f10x_project”

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





    名称 作用
    CMSIS 系统文件
    OUTPUT 编译生成的相关文件
    STM32F10x_FWLib stm32相关源码和头文件
    USER 用户代码
  3. 创建README文件

    建议每个项目都创建README.txt或README.md文件,用于说明项目的相关信息,便于别人阅读,建议养成良好的习惯。

二、拷贝项目文件

通过购买开发版时提供的项目案例进行拷贝,这里以“STM32F103C8T6例程”为例

  1. 拷贝core_cm3.c、core_cm3.h、stm32f10x.h、system_stm32f10x.c、system_stm32f10x.h文件到CMSIS目录下

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

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

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

三、创建工程项目

  1. 打开Keil软件,创建项目,项目名为STM32F10x_Temp





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





  3. 为每个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下

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

  1. 设置编译文件的输出路径
  • Objects输出设置



  • Listings设置

  1. 设置默认编译版本

  2. 设置头文件路径

  3. 设置编译器

    在Define中填入内容:STM32F10X_HD,USE_STDPERIPH_DRIVER

四、编译

  1. 将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);
} }
  1. 编译程序

  2. 编译完成后下载运行,观察现象。到此项目模板已经创建完成,以后需要编写程序时只需要使用这里创建的模板直接开发即可。

参考文献

stm32新建立一个工程:https://blog.csdn.net/weixin_42490436/article/details/90751687

STM32新建模板之库文件的更多相关文章

  1. STM32新建模板之寄存器

    创建寄存器的项目模板相对比较简单,这里是基于库文件的模板进行更改的,有不明白的小伙伴可以浏览STM32新建模板之库文件. 一.项目文件 拷贝库文件的工程模板重命名为"stm32f10x_re ...

  2. STM32软件复位(基于库文件V3.5)

    源:STM32软件复位(基于库文件V3.5) void SoftReset(void) { __set_FAULTMASK(); // 关闭所有中端 NVIC_SystemReset();// 复位 ...

  3. ecshop 模板与库文件lbi

    转: 管理中心的"设置模板"其实就是把特定的[库项目]添加到模板中的[可编辑区域],或从[可编辑区域]中删除/修改某些[库项目],后台的"设置模板"只能对添加特 ...

  4. stm32开发之标准库的介绍

    1 STM32标准外设库概述 STM32标准外设库之前的版本也称固件函数库或简称固件库,是一个固件函数包,它由程序.数据结构和宏组成,包括了微控制器所有外设的性能特征.该函数库还包括每一个外设的驱动描 ...

  5. STM32F1固件库文件讲解与基于固件库新建MDK工程模板

    操作系统:win10 1.文件目录 (在cmd下用"cd 文件夹" 进入到要显示的文件夹,如cd d:\en.stsw-stm32054,然后输入tree 回车就会出现上图的目录结 ...

  6. STM32固件库文件分析

    STM32固件库文件分析 1.汇编编写的启动文件 startup/stm32f10x.hd.s:设置堆栈指针,设置pc指针,初始化中断向量,配置系统时钟,对用c库函数_main最后去c语言世界里. 2 ...

  7. STM32F407 新建基于固件库的项目模板

    1.新建文件夹如图: 2.新建项目在USER文件夹中,选cpu如图: 若再弹出窗口, 直接点cancel 3.删了这俩文件夹: 4.复制文件到fwlib: src 存放的是固件库的.c 文件, inc ...

  8. STM32嵌入式开发学习笔记(二):将功能封装为库文件

    将所有的函数都堆在main.c文件里不是好的选择,庞大的代码文件会是你维护的障碍,明智的做法是,一种功能封装到一个库文件里. 库文件就是你代码开始部分写的#include<xxxx.h>里 ...

  9. 制作静态库文件(.a文件)

    制作静态库文件(.a文件) 1.创建静态库工程: 在Xcode中new一个新的project,选择IOS下面的Framework&Library,下面有一个Cocoa Touch Static ...

随机推荐

  1. Spring Cloud中使用Eureka

    一.创建00-eurekaserver-8000 (1)创建工程 创建一个Spring Initializr工程,命名为00-eurekaserver-8000,仅导入Eureka Server依赖即 ...

  2. 分布式系统为什么不用自增id,要用雪花算法生成id???

    1.为什么数据库id自增和uuid不适合分布式id id自增:当数据量庞大时,在数据库分库分表后,数据库自增id不能满足唯一id来标识数据:因为每个表都按自己节奏自增,会造成id冲突,无法满足需求.  ...

  3. 莫烦python教程学习笔记——learn_curve曲线用于过拟合问题

    # View more python learning tutorial on my Youtube and Youku channel!!! # Youtube video tutorial: ht ...

  4. 强化学习实战 | 表格型Q-Learning玩井子棋(三)优化,优化

    在 强化学习实战 | 表格型Q-Learning玩井字棋(二)开始训练!中,我们让agent"简陋地"训练了起来,经过了耗费时间的10万局游戏过后,却效果平平,尤其是初始状态的数值 ...

  5. ASP.NET Web API路由解析

    前言 本篇文章比较长,仔细思考阅读下来大约需要15分钟,涉及类图有可能在手机显示不完整,可以切换电脑版阅读. 做.Net有好几年时间了从ASP.NET WebForm到ASP.NET MVC再到ASP ...

  6. 『与善仁』Appium基础 — 23、操作滑动的方式

    目录 1.swipe滑动 2.scroll滑动 3.drag拖拽事件 4.滑动方法小结 5.拓展:多次滑动 6.综合练习 在Appium中提供了三种滑动的方式,swipe滑动.scroll滑动.dra ...

  7. Grafana 任意文件读取漏洞 (CVE-2021-43798)学习

    漏洞概述 Grafana是一个跨平台.开源的数据可视化网络应用程序平台.用户配置连接的数据源之后,Grafana可以在网络浏览器里显示数据图表和警告. Grafana 的读取文件接口存在未授权,且未对 ...

  8. abp (.net 5)设置默认请求语言为简体中文

    https://docs.microsoft.com/en-us/aspnet/core/fundamentals/localization?view=aspnetcore-5.0 默认有3个prov ...

  9. C# ASP.NET MVC/WebApi 或者 ASP.NET CORE 最简单高效的跨域设置

    概述 前面写了一篇:<C# ASP.NET WebApi 跨域设置>的文章,主要针对 ASP.NET WebApi 项目. 今天遇到 ASP.NET MVC 项目也需要设置跨域,否则浏览器 ...

  10. js判断是电脑(pc)访问还是手机(mobile)访问

    <script> if ((navigator.userAgent.match(/(iPhone|iPod|Android|ios|iOS|iPad|Backerry|WebOS|Symb ...