单片机应用技术(C语言版)(第三版)课件 项目七 STM32单片机开发简介_第1页
单片机应用技术(C语言版)(第三版)课件 项目七 STM32单片机开发简介_第2页
单片机应用技术(C语言版)(第三版)课件 项目七 STM32单片机开发简介_第3页
单片机应用技术(C语言版)(第三版)课件 项目七 STM32单片机开发简介_第4页
单片机应用技术(C语言版)(第三版)课件 项目七 STM32单片机开发简介_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目七STM32单片机开发入门简介

7.1STM32单片机概述7.2STM32编程基础7.3点亮LED灯一、认识ARM-STM327.1STM32单片机概述ARM是什么?ARM可以认为是一个公司的名字,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字。ARMCortex系列处理器是基于ARMv7架构的,分为Cortex-A、Cortex-R和Cortex-M三类。在命名方式上,基于ARMv7架构的ARM处理器已经不再延用过去的数字命名方式,如ARM7,ARM9,ARM11,而是冠以Cortex的代号。ARMCortex-M3处理器主要包括处理器内核、嵌套向量中断控制器(NVIC)、存储器保护单元、总线接口单元和跟踪调试单元等,具有以下性能:ARMCortex-M3内核使用3级流水线哈佛架构,运用分支预测、单周期乘法和硬件除法功能,实现了1.25DMIPS/MHz出色的运算效率。采用专门面向C语言设计的Thumb-2指令集,最大限度的降低了汇编语言的使用。单周期乘法和乘法累加指令、硬件除法。准确快速的中断处理,永不超过12周期,最快仅6周期。……7.1STM32单片机概述STM32系列处理器是由ST意法半导体公司,以ARMCortex-M3为内核开发生产的32位处理器,专为高性能、低成本、低功耗的嵌入式应用专门设计。目前,STM32系列处理器有以下几个不同系列。STM32F101xx基本型系列STM32F102xxUSB基本型系列STM32F103xx增强型系列STM32F105/107xx互联型系列7.1STM32单片机概述STM32F103系列产品命名规则对于STM32F103系列产品的命名规则,是按照“STM32F103XXYY”格式来命名的,具体含义如下:产品系列:STM32是基于ARMCortex-M3内核设计的32位微控制器;产品类型:F是通用类型;产品子系列:101是基本型、102是USB基本型(USB全速设备)、103是增强型、105或107是互联型;引脚数目(第一个X):T是36脚、C是48脚、R是64脚、V是100脚、Z是144脚;闪存存储器容量(第二个X):4是16K、6是32K、8是64K、B是128K、C是256K、D是384K、E是512K;封装(第一个Y):H是BGA、T是LQFP、U是VFQFPN、Y是WLCSP64;温度范围(第二个Y):6是工业级温度范围-400C~850C、7是工业级温度范围-400C~1050C。例如:STM32F103VCT6是基于Cortex-M3内核设计的32位微控制器系列、通用类型、增强型子系列、100个引脚、256K闪存存储器容量、采用的是LQFP封装、温度范围是-400C~850C。7.1STM32单片机概述AT89S51STM32F103VET6主频使用24MHz晶振时,机械频率2MHz通常使用8MHz晶振,主频72MHzFlash/RAM4KB/128Byte128KB/20KBIO数量32(P0、P1、P2、P3)80(PA、PB、PC、PD、PE、PF……)定时器数量2个16位4个16位UART/SPI/I2C/USB/CAN1/0/0/0/03/2/2/1/1ADC012位2*16通道供电电压4.5~5.5V2.0~3.6V封装DIP-40;LQFP-44LQFP-100;LFBGA-100价格STM32F103与AT89S51对比7.1STM32单片机概述二、为什么学STM32开发生态相对完整,上手难度较小最早推出固件库,显著缩短开发周期(其他厂商同时期几乎都是直接操作寄存器)STM32CubeMX进一步简化底层设计7.1STM32单片机概述推出时间早,开发资源丰富7.1STM32单片机概述能够对使用ARMCortex-M系列微控制器打基础。以下微控制器均采用ARMCortex-M内核MSP432E401Y(TI)MKE14F256VLH16(NXP/Freescale)R7FS124773A01CNF(Renesas)ATSAMD09C13(MicroChip)XMC1401-Q048F0064(Infineon)GD32F103(兆易创新)7.1STM32单片机概述STM32难在哪?同样是将8位IO设置为01010101,对比一下AT89S51和STM32的代码:STM32代码涉及到的寄存器P1=0X55;RCC->APB2ENR|=(1<<2);GPIOA->CRL=0X444444CC;GPIOA->ODR=0X00000055;7.1STM32单片机概述功能强大导致需要配置的寄存器多32位结构导致每个特殊功能寄存器复杂对C语言有更高的要求(结构体、指针)配置多、程序长,显得很复杂7.1STM32单片机概述STM32难在哪?7.1STM32单片机概述三、STM32最小系统7.1STM32单片机概述复位电路7.1STM32单片机概述时钟电路7.1STM32单片机概述启动电路7.1STM32单片机概述一、认识STM32固件库意法半导体公司(ST公司)为了方便用户开发程序,提供了一套丰富的STM32固件库。什么是固件库呢?在STM32应用程序开发中,固件库与寄存器有什么区别和联系呢?

