正点原子STM32F103ZET6学习笔记-新建库函数工程模板
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固件库文件(免费下载链接在文章最上面)
(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
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学习笔记-新建库函数工程模板相关推荐
- 正点原子stm32F407学习笔记1——新建工程模板
一.基于固件库 1.新建文件夹 新建一个Template文件夹,在此文件夹下新建五个子文件夹 2.打开keil软件,点击菜单栏Project –>New Uvision Project,如果有其 ...
- STM32F4(正点原子)学习笔记(一):GPIO及其小实验
目录 一.写在前面: 二.GPIO基本情况 1.概述 2.引脚说明 3.GPIO工作方式 (1)4种输入模式 (2)4种输出模式 (3)4种最大输出速度 (4)主要特性 4.GPIO相关配置寄存器 三 ...
- 正点原子stm32F407学习笔记2——GPIO操作跑马灯实验
一.库函数版本 1.硬件原理图 2.软件设计 打开上一节新建的库函数版本工程模板,直接点击工程下面的 USER 目录下面的 Template.uvproj. 跑马灯实验我们主要用到的固件库文件是: s ...
- 正点原子stm32F407学习笔记4——按键输入实验
一.硬件连接 KEY0.KEY1 和 KEY2 是低电平有效的,而 KEY_UP 是高电平有效,并且外部都没有上下拉电阻,所以,需要在 STM32F4 内部设置上下拉. 二.软件设计 参考蜂鸣器一节新 ...
- 正点原子STM32F103学习笔记(六)——时钟系统
时钟系统 RCC: reset clock control 复位和时钟控制器. 注意: 任何一个外设在使用之前,必须首先使能其相应的时钟 时钟系统框图 图形含义 梯形灰色方块:选择器 蓝色框:时钟源 ...
- 正点原子stm32F407学习笔记3——蜂鸣器实验
一.硬件设计 蜂鸣器为有源蜂鸣器,当 PF.8 输出高电平的时候,蜂鸣器将发声,当 PF.8 输出低电平的时候,蜂鸣器停止发声,硬件原理图如下 二.软件设计 1.新建beep.c文件 打开keil软件 ...
- 正点原子STM32F103ZET6程序移植到STM32F103C8T6时Delay函数异常问题
正点原子STM32F103ZET6库函数程序移植到STM32F103C8T6时Delay函数异常问题 在根据正电原子STM32开发板例程的库函数程序来进行移植的时候,可能会出现程序能运行但是delay ...
- 陈表达VBA学习笔记-新建工作表鼠标右键菜单按钮
陈表达VBA学习笔记-新建工作表鼠标右键菜单按钮:新建一个我的菜单按钮 设置对应的宏过程名称为 [我的菜单宏] 点击按钮弹窗信息,信息可自定义设置 详细代码如下: Sub 新建右键菜单()Dim 菜单 ...
- STM32精英版(正点原子STM32F103ZET6开发板)学习篇12——电容触摸按键实验
电容触摸按键原理 RC充放电电路原理: RC充放电原理,其实就是电(R)和电容(C)组成的串联电路. 按键开关未按下时,电路两端电压都是0V,无法形成电势差,也就无法形成电流.但当按键开关按下 ...
最新文章
- Spring-AOP @AspectJ进阶之绑定代理对象
- JAVA中String的一些常用函数用法总结
- Spring 基于注解(annotation)的配置之@Qualifier注解
- MessageBox 弹框
- win7分区软件_小编给你传授 win7系统给硬盘分区的修复方案 -win7系统使用教程...
- vmstat命令参数及其介绍
- Java高并发编程详解系列-Volatile关键字
- Manacher (马拉车算法)
- PLM项目目标及阶段
- Thinkpad E430c安装Ubuntu14.04第三方驱动的选择
- 计算机论文期刊文献,j计算机期刊文章参考文献 j计算机参考文献有哪些
- 最近遇到使用Zing.DLL生成条码,但是打印出来不清晰的问题,解决代码记录一下,
- 通过mtd读写flash_Linux下读写FLASH驱动——MTD设备分析
- 05丨指标关系:你知道并发用户数应该怎么算吗?
- wsappx是什么进程,可以关掉吗
- java 时间 am_如何在java中使用AM / PM获取时间戳
- Oracle 数据库对象
- ROS多机通讯与自启
- GIS教程之哪种语言更适合地理可视化:R 还是 Python?
- 华为机考——LISP 加减乘除语句解析并计算结果
热门文章
- 自动驾驶技术 ROS混合A*算法路径规划插件(非完整约束模型,阿克曼转向模型小车)
- LVGL core disp显示设计(lv_disp.c)
- uboot的mmc驱动
- [重写] 与 [重载]
- 数家私募拟收购惠普企业 金额或达400亿美元
- c语言实现同步四位加法计数器,八进制计数器设计方案汇总(四款模拟电路原理实现过程)...
- FPGA入门——蜂鸣器
- java der 解码_如何解码Java中的.csr文件以提取其内容
- MyBatis的sql动态传入表名和字段名,并判断是否为空
- 世界超算最新排名出炉!