【STM32】STM32F103C8T6 创建工程模版详解(固件库)

这篇具有很好参考价值的文章主要介绍了【STM32】STM32F103C8T6 创建工程模版详解(固件库)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

00. 目录

01. 固件库概述

ST(意法半导体)为了方便用户开发程序,提供了一套丰富的 STM32标准外设函数库库,简称固件库

固件库版本

STM32F10x_StdPeriph_Lib_V3.5.0

02. 创建工程步骤

2.1 在建立工程之前,我们在电脑的某个目录下面建立一个文件夹,名字为 00_Template。

笔者目录为E:\Program Data\Keil\00_Template

2.2 在上述00_Template目录下创建一下四个目录
stm32f103c8t6工程,嵌入式天地,stm32,stm32f103,工程模板,stm32工程,stm32f103工程

CORE 用来存放核心文件和启动文件,OBJ 是用来存放编译过程文件以及hex 文件,STM32F10x_FWLib 文件夹顾名思义用来存放 ST 官方提供的库函数源码文件。

2.3 点击 MDK 的菜单:Project –>New Uvision Project ,

stm32f103c8t6工程,嵌入式天地,stm32,stm32f103,工程模板,stm32工程,stm32f103工程

2.4 将目录定位到刚才建立的文件夹00_Template 之下,然后定位到 USER 目录下面,我们的工程文件就都保存到 USER 文件夹下面。工程命名为Template,点击保存。

stm32f103c8t6工程,嵌入式天地,stm32,stm32f103,工程模板,stm32工程,stm32f103工程

2.5 选择 CPU 的界面,就是选择我们的芯片型号。

STMicroelectronics→STM32F1 Series→STM32F103→STM32F103C8T6(如果使用的是其他系列的芯片,选择相应的型号就可以了)

stm32f103c8t6工程,嵌入式天地,stm32,stm32f103,工程模板,stm32工程,stm32f103工程

温馨提示

一定要安装对应的器件 pack 才会显示这些内容哦!

2.6 MDK 会弹出 Manage Run-Time Environment 对话框, 点击取消即可。

stm32f103c8t6工程,嵌入式天地,stm32,stm32f103,工程模板,stm32工程,stm32f103工程

2.7 点击取消之后得到如下界面

stm32f103c8t6工程,嵌入式天地,stm32,stm32f103,工程模板,stm32工程,stm32f103工程

2.8 将固件库目录下面的 src,inc 文件夹拷贝到我们刚才建立的 STM32F10x_FWLib 文件夹下面。

固件库目录:STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver

目的目录:00_Template\STM32F10x_FWLib

stm32f103c8t6工程,嵌入式天地,stm32,stm32f103,工程模板,stm32工程,stm32f103工程

2.9 将固件库包里面相关的启动文件复制到我们的工程目录 CORE 之下。

STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport 下面,将文件 core_cm3.c和文 件core_cm3.h 复 制到CORE 目录里面。

2.10 将里面 startup_stm32f10x_hd.s 文件复制到 CORE 下面

定位到目录STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\a
rm 下面,将里面 startup_stm32f10x_md.s 文件复制到 CORE 下面。

stm32f103c8t6工程,嵌入式天地,stm32,stm32f103,工程模板,stm32工程,stm32f103工程

2.11 将三个文件 stm32f10x.h,system_stm32f10x.c,system_stm32f10x.h,复制到我们的USER目录之下。

STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x 下面将里面的三个文件 stm32f10x.h,system_stm32f10x.c,system_stm32f10x.h,复制到我们的 USER目录之下。

2.12 将4个文件main.c,stm32f10x_conf.h,stm32f10x_it.c,stm32f10x_it.h 复制到 USER 目录下面。

然后将STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template 下面的 4 个文件main.c,stm32f10x_conf.h,stm32f10x_it.c,stm32f10x_it.h 复制到 USER 目录下面。

stm32f103c8t6工程,嵌入式天地,stm32,stm32f103,工程模板,stm32工程,stm32f103工程

2.13 将上述文件添加到我们的工程中去。右键点击 Target1,选择 Manage Project Items。

stm32f103c8t6工程,嵌入式天地,stm32,stm32f103,工程模板,stm32工程,stm32f103工程

2.14 Project Targets一栏,我们将Target名字修改为Template,然后在Groups一栏删掉一个SourceGroup1,建立三个 Groups:USER,CORE,FWLIB。然后点击 OK。

stm32f103c8t6工程,嵌入式天地,stm32,stm32f103,工程模板,stm32工程,stm32f103工程