STM32固件库与CMSIS标准STM32固件库就是函数的集合,固件库函数的作用是向下负责与寄存器直接打交道,向上提供用户函数调用的接口(API)。那么对这些函数有什么要求呢?这就要涉及到一个CMSIS标准的基础知识。7.2STM32编程基础STM32固件库是不断完善升级的,有不同的版本。现使用的是3.5版本的固件库,是目前最新版本。STM32固件库的目录结构,如下图所示。7.2STM32编程基础STM32固件库关键子目录STM32固件库关键子目录主要有Libraries和Project子目录Libraries子目录有CMSIS和STM32F10x_StdPeriph_Driver这2个子目录,包含了固件库核心的所有子文件夹和文件,主要包含大量的头文件、源文件和系统文件,是开发必须使用的。CMSIS子目录存放的是启动文件;STM32F10x_StdPeriph_Driver子目录存放的是STM32固件库源码文件。inc子目录存放的是stm32f10x_xxx.h头文件,无需改动;src子目录存放的是stm32f10x_xxx.c固件库源码文件。每一个“.c”文件和一个相应的“.h”文件对应,这里的文件也是固件库的核心文件,每个外设对应一组文件。7.2STM32编程基础二、STM32固件库关键子目录和文件STM32固件库关键子目录Project子目录里面有STM32F10x_StdPeriph_Examples和STM32F10x_StdPeriph_Template子目录。STM32F10x_StdPeriph_Examples子目录存放的是ST官方提供的固件实例源码,包含了几乎所有STM32F10x外设的使用详细源代码。在以后的开发过程中,可以参考修改这个官方提供的实例,来快速驱动自己的外设。很多开发板的实例,也都参考了官方提供的例程源码,这些源码对以后的学习非常重要。STM32F10x_StdPeriph_Template子目录存放的是工程模板。7.2STM32编程基础STM32固件库关键文件着重介绍STM32固件库Libraries子目录下的几个重要文件。core_cm3.c和core_cm3.h中2个文件是位于\Libraries\CMSIS\CM3\CoreSupport子目录下面的,分别是内核访问层的源文件和头文件,提供进入M3内核接口。是由ARM公司提供的CMSIS核心文件,对所有CM3内核的芯片都一样,永远都不需要修改这个文件。7.2STM32编程基础STM32固件库关键文件STM32F10x子目录中的3个文件:system_stm32f10x.c、system_stm32f10x.h以及stm32f10x.h文件,是外设访问层的源文件和头文件。system_stm32f10x.c文件和对应的system_stm32f10x.h头文件是设置系统以及总线时钟。这里面有一个非常重要的SystemInit()函数,这个函数在系统启动时都会调用,用来设置系统的整个时钟系统。这也就是不需要用户去配置时钟,程序就能运行的原因。stm32f10x.h头文件相当重要,主要包含了STM32F10x系列所有外设寄存器的定义、位定义、中断向量表、存储空间的地址映射等。只要做STM32开发,就要查看这个文件相关的定义。打开这个文件就可以看到,里面有非常多的结构体以及宏定义。7.2STM32编程基础STM32固件库关键文件启动文件在STM32F10x子目录下面还有一个startup子目录,这个子目录里面放8个启动文件,是以startup开头的“.s”文件。不同容量(容量是指FLASH的大小)的芯片,其启动文件也不一样。在stm32f103系列芯片中,主要使用其中3个启动文件。startup_stm32f10x_ld.s:小容量产品,FLASH

32KB;startup_stm32f10x_md.s:中等容量产品,64KB

FLASH

128KB;startup_stm32f10x_hd.s:大容量产品,256KB

FLASH。若采用STM32F103R6芯片,其容量FLASH是32K,是属于小容量产品,可选择startup_stm32f10x_ld.s启动文件。那么,启动文件到底有什么作用呢?启动文件主要是进行堆栈之类的初始化、中断向量表以及中断函数定义,还要引导进入main函数。7.2STM32编程基础STM32固件库关键文件STM32F10x_StdPeriph_Template子目录下有3个关键文件:stm32f10x_it.c、stm32f10x_it.h和stm32f10x_conf.h。stm32f10x_it.c和stm32f10x_it.h是外设中断函数文件,是用来编写中断服务函数,用户可以相应的加入自己的中断程序代码。stm32f10x_conf.h是固件库配置文件,有很多#include。在建立工程时,可以注释掉一些不用的外设头文件,来选择固件库所使用的外设。7.2STM32编程基础三、新建一个基于STM32固件库的工程模板1.需要准备的工作

(1)下载STM32F10x_StdPeriph_Lib_V3.5.0固件库。

(2)下载并安装好KeiluVisionV4.12(MDK4)2.开始搭建工程(参考pdf文件)

(1)首先解压STM32F10x_StdPeriph_Lib_V3.5.0固件库。解压得到如图所示的几个文件夹。

7.2STM32编程基础(2)为了项目程序中的各部分条理清晰,创建工程文件夹时对其子目录创建立子文件夹,例建立一个工程文件夹MyProject,在其下在创建五个子文件夹如图所示。7.2STM32编程基础(3)打开Keil4软件,在Project菜单下选择NewuVisionProject新建项目,键入新的项目名称如MyProgram,保存到刚才的Project文件夹下面。(4)选择芯片类型,根据实际情况选择芯片类型,这里选择STM32F103C8,确定后弹出窗口询问是否复制启动代码,选择“否”,如图所示。新的项目工程已建好。7.2STM32编程基础(5)点击如图的项目组合图标,弹出“组件、环境、书籍”窗口。7.2STM32编程基础可根据实际需要添加相应的文件,如图所示。添加完成后,工程Project区的文件树状结构如图所示7.2STM32编程基础3.配置工程

(1)设置目标选项,点图标进入TargetOption界面如图所示,上面设置晶振为实际所用晶振的频率,这里设置时钟晶振频率为8.00MHz。

7.2STM32编程基础3.配置工程

(2)选择Output项进行如图所示设置。7.2STM32编程基础3.配置工程

(3)点击Listing选项,并配置Listing文件的所在路径为Projet下的Listing文件夹。7.2STM32编程基础3.配置工程

(4)在“C/C++”选项中的Define中,添加USE_STDPERIPH_DRIVER,STM32F10X_MD,选择好后,可直接编译成功。7.2STM32编程基础7.3点亮LED灯开发第一个基于工程模板的KeilμVision4工程已经建立了基于固件库的KeilμVision4工程模板,现在如何利用工程模板来开发第一个“点亮一个LED”工程呢?移植工程模板编写第一个基于库函数的点亮一个LED的控制代码添加主文件leddl.c到工程与编译KeilμVision4和Proteus联合调试一、实施步骤二、GPIO概述数据手册中的GPIO部分结构图对理解GPIO具有重要意义。7.3点亮LED灯增加6个节点编号以分析输入路径。当I/Opin位置有一个输入信号时,在节点1处为保护二极管,2个串联的二极管可以使得输入信号的电压不高于VDD且不低于VSS。节点2为输入输出的路径选择,由于下方为两个MOS管输出,信号无法通过,因此只能往上走。1234567.3点亮LED灯节点3位置有2个电阻,分别接VDD、VSS。当连接VDD的开关闭合时,该电阻为上拉电阻,此时的输入方式为“上拉输入”;仅闭合与VSS连接的开关时,该电阻为下拉电阻,此时的输入方式为“下拉输入”;上下两个开关同时断开时,输入方式为“浮空输入”,不允许两个开关同时闭合。1234567.3点亮LED灯节点4位置有两条支路,一条连接到模拟输入,另一条经过一个施密特触发器整形到达节点5。节点5同样有两条支路,一条连接到复用功能输入,第二条支路连接到输入数据寄存器,即节点6。可以通过编写程序,使得CPU读输入数据寄存器,从而完成对一个输入信号的读入。1234567.3点亮LED灯对于输出路径,同样可以采取该方法分析。节点1处,通过编写程序,CPU对置位/复位寄存器进行操作,则会修改节点2处的输出数据寄存器。节点3处有数据选择器,选择通过

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论