STM32F10x系列官方固件包免费下载链接


新建STM32工程

步骤一:创建工程文件

1,新建工程目录temp

2,在工程目录temp下面新建四个文件夹

(1)USER:存放工程文件(template)、主函数文件main.c、以及包括system_stm32f10x.c等等。

(2)CORE:存放核心文件和启动文件。

(3)OBJ:存放编译过程文件以及hex文件。

(4)STM32F103:存放ST官方提供的库函数源码文件。

工程目录预览:

3,将新建工程命名为template并保存在USER文件夹下,按图片步骤建立工程

步骤二:导入stm32固件库中的文件

1,打开STM32F10x固件库文件(免费下载链接在文章最上面)

(1)定位到:STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver下面,将目录下面的src,inc文件夹复制到我们刚才建立的STM32F103文件夹下面。src存放的是固件库的.c文件,inc存放的是对应的.h 文件。
具体如下:
 

(2)定位到目录:STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport下面,将文件core_cm3.c和文件core_cm3.h复制到CORE下面去 。然后定位到目录STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\a rm下面,将里面 startup_stm32f10x_hd.s文件复制到CORE下面。这里我们我之前已经解释了不同容量的芯片使用不同的启动文件,我们的芯片STM32F103ZET6是大容量芯片,所以选择这个启动文件。

具体如下:

(3)定位到目录:STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x下面,将里面的三个文件 stm32f10x.h,system_stm32f10x.c,system_stm32f10x.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目录下面。

效果如下:(如果有LIistings和Objects文件夹没有影响)

步骤三:将前面所有的文件添加到工程中

1,在工程下加入三个文件夹USER,CORE,FYLIB

(1)右击Target1,选择Manage Components,按图片将Target 1改为template,删除Source Group 1并新建USER,CORE,FWLIB三个文件夹,最后点击OK:

(2)向USER,CORE,FWLIB文件夹添加相应文件。
1)右击template,选择Manage Components,选中FWLIB,点击Add Files,定位到已有文件夹STM32F103\src下,将所有文件加入FWLIB(这里将所有文件加入FWLIB是为了后面方便后面使用)。
效果预览:

2)用同样的方法,分别向USER和CORE文件夹添加相应文件。这里我们的CORE下面需要添加的文件为core_cm3.c,startup_stm32f10x_hd.s (注意,默认添加的 时候文件类型为.c,也就是添加startup_stm32f10x_hd.s启动文件的时候,你需要选择文件类型All files才能看得到这个文件),USER目录下面需要添加的文件为main.c,stm32f10x_it.c,system_stm32f10x.c,最后点击OK。

效果如下: 

2,设置hex文件生成的位置,头文件路径以及宏定义

(1)设置hex生成位置:点击魔法棒,选择Output,点击Select Folder for Objects,定位在OBJ文件夹下(如果不设置Output,MDK5编译产生的文件将会存放在Listings和Objects文件夹中)。

(2)设置头文件路径以及宏定义全局变量:点击魔法棒,选择c/c++,点击Include Path右边的按钮,会弹出一个设置Path的窗口,然后我们将图上面的3个目录添加进去。记住,keil只会在一级目录查找,所以如果你的目录下面还有子目录,记得path一定要定位到最后一级子目录。然后点击 OK,回到c/c++界面后然后填写 “STM32F10X_HD,USE_STDPERIPH_DRIVER”到Define输入框里面。这里解释一下,如果你用的是中容量那么STM32F10X_HD修改为STM32F10X_MD,小容 量修改为STM32F10X_LD。然后点击 OK。

具体如下:

 

步骤四:修改主函数并生成hex文件

1,将USER下的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);     //使用PE,PB端口时钟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口速度为50MhzGPIO_Init(GPIOB, &GPIO_InitStructure);                 //初始化GPIOB.5GPIO_SetBits(GPIOB,GPIO_Pin_5);                    //PB.5输出高GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;             //LED1-->PE.5推挽输出GPIO_Init(GPIOE, &GPIO_InitStructure);             //初始化GPIOGPIO_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,生成hex文件

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

(2)设置好上面的步骤后将hex文件用flymcu软件下载到单片机中可以观察到两个LED灯交替闪烁。

步骤五:添加SYSTEM文件

SYSTEM文件

1,按照步骤三,在工程中新建一个SYSTEM文件夹,并且将提供的SYSTEM文件中delay.c,sys.c,usart.c添加到工程文件夹SYSTEM中。

效果如下:

2,根据步骤三2中设置头文件方式将SYSTEM文件夹下的子目录delay,sys,usart加入到Path中。

具体如下:

到此新建工程模板已经设置好了,最后记得要保存所有文件,要不然是白忙活一场。