2.15 右键点击点击Tempate,选择选择 Manage Project Itmes,然后选择需要添加文件的 Group,添加对应的文件。

我们选择 FWLIB, 然 后 点 击 右 边 的 Add Files, 定 位 到 我 们 刚 才 建 立 的 目 录,STM32F10x_FWLib/src 下面,将里面所有的文件选中(Ctrl+A),然后点击 Add,然后 Close。

CORE 下面需要添加的文件为 core_cm3.c,startup_stm32f10x_md.s ( 注意,默认添加的时候文件类型为.c, 也就是添加 startup_stm32f10x_md.s 启动文件的时候,你需要选择文件类型为 All files 才能看得到这个文件),USER 目录下面需要添加的文件为 main.c,stm32f10x_it.c,system_stm32f10x.c.这样我们需要添加的文件已经添加到我们的工程中了,最后点击 OK

stm32f103c8t6工程,嵌入式天地,stm32,stm32f103,工程模板,stm32工程,stm32f103工程

2.16 选择编译中间文件编译后存放目录

在编译之前我们首先要选择编译中间文件编译后存放目录。方法是点击魔术棒,然后选择“Output”选项下面的“Select folder for objects…”,然后选择目录为我们上面新建的 OBJ 目录。这里大家注意,如果我们不设置 Output 路径,那么默认的编译中间文件存放目录就是 MDK 自动生成的 Objects 目录和 Listings 目录。

stm32f103c8t6工程,嵌入式天地,stm32,stm32f103,工程模板,stm32工程,stm32f103工程

2.17 设置头文件目录

对于任何一个工程,我们都需要把工程中引用到的所有头文件的路径都包含到进来 。回到工程主菜单,点击魔术棒 ,出来一个菜单,然后点击 c/c++选项.然后点击Include Paths 右边的按钮。弹出一个添加 path 的对话框,然后我们将图上面的 3 个目录添加进去。记住,keil 只会在一级目录查找,所以如果你的目录下面还有子目录,记得 path一定要定位到最后一级子目录。然后点击 OK.

stm32f103c8t6工程,嵌入式天地,stm32,stm32f103,工程模板,stm32工程,stm32f103工程

添加好目录之后的情形

stm32f103c8t6工程,嵌入式天地,stm32,stm32f103,工程模板,stm32工程,stm32f103工程

2.18 添加宏定义

STM32F10X_MD,USE_STDPERIPH_DRIVER

stm32f103c8t6工程,嵌入式天地,stm32,stm32f103,工程模板,stm32工程,stm32f103工程

2.19 将main.c复制改为以下代码

#include "stm32f10x.h"

 void Delay(u32 count)
 {
   u32 i=0;
   for(;i<count;i++);
 }
 int main(void)
 {	
  GPIO_InitTypeDef  GPIO_InitStructure;
	 
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|
  RCC_APB2Periph_GPIOE, ENABLE);	    //使能PB,PE端口时钟
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;			    //LED0-->PB.5 端口配置
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 	 //推挽输出
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;	 //IO口速度为50MHz
  GPIO_Init(GPIOB, &GPIO_InitStructure);			     //初始化GPIOB.5
  GPIO_SetBits(GPIOB,GPIO_Pin_5);					//PB.5 输出高
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;	            //LED1-->PE.5推挽输出
  GPIO_Init(GPIOE, &GPIO_InitStructure);	  	       //初始化GPIO
  GPIO_SetBits(GPIOE,GPIO_Pin_5); 			 //PE.5 输出高 	  
  while(1)
	{
	    GPIO_ResetBits(GPIOB,GPIO_Pin_5);
	    GPIO_SetBits(GPIOE,GPIO_Pin_5);
		Delay(3000000);
		GPIO_SetBits(GPIOB,GPIO_Pin_5);
		GPIO_ResetBits(GPIOE,GPIO_Pin_5);
		Delay(3000000);
	}
 }

2.20 配置让编译之后能够生成 hex 文件。

同样点击魔术棒,进入配置菜单,选择 Output。然后勾上下三个选项。 其中 Create HEX file 是编译生成 hex 文件,Browser Information 是可以查看变量和函数定义。

stm32f103c8t6工程,嵌入式天地,stm32,stm32f103,工程模板,stm32工程,stm32f103工程

2.21 编译整个工程,如果没有任何报错,则整个工程已经创建好了。文章来源地址https://www.toymoban.com/news/detail-607800.html

03. 预留

04. 附录

