stm32实战通关(初级篇)教学课件作者孙菁单元1

上传人:E**** 文档编号:102557917 上传时间:2019-10-03 格式:PPT 页数:88 大小:6.01MB
返回 下载 相关 举报
stm32实战通关(初级篇)教学课件作者孙菁单元1_第1页
第1页 / 共88页
stm32实战通关(初级篇)教学课件作者孙菁单元1_第2页
第2页 / 共88页
stm32实战通关(初级篇)教学课件作者孙菁单元1_第3页
第3页 / 共88页
stm32实战通关(初级篇)教学课件作者孙菁单元1_第4页
第4页 / 共88页
stm32实战通关(初级篇)教学课件作者孙菁单元1_第5页
第5页 / 共88页
点击查看更多>>
资源描述

《stm32实战通关(初级篇)教学课件作者孙菁单元1》由会员分享,可在线阅读,更多相关《stm32实战通关(初级篇)教学课件作者孙菁单元1(88页珍藏版)》请在金锄头文库上搜索。

1、单元1入门三宝(闪灯/定时/按键),1.1开发环境的准备 1.2 GPIO“闪灯”实验 1.3GPIO寄存器的位操作 1.4SYSTICK“定时”实验 1.5 EXTI“按键”实验 1.6常用固件库函数 1.7项目1:“简易电子街灯”的设计,返回,1.1开发环境的准备,1. 1. 1硬件开发环境 为了更好地说明STM32的开发技术,本教材以STM32F4家族中的成员STM32F4ZGT6为例,编写了大量基础、实用的教学案例,辅以编写组自主开发的“ STM32实验平台一”作为教学案例的配套实验平台。实验平台原理如图1. 1所示。 表1. 1对板载资源进行了详细的说明。没有连接关系说明的引脚被扩展

2、为外部插针。 1. 1. 2软件开发环境,上一页,下一页,返回,1.1开发环境的准备,本教材所有案例均已经在KEIL一MDKS环境下编辑和运行通过。本小节以“点亮一个LED”为例,讲述MDKS环境下开发STM32的典型过程。 (1)新建一个文件夹,作为工程文件夹,如DEMO (2)打开MDKS. 24,单击Pack Installer,如图1. 2所示,在界面的右边Search栏中搜索芯片型号,单击OK按钮确认。 选中芯片,界面左边的Pack栏里会出现对应的安装包(如Neil; STM32F4xx_DFP),单击Install按钮安装该芯片系列的固件库,如图1. 3所示。,上一页,下一页,返回

3、,1.1开发环境的准备,安装完成后,直接单击右上角的x按钮关掉该界面,然后进入MDK界面,若出现有更新的提示,直接单击“确定”按钮。 (3)单击ProjectNew ,Vision Project菜单命令新建工程,在弹出的对话框中输入工程名,如DEMO,如图1.4所示。 (4)在弹出的芯片型号界面,直接输入芯片型号并选中,再单击OK按钮确认,如图1. 5所示。 (5)在弹出的Manage Run-Time Environment运行环境界面,选择CMSIS Driver下的Core和Device下的Startup。在StdPeriph Drivers下选择相应的外设驱动,如ADC,GPIO等。

4、这里选择外设GPIO,下方提示还需要选择Framework和RCC,如图1. 6所示。,上一页,下一页,返回,1.1开发环境的准备,(6)返回MDKS. 24界面,左边工程目录下已经可见启动文件以及外设驱动文件,如图1. 7所示。 (7)在工程文件夹下,新建一个文件夹user用于存放工程的源文件和头文件,另新建一个用于储存输出文件的文件夹output,如图1. 8所示。 (8)新建源文件,命名为main. c,并保存到user文件夹,如图1. 9所示。 (9)单击Add按钮添加新文件到源文件组里,如图1.10所示。 (10)单击Options for Target选项,在弹出的对话框中可配置M

5、DK,如图1. 11和图1. 12所示。,上一页,下一页,返回,1.1开发环境的准备,(11)配置MDK的自动索引功能。单击菜单Edits Configuration命令,弹出对话框如图1. 13所示。 (12)编写程序,并编译、创建,如图1. 14所示。 (13)使用ST - LINK仿真器下载。在ST-LINK使用之前,需要将JTAG接口与PC端相连,并且安装官方驱动程序,在工程选项中选择ST-LINK下载器,即可正常使用,其过程如图1. 15至图1. 18所示。 1.1.3 STM32F4的时钟和外设时钟 1. STM32F4的时钟,上一页,下一页,返回,1.1开发环境的准备,STM32