正点原子STM32F103ZET6学习笔记-新建库函数工程模板相关推荐

  1. 正点原子stm32F407学习笔记1——新建工程模板

    一.基于固件库 1.新建文件夹 新建一个Template文件夹,在此文件夹下新建五个子文件夹 2.打开keil软件,点击菜单栏Project –>New Uvision Project,如果有其 ...

  2. STM32F4(正点原子)学习笔记(一):GPIO及其小实验

    目录 一.写在前面: 二.GPIO基本情况 1.概述 2.引脚说明 3.GPIO工作方式 (1)4种输入模式 (2)4种输出模式 (3)4种最大输出速度 (4)主要特性 4.GPIO相关配置寄存器 三 ...

  3. 正点原子stm32F407学习笔记2——GPIO操作跑马灯实验

    一.库函数版本 1.硬件原理图 2.软件设计 打开上一节新建的库函数版本工程模板,直接点击工程下面的 USER 目录下面的 Template.uvproj. 跑马灯实验我们主要用到的固件库文件是: s ...

  4. 正点原子stm32F407学习笔记4——按键输入实验

    一.硬件连接 KEY0.KEY1 和 KEY2 是低电平有效的,而 KEY_UP 是高电平有效,并且外部都没有上下拉电阻,所以,需要在 STM32F4 内部设置上下拉. 二.软件设计 参考蜂鸣器一节新 ...

  5. 正点原子STM32F103学习笔记(六)——时钟系统

    时钟系统 RCC: reset clock control 复位和时钟控制器. 注意: 任何一个外设在使用之前,必须首先使能其相应的时钟 时钟系统框图 图形含义 梯形灰色方块:选择器 蓝色框:时钟源 ...

  6. 正点原子stm32F407学习笔记3——蜂鸣器实验

    一.硬件设计 蜂鸣器为有源蜂鸣器,当 PF.8 输出高电平的时候,蜂鸣器将发声,当 PF.8 输出低电平的时候,蜂鸣器停止发声,硬件原理图如下 二.软件设计 1.新建beep.c文件 打开keil软件 ...

  7. 正点原子STM32F103ZET6程序移植到STM32F103C8T6时Delay函数异常问题

    正点原子STM32F103ZET6库函数程序移植到STM32F103C8T6时Delay函数异常问题 在根据正电原子STM32开发板例程的库函数程序来进行移植的时候,可能会出现程序能运行但是delay ...

  8. 陈表达VBA学习笔记-新建工作表鼠标右键菜单按钮

    陈表达VBA学习笔记-新建工作表鼠标右键菜单按钮:新建一个我的菜单按钮 设置对应的宏过程名称为 [我的菜单宏] 点击按钮弹窗信息,信息可自定义设置 详细代码如下: Sub 新建右键菜单()Dim 菜单 ...

  9. STM32精英版(正点原子STM32F103ZET6开发板)学习篇12——电容触摸按键实验

    电容触摸按键原理 RC充放电电路原理:   RC充放电原理,其实就是电(R)和电容(C)组成的串联电路.   按键开关未按下时,电路两端电压都是0V,无法形成电势差,也就无法形成电流.但当按键开关按下 ...

最新文章

  1. Spring-AOP @AspectJ进阶之绑定代理对象
  2. JAVA中String的一些常用函数用法总结
  3. Spring 基于注解(annotation)的配置之@Qualifier注解
  4. MessageBox 弹框
  5. win7分区软件_小编给你传授 win7系统给硬盘分区的修复方案 -win7系统使用教程...
  6. vmstat命令参数及其介绍
  7. Java高并发编程详解系列-Volatile关键字
  8. Manacher (马拉车算法)
  9. PLM项目目标及阶段
  10. Thinkpad E430c安装Ubuntu14.04第三方驱动的选择
  11. 计算机论文期刊文献,j计算机期刊文章参考文献 j计算机参考文献有哪些
  12. 最近遇到使用Zing.DLL生成条码,但是打印出来不清晰的问题,解决代码记录一下,
  13. 通过mtd读写flash_Linux下读写FLASH驱动——MTD设备分析
  14. 05丨指标关系:你知道并发用户数应该怎么算吗?
  15. wsappx是什么进程,可以关掉吗
  16. java 时间 am_如何在java中使用AM / PM获取时间戳
  17. Oracle 数据库对象
  18. ROS多机通讯与自启
  19. GIS教程之哪种语言更适合地理可视化:R 还是 Python?
  20. 华为机考——LISP 加减乘除语句解析并计算结果

热门文章

  1. 自动驾驶技术 ROS混合A*算法路径规划插件(非完整约束模型,阿克曼转向模型小车)
  2. LVGL core disp显示设计(lv_disp.c)
  3. uboot的mmc驱动
  4. [重写] 与 [重载]
  5. 数家私募拟收购惠普企业 金额或达400亿美元
  6. c语言实现同步四位加法计数器,八进制计数器设计方案汇总(四款模拟电路原理实现过程)...
  7. FPGA入门——蜂鸣器
  8. java der 解码_如何解码Java中的.csr文件以提取其内容
  9. MyBatis的sql动态传入表名和字段名,并判断是否为空
  10. 世界超算最新排名出炉!