到了这里,关于【STM32】STM32F103C8T6 创建工程模版详解(固件库)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 功耗测评 | STM32F103C8T6

    STM32F103C8T6 MCU越来越广泛的应用在生产生活的各个领域,外接丰富的传感器、功能模块、通信模块、显示存储等可以形成各种可样的产品项目应用。对于功耗要求比较高的产品,一般会选择STM32L系列的MCU,但是从功耗的评测角度,逻辑上是基本相似的。 在很多应用场合中都对

    2024年02月07日
    浏览(35)
  • STM32F103C8T6系统板

    1.电源部分 2.复位 3.晶振 4. 电源电路——防反接 有关二极管 漫谈二极管防电源反接电路 本次采用上图右下角的NMOS防反接电路。 电源电路——电源芯片 AMS1117是AMS公司的 ,LM1117是NS(美国国家半导体)的,LM1117要贵很多,所以一般的用AMS1117就可以了。 (以下分析参考STM32F10

    2024年02月02日
    浏览(60)
  • STM32F103C8T6串口通信

      首先来看一下需要操作的函数,以及配置的步骤: 图1                                                  图2   Code: usart.c #include \\\"usart.h\\\" void ustart_Init(void ) { GPIO_InitTypeDef GPIO_Init_Ustar ; // 定义输出端口TX的结构体对象 USART_InitTypeDef USTART_Init; // 定义串口初始化结构体对象

    2024年02月16日
    浏览(42)
  • STM32F103C8T6串口调试篇

    项目开发中,当出现bug时,由于不知道某个变量的值,所以很难定位问题,针对此问题,串口调试脱颖而出。通过串口printf()实时将需要显示的信息打印出来,这样就很方便的定位问题。 串口设置方法 1.购买调试器pwlink2。参考STM32F103C8T6程序烧录方法_stm32f103c8t6如何烧录_流

    2024年02月12日
    浏览(54)
  • [STM32F103C8T6]ADC转换

    什么是ADC转换? ADC转换的全称是: Analog-to-Digital Converter ,指模拟 / 数字转换器 ADC的性能指标: ADC分辨率: SSA与VREF-一起接到地,DDA与VREF+接到3.3v,所以ADC转换的范围是0---3.3v 所以最后的ADC转换值应该是我们的测量值*分辨率    分辨率 = 3.3v/2^12 = (3.3/4096)   12位的转换器所

    2024年02月06日
    浏览(40)
  • STM32F103C8T6 按键扫描输入

    第一章 STM32F103C8T6 点亮LED灯 系列文章目录 前言 一、原理  1.按键类型  2.按键消抖 3.IO口输入配置 1)模拟输出 2)浮空输入模式 3)下拉输入模式(PULL DOWN) 4)上拉输入模式(PULL UP) 二、代码部分 main.c key.c key.h 总结         上一章我们成功入门了STM32F103C8T6,今天我们来

    2023年04月23日
    浏览(69)
  • STM32F103C8T6移植FreeRTOS

    根据自己开发板型号下载地址:STM32相关内容下载地址 SDK直接下载地址:STM32直接下载地址 下载参考博客 FreeROTS下载地址 选用V9.0.0 版本 个人创建目录如下,可做参考 keil目录 链接头文件 • 修改堆栈大小 • 修改中断函数名 去掉stm32f10x_it.c终端函数 增加FreeRTOS中断 特别解释

    2024年02月12日
    浏览(46)
  • stm32f103c8t6的外部中断

    在单片机中存在着中断系统,这个系统的逻辑和功能在51单片机中已经有所了解。 1.在32单片机中的内核有一个nvic 里面存放许多优先级的设定,外接许多中断源,比如“exti、tim、adc、usart等”接入之后,nvic再通过中断优先级进行排队,再内接入cpu中进行处理,这样子大大减少

    2024年02月09日
    浏览(43)
  • STM32F103C8T6 点亮LED灯

    一、开发板介绍 二、程序实现 1.配置函数 2.程序源码 main.c LED.c LED.h 总结​​​​​​​ 前言         今天我们开始来学习一下STM32F103Z8T6 点灯。这块芯片可用的IO口资源十分丰富,可用的通用IO口为32个 (注意:是在使用ST_LINK 和 J_LINK的情况下) 。这块芯片的操作方法与正

    2024年02月05日
    浏览(73)
  • STM32F103C8T6制作USB键盘

            1、原因:电脑每次开机都需要输入登录密码,感觉很麻烦,就想着能不能用单片机做一个USB键盘,按一下自动给电脑发一串密码实现开机。后来又想,其实不用按键也行,用延时,延时到电脑开机再发送密码就好了,于是便有了这个制作。         2、 功能:将做好

    2024年01月22日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包