版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
专题一
认识STM32和嵌入式系统《嵌入式系统开发》目录一、嵌入式系统概念二、嵌入式处理器三、嵌入式系统应用四、STM32系列处理器1.1.1 嵌入式系统的定义一般定义– 以应用为中心、以计算机技术为基础,软硬件可裁剪,应用系统对功能、可靠性、成本、体积、功耗和应用环境有特殊要求的专用计算机系统。是将应用程序、操作系统和计算机硬件集成在一起的系统(技术角度)嵌入式系统是设计完成复杂功能的硬件和软件,并使其紧密耦合在一起的计算机系统。(系统角度)术语嵌入式反映了这些系统通常是更大系统(被称之为嵌入的系统)的一个完整子系统。嵌入式的系统可以包含多个嵌入式系统。广义定义任何一个非计算机的计算系统IEEE国际电气工程师学会定义嵌入式系统是“用于控制、监视或者辅助操作的机器、设备或装置”(原文为devices
usedto control, monitor, or assist theoperation of equipment, machinery orplants)。通常执行特定功能嵌入式系统的核心----嵌入式微处理器严格的时序和稳定性要求全自动操作循环1.1.2 嵌入式系统的组成嵌入式系统通常由嵌入式处理器、外围设备、嵌入式操作系统和应用软件等几大部分组成。嵌入式系统组成嵌入式系统硬件组成嵌入式处理器嵌入式处理器是嵌入式系统的核心部件。嵌入式处理器与通用处理器的最大不同点在于嵌入式处理器大多工作在为特定用户群设计的系统中。它通常把通用计算机中许多由板卡完成的任务集成在芯片内部,从而有利于嵌入式系统设计趋于小型化,并具有高效率、高可靠性等特征。大的硬件厂商会推出自己的嵌入式处理器,因而现今市面上有1000多种嵌入式处理器芯片,其中使用最为广泛的有ARM,MIPS,PowerPC,MC68000等。外围设备外围设备是指在一个嵌入式系统中,除了嵌入式处理器以外的完成存储、通信、调试、显示等辅助功能的其他部件。根据外围设备的功能可分为以下3类:存储器:静态易失型存储器(RAM,SRAM)、动态存储器(DRAM)和非易失型存储器(Flash)。其中,Flash以可擦写次数多、存储速度快、容量大及价格低等优点在嵌入式领域得到了广泛的应用。接口:应用最为广泛的包括并口、RS-232串口、IrDA红外接口、SPI串行外围设备接口、I2C(Inter
IC)总线接口、USB通用串行总线接口、Ethernet网口等。人机交互:LCD、键盘和触摸屏等人机交互设备。嵌入式操作系统嵌入式操作系统是用来管理存储器分配、中断处理、任务间通信和定时器响应,以及提供多任务处理等的软件模块集合。嵌入式操作系统常常有实时要求,所以嵌入式操作系统往往又是“实时操作系统”。应用软件嵌入式系统的应用软件是针对特定的实际专业领域的,基于相应的嵌入式硬件平台,并能完成用户预期任务的计算机软件。嵌入式软件的特点如下:(1)软件要求固态化存储。(2)软件代码要求高质量、高可靠性。(3)系统软件的高实时性是基本要求。(4)多任务实时操作系统成为嵌入式应用软件的必需。1.1.3 嵌入式系统的特点软硬件一体化,集计算机技术、微电子技术、行业技术为一体;需要操作系统支持,代码小、执行速度快;专用紧凑,用途固定,成本敏感;可靠性要求高;多样性,应用广泛、种类繁多。1.1.4 嵌入式系统的应用嵌入式应用信息家电智能玩具通信设备移动存贮工控设备智能仪表汽车电子网络设备消费电子军事国防军事电子电子商务工业控制1.1.5 实时系统实时系统(Real
Time
System)是指产生系统输出的时间对系统至关重要的系统。从输入到输出的滞后时间必须足够小到一个可以接受的时限内。实时系统通常具备以下重要的特性:1.实时性2.并行性3.多路性4.独立性5.可预测性6.可靠性概念特性实时系统中主要通过3个指标来衡量系统的实时性,即:响应时间(Response
Time):指计算机从识别一个外部事件到做出响应的时间。生存时间(Survival
Time):指数据的有效等待时间,在这段时间里数据是有效的。吞吐量(Throughput):指在一段给定时间内,系统可以处理事件的总数。吞吐量通常比平均响应时间的倒数小一点。衡量实时性的指标实时系统的分类根据响应时间可分为3种类型:1.强实时系统2.弱实时系统3.一般实时系统根据确定性可分为2种类型:1.硬实时系统2.软实时系统二、嵌入式处理器单片机就是单片微型计算机(SCM,SingleChip
Microcomputer)微控制器(Micro-Controller
Unit——MCU)运算器输出设备控制器存储器输入设备微型计算机系统的硬件部分通常由五部分组成:二、嵌入式处理器个人计算机系统通常由多块印刷电路板制成:主板计算机内存条CPU二、嵌入式处理器从单片机到嵌入式(1)结构升级单片机系统基本结构:单片机由运算器、控制器、存储器、输入输出设备构成。嵌入式系统结构:嵌入式系统一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统、特定的应用程序组成。嵌入式系统设计的第一步是结合具体的应用,综合考虑系统对成本、性能、可扩展性、开发周期等各个方面的要求,确定系统的主控器件,并以之为核心搭建系统硬件平台。二、嵌入式处理器从单片机到嵌入式(2)软硬件升级单片机是在一块集成电路芯片中包含了微控制器电路,以及一些通用的输入输出接口器件。从构成嵌入式系统的方式看,根据现代电子技术发展水平,嵌入式系统可以用单片机实现,也可以用其它可编程的电子器件实现。其余硬件器件根据目标应用系统的需求而定。制造商出厂的通用单片机内没有应用程序,所以不能直接运行。增加应用程序后,单片机就可以独立运行。嵌入式系统一定要有控制软件,实现控制逻辑的方式可以完全用硬件电路,也可以用软件程序。二、嵌入式处理器从单片机到嵌入式(3)应用升级单片机现在已经被认为是通用的电子器件了,单片机自身为主体。嵌入式系统在物理结构关系上是从属的,嵌入式系统被嵌入安装在目标应用系统内。嵌入式系统在控制关系上却是主导的,是控制目标应用系统运行的逻辑处理系统。尽管可以用不同方式构成嵌入式系统,但是一旦构成之后,嵌入式系统就是一个专用系统。专用系统中,可编程器件的软件可以在系统构建过程中植入,也可以在器件制造过程中直接生成,以降低制造成本。控制逻辑复杂的单片机会需要操作系统软件支持;控制逻辑简单的嵌入式系统也可以不用操作系统软件支持。二、嵌入式处理器从单片机到嵌入式通俗点说,以车载导航系统为例,就是一个典型的嵌入式系统,它服务于整车的控制系统,留有丰富的接口与行车电脑等设备进行通信,基于嵌入式系统它具备强大的数据处理能力和存储能力。由于具有明确的应用目的,所以车载导航在生产过程中在硬件上可以进行一定程度的“定制”,也就是所谓的“可裁剪性”,同时在后期使用中也可以提供给用户新的固件进行“软件升级”。而这些特性是传统单片机系统尤其是8位机系统从硬件规格到系统构架都不具备的。三、嵌入式系统应用用场合应用:嵌入式系统能做什么?单片机无所不能!所谓“微电脑控制”场合的核心就是单片机定时❖完成涵洗盖衣、日脱常水生等功活、工业生产、军事设备、科研仪表仪器等所有智能化应能蒸汽熨烫的功能刷卡、投币洗衣可以判断衣服的干净程度,实现“洗净即停”的功能LED发光二极管构成显示屏的像素点单片机负责逐点或逐行扫描,并与电脑通信获取图片信息巡线避障电视机遥控器遥控LCD显示用于环境监测、工矿企业、科学研究、水产养殖场等场合的pH值的测定读取pH传感器的模拟信号,内部处理后显示在LCD上四、STM32处理器四、STM32处理器(选自百度百科)STM32系列专为要求高性能、低成本、低功耗的嵌入式应用设计的ARM
Cortex®-M0,M0+,M3,
M4和M7内核。按内核架构分为不同产品:
主流产品(STM32F0、STM32F1、STM32F3)、超低功耗产品(STM32L0、STM32L1、STM32L4、STM32L4+)、高性能产品(STM32F2、STM32F4、STM32F7、STM32H7)四、STM32处理器四、STM32处理器(选自百度百科)在STM32F105和STM32F107互连型系列微控制器之前,意法半导体已经推出STM32基本型系列、增强型系列、USB基本型系列、互补型系列;新系列产品沿用增强型系列的72MHz处理频率。内存包括64KB到256KB闪存和
20KB到64KB嵌入式SRAM。新系列采用LQFP64、LQFP100和LFBGA100三种封装,不同的封装保持引脚排列一致性,结合STM32平台的设计理念,开发人员通过选择产品可重新优化功能、存储器、性能和引脚数量,以最小的硬件变化来满足个性化的应用需求。截至2010年7月1日,市面流通的型号有:基本型:STM32F101R6、STM32F101C8、STM32F101R8、STM32F101V8、STM32F101RB、STM32F101VB增强型:STM32F103C8、STM32F103R8、STM32F103V8、STM32F103RB、STM32F103VB、
STM32F103VE、STM32F103ZESTM32型号的说明:以STM32F103RBT6这个型号的芯片为例,该型号的组成为7个部分,其命名规则如下:四、STM32单片机四、STM32处理器(选自百度百科)STM32型号的说明:以STM32F103RBT6这个型号的芯片为例,该型号的组成为7个部分,其命名规则如下:1STM32STM32代表ARM
Cortex-M内核的32位微控制器。2FF代表芯片子系列。3103103代表增强型系列。4RR这一项代表引脚数,其中T代表36脚,C代表48脚,R代表64脚,V代表100脚,Z代表144脚,I代表176脚。5BB这一项代表内嵌Flash容量,其中6代表32K字节Flash,8代表64K字节Flash,B代表128K字节Flash,C代表256K字节Flash,D代表384K字节Flash,E代表512K字节Flash,G代表1M字节Flash。6TT这一项代表封装,其中H代表BGA封装,T代表LQFP封装,U代表VFQFPN封装。766这一项代表工作温度范围,其中6代表-40——85℃,7代表-40——105℃。四、STM32单片机四、STM32处理器(选自百度百科)STM32单片机优点:四、STM32单片机四、STM32处理器(选自百度百科)STM32项目一
编译环境的搭建项目一
编译环境的搭建STM32任务
新建一个基于STM32固件库的工程模板目标建立一个基于V3.5版本固件库的Keil
μVision4工程模板,这样就方便以后每次在新建工程时,可以直接复制使用。KeilμVision4版本Keil μVision4源自德国的KEIL公司,
Keil μVision4集成了业内最领先的技术,包括μVision4集成开发环境与RealView编译器。支持ARM7、ARM9和最新的Cortex-M3核处理器,自动配置启动代码,集成Flash烧写模块,强大的Simulation设备模拟,性能分析等功能。项目一
编译环境的搭建任务1 新建一个基于STM32固件库的工程模板新建工程模板目录主要介绍怎样建立基于V3.5版本固件库的工程模板目录,这样就方便以后每次在新建工程时,可以直接复制使用。新建工程模板的具体步骤,参考pdf文件。startup_stm32f10x_ld.s(小容量)、
startup_stm32f10x_md.s(中容量)、
startup_stm32f10x_hd.s(大容量)的启动文件。新建Keil
μVision4工程模板在建立工程之前,
先在电脑的某个目录下,
新建一个子目录“STM32_Project工程模板”。然后把工程目录模板“STM32_Project”复制到“STM32_Project工程模板”子目录里面。新建Keil
μVision4工程模板的具体步骤,参考pdf文件。STM32项目一
编译环境的搭建STM32任务1 新建一个基于STM32固件库的工程模板新建组和添加文件到STM32_
Project工程模板建好STM32_
Project工程后,还要新建USER、CORE、OBJ和STM32F10x_FWLib四个组,并添加文件到相应组中。新建组和添加文件到工程模板的具体步骤,参考pdf文件。把所有外设的库文件都添加进来了,为后面使用方便,不用每次添加,这样做的坏处就是工程太大,编译起来速度慢。工程配置与编译到此为止,新建的基于STM32的Keil μVision4工程就已经基本完成了。接下来就要进行工程配置和编译了。工程配置与编译的具体步骤,参考pdf文件。项目一
编译环境的搭建STM32STM32固件库认识STM32固件库意法半导体公司(ST公司)为了方便用户开发程序,提供了一套丰富的
STM32
固件库。什么是固件库呢?在STM32应用程序开发中,固件库与寄存器有什么区别和联系呢?STM32固件库与CMSIS标准STM32固件库就是函数的集合,固件库函数的作用是向下负责与寄存器直接打交道,向上提供用户函数调用的接口(API)。那么对这些函数有什么要求呢?这就要涉及到一个CMSIS标准的基础知识。项目一
编译环境的搭建STM32STM32固件库关键子目录和文件STM32固件库是不断完善升级的,有不同的版本。现使用的是3.5版本的固件库,是目前最新版本。STM32固件库的目录结构,如下图所示。项目一
编译环境的搭建STM32固件库关键子目录和文件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”文件对应,这里的文件也是固件库的核心文件,每个外设对应一组文件。STM32项目一
编译环境的搭建STM32STM32固件库关键子目录和文件STM32固件库关键子目录② Project
子目录里面有STM32F10x_StdPeriph_Examples
和STM32F10x_StdPeriph_Template子目录。STM32F10x_StdPeriph_Examples子目录存放的是ST官方提供的固件实例源码,包含了几乎所有STM32F10x外设的使用详细源代码。在以后的开发过程中,可以参考修改这个官方提供的实例,来快速驱动自己的外设。很多开发板的实例,也都参考了官方提供的例程源码,这些源码对以后的学习非常重要。STM32F10x_StdPeriph_Template子目录存放的是工程模板。项目一
编译环境的搭建STM32STM32固件库关键子目录和文件STM32固件库关键文件着重介绍STM32固件库Libraries子目录下的几个重要文件。① core_cm3.c和core_cm3.h中2个文件是位于\Libraries\CMSIS\CM3\CoreSupport子目录下面的,分别是内核访问层的源文件和头文件,提供进入M3内核接口。是由ARM公司提供的CMSIS核心文件,对所有CM3内核的芯片都一样,永远都不需要修改这个文件。项目一
编译环境的搭建STM32固件库关键子目录和文件STM32固件库关键文件② STM32F10x
子目录中的3
个文件:
system_stm32f10x.c
、system_stm32f10x.h以及stm32f10x.h文件,是外设访问层的源文件和头文件。system_stm32f10x.c文件和对应的system_stm32f10x.h头文件是设置系统以及总线时钟。这里面有一个非常重要的SystemInit()函数,这个函数在系统启动时都会调用,用来设置系统的整个时钟系统。这也就是不需要用户去配置时钟,程序就能运行的原因。stm32f10x.h头文件相当重要,主要包含了STM32F10x系列所有外设寄存器的定义、位定义、中断向量表、存储空间的地址映射等。只要做STM32开发,就要查看这个文件相关的定义。打开这个文件就可以看到,里面有非常多的结构体以及宏定义。STM32项目一
编译环境的搭建STM32固件库关键子目录和文件STM32固件库关键文件③ 启动文件在STM32F10x子目录下面还有一个startup子目录,这个子目录里面放8个启动文件,是以startup开头的“.s”文件。不同容量(容量是指FLASH的大小)的芯片,其启动文件也不一样。在stm32f
103系列芯片中,主要使用其中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函数。STM32项目一
编译环境的搭建STM32STM32固件库关键子目录和文件STM32固件库关键文件④ STM32F10x_StdPeriph_Template子目录下有3个关键文件:stm32f10x_it.c、stm32f10x_it.h和stm32f10x_conf.h。stm32f10x_it.c和stm32f10x_it.h是外设中断函数文件,是用来编写中断服务函数,用户可以相应的加入自己的中断程序代码。stm32f10x_conf.h是固件库配置文件,有很多#include。在建立工程时,可以注释掉一些不用的外设头文件,来选择固件库所使用的外设。项目一
编译环境的搭建STM32Keil配置下面我们将这些文件加入我们的工程中去。右键点击
Target1,选择
ManageProject
Items。项目一
编译环境的搭建STM32Keil配置Project
Targets
一栏,我们将
Target
名字修改为
Template,然后在
Groups一栏删掉一个
SourceGroup1,建立三个
Groups:USER,CORE,FWLIB。然后点击
OK,可以看到我们的
Target
名字以及
Groups
情况。项目一
编译环境的搭建STM32Keil配置下面我们往
Group
里面添加我们需要的文件。我们按照步骤
10
的方法,
右键点击点击
Tempate,选择选择
Manage
Project
Itmes,然后选择需要添加文件的
Group,这里第一步我们
选
择
FWLIB
,
然后
点
击
右
边
的
Add
Files,定
位
到
我
们
刚
才
建
立
的
目
录
STM32F10x_FWLib/src
下面,将里面所有的文件选中(Ctrl+A),然后点击
Add,然后
Close.可以看到
Files
列表下面包含我们添加的文件。项目一
编译环境的搭建STM32Keil配置项目一
编译环境的搭建STM32Keil配置接下来我们要编译工程,在编译之前我们首先要选择编译中间文件编译后存放目录。方法是点击魔术棒,然后选择“Output”选项下面的“Select
folder
forobjects…”,然后选择目录为我们上面新建的
OBJ
目录。这里大家注意,如果我们不设置
Output
路径,那么默认的编译中间文件存放目录就是
MDK
自动生成的
Objects
目录和
Listings
目录。项目一
编译环境的搭建STM32Keil配置回到工程主菜单,点击魔术棒
,出来一个菜单,然后点击
c/c++选项.然后点击Include
Paths
右边的按钮。弹出一个添加
path
的对话框,然后我们将图上面的
3
个目录添加进去。记住,keil
只会在一级目录查找,所以如果你的目录下面还有子目录,记得
path一定要定位到最后一级子目录。项目一
编译环境的搭建STM32Keil配置定位到
c/c++界面,然后填写“STM32F10X_HD,USE_STDPERIPH_DRIVER”到
Define
输入框里面。下面还需要配置,让编译之后能够生成
hex
文件。同样点击魔术棒,进入配置菜单,选择
Output。然后勾上下三个选项。
其中
Create
HEX
file
是编译生成hex
文件,Browser
Information
是可以查看变量和函数定义。STM32STM32专题三
STM32I/O接口设计思路:跟着做→知识链接→我能做→我能学STM32项目3.2
我能做:汽车LED日行灯的模拟仿真专题三
STM32
I/O接口设计STM32任务目标例如使用STM32F103**芯片的PB8
、PB9、
PB10和
PB11引脚分别接4个LED的阴极,通过程序控制多个LED闪烁点亮。如何控制这些LED循环点亮,关键在于如何控制STM32的IO口输出,这是迈向STM32的第一步。专题知识目标:STM32
IO口的控制原理与方法专题三
STM32
I/O接口设计STM32跟着做:汽车LED日行灯模拟仿真任务分析小游戏:以下几种汽车日行灯造型你都见过吗?你还见过哪种?项目二
跑马灯控制设计与实现STM32目
录知识链接:IO口基本结构和工作模式的认知专题三
STM32
I/O接口设计STM32STM32F103RCT6-
一共有4组IO口-
一共16X3+3=51个IOGPIOA0~A15GPIOB0~B15GPIOC0~C15GPIOD0~D2IO口基本结构和8种模式专题三
STM32
I/O接口设计STM32IO口基本结构和8种模式STM32F103ZET6一共有7组IO口每组IO口有16个IO-
一共16X7=112个IOGPIOA,GPIOB---GPIOG专题三
STM32
I/O接口设计STM32STM32的大部分引脚除了当GPIO使用外,还可以复用为外设功能引脚(比如串口),这部分知识我们会在后面讲解。本讲主要讲解引脚做IO使用方面的知识。IO口基本结构和8种模式专题三
STM32
I/O接口设计STM32认识STM32的IO口专题三
STM32
I/O接口设计STM32认识STM32的IO口STM32的IO口可以由软件配置成8种模式浮空输入:IN_FLOATING;上拉输入:IPU;下拉输入:IPD;模拟输入:AIN;开漏输出:Out_OD;推挽输出:Out_PP;复用功能的推挽式输出:AF_PP;复用功能的开漏输出:AF_OD。专题三
STM32
I/O接口设计STM32STM32的IO口复用功能几点说明:1、芯片复位后,复用功能未开启,GPIO端口被配置成浮空输入模式2、如果把端口位配置成复用输入功能,则输入引脚必须由外部驱动3、如果把端口位配置成复用输出功能,输出引脚和输出寄存器断开,并和片上外设的输出信号连接4、如果将一个GPIO端口位配置成复用输出功能,但是外设没有被激活,它的输出将不确定5、为了使不同器件封装的外设I/O功能的数量达到最优,可以把一些复用功能重新映射到其他一些脚上专题三
STM32
I/O接口设计STM3212GPIO端口位的基本结构(FT)专题三
STM32
I/O接口设计STM32GPIO的输入工作模式1—输入浮空模式GPIO
八种工作模式专题三
STM32
I/O接口设计STM32GPIO的输入工作模式2—输入上拉模式GPIO
八种工作模式专题三
STM32
I/O接口设计STM32GPIO的输入工作模式3—输入下拉模式GPIO
八种工作模式专题三
STM32
I/O接口设计STM32GPIO的输入工作模式4—模拟模式GPIO
八种工作模式专题三
STM32
I/O接口设计STM32GPIO的输出工作模式1—开漏输出模式GPIO
八种工作模式专题三
STM32
I/O接口设计STM32GPIO的输出工作模式2—开漏复用输出模式GPIO
八种工作模式专题三
STM32
I/O接口设计STM32GPIO的输出工作模式3—推挽输出模式GPIO
八种工作模式专题三
STM32
I/O接口设计STM32GPIO的输出工作模式4—推挽复用输出模式GPIO
八种工作模式专题三
STM32
I/O接口设计STM32推挽输出:可以输出强高低电平,连接数字器件开漏输出:只可以输出强低电平,高电平得靠外部电阻拉高。输出端相当于三极管的集电极.
要得到高电平状态需要上拉电阻才行.
适合于做电流型的驱动,其吸收电流的能力相对强(一般20ma以内)参考帖子:/posts/list/21980.htmGPIO
八种工作模式专题三
STM32
I/O接口设计STM32端口复用功能STM32的大部分端口都具有复用功能。所谓复用,就是一些端口不仅仅可以做为通用IO口,还可以复用为一些外设引脚,比如PA9,PA10可以复用为STM32的串口1引脚。作用:最大限度的利用端口资源GPIO
八种工作模式专题三
STM32
I/O接口设计STM32端口重映射功能就是可以把某些功能引脚映射到其他引脚。比如串口1默认引脚是PA9,PA10可以通过配置重映射映射到PB6,PB7作用:方便布线GPIO
八种工作模式专题三
STM32
I/O接口设计STM32跟着做:汽车LED日行灯模拟仿真任务实现:1、硬件设计BOOT060NRST71415161726272855PB0PB1PB2PB3PB4PB5PB6PB7PB8PB9PB10PB11PB12PB13PB14PB15565758596162293033343536PA0-WKUPPA1PA2PA3PA4PA5PA6PA7PA8PA9PA10PA11PA12PA13PA14PA15202122234142434445464950OSCIN_PD0OSCOUT_PD1PD25654PC0PC1PC2PC3PC4PC5PC6PC7PC8PC9PC10PC11PC12PC13_RTCPC14-OSC32_INPC15-OSC32_OUT891011242537383940515253234VBAT1U1STM32F103R6D3LED-BLUED4LED-BLUED7LED-BLUED8LED-BLUER1100D1LED-BLUER2100D2LED-BLUER3100D5LED-BLUER4100D6LED-BLUE专题三
STM32
I/O接口设计跟着做:汽车LED日行灯模拟仿真任务实现:2、软件设计#include
"stm32f10x.h"int
main(void){GPIO_InitTypeDefGPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,
ENABLE); //使能GPIOA时钟GPIO_InitStructure.GPIO_Pin=
GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3;//选择PA0-3//选择工作模式//选择GPIO最高速度//初始化GPIOA口GPIO_InitStructure.GPIO_Mode=
GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed=
GPIO_Speed_50MHz;GPIO_Init(GPIOA,&GPIO_InitStructure);while(1){GPIO_ResetBits(GPIOA,GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3);//PA0-3口输出低电平}}STM32专题三
STM32
I/O接口设计STM32我能做:汽车LED双闪灯的模拟仿真任务分析:科普:汽车双闪灯应该在什么情况下开启?项目二
跑马灯控制设计与实现STM32目
录知识链接1:IO口寄存器配置专题三
STM32
I/O接口设计GPIO相关配置寄存器每组GPIO端口的寄存器包括:两个32位配置寄存器(GPIOx_CRL
,GPIOx_CRH)
,两个32位数据寄存器
(GPIOx_IDR和GPIOx_ODR),一个32位置位/
复位寄存器(GPIOx_BSRR),一个32位复位寄存器(GPIOx_BRR)(只使用16位)一个32位锁定寄存器(GPIOx_LCKR)。每个I/O端口位可以自由编程,然而I/O端口寄存器必须按32位字被访问(不允许半字或字节访问)
。STM32专题三
STM32
I/O接口设计STM32是每组IO口含下面7个寄存器。也就是7个寄存器,一共可以控制一组GPIO的16个IO口。IO口控制寄存器总量=IO组数
*
7GPIO相关配置寄存器专题三
STM32
I/O接口设计STM32GPIO相关配置寄存器typedef
struct{
IOuint32_t
CRL;
IOuint32_t
CRH;
IOuint32_t
IDR;
IOuint32_t
ODR;
IOuint32_t
BSRR;
IOuint32_t
BRR;
IOuint32_t
LCKR;}GPIO_TypeDef;专题三
STM32
I/O接口设计STM32GPIO相关配置寄存器1.
端口配置低寄存器(GPIOx_CRL)专题三
STM32
I/O接口设计淘宝店铺:STM32技术论坛:GPIO相关配置寄存器专题三
STM32
I/O接口设计STM322.
端口配置高寄存器(GPIOx_CRH)GPIO相关配置寄存器专题三
STM32
I/O接口设计STM323.
端口输入数据寄存器(GPIOx_IDR)GPIO相关配置寄存器专题三
STM32
I/O接口设计STM324.
端口输出数据寄存器(GPIOx_ODR)GPIO相关配置寄存器专题三
STM32
I/O接口设计STM325. 端口位设置/清除寄存器(GPIOx_BSRR)GPIO相关配置寄存器专题三
STM32
I/O接口设计STM326. 端口位清除寄存器(GPIOx_BRR)GPIO相关配置寄存器专题三
STM32
I/O接口设计STM327. 端口配置锁定寄存器(GPIOx_LCKR)GPIO相关配置寄存器专题三
STM32
I/O接口设计STM32操作IO口的一般步骤:使能IO口时钟:APB2ENR初始化IO口模式:CRL/CRH操作IO口,输出高低电平:
ODR,BSRR,BRRGPIO相关配置寄存器专题三
STM32
I/O接口设计STM32寄存器太复杂了,有没有能替代寄存器的写法?GPIO相关配置寄存器项目二
跑马灯控制设计与实现STM32目
录3.
IO口库函数配置专题三
STM32
I/O接口设计STM32STM32的GPIO初始化库函数1、RCC_APB2PeriphClockCmd()
IO口时钟初始化函数专题二中介绍了STM32官方库中STM32F10x_FWLib文件夹包含了标准外设库的各类函数,其中的stm32f10x_gpio.c就包含了和GPIO相关的配置函数,我们在调用这些函数时需要了解它们的功能、参数,建议在熟练掌握STM32硬件配置方法后再具体分析函数代码。函数名称RCC_APB2PeriphClockCmd()函数作用控制GPIO时钟函数示例RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,ENABLE);专题三
STM32
I/O接口设计STM32STM32的GPIO初始化库函数2、GPIO_Init()
IO初始化函数GPIO_InitTypeDefGPIO_InitStructure;GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOB,
&GPIO_InitStructure);函数名称GPIO_Init()函数作用GPIO初始化函数示例GPIO_Init(GPIOA,
&GPIO_InitStructure);专题三
STM32
I/O接口设计STM32STM32的GPIO初始化库函数3、GPIO_Write()函数GPIO_Write()函数的功能是一次性向指定一组GPIO数据端口写入16位数据,0代表输出低电平,1代表输出高电平。函数名称GPIO_Write
()函数作用向指定IO口写数据函数示例GPIO_Write(GPIOC,
0xFFFE);//
向GPIOC口写0xFFFE专题三
STM32
I/O接口设计STM32STM32的GPIO初始化库函数小问答为下面这段初始化I/O程序加上注释GPIO_InitTypeDefGPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOE,
ENABLE);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6|GPIO_Pin_7|;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_OD;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;GPIO_Init(GPIOA,
&GPIO_InitStructure);GPIO_Init(GPIOE,
&GPIO_InitStructure);专题三
STM32
I/O接口设计STM32STM32的GPIO初始化库函数小问答为下面这段初始化I/O程序加上注释//第一题GPIO_Write(GPIOA,0X0101);//第二题Int
i;for(i=0;i<=7;i++){GPIO_Write(GPIOA,0x0001<<i);}专题三
STM32
I/O接口设计STM32跟着做:汽车LED日行灯模拟仿真任务实现:1、硬件设计BOOT060NRST71415161726272855PB0PB1PB2PB3PB4PB5PB6PB7PB8PB9PB10PB11PB12PB13PB14PB15565758596162293033343536PA0-WKUPPA1PA2PA3PA4PA5PA6PA7PA8PA9PA10PA11PA12PA13PA14PA15202122234142434445464950OSCIN_PD0OSCOUT_PD1PD25654PC0PC1PC2PC3PC4PC5PC6PC7PC8PC9PC10PC11PC12PC13_RTCPC14-OSC32_INPC15-OSC32_OUT891011242537383940515253234VBAT1U1STM32F103R6D3LED-BLUED4LED-BLUED7LED-BLUED8LED-BLUER1100D1LED-BLUER2100D2LED-BLUER3100D5LED-BLUER4100D6LED-BLUE专题三
STM32
I/O接口设计STM32跟着做:汽车LED日行灯模拟仿真任务实现:2、软件设计#include
"stm32f10x.h"void
Delay(unsigned
int
count)
//延时函数{unsignedinti;for(;count!=0;count--){i=5000;while(i--);}}intmain(void){GPIO_InitTypeDefGPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,
ENABLE);//使能GPIOA时钟GPIO_InitStructure.GPIO_Pin=
GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3;//选择PA0-3//选择工作模式//选择GPIO最高速度//初始化GPIOA口while(1)GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed=
GPIO_Speed_50MHz;GPIO_Init(GPIOA,&GPIO_InitStructure);{GPIO_ResetBits(GPIOA,GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|
GPIO_Pin_3);//
PA0-3输出低电平,小灯点亮Delay(200);GPIO_SetBits(GPIOA,GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|
GPIO_Pin_3);//
PA0-3输出高电平,小灯熄灭Delay(200);}}专题三
STM32
I/O接口设计STM32任务2.3
我能做:奥迪汽车流水灯模拟仿真任务分析:思考:什么是汽车的迎宾灯?专题三
STM32
I/O接口设计STM32知识链接:STM32的GPIO写库函数1、GPIO_SetBits()、GPIO_ResetBits()函数第一个参数表示某一组I/O口,对于STM32F103ZET6来讲就是GPIOA-GPIOG。第二个参数是对应管脚的宏定义,可选值有GPIO_Pin_0-
GPIO_Pin_15之一,也可同时选择多个I/O口,要用按位或符号隔开。所有I/O口全选则写作GPIO_Pin_All。如想让PA0-PA3口都输出低电平,控制程序为:GPIO_ResetBits(GPIOA,GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3);同理,在项目3.2中如果想让所有的LED小灯都不亮,那就需要让PA0-PA3口都输出高电平,控制程序为:GPIO_SetBits(GPIOA,GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3);函数名称GPIO_SetBits()GPIO_ResetBits
()函数作用配置指定IO口的引脚输出高电平或低电平函数示例GPIO_SetBits
(GPIOC,
GPIO_Pin_8);//
GPIOC.8引脚输出高电平GPIO_ResetBits
(GPIOC,
GPIO_Pin_9);//
GPIOC.9引脚输出低电平专题三
STM32
I/O接口设计STM32知识链接:STM32的GPIO写库函数2、GPIO_Write()函数GPIO_WriteBit()函数的功能是某一组I/O中的一位输出高电平或低电平。其中第一个参数表示某一组I/O口,第二个参数是对应管脚,区别是第三个参数l,可以看到这个参数类型是enum类型也就是枚举类型,说明这个函数的第三个参数只能是Bit_RESET或者是Bit_SET,根据以下定义BitVal的第一个值也就是Bit_RESET=0,那么Bit_SET就默认是1了。函数名称GPIO_WriteBit
()函数作用向指定IO口的引脚写0或者写1函数示例GPIO_WriteBit(GPIOC,
GPIO_Pin_8,1);//向PC8写1专题三
STM32
I/O接口设计STM32知识链接:STM32的GPIO写库函数交流与思考GPIO_WriteBit()和
GPIO_SetBits()、GPIO_ResetBits()有什么区别?对于单个引脚的操作,两个函数没有区别。如:GPIO_WriteBit(GPIOB,GPIO_Pin_5,1);GPIO_SetBits(GPIOB,
GPIO_Pin_5);以上两个函数都是配置
PB5
口输出高电平,可以相互替代。但如果要配置多个
IO
口输出高电平,就只能选择
GPIO_SetBits()函数了。如:GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_6|
GPIO_Pin_7);专题三
STM32
I/O接口设计STM32知识链接:STM32的写库函数交流与思考在同时配置多位
I/O
口时,GPIO_Write()和GPIO_SetBits()、GPIO_ResetBits()有什么区别?GPIO_Write()和
GPIO_SetBits()、GPIO_ResetBits()都可以同时配置多个
I/O
口的输出电平状态。但在实际开发中,STM32
的一组I/O
口可能会连接多个外设。如果使用
GPIO_Write()函数的话,会将一组
I/O
口的状态都进行修改。比如上文中想让
PA0-PA3
口都输出低电平,同时也配置了其他引脚为高电平了,这样可能影响到其他已连接外设的工作状态。所以在不清楚其他引脚的工作状态的情况下,建议仅对自己已知的引脚进行位操作,也就是使用
GPIO_SetBits()、GPIO_ResetBits()函数。专题三
STM32
I/O接口设计STM32知识链接:STM32的GPIO写库函数小问答为下面这段配置
I/O
状态程序加上注释GPIO_SetBits(GPIOA,GPIO_Pin_1|GPIO_Pin_2);GPIO_SetBits(GPIOA,0X0003);GPIO_ResetBits(GPIOA,GPIO_Pin_3|GPIO_Pin_4);GPIO_ResetBits(GPIOA,GPIO_Pin_All);GPIO_WriteBit(GPIOA,
GPIO_Pin_2,Bit_RESET);GPIO_Write(GPIOA,0X0101);专题三
STM32
I/O接口设计STM32任务2.3
我能做:奥迪汽车流水灯模拟仿真参考硬件:U1STM32F103R6D1
D2
D3
D4
D5
D6
D7
D8LED-BLULED-BLULED-BLULED-BLULED-BLULED-BLULED-BLULED-BLUED9D10D11D12D13D14D15
D16LED-BLULED-BLULED-BLULED-BLULED-BLULED-BLULED-BLULED-BLUE1234567812345678ghefcdab14PA0-WKUP NRSTPA1PA2 PC0PA3 PC1PA4 PC2PA5 PC3PA6 PC4PA7 PC5PA8 PC6PA9 PC7PA10 PC8PA11 PC9PA12 PC10PA13 PC11PA14 PC12PA15 PC13_RTCPC14-OSC32_INPB0 PC15-OSC32_OUTPB1PB2PB3 OSCIN_PD0PB4 OSCOUT_PD1PB5 PD2PB6PB7PB8PB9PB10PB11 VBATPB12PB13PB14PB15 BOOT07151681792010211122242325413742384339444045514652495350232642728555566575458596162293013334353660abcdefgh专题三
STM32
I/O接口设计STM32任务2.3
我能做:奥迪汽车流水灯模拟仿真RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);GPIO_InitStructure.GPIO_Pin=0XFF;GPIO_InitStructure.GPIO_Mode=
GPIO_Mode_Out_OD;//打开数据总线APB2时钟源//选择IO//开漏输出//速度10MHzGPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;GPIO_Init(GPIOA,
&GPIO_InitStructure);//配置PBRCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);GPIO_InitStructure.GPIO_Pin=0XFF;GPIO_InitStructure.GPIO_Mode=
GPIO_Mode_Out_OD;//打开数据总线APB2时钟源//选择IO//开漏输出//速度10MHz//配置PBGPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;GPIO_Init(GPIOB,
&GPIO_InitStructure);while(1){GPIO_Write(GPIOA,0xff);GPIO_Write(GPIOB,0xff);for(i=0;i<=7;i++){GPIO_ResetBits(GPIOA,1<<i);//GPIO_SetBits
亮灯
pe5
pb5
输出低电平GPIO_ResetBits(GPIOB,0X80>>i);//GPIO_SetBits
亮灯
pe5
pb5
输出低电平Delay(100);}}}参考代码:GPIO_InitTypeDef GPIO_InitStructure;//GPIO_InitTypeDef
是结构体类型,
定义一个结构体,
结构体名是GPIO_InitStructure专题三
STM32
I/O接口设计STM32任务2.4
我能做:奥迪汽车转向灯模拟仿真任务分析:汽车转向灯是指在车辆转弯时,通过开启相应方向的闪烁指示灯,来警示车前或车后的行人或车辆,提示本车的行驶方向。本项目中通过按键控制LED小灯闪烁,模拟仿真汽车转向灯效果。专题三
STM32
I/O接口设计STM32知识链接:STM32的GPIO读库函数1、GPIO_ReadInputDataBit()GPIO_ReadInputDataBit()函数功能是读取某一组I/O口中的一位I/O输入的电平高低,它的返回值是1或者0。需要注意的是使用此函数之前要在初始化程序中将工作模式设置为输入模式。if(GPIO_ReadInputDataBit(GPIOA,
GPIO_Pin_6)==0)//读PA6输入低电平{//语句}函数名称GPIO_ReadInputDataBit
()函数作用位输入函数函数示例GPIO_ReadInputDataBit(GPIOA,
GPIO_Pin_6);//读取
PA6
引脚值专题三
STM32
I/O接口设计STM32知识链接:STM32的GPIO读库函数2、GPIO_ReadInputData()GPIO_ReadInputData
()函数功能是一次性读取某一组I/O口所有的电平状态。if(GPIO_ReadInputDataBit(GPIOA)==0x0000)//读PA0-15都输入低电平{//语句}函数名称GPIO_ReadInputData()函数作用字节数入函数函数示例temp
=
GPIO_ReadInputData(GPIOB);//
读取GPIOB口输入值专题三
STM32
I/O接口设计STM32知识链接:STM32的GPIO写库函数小提示GPIO_ReadOutputDataBit
()函数和GPIO_ReadOutputData
()函数标准外设库函数的输入函数还包括了
GPIO_ReadOutputDataBit
()函数和GPIO_ReadOutputData
()函数,顾名思义这两个函数是读取当
I/O
口输出时的一个口和一组口的输出电平状态。它们的参数和以上两个函数相同。在本专题项目中没有调用这两个函数,可以自行学习和练习调用。专题三
STM32
I/O接口设计STM32知识链接:STM32的GPIO写库函数小问答为下面这段配置
I/O
状态程序加上注释while(GPIO_ReadInputDataBit(GPIOBGPIO_Pin_6)!=0)if(GPIO_ReadInputData
(GPIOA)!=0)#definekey1=GPIO_ReadInputDataBit(GPIOBGPIO_Pin_6)If(key1!=0)专题三
STM32
I/O接口设计STM32任务2.4
我能做:奥迪汽车转向灯模拟仿真参考硬件:BOOT060NRST71415161720212223262728555657585989101124253738394051PB0PB1PB2PB3PB4PB5PB6PB7PB8
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年甘肃会展中心有限责任公司招聘笔试参考题库含答案解析
- 2025版智慧城市运营项目融资协议合同范本3篇
- 2025年度个人小户型房产买卖及装修改造合同4篇
- 2025年个人森林抚育与更新承包合同4篇
- 2025年全球及中国医用协作机器人行业头部企业市场占有率及排名调研报告
- 2025-2030全球邻氯苯腈(氯化法)行业调研及趋势分析报告
- 2025-2030全球触控灯行业调研及趋势分析报告
- 2025版拖拉机销售与保险服务合同范本6篇
- 2025年度房产租赁合同(含租金调整及违约责任)3篇
- 2025年度个人设备租赁贷款合同范本7篇
- 2024年全国职业院校技能大赛高职组(研学旅行赛项)考试题库(含答案)
- 2025年温州市城发集团招聘笔试参考题库含答案解析
- 2025年中小学春节安全教育主题班会课件
- 2025版高考物理复习知识清单
- 计量经济学练习题
- 除数是两位数的除法练习题(84道)
- 2025年度安全检查计划
- 2024年度工作总结与计划标准版本(2篇)
- 全球半导体测试探针行业市场研究报告2024
- 反走私课件完整版本
- 2024年注册计量师-一级注册计量师考试近5年真题附答案
评论
0/150
提交评论