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.ccore_cm3.h是内核文件。
system_stm32f10x.csystem_stm32f10x.h设置系统及总线时钟。
stm32f10x.h是系统存储器定义申明以及包装内存操作。
startup_stm32f10x_hd.s是启动文件。
stm32f10x_it.cstm32f10x_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建工程相关推荐

  1. matlab的7.3版本是什么_乐建工程宝V6.3版本升级说明公告

    尊敬的乐建工程宝客户: 您好!为了给客户提供更加优质的产品和服务,我司已于2019年11月20日开始乐建工程宝V6.3版本升级服务.目前,Android系统各应用市场已基本审核完毕,iOS系统已上传A ...

  2. ajax 实时进度_【乐建工程宝】如何把控施工项目进度

    施工项目的进度.质量和成本是项目管理的"铁三角".其中,工程进度作为项目施工的重点控制之一,它是保证施工项目按期完成,合理安排资源供应.节约工程成本的重要措施之一. 今天乐小狮就来 ...

  3. 手把手教QT—2. 启航篇,手动建工程及工程文件讲解

    前言 本节来讲手动建Qt工程.既然Qt界面设计部分的代码是自动生成的,那为什么还要讲手动建工程.对于初学者来说,打好基础十分重要.为了初学者更好地理解Qt,印象更深刻,本节还是要讲解一下简单的手动建工 ...

  4. VS+QT——二维码生成(使用nayuki第三方库):从建工程开始

    本文总结一下最近实现的小软件,二维码生成器.通过nayuki第三方库,生成一个QImage类型的二维码,再将二维码显示到对应控件上.本文参考博客:SorelCheung :Qt生成二维码. 附代码:h ...

  5. Altium designer18系列教程一 建工程和封装介绍

    Altium designer18系列教程一 建工程和封装介绍 AD18介绍 AD18建工程 AD18使用 AD整体规划和封装介绍 封装介绍(借鉴燕骏工作室AD系列教程封装介绍) 一.标准零件 二. ...

  6. STM32F4教程从零开始1——建工程

    今天,新买的机械到手,很开心,用得很爽,所以决定再写一篇,话说这是我第一次买机械键盘,我现在也支持程序员可以没有一个好的电脑,但必须有一个好的键盘的说法了... 接着,开始我们的游戏吧. 建工程分成5 ...

  7. Quartus II从建工程、绘图、编译到仿真详细过程

    1.建工程文件存放路径.先在某个盘下新建一个存放工程的文件夹,名字最好用英文,不要出现空格. 2.新建工程.打开Quartus II软件(我用的是9.1版本),File-->New Projec ...

  8. Cocos2d-x建工程时避免copy文件夹和库

    在上一篇教程中,我们演示了如何使用VS2010来新建一个工程,并且教大家如何一步步解决头文件包含错误.lib库引用错误 及dll链接错误.但是,每次建一个工程都这么费时,岂不是很不爽,而且每个工程都要 ...

  9. Xilinx 学习笔记1---新建工程和创建源代码文件

    最近终于有空可以记录一些之前学习的内容,本博客系列记录笔者Xilinx ISE学习之旅,当然现在Vivado是学习热门,一步一步来.搞定 ISE,Vivado上手也会很快. 1.安装软件 软件部分的下 ...

最新文章

  1. dataframe iloc_DataFrame
  2. 挖掘管理价值:企业软件项目管理实战
  3. 2021-11-13包装类
  4. Elasticsearch系列「零」架构解析与最佳实践
  5. 床位的摆放有五大禁忌
  6. html,css颜色,色系
  7. 2018年慈溪职高计算机实验班2019,包场高级中学(创新实验班)2019年中考录取分数线...
  8. Eclipse设置Android Logcat输出字体大小
  9. 完美解决Python与anaconda之间的冲突问题
  10. javascript实现文件下载
  11. 魔兽世界服务器修改模型,超简单魔兽世界修改模型 2.43可用 无需登录器
  12. 苦难是人生中必须经历的一课
  13. 如何应对阿里、美团、Oracle等大厂的面试刁难?
  14. C# 对目录中的文件名按照数字序号进行排序
  15. Win11如何添加默认打印机?
  16. 12对胸椎对应体表标志_腰椎的体表标志_第一至第五腰椎怎么定位相应体表标志怎么对应_中国武警总医院...
  17. mysql查询行数count(*)、coun(1)、count(primary key)查询效率问题
  18. l流程图平行四边形_流程图里的形状符号的代表意义
  19. JSDoc 拥抱 Javascript
  20. leaflet鼠标进出事件 mouseover和mouseout (示例代码009)

热门文章

  1. 展厅中控系统分二阶段开发方案
  2. 使用VHDL进行乒乓球游戏电路设计
  3. 三阶魔方c语言算法最高效率算法,3阶魔方阵的算法
  4. android双导航功能,高级功能-导航组件-开发指南-Android 导航SDK | 高德地图API
  5. 从计算机专业毕业一年
  6. 应用汇不知道,金山安全套装不知道,卡巴知道
  7. 基于Django构建在线文本分类预测系统:SVM模型在线预测与部署 基于 Django 3.2 框架
  8. STM32CubeMX实现串口中断通信
  9. 第二十课:电感和RL电路
  10. ORACLE触发器(trigger)的使用