6、F4芯片为了实现低功耗,设计了一个功能完善但却非常复杂的时钟系统。总体来说,STM32的时钟树走向清晰,电路结构如图1. 19所示。 STM32F4有以下4个时钟源。 (1)高速外部时钟(HSE)。以外部晶振作时钟源,晶振频率可取范围为426MHz,一般采用8MHz的晶振。 (2)高速内部时钟(HSI)。由内部RC振荡器产生,频率为16MHz,但不稳定。 (3)低速外部时钟(LSE)。以外部晶振作时钟源,主要提供给实时时钟模块,所以一般采用332.768kHz。,上一页,下一页,返回,1.1开发环境的准备,实验板上用的是32.768kHz, 6p负载规格的晶振。 (4)低速内部时钟(LSI)。

7、由内部RC振荡器产生,也主要提供给实时时钟模块,频率大约为32kHz . ( 5 ) PLL ( Phase Locking Loop,锁相环)倍出:生成最高168 MHz的时钟是由HSE和HIS时钟分频得到的(分频因子为M)。它是将频率倍频、分频至所需的频率(xN:倍频因子;/P,/Q、/R:分频因子)。 2.外设时钟 STM32F4外设的时钟源自两个总线桥,即APB1和APB2。,上一页,下一页,返回,1.1开发环境的准备,时钟源具体分配如表1. 2所示。其中APB 1是低速总线(最高为42MHz ) , APB2是高速总线(最高为84MHz) 。 AHB一般为系统时钟的1分频168MHz

8、, APB1为系统时钟的4分频42MHz,APB2为系统时钟的2分频84MHz 。,上一页,返回,1. 2 GPIO“闪灯”实验,1. 2. 1原理介绍 GPIO ( General Purpose Input Output,通用输入/输出)是STM32最基础、最常用的配置。STM32 F407将引脚分成了GPIO PORT A, B, C, D, E, F, G, H, I等9组,每组有15个引脚。 STM32F4的G PIO有8种工作模式。其中,有4种输入模式,即输入浮空、输入上拉、输入下拉、模拟模式;有4种输出模式,即开漏输出、开漏复用输出、推挽输出、推挽复用输出。 1.输入模式,下一页

9、,返回,1. 2 GPIO“闪灯”实验,输入上拉和输入下拉模式中,IO端口经过上拉、下拉后通过施密特触发器送入内核;模拟模式下,施密特触发器关闭,信号直接通过模拟通道至片上外设;输入浮空模式下,IO端口既不上拉也不下拉,信号通过施密特触发器送到输入数据寄存器,再送入内核。 2.输出模式 开漏输出模式下,当信号为1时,N-MOS管关闭,IO电平受上、下拉电路的控制;当信号为0时,N-MOS管导通,输出下拉低电平。推挽输出模式下,信号为1时,P-MOS管导通,N-MOS管截止,输出上拉高电平;当信号为0时,P-MOS管截止,N-MOS管导通,输出下拉低电平。,上一页,下一页,返回,1. 2 GPI

10、O“闪灯”实验,3.复用模式 为了节省IO资源,更好地协调IO之间的工作,需要在适当的时候给IO口赋予不同的功能,这样,一个IO口在不同的场合可以承担不同的工作,即IO的复用功能。 通过附录4的“引脚功能映射表”可查看GPIO引脚映射及复用功能引脚映射的具体情况。 本实验通过控制STM32F4的GPIO输出状态来实现LED亮灭控制。要控制GPIO的输出状态,首先要知道GPIO的分布情况。表1. 2所示为GPIO引脚分配表。,上一页,下一页,返回,1. 2 GPIO“闪灯”实验,本节用于LED控制的硬件资源为LE DOLED7 (PF0PF7),电路连接如图1. 20所示。由于LED灯组是共阳极

11、的接法,所以GPIO引脚输出高电平时灯灭,GPIO引脚输出低电平时灯亮。 1.2.2编程方法 在MDKS环境下,通过1. 1.2小节软件环境搭建的方法建立工程,可见工程区的左侧出现了本实验所需要的配置文件,如图1. 21所示。本教材中实验借助STM32固件函数库完成。使用固件函数库可以大大减少用户的程序编写时间,进而降低开发成本。,上一页,下一页,返回,1. 2 GPIO“闪灯”实验,在图1. 21中,stm32f4xx_ gpio.c和stm32f4xx_rcc. c是ST官方提供的固件库函数。在固件库中,每个外设的源文件stm32f4xx_ ppp.ppp. h。可根据工程需要添加和删除相

