| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> 在 keil 建立基于STM32开发的工程模板--详细步骤 -> 正文阅读 |
|
[嵌入式]在 keil 建立基于STM32开发的工程模板--详细步骤 |
1 先说几句1.1 什么是STM32???STM32是**意法半导体(STMicroelectronics)**较早推向市场的基于Cortex-M内核架构的微处理器系列产品,该系列产品具有成本低、功耗优、性能高、功能多等优势,并且以系列化方式推出,方便用户选型,在市场上获得了广泛好评。 ??STM32目前常用的有STM32F103~107系列,简称“1系列”。最近 又推出了高端系列STM32F4xx系列,简称“4系列”。前者基于Cortex-M3内核架构,后者基于Cortex-M4内核架构。 1.2 什么是cortex???Cortex 是 ARM 的全新一代处理器内核,它在本质上是 ARM V7 架构的实现,它完全有别于ARM的其他内核,是全新开发的。按照3类 典型的嵌入式系统应用,即高性能、微控制器、实时类,它又分成 3 个 系 列 , 即 Cortex-A 、 Cortex-M 、 Cortex-R 。 而 STM32 就 属 于Cortex-M系列。 1.3 什么是ARM???1990年,苹果来到英国,和另外两家科技公司成立一家公司,名为Advanced RISC Machines的公司,简称就是ARM。 ??点击这里查看详情:ARM公司简介-百科介绍 ??ARM 公司本身并不生产和销售芯片,它以出售 ARM 内核的知识产 权为主要模式。全球顶尖的半导体公司,例如 Actel、TI、ST、 ??ARM 的设计具有典型的精简指令系统(RISC)风格。ARM 的体系 架构已经经历了 6个版本,版本号分别是 V1~V6。每个版本各有特 色,定位也各有不同,彼此之间不能简单地相互替代。 ??后来,设计了全新的架构:Cortex,也就是ARM V7 1.4 什么是意法半导体???意法半导体(英语:STMicroelectronics)是一家国际性的半导体生产商,总部位于瑞士日内瓦。 2 硬件平台2.1 STM32103C8T6最小系统板??先看看这个实物图: 这个小板子上的东西可以分成两部分: i: 芯片名:STM32103C8T6的含义 ii: 其他元器件 2.2 电源供电??任何一个电子产品要正 常工作,电源必不可少。所以,首先要给芯片供电。 ??STM32的工作电压 V D D V_{DD} VDD? 为 2.0 ~ 3.6 V 2.0~3.6V 2.0~3.6V。通过内置的电压调节器提供所需的 1.8 V 1.8V 1.8V电源。 ??一般芯片不止一个供电引脚,STM32F103C8T6,这款芯片,有三个接地引脚
V
S
S
V_{SS}
VSS?,和三个电源引脚
V
D
D
V_{DD}
VDD?,
V
D
D
V_{DD}
VDD?一般就供电
3.3
V
3.3V
3.3V,至于为什么在 **
2.0
~
3.6
V
2.0~3.6V
2.0~3.6V**中选择
3.3
V
3.3V
3.3V,以后再说。 2.3 时钟电路??我们知道,对千时序电路来说,除了电源外 ,还需要有稳定的时钟信号才能正常工作。作为数字系统,微控制器 是一种复杂的时序逻辑电路,需要专门的时钟源为其提供脉冲信号。 2.4 复位电路??就像一台完整的 PC 必须具备 Reset 系统一样,一个强壮的微控制器最小系统也需要具备复位电路。 当微控制器上电时,电压不是直接跳变到微控制器可工作的范围(如3. 3V) 而是一个逐步上升的过程。 ??微控制器复位电路的设计直接影响到整个系统工作的稳定性和可靠性。 许多用户在设计完基于微控制器的嵌入式系统并在实验室调试成功后,在现场却出现“ 死机”“程序跑飞”等现象,这主要是未添加复位电路或复位电路设计不可靠引起的。 ??最简单的复位电路是手动复位电路。 按下外部复位键并延时很短 一段时间后释放,即可完成微控制器的一 次外部手动复位。 STM32Fl03C8T6的复位引脚是,第七个,NRST,当给它接通低电平时,芯片就知道,你想让它复位。 2.5 调试和下载电路??为了让微控制器按照程序员的设想真正跑起来,要事先将实现指定功能的程序烧写到微控制器片内ROM或RAM中进行反复调试。 3 建立工程模板3.0 开发模式有哪些?STM32单片机系统的开发模式通常有三种: 3.1 去下载固件库??STM32 的固件库是一个或一个以上的完整的软件包(称为固件 包),包括所有的标准外设的设备驱动程序,其本质是一个固件函数 包(库),它由程序、数据结构和各种宏组成,包括了微控制器所有 外设的性能特征。 ??因此,固件库中的核心是Libraries 、 Project 两 个 文 件 夹 及 其 内 容 , 以 及stm32f10x_stdperiph_lib_um.chm 这一已经编译的帮助系统,它主要讲的是如何使用固件库来编写自己的应用程序并举例说明。 ??既然 ST 官方给我们提供了使用范例,因此其代码的规范性和正 确性是毋庸置疑的,学习者可以将范例作为快捷地掌握固件库使用方法的重要资料。学习者通过 ST 公司官方提供的范例学习STM32的原理、应用,是一种非常值得推荐的学习方法。 ??打开Libraries后,呈现这样的画面: ??再回到,打开libraries时的画面: 3.2 复制固件库文件??我们新建一个文件夹,名字随便起,我这里是“7 工程模板示例”,在此文件夹下新建三个空文件夹和一个txt文件。 ?? (2) Output 文件夹主要存储输出文件, 例如,最后编译和链接 生成的机器码文件(HEX 文件),也包括其他文件的中间文件。该文 件夹内容可手工定期清理。模板建立后,该文件下无任何文件。只有 ??(3) Project 文件夹主要存储开发者自己开发的相关程序文 件,例如,工程文件,main.c,stm32f10x_conf.h (外设头文件配置 文件),stm32f10x_it.c (中断函数文件),stm32f10x_it.h(中断 函数头文件)。当然,如果程序不涉及中断,不需要上述这两个中断 函数相关的文件。但是,作为通用模板,建议保留这两个文件。上述 文件中,除工程文件外,另4个文件可直接从固件库中拷贝得到,这4 个文件的内容均为固件库里的默认内容,根据应用程序的需要,必须要进行相应的修改和调整,尤其是main.c文件,必须重新设计。
3.2 step-by-step(1)新建KEIL工程
(2)为工程添加分组(Group)
(3)为各组添加相关文件1)User组–自己写的程序??添加 Project 文件夹下的 main.c、stm32f10x_it.c,如要调整 系 统 时 钟 设 置 , 还 必 须 添 加Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\system_stm32f1 2)Driver组–外设驱动程序??添加Libraries\STM32F10x_StdPeriph_Driver\src文件夹下的所 3)CM3组–管理内核的驱动程序??添加Libraries\CMSIS\CM3\CoreSupport\core_cm3.c,如图2.23 4)Startup组–启动程序作用: 管理MDK开发环境下与具体芯片相对应的启动代码。 ??添 加 ??但是,对某一个具体的项目而言,因为选用的 STM32 单片机是 固定的,所以只能使用其中一个启动代码,其余的都必须删除。只是 作为工程模板,为适应不同的型号,所以启动代码都添加进该组。 5)Doc组??添加模板下的 readme.txt 等文本文件。该文件可对工程的具体环境和注意事项、使用操作等有关情况进行说明, 是一个文本文件。当然,学习者可以忽略该文件,但从开发的角度, 撰写该文档是一个很好的习惯,往往可以达到事半功倍的效果,它可以为后续的软件维护节省很多时间和精力。 (4)对KEIL开发环境进行必要的设置??点击魔术棒: C/C++页面下主要设置的选项有两个:Define与Include Paths。
??其中:我们用LD表示16-32K, MD表示64K-128K,HD表示256~512K。我用的芯片是STM32F103C8T6,宏定义符号就是STM32F10X_MD。 (2) Include Paths:设置为编译过程中文件包含要查找的路径 (Include Paths),单击该选项右侧的按钮,即可设置要包含的路 径。注意:必须把工程模板涉及的所有文件所在的文件夹作为路径设 置进来。
(5)简单配置工程模板中的相关文件1)main.c的处理 ??其中,RCC_Configuration()函数为系统时钟配置函数,直接调 用固件库函数SystemInit(),使用默认值。如需更改,则可以调整 2)stm32f10x_conf.h的处理
话说,这个博文,写了两三天,也太慢了,太憨了,哈哈哈哈哈。 |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/29 8:22:30- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |