嵌入式技术与应用开发-LED控制设计与实现
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
n 工程配置与编译的具体步骤,参考pdf文件。
STM32
项目一 LED控制设计与实现
STM32固件库
n 认识STM32固件库
n 意法半导体公司(ST公司)为了方便用户开发程序,提供了一套 丰富的 STM32 固件库。
1. 什么是固件库呢?在STM32应用程序开发中,固件库与寄存 器有什么区别和联系呢?
n stm32f10x_conf.h是固件库配置文件,有很多#include。在建立工 程时,可以注释掉一些不用的外设头文件,来选择固件库所使用的 外设。
物联网
项目一 LED控制设计与实现
任务2 点亮一个LED
n 使用STM32F103R6芯片,PB8引脚接LED的阴极,通过 C语言程序控制,从PB8引脚输出低电平,使LED点亮。
物联网
项目一 LED控制设计与实现
认识ARM-STM32
n ARM Cortex-M3处理器
n 主要包括处理器内核、嵌套向量中断控制器(NVIC)、存储器保 护单元、总线接口单元和跟踪调试单元等,具有以下性能:
n ARM Cortex-M3 内核使用3级流水线哈佛架构,运用分支预测、单周 期乘法和硬件除法功能,实现了1.25DMIPS/MHz出色的运算效率。
n 新建组和添加文件到工程模板的具体步骤,参考pdf文件。
n 把所有外设的库文件都添加进来了,为后面使用方便,不用每次添 加,这样做的坏处就是工程太大,编译起来速度慢。
4. 工程配置与编译
n 到此为止,新建的基于STM32的Keil μVision4工程就已经基本 完成了。接下来就要进行工程配置和编译了。
n STM32固件库是不断完善升级的,有不同的版本。现使 用的是3.5版本的固件库,是目前最新版本。
n STM32固件库的目录结构,如下图所示。
物联网
项目一 LED控制设计与实现
STM32固件库关键子目录和文件
1. STM32固件库关键子目录
n STM32固件库关键子目录主要有Libraries和Project子目录 ① Libraries子 目 录 有 CMSIS和 STM32F10x_StdPeriph_Driver这 2个
项目一 LED控制设计与实现
位操作
n C语言位操作,就是对基本类型变量可以在位级别进行操 作。
n C语言支持如下表所示的6种位操作。
运算符 & | ^
含义 按位与 按位或 按位异或
运算符 ~ << >>
含义 取反 左移 右移
物联网
项目一 LED控制设计与实现
认识ARM-STM32
n ARM是什么?
2. STM32固件库关键文件
② STM32F10x子 目 录 中 的 3个 文 件 : system_stm32f10x.c、 system_stm32f10x.h以及stm32f10x.h文件,是外设访问层的 源文件和头文件。
n system_stm32f10x.c文件和对应的system_stm32f10x.h头文件是 设置系统以及总线时钟。
2. STM32固件库与CMSIS标准
n STM32固件库就是函数的集合,固件库函数的作用是向下负责与寄 存器直接打交道,向上提供用户函数调用的接口(API)。
n 那么对这些函数有什么要求呢?这就要涉及到一个CMSIS标准的基
础知识。
物联网
项目一 LED控制设计与实现
STM32固件库关键子目录和文件
n 每一个“.c”文件和一个相应的“.h”文件对应,这里的文件也是固件库的 核心文件,每个外设对应一组文件。
物联网
项目一 LED控制设计与实现
STM32固件库关键子目录和文件
1. STM32固件库关键子目录
② Project子 目 录 里 面 有 STM32F10x_StdPeriph_Examples和 STM32F10x_StdPeriph_Template子目录。
n ARM可以认为是一个公司的名字,也可以认为是对一类微处理器 的通称,还可以认为是一种技术的名字。
n ARM Cortex系列处理器
n 是基于ARMv7架构的,分为Cortex-A、Cortex-R和Cortex-M三 类。
n 在命名方式上,基于ARMv7架构的ARM处理器已经不再延用过去的 数字命名方式,如 ARM7,ARM9,ARM11,而是冠以Cortex的代 号。
n 采用专门面向C语言设计的Thumb-2指令集,最大限度的降低了汇编 语言的使用。
n 单周期乘法和乘法累加指令、硬件除法。 n 准确快速的中断处理,永不超过12周期,最快仅6周期。 n ……
物联网
项目一 LED控制设计与实现
认识ARM-STM32
n STM32系列处理器
n 是由ST意法半导体公司,以ARM Cortex-M3 为内核开发生产的32 位处理器,专为高性能、低成本、低功耗的嵌入式应用专门设计。 目前,STM32系列处理器有以下几个不同系列。
1. STM32F101xx基本型系列 2. STM32F102xx USB基本型系列 3. STM32F103xx增强型系列 4. STM32F105/107xx互联型系列
物联网
项目一 LED控制设计与实现
认识ARM-STM32
n STM32F103xx增强型系列
n 使用高性能的32位ARM Cortex-M3的RISC内核,工作频率为72MHz,内 置高速存储器(最高可达 512K字节的闪存、64K字节的SRAM),具有丰 富的增强型I/O端口和联接到两条高性能外设总线(APB)的外设。
STM32
项目一 LED控制设计与实现
项目一 LED控制设计与实现
任务1 新建一个基于STM32固件库的工程模板
n 目标
n 建立一个基于V3.5版本固件库的Keil μVision4工程模板,这样就 方便以后每次在新建工程时,可以直接复制使用。
n Keil μVision4版本
n Keil μVision4源自德国的KEIL公司, Keil μVision4集成了业内 最领先的技术,包括μVision4集成开发环境与RealView编译器。
子目录,包含了固件库核心的所有子文件夹和文件,主要包含大量的 头文件、源文件和系统文件,是开发必须使用的。 n CMSIS子目录存放的是启动文件; n STM32F10x_StdPeriph_Driver子目录存放的是STM32固件库源码
文件。
n inc子目录存放的是stm32f10x_xxx.h头文件,无需改动;src子目录存 放的是stm32f10x_xxx.c固件库源码文件。
STM32固件库关键子目录和文件
2. STM32固件库关键文件
④ STM32F10x_StdPeriph_Template子目录下有3个关键文件: stm32f10x_it.c、stm32f10x_it.h和stm32f10x_conf.h。
n stm32f10x_it.c和stm32f10x_it.h是外设中断函数文件,是用来编 写中断服务函数,用户可以相应的加入自己的中断程序代码。
n 已经建立了基于固件库的Keil μVision4工程模板,现在如何利用 工程模板来开发第一个“点亮一个LED”工程呢?
1. 移植工程模板 2. 编写第一个基于库函数的点亮一个LED的控制代码 3. 添加主文件leddl.c到工程与编译 4. Keil μVision4和Proteus联合调试
物联网
n 新建Keil μVision4工程模板的具体步骤,参考pdf文件。
STM32
项目一 LED控制设计与实现
任务1 新建一个基于STM32固件库的工程模板
3. 新建组和添加文件到STM32_ Project工程模板
n 建好STM32_ Project工程后,还要新建USER、CORE、OBJ和 STM32F10x_FWLib四个组,并添加文件到相应组中。
n 只要做STM32开发,就要查看这个文件相关的定义。打开这个文件就可 以看到,里面有非常多的结构体以及宏定义。
物联网
项目一 LED控制设计与实现
STM32固件库关键子目录和文件
2. STM32固件库关键文件
③ 启动文件
n 在STM32F10x子目录下面还有一个startup子目录,这个子目录里 面放8个启动文件,是以startup开头的“.s”文件。
n 新建工程模板的具体步骤,参考pdf文件。
n startup_stm32f10x_ld.s(小容量)、 startup_stm32f10x_md.s (中容量)、 startup_stm32f10x_hd.s(大容量)的启动文件。
2. 新建Keil μVision4工程模板
n 在建立工程之前,先在电脑的某个目录下,新建一个子目录 “STM32_Project工 程 模 板 ”。 然 后 把 工 程 目 录 模 板 “STM32_ Project”复制到“STM32_Project工程模板”子目录里面。
n 支持ARM7、ARM9和最新的Cortex-M3核处理器,自动配置启 动代码,集成Flash烧写模块,强大的Simulation设备模拟,性 能分析等功能。
STM32
项目一 LED控制设计与实现
任务1 新建一个基于STM32固件库的工程模板
1. 新建工程模板目录
n 主要介绍怎样建立基于V3.5版本固件库的工程模板目录,这样就 方便以后每次在新建工程时,可以直接复制使用。
n STM32F10x_StdPeriph_Template子目录存放的是工程模板。
物联网
项目一 LED控制设计与实现
STM32固件库关键子目录和文件
2. STM32固件库关键文件
n 着重介绍STM32固件库Libraries子目录下的几个重要文件。 ① core_cm3.c和core_cm3.h
n 不同容量(容量是指FLASH的大小)的芯片,其启动文件也不一样。 在stm32f 103系列芯片中,主要使用其中3个启动文件。
n startup_stm32f10x_ld.s:小容量产品,FLASH32KB; n startup_stm32f10x_md.s:中等容量产品,64KBFLASH128KB; n startup_stm32f10x_hd.s:大容量产品,256KBFLASH。
n 所有型号的器件都包含2个12位的ADC、1个高级定时器、3个通用16位定 时 器 和 一 个 PWM定 时 器 , 还 包 含 标 准 和 先 进 的 通 信 接 口 : 2 个 I2C( SMBus/PMBus)、2 个SPI同步串行接口(18 兆位/秒)、3 个USART异 步串行接口(4.5 兆位/秒的)、一个USB(2.0B接口)和一个CAN。
n 用Proteus设计第一个STM32的LED控制电路
1. 新建Proteus工程 2. 设置图纸尺寸 3. 设置网格 4. 添加元器件 5. 放置元器件 6. 调整元器件位置 7. 放置终端 8. 连线 9. 属性设置
物联网
项目一 LED控制设计与实现
任务2 点亮一个LED
n 开发第一个基于工程模板的Keil μVision4工程
n 这里面有一个非常重要的SystemInit()函数,这个函数在系统启动时都 会调用,用来设置系统的整个时钟系统。
n 这也就是不需要用户去配置时钟,程序就能运行的原因。
n stm32f10x.h头文件相当重要,主要包含了STM32F10x系列所有外 设寄存器的定义、位定义、中断向量表、存储空间的地址映射等。
n 中2个文件是位于\Libraries\CMSIS\CM3\CoreSupport子目录下面 的,分别是内核访问层的源文件和头文件,提供进入M3内核接口。
n 是由ARM公司提供的CMSIS核心文件,对所有CM3内核的芯片都一 样,永远都不需要修改这个文件。
物联网
项目一 LED控制设计与实现
STM32固件库关键子目录和文件
n STM32F10x_StdPeriph_Examples子目录存放的是ST官方提供的 固件实例源码,包含了几乎所有STM32F10x外设的使用详细源代码。
n 在以后的开发过程中,可以参考修改这个官方提供的实例,来快速驱动 自己的外设。很多开发板的实例,也都参考了官方提供的例程源码,这 些源码对以后的学习非常重要。
n 若采用STM32F103R6芯片,其容量FLASH是32K,是属于小容量 产品,可选择starຫໍສະໝຸດ Baiduup_stm32f10x_ld.s启动文件。
n 那么,启动文件到底有什么作用呢?
n 启动文件主要是进行堆栈之类的初始化、中断向量表以及中断函数定义, 还要引导进入main函数。
物联网
项目一 LED控制设计与实现
STM32
项目一 LED控制设计与实现
STM32固件库
n 认识STM32固件库
n 意法半导体公司(ST公司)为了方便用户开发程序,提供了一套 丰富的 STM32 固件库。
1. 什么是固件库呢?在STM32应用程序开发中,固件库与寄存 器有什么区别和联系呢?
n stm32f10x_conf.h是固件库配置文件,有很多#include。在建立工 程时,可以注释掉一些不用的外设头文件,来选择固件库所使用的 外设。
物联网
项目一 LED控制设计与实现
任务2 点亮一个LED
n 使用STM32F103R6芯片,PB8引脚接LED的阴极,通过 C语言程序控制,从PB8引脚输出低电平,使LED点亮。
物联网
项目一 LED控制设计与实现
认识ARM-STM32
n ARM Cortex-M3处理器
n 主要包括处理器内核、嵌套向量中断控制器(NVIC)、存储器保 护单元、总线接口单元和跟踪调试单元等,具有以下性能:
n ARM Cortex-M3 内核使用3级流水线哈佛架构,运用分支预测、单周 期乘法和硬件除法功能,实现了1.25DMIPS/MHz出色的运算效率。
n 新建组和添加文件到工程模板的具体步骤,参考pdf文件。
n 把所有外设的库文件都添加进来了,为后面使用方便,不用每次添 加,这样做的坏处就是工程太大,编译起来速度慢。
4. 工程配置与编译
n 到此为止,新建的基于STM32的Keil μVision4工程就已经基本 完成了。接下来就要进行工程配置和编译了。
n STM32固件库是不断完善升级的,有不同的版本。现使 用的是3.5版本的固件库,是目前最新版本。
n STM32固件库的目录结构,如下图所示。
物联网
项目一 LED控制设计与实现
STM32固件库关键子目录和文件
1. STM32固件库关键子目录
n STM32固件库关键子目录主要有Libraries和Project子目录 ① Libraries子 目 录 有 CMSIS和 STM32F10x_StdPeriph_Driver这 2个
项目一 LED控制设计与实现
位操作
n C语言位操作,就是对基本类型变量可以在位级别进行操 作。
n C语言支持如下表所示的6种位操作。
运算符 & | ^
含义 按位与 按位或 按位异或
运算符 ~ << >>
含义 取反 左移 右移
物联网
项目一 LED控制设计与实现
认识ARM-STM32
n ARM是什么?
2. STM32固件库关键文件
② STM32F10x子 目 录 中 的 3个 文 件 : system_stm32f10x.c、 system_stm32f10x.h以及stm32f10x.h文件,是外设访问层的 源文件和头文件。
n system_stm32f10x.c文件和对应的system_stm32f10x.h头文件是 设置系统以及总线时钟。
2. STM32固件库与CMSIS标准
n STM32固件库就是函数的集合,固件库函数的作用是向下负责与寄 存器直接打交道,向上提供用户函数调用的接口(API)。
n 那么对这些函数有什么要求呢?这就要涉及到一个CMSIS标准的基
础知识。
物联网
项目一 LED控制设计与实现
STM32固件库关键子目录和文件
n 每一个“.c”文件和一个相应的“.h”文件对应,这里的文件也是固件库的 核心文件,每个外设对应一组文件。
物联网
项目一 LED控制设计与实现
STM32固件库关键子目录和文件
1. STM32固件库关键子目录
② Project子 目 录 里 面 有 STM32F10x_StdPeriph_Examples和 STM32F10x_StdPeriph_Template子目录。
n ARM可以认为是一个公司的名字,也可以认为是对一类微处理器 的通称,还可以认为是一种技术的名字。
n ARM Cortex系列处理器
n 是基于ARMv7架构的,分为Cortex-A、Cortex-R和Cortex-M三 类。
n 在命名方式上,基于ARMv7架构的ARM处理器已经不再延用过去的 数字命名方式,如 ARM7,ARM9,ARM11,而是冠以Cortex的代 号。
n 采用专门面向C语言设计的Thumb-2指令集,最大限度的降低了汇编 语言的使用。
n 单周期乘法和乘法累加指令、硬件除法。 n 准确快速的中断处理,永不超过12周期,最快仅6周期。 n ……
物联网
项目一 LED控制设计与实现
认识ARM-STM32
n STM32系列处理器
n 是由ST意法半导体公司,以ARM Cortex-M3 为内核开发生产的32 位处理器,专为高性能、低成本、低功耗的嵌入式应用专门设计。 目前,STM32系列处理器有以下几个不同系列。
1. STM32F101xx基本型系列 2. STM32F102xx USB基本型系列 3. STM32F103xx增强型系列 4. STM32F105/107xx互联型系列
物联网
项目一 LED控制设计与实现
认识ARM-STM32
n STM32F103xx增强型系列
n 使用高性能的32位ARM Cortex-M3的RISC内核,工作频率为72MHz,内 置高速存储器(最高可达 512K字节的闪存、64K字节的SRAM),具有丰 富的增强型I/O端口和联接到两条高性能外设总线(APB)的外设。
STM32
项目一 LED控制设计与实现
项目一 LED控制设计与实现
任务1 新建一个基于STM32固件库的工程模板
n 目标
n 建立一个基于V3.5版本固件库的Keil μVision4工程模板,这样就 方便以后每次在新建工程时,可以直接复制使用。
n Keil μVision4版本
n Keil μVision4源自德国的KEIL公司, Keil μVision4集成了业内 最领先的技术,包括μVision4集成开发环境与RealView编译器。
子目录,包含了固件库核心的所有子文件夹和文件,主要包含大量的 头文件、源文件和系统文件,是开发必须使用的。 n CMSIS子目录存放的是启动文件; n STM32F10x_StdPeriph_Driver子目录存放的是STM32固件库源码
文件。
n inc子目录存放的是stm32f10x_xxx.h头文件,无需改动;src子目录存 放的是stm32f10x_xxx.c固件库源码文件。
STM32固件库关键子目录和文件
2. STM32固件库关键文件
④ STM32F10x_StdPeriph_Template子目录下有3个关键文件: stm32f10x_it.c、stm32f10x_it.h和stm32f10x_conf.h。
n stm32f10x_it.c和stm32f10x_it.h是外设中断函数文件,是用来编 写中断服务函数,用户可以相应的加入自己的中断程序代码。
n 已经建立了基于固件库的Keil μVision4工程模板,现在如何利用 工程模板来开发第一个“点亮一个LED”工程呢?
1. 移植工程模板 2. 编写第一个基于库函数的点亮一个LED的控制代码 3. 添加主文件leddl.c到工程与编译 4. Keil μVision4和Proteus联合调试
物联网
n 新建Keil μVision4工程模板的具体步骤,参考pdf文件。
STM32
项目一 LED控制设计与实现
任务1 新建一个基于STM32固件库的工程模板
3. 新建组和添加文件到STM32_ Project工程模板
n 建好STM32_ Project工程后,还要新建USER、CORE、OBJ和 STM32F10x_FWLib四个组,并添加文件到相应组中。
n 只要做STM32开发,就要查看这个文件相关的定义。打开这个文件就可 以看到,里面有非常多的结构体以及宏定义。
物联网
项目一 LED控制设计与实现
STM32固件库关键子目录和文件
2. STM32固件库关键文件
③ 启动文件
n 在STM32F10x子目录下面还有一个startup子目录,这个子目录里 面放8个启动文件,是以startup开头的“.s”文件。
n 新建工程模板的具体步骤,参考pdf文件。
n startup_stm32f10x_ld.s(小容量)、 startup_stm32f10x_md.s (中容量)、 startup_stm32f10x_hd.s(大容量)的启动文件。
2. 新建Keil μVision4工程模板
n 在建立工程之前,先在电脑的某个目录下,新建一个子目录 “STM32_Project工 程 模 板 ”。 然 后 把 工 程 目 录 模 板 “STM32_ Project”复制到“STM32_Project工程模板”子目录里面。
n 支持ARM7、ARM9和最新的Cortex-M3核处理器,自动配置启 动代码,集成Flash烧写模块,强大的Simulation设备模拟,性 能分析等功能。
STM32
项目一 LED控制设计与实现
任务1 新建一个基于STM32固件库的工程模板
1. 新建工程模板目录
n 主要介绍怎样建立基于V3.5版本固件库的工程模板目录,这样就 方便以后每次在新建工程时,可以直接复制使用。
n STM32F10x_StdPeriph_Template子目录存放的是工程模板。
物联网
项目一 LED控制设计与实现
STM32固件库关键子目录和文件
2. STM32固件库关键文件
n 着重介绍STM32固件库Libraries子目录下的几个重要文件。 ① core_cm3.c和core_cm3.h
n 不同容量(容量是指FLASH的大小)的芯片,其启动文件也不一样。 在stm32f 103系列芯片中,主要使用其中3个启动文件。
n startup_stm32f10x_ld.s:小容量产品,FLASH32KB; n startup_stm32f10x_md.s:中等容量产品,64KBFLASH128KB; n startup_stm32f10x_hd.s:大容量产品,256KBFLASH。
n 所有型号的器件都包含2个12位的ADC、1个高级定时器、3个通用16位定 时 器 和 一 个 PWM定 时 器 , 还 包 含 标 准 和 先 进 的 通 信 接 口 : 2 个 I2C( SMBus/PMBus)、2 个SPI同步串行接口(18 兆位/秒)、3 个USART异 步串行接口(4.5 兆位/秒的)、一个USB(2.0B接口)和一个CAN。
n 用Proteus设计第一个STM32的LED控制电路
1. 新建Proteus工程 2. 设置图纸尺寸 3. 设置网格 4. 添加元器件 5. 放置元器件 6. 调整元器件位置 7. 放置终端 8. 连线 9. 属性设置
物联网
项目一 LED控制设计与实现
任务2 点亮一个LED
n 开发第一个基于工程模板的Keil μVision4工程
n 这里面有一个非常重要的SystemInit()函数,这个函数在系统启动时都 会调用,用来设置系统的整个时钟系统。
n 这也就是不需要用户去配置时钟,程序就能运行的原因。
n stm32f10x.h头文件相当重要,主要包含了STM32F10x系列所有外 设寄存器的定义、位定义、中断向量表、存储空间的地址映射等。
n 中2个文件是位于\Libraries\CMSIS\CM3\CoreSupport子目录下面 的,分别是内核访问层的源文件和头文件,提供进入M3内核接口。
n 是由ARM公司提供的CMSIS核心文件,对所有CM3内核的芯片都一 样,永远都不需要修改这个文件。
物联网
项目一 LED控制设计与实现
STM32固件库关键子目录和文件
n STM32F10x_StdPeriph_Examples子目录存放的是ST官方提供的 固件实例源码,包含了几乎所有STM32F10x外设的使用详细源代码。
n 在以后的开发过程中,可以参考修改这个官方提供的实例,来快速驱动 自己的外设。很多开发板的实例,也都参考了官方提供的例程源码,这 些源码对以后的学习非常重要。
n 若采用STM32F103R6芯片,其容量FLASH是32K,是属于小容量 产品,可选择starຫໍສະໝຸດ Baiduup_stm32f10x_ld.s启动文件。
n 那么,启动文件到底有什么作用呢?
n 启动文件主要是进行堆栈之类的初始化、中断向量表以及中断函数定义, 还要引导进入main函数。
物联网
项目一 LED控制设计与实现