12、应的stm32f4xx_c都对应一个头文件stm32f4xx_ppp.h。 另外,工程中还包含固件库移植时CMSIS文件夹中的重要源文件,如表1. 3所列。 在main.c中,编写代码如下。,上一页,下一页,返回,1. 2 GPIO“闪灯”实验,上一页,下一页,返回,1. 2 GPIO“闪灯”实验,上一页,下一页,返回,1. 2 GPIO“闪灯”实验,代码分析如下。 (1)开启外设时钟是外设工作的基本条件之一。STM32 F407芯片的系统时钟结构可参考ST官方发布的STM32F4中文参考手册。如图1. 22所示,所有GPIOX ( X =A,、I)的时钟是由AHB1总线提供的。调用RCC_

13、AHB1PeriphClockCmd ( RCC_AHB1Periph_ GPIOF, ENABLE)函数,用以开启GPIOF的工作时钟。 (2)在“stm32f4xx_ gpio. h”头文件里包含了GPIO配置的所有信息,GPIO_ Init-TypeDef是GPIO初始化结构体。定义一个InitTypeDef的对象GPIO_ Initdemo来配置满足要求的GPIO。,上一页,下一页,返回,1. 2 GPIO“闪灯”实验,(3)通过GPIO_ Initdemo. GPIO_ Pin选择所需要的引脚。,上一页,下一页,返回,1. 2 GPIO“闪灯”实验,本实验使用PF0PF7。 (4)通

14、过GPIO_ Initdemo. GPIO_ Mode选择引脚的工作模式。“ stm32f4xx_ gpio. H”的头文件中可见STM32引脚的工作模式共有4种,分别是GPIO输入模式GPIO_ ModeIN , GPIO输出模式GPIO_ Mode_ OUT, GPIO复用模式GPIO_ Mode_ AF和GPIO模拟模式GPIO_ Mode_ AN。本实验选择GPIO_ Mode_ OUT模式。 (5)通过GPIO_ Initdemo. GPIO_ Speed配置GPIO的频率或速度。芯片共提供了4种速度模式,即GPIO_ Speed_ 2MHz, GPIO_ Speed_ 25MHz,

15、 GPIO_ Speed_ SOMHz和GPIO_ Speed_ 100MHz。,上一页,下一页,返回,1. 2 GPIO“闪灯”实验,(6)通过GPIO_ Initdemo. GPIO_ PuPd配置输出形式。输出形式共有两种,即推挽输出PP和开漏输出OD。 (7)调用GPIO初始化函数GPIO_ Init ( GPIOF, &GPIO_ Initdemo),可将选中的端口信息和结构体变量中的信息传递给初始化函数GPIO_ Init ( GPIOF, &GPIO_ Init-demo)。以完成GPIO的初始化。 (8)调用 7),用于将所选引脚电平置高,从而达到灭灯的效果。,上一页,下一页,

16、返回,1. 2 GPIO“闪灯”实验,(9)调用 用于将所选引脚电平置低,从而达到亮灯的效果。 1.2.3实验现象 8个LED灯循环地点亮,再熄灭。,上一页,返回,1. 3 GPIO寄存器的位操作,MDK ARM强大的编译环境使STM32库函数开发成为多数初学者的选择,但是与寄存器操作相比,库函数开发的效率较低,且不利于进行灵活的位操作控制。 ST官方提供了STM32F4中文参考手册,其中对于各寄存器有详细说明。每一个通用的IO端口都包括4个犯位的配置寄存器,即GPIOx_ MODER, GPIOx_ OTYP-ER, GPIOx_ OSPEEDR和GPIOx_ PUPDR;两个32位的数据寄存器,即GPIOx_ IDR和GPIOx_ ODR;一个32位置位/复位寄存器GPIOx_ BSRR;一个32位锁定寄存器GPIOx_ LCKR;两个32位复用功能选择寄存器GPIOx_ AFRL。,下一页,返回,1. 3 GPIO寄存器的位操作,通过参考手册中存储器映像的说明,可以看出STM32寄存器各个外设的基地址,基地址加上相应的偏移量就是实际需要的寄存器地址。 工

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号