3、STM32F103建工程
1、开发环境安装步骤:
①安装MDK5.14。
安装目录不能有中文或者特殊字符,可以在D盘新建一个MDK,安装在此文件夹中。Pack Installer界面关闭即可。
②keil破解,file–license management复制CID到破解机,选择ARM后点击generate,复制LIC码粘贴在keil的LIC框,点击add lic,完成破解。
③安装STM32F1支持包。
keil.STM32F1xx_DFP.1.0.5双击,支持包可以自动定位到MDK的安装目录。
keil5是软件和支持包分别安装,keil4软件和支持包在一起,所以比较大。
点击Pack Installer,可以查看安装的支持包。
④CH340驱动安装,找到驱动的steup双节安装。
⑤JLINK驱动安装,找到setup_ jlink_v490双击安装。
2、固件库介绍。
ST官网下载 STM32F10x_StdPeriph_Lib_V3.5.0。
Libraries文件夹下CMSIS和STM32F10x_StdPeriph_Driver目录,CMSIS目录下是启动文件,STM32F10x_StdPeriph_Driver目录是STM32固件源代码,src源文件source,inc头文件include。
Project文件夹下两个文件夹,STM32F10x_StdPeirph_Examples例程源码,STM32F10x_StdPeriph_Template工程模板。
Utilities文件夹下是官方评估板的一些源码,可以忽略。
主要文件介绍如下:
core_cm3.c和core_cm3.h是内核文件。
system_stm32f10x.c和system_stm32f10x.h设置系统及总线时钟。
stm32f10x.h是系统存储器定义申明以及包装内存操作。
startup_stm32f10x_hd.s是启动文件。
stm32f10x_it.c和stm32f10x_it.h是用来编写中断服务函数。
stm32f10x_conf.h是配置文件,包含外设头文件。
3、新建STM32F1工程步骤。
①新建一个keil工程。
建立一个文件夹Template,project–new uvision project定位到Template,新建一个USER文件夹,工程名设置为Template保存在USER下面。
保存之后keil提示选择处理器,选择STMicroelectronics->STM32F1 Series->STM32F103->STM32F103ZET6,如下图:
点击OK,提示添加组件,请选择cancel,如下图。
②文件夹新建。
USER文件夹下面自动生成了listings和objects两个文件夹,存放编译过程产生的中间文件,删除listings和objects文件夹,Template文件夹新建OBJ文件夹,用来存放编译中间文件。Template文件夹新建CORE文件夹,用来存放核心文件和启动文件。Template文件夹新建STM32F10x_FWLib文件夹,用来存放ST官方的库函数源码文件。
③拷贝关键文件。
src和inc两个文件夹复制到STM32F10x_FWLib文件夹。
core_cm3.c、core_cm3.h、startup_stm32f10x_hd.s三个文件复制到CORE文件夹。
stm32f10x.h、system_stm32f10x.c、system_stm32f10x.h三个文件复制到USER文件夹。
main.c、stm32f10x_conf.h、stm32f10x_it.c、stm32f10x_it.h四个文件复制到USER文件夹。
④添加固件库到目录中。
Target1选中再单击改名为Template。
Template右键选择Manage Project Items。
添加三个Groups(USER、FWLIB、CORE),删除Source Group1。
每个Group中添加对应文件夹下面的.c函数。如下图:
keil中点魔术棒–output–select folder for objects,如下图:
⑤添加头文件。
编译,提示错误。需要添加头文件。
点击魔术棒–c/c++中,点击include paths,把USER、CORE、FWLIB中的头文件添加进来,path一定要定位到最后一级子目录。如下图:
编译还是会提示错误,需要配置宏定义变量。
3.5版本的库函数在配置和选择外设的时候通过宏定义来选择,配置宏定义变量如下图:
编辑没有提示错误,提示一个警告(main.c(33): warning: #1-D: last line of file ends without a newline)。①需要在main函数的最后添加新行,消除警告。
编译没有错误,通过JLINK下载程序,需要按下复位才可以正常运行。②魔术棒–setting选择J-LINK/J-TRACE Cortex之后点击setting,选择flash download,勾选reset and run,如下图:
自己编写的延迟函数,太快。
void Delay(u32 count)
{u32 i = 0;for(;i<count;i++);
}
count为3 000 000时,延迟差不多是0.25s,72MHz主频。
1/72M*3000000=0.0417,0.25/0.0417≈5,说明一个i++和一个比较大约需要5个指令周期。
⑥添加 ALIENTEK提供的文件夹,添加库函数和头文件。
复制SYSTEM文件夹,如下图:
添加库函数如下图:
添加头文件如下图:
Alientek提供的SYSTEM文件夹设置完成。
3、STM32F103建工程相关推荐
- matlab的7.3版本是什么_乐建工程宝V6.3版本升级说明公告
尊敬的乐建工程宝客户: 您好!为了给客户提供更加优质的产品和服务,我司已于2019年11月20日开始乐建工程宝V6.3版本升级服务.目前,Android系统各应用市场已基本审核完毕,iOS系统已上传A ...
- ajax 实时进度_【乐建工程宝】如何把控施工项目进度
施工项目的进度.质量和成本是项目管理的"铁三角".其中,工程进度作为项目施工的重点控制之一,它是保证施工项目按期完成,合理安排资源供应.节约工程成本的重要措施之一. 今天乐小狮就来 ...
- 手把手教QT—2. 启航篇,手动建工程及工程文件讲解
前言 本节来讲手动建Qt工程.既然Qt界面设计部分的代码是自动生成的,那为什么还要讲手动建工程.对于初学者来说,打好基础十分重要.为了初学者更好地理解Qt,印象更深刻,本节还是要讲解一下简单的手动建工 ...
- VS+QT——二维码生成(使用nayuki第三方库):从建工程开始
本文总结一下最近实现的小软件,二维码生成器.通过nayuki第三方库,生成一个QImage类型的二维码,再将二维码显示到对应控件上.本文参考博客:SorelCheung :Qt生成二维码. 附代码:h ...
- Altium designer18系列教程一 建工程和封装介绍
Altium designer18系列教程一 建工程和封装介绍 AD18介绍 AD18建工程 AD18使用 AD整体规划和封装介绍 封装介绍(借鉴燕骏工作室AD系列教程封装介绍) 一.标准零件 二. ...
- STM32F4教程从零开始1——建工程
今天,新买的机械到手,很开心,用得很爽,所以决定再写一篇,话说这是我第一次买机械键盘,我现在也支持程序员可以没有一个好的电脑,但必须有一个好的键盘的说法了... 接着,开始我们的游戏吧. 建工程分成5 ...
- Quartus II从建工程、绘图、编译到仿真详细过程
1.建工程文件存放路径.先在某个盘下新建一个存放工程的文件夹,名字最好用英文,不要出现空格. 2.新建工程.打开Quartus II软件(我用的是9.1版本),File-->New Projec ...
- Cocos2d-x建工程时避免copy文件夹和库
在上一篇教程中,我们演示了如何使用VS2010来新建一个工程,并且教大家如何一步步解决头文件包含错误.lib库引用错误 及dll链接错误.但是,每次建一个工程都这么费时,岂不是很不爽,而且每个工程都要 ...
- Xilinx 学习笔记1---新建工程和创建源代码文件
最近终于有空可以记录一些之前学习的内容,本博客系列记录笔者Xilinx ISE学习之旅,当然现在Vivado是学习热门,一步一步来.搞定 ISE,Vivado上手也会很快. 1.安装软件 软件部分的下 ...
最新文章
- dataframe iloc_DataFrame
- 挖掘管理价值:企业软件项目管理实战
- 2021-11-13包装类
- Elasticsearch系列「零」架构解析与最佳实践
- 床位的摆放有五大禁忌
- html,css颜色,色系
- 2018年慈溪职高计算机实验班2019,包场高级中学(创新实验班)2019年中考录取分数线...
- Eclipse设置Android Logcat输出字体大小
- 完美解决Python与anaconda之间的冲突问题
- javascript实现文件下载
- 魔兽世界服务器修改模型,超简单魔兽世界修改模型 2.43可用 无需登录器
- 苦难是人生中必须经历的一课
- 如何应对阿里、美团、Oracle等大厂的面试刁难?
- C# 对目录中的文件名按照数字序号进行排序
- Win11如何添加默认打印机?
- 12对胸椎对应体表标志_腰椎的体表标志_第一至第五腰椎怎么定位相应体表标志怎么对应_中国武警总医院...
- mysql查询行数count(*)、coun(1)、count(primary key)查询效率问题
- l流程图平行四边形_流程图里的形状符号的代表意义
- JSDoc 拥抱 Javascript
- leaflet鼠标进出事件 mouseover和mouseout (示例代码009)