嵌入式技术及应用(STM32CubeMX版)课件 任务2 点亮LED灯_第1页
嵌入式技术及应用(STM32CubeMX版)课件 任务2 点亮LED灯_第2页
嵌入式技术及应用(STM32CubeMX版)课件 任务2 点亮LED灯_第3页
嵌入式技术及应用(STM32CubeMX版)课件 任务2 点亮LED灯_第4页
嵌入式技术及应用(STM32CubeMX版)课件 任务2 点亮LED灯_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

任务2 点亮LED灯任务要求STM32的主时钟源为外部晶体振荡电路,程序的调试模式为SWD模式,GPIO口的PE口外接8只发光二极管的控制电路,发光二极管采用低电平有效控制,8只发光二极管的编号依次为LED1~LED8。要求用STM32CubeMX对STM32进行适当配置,然后生成Keil工程代码,再在Keil中对程序进行编译连接,生成hex文件,然后用STM32的程序下载软件将hex文件下载至STM32中,使LED1点亮,其他发光二极管熄灭。知识储备

1.初识GPIO口GPIO是GeneralPurposeInputOutput的缩写,其含义是通用的输入输出。不同型号的STM32,其GPIO口的数量不同,STM32最多有7个GPIO口,依次定义为GPIOA、GPIOB、GPIOC、GPIOD、GPIOE、GPIOF、GPIOG。每个GPIO口16个引脚,依次为PX0~PX15(X=A~G)。例如,GPIOA口的16个引脚为PA0~PA15。STM32F103RBT6有4个GPIO口,分别为GPIOA~GPIOD,STM32F103VET6有5个GPIO口,分别为GPIOA~GPIOE。1.初识GPIO口

STM32的GPIO口的功能与51单片机的并行口的功能相似,GPIO口的引脚一般具有多种功能。基本的功能是输入/输出高低电平,另外还具备其他功能,例如模拟输入功能,外部中断输入功能、串口数据输入/输出功能等复用功能。GPIO口作基本的输出口使用时,STM32可控制GPIO口的引脚输出高电平或者低电平,从而实现开关控制功能。例如,在GPIO口的引脚上接入发光二极管控制电路,STM32就可以通过GPIO口的引脚输出高电平或低电平来实现发光二极管的点亮或熄灭控制。1.初识GPIO口

GPIO口作基本的输入口使用时,STM32可以通过检测GPIO口引脚的电平状态来获知外部输入状态。例如,GPIO口的引脚上接入开关转换电路,STM32就可以通过检测GPIO口引脚是否为高电平来识别开关是否闭合。GPIO口作基本的输入/输出口使用时,可以以16位的方式并行输入/输出高低电平,每个引脚也可以以一位的方式输入/输出高低电平。1.初识GPIO口

GPIO口作基本的输入/输出口使用时,输入有:上拉输入、下拉输入、浮空输入(既无上拉也无下拉输入)3种输入方式。输出有:开漏输出、推挽输出2种输出方式。在STM32CubeMX中,这些输入/输出方式的表示如表所示。输入/输出模式STM32CubeMX中的表示说明上拉输入Pull-up

下拉输入Pull-down

浮空输入Nopull-upandnopulldown

开漏输出OutputOpenDrain需外部接上拉电阻才能输出高电平推挽输出OutputPushPullGPIO口输入/输出模式2.STM32的时钟源

时钟信号的作用是同步STM32内部各功能部件,使其按照统一的节拍协调工作,缺少了时钟信号,STM32就不能正常工作。时钟源是指时钟信号的来源。STM32有4个时钟源,分高频时钟源和低频时钟源2组,如图所示。STM32的时钟源2.STM32的时钟源

高频时钟源为STM32的主时钟源,它所产生的时钟信号经倍频和分频后形成系统时钟(SYSCLK),再经分频后为内部总线、定时器、串口、ADC等功能部件提供时钟信号。高频时钟源分内部高频时钟源(HSI)和外部高频时钟源(HSE)2种。STM32的时钟源2.STM32的时钟源

内部高频时钟源(HSI)为内部的高频RC振荡器,用来产生8MHz的时钟信号,RC振荡器起振快,但振荡频率的误差比较大,在频率误差要求不高的情况下可以选择内部高频时钟源(HSI)作为STM32的主时钟源。外部高频时钟源(HSE)为外部晶体振荡电路或陶瓷振荡电路,由OSC_IN引脚和OSC_OUT引脚之间所接的晶体振荡器或者陶瓷振荡器以及稳频电容构成。外部高频时钟源(HSE)用来产生频率精准的时钟信号,通常情况下其振荡频率选择8MHz。外部高频时钟源的频率精度高,STM32的主时钟源一般选择外部高频时钟源。STM32的时钟源2.STM32的时钟源

低频时钟源分内部低频时钟源(LSI)和外部低频时钟源(LSE)2种,主要是为内部实时钟控制器(RTC)、独立看门狗(IWDG)提供时钟信号。内部低频时钟源(LSI)为内部的低频RC振荡器,用来产生大约40KHz的时钟信号,其频率误差较大,主要是为独立看门狗(IWDG)提供时钟信号,也可以为内部实时钟控制器(RTC)提供时钟信号。外部低频时钟源(LSE)为外部的晶体振荡电路,由OSC32IN引脚和OSC32OUT引脚内部的放大电路以及这2个引脚上所接的晶振及稳频电容所构成,晶振的固有频率一般选32.768KHz。外部低频时钟源主要是为实时钟控制器提供时钟信号。STM32的时钟源3.STM32的程序启动模式

STM32的程序启动模式是指STM32复位后STM32从何处开始执行程序。STM32有3种程序启动模式,既可以从用户闪存中开始执行程序,也可以从系统存储器中开始执行程序,还可以从SRAM中开始执行程序。STM32的程序启动模式取决于BOOT0、BOOT1引脚的电平状态,它们之间的关系如表所示。BOOT0BOOT1启动模式说明0X用户闪存存储器复位后从FLASH存储器中启动,用于正常运行程序10系统存储器复位后从系统存储器中启动,用于串口下载11SRAM复位后从SRAM中启动,用于在SRAM中调试程序STM32的程序启动模式3.STM32的程序启动模式

用串口下载程序时,STM32的启动电路如图所示。图中,BOOT1通过电阻R2接地,BOOT1=0。BOOT0通过开关K1接VCC,同时通过电阻R3接地,K1闭合,BOOT0=1,STM32复位后从系统存储器中开始执行程序,STM32用串口下载程序。K1断开,BOOT0=0,STM32复位后从用户闪存中开始执行程序,STM32执行用户程序。由上可以看出,用串口下载程序的方法是,先闭合K1,然后复位STM32,待STM32下载完程序后再断开K1,最后再复位STM32。这样STM32就开始运行串口所下载的程序。STM32启动电路4.STM32的程序调试模式

STM32的程序调试模式有JTAG模式和SWD模式2种。JTAG是JointTestActionGroup的缩写,其含义是联合测试行动组,它是一种PCB和IC测试标准。标准的JTAG接口由JTMS、JTCK、JTDI、JTDO共4根线组成,它们的含义如右侧上表所示。SWD是SerialWireDebug的缩写,其含义是串行调试。SWD接口由SWDIO和SWDCLK共2根线组成,它们的含义如下表所示。在高速模式下SWD模式比JTAG更加可靠。所以,只要所选用的仿真器支持SWD调试模式,通常情况下用户就会选择SWD调式模式。接口线含义STM32中的引脚JTMS模式选择PA13JTCK时钟PA14JTDI数据输入PA15JTDO数据输出PB3接口线含义STM32中的引脚SWDIO串行数据输入输出线PA13SWDCLK串行时钟线PA14STM32的程序启动模式STM32的程序启动模式5.发光二极管的控制电路

发光二极管常用的控制电路如图所示。图a中,发光二极管LED1的阳极通过电阻R1接至正电源VCC,阴极接STM32的控制端PA0。PA0=0时,LED1亮,PA0=1时,LED1灭。即控制端口为低电平时,发光二极管亮。习惯上我们把这种发光二极管的控制叫低电平有效控制,简称为低有效控制。图b中,发光二极管LED1的阴极通过电阻R1接地,阳极接STM32的控制端口PA0。PA0=0时,LED1灭,PA0=1时,LED1亮,即控制端口为高电平时发光二极管点亮。这种控制叫高有效控制。图中,R1为限流电阻,用来保护发光二极管,R1的大小取决于发光二极管点亮时的电压降以及允许通过的电流,通常情况下取1KΩ的电阻。发光二极管的控制电路实现方法与步骤任务2的硬件电路:

1.搭建电路1.搭建电路图中,R1、C1和S1构成了STM32的复位电路,它们接在STM32的NRST引脚上。NRST引脚为STM32的复位脚,NRST=0时,STM32复位,NRST=1时,STM32正常工作。上电时,电源通过电阻R1对电容C1充电,由于电容两端电压不能突变,NRST端为低电平,STM32复位。过一段时间后,电容两端电荷充满,电容等效为开路,NRST端为高电平,STM32结束复位,开始运行程序。S1为复位按钮,按下S1,NRST端为低电平,STM32复位,同时释放C1两端电荷。断开S1后,电源通过电阻R1对电容C1充电,重复前面的上电复位过程。

任务2硬件电路图1.搭建电路R2、R3和K1为STM32的启动模式选择电路。K1闭合,BOOT0=1,BOOT1=0,按复位键S1,STM32运行系统存储器中的程序,STM32开始用串口下载程序,并将程序存放在FLASH存储器中。程序下载结束后断开K1,此时BOOT0=0,BOOT1=0,再按复位键S1,STM32运行FLASH存储器中的程序,即运行用串口所下载的程序。C2、C3、Y1、R4为晶体振荡电路,Y1为晶体振荡器,在电路中起反馈选频作用,它的固有频率即为振荡电路的频率。在主频振荡电路中Y1一般选用8MHz的晶体振荡器。R5~R12、LED1~LED8为8只发光二极管的控制电路,这8只发光二极管采用低有效控制。

任务2硬件电路图2.新建STM32CubeMX工程新建STM32CubeMX工程的方法如下:(1)在计算机的D盘新建“D:\ex”文件夹,用来保存各任务中的程序文件。(2)启动STM32CubeMX。双击桌面上的“”图标,打开如图所示的STM32CubeMX窗口。(3)新建工程。在STM32CubeMX窗口点击菜单栏上的【File】→【NewProject】菜单,打开新建工程对话框。

STM32CubeMX窗口2.新建STM32CubeMX工程(4)选择单片机第1步:在新建工程对话框中点击“MCU/MPUSelector”标签,然后在对话框左边的查找下拉列表框中输入开发板上所使用STM32的型号。本书配套开发板上所用的STM32为STM32VET6,所以应在查找下拉列表框中输入“STM32F103VE”,此时对话框右下方的“MCUs/MPUsList”列表中就会显示STM32F103VETx单片机,如图所示。

新建工程对话框2.新建STM32CubeMX工程(4)选择单片机第2步:用鼠标左键双击“MCUs/MPUsList”列表中的“STM32F103VETx”,打开如图所示的STM32CubeMX工程窗口。

STM32CubeMX工程窗口3.配置STM32的硬件资源(1)配置调试模式第1步:在工程窗口中单击“Pinout&Configuration”标签,然后点击左边的“Categories”标签,再在左边的列表框中点击“SystemCore”项,将“SystemCore”项展开。第2步:点击“SystemCore”项中的“SYS”子项,窗口的中间会展示出系统模式与配置窗口。第3步:系统模式与配置窗口中点击“Debug”下拉列表框,从展开的列表项中选择“SerialWire”列表项,将调试模式设置成串行线模式,此时窗口右边的引脚视图中的PA13、PA14引脚显绿色状,并且这2个引脚分别被配置成SYS_JTMS-SWDIO脚和SYS_JTCLK-SWCLK脚。

STM32CubeMX工程窗口3.配置STM32的硬件资源(2)选择高频时钟源第1步:在工程窗口中,点击左边列表框中的“RCC”列表项,窗口的中间会出现“RCCModeandConfiguration”(RCC模式与配置)窗口,如图所示。第2步:在RCC模式与配置窗口中点击“HighSpeedClock(HSE)”下拉列表框,从中选择“Crystal/CeramicResonator”列表项,即外部高速时钟为晶体/陶瓷谐振器,参考右图。

配置时钟源3.配置STM32的硬件资源(3)配置GPIO引脚从任务硬件电路可知,LED1~LED8采用低有效控制,本任务中需要将PE0~PE7配置成输出口。根据任务要求,应将PE口的PE0口输出低电平,其他7个引脚输出高电平,输出速度任意。配置PE0~PE7的方法如下:第1步:在工程窗口的引脚视图中,在右下角的查找引脚下拉列表框中输入引脚PE0(字符的大小写任意),然后按回车键Enter,此时引脚视图中的PE0引脚呈闪烁状态。然后单击引脚视图中的PE0引脚,在弹出的菜单中点击“GPIO_Output”菜单项,将PE0引脚设置为GPIO口的输出脚,如图所示。

设置PE03.配置STM32的硬件资源(3)配置GPIO引脚第2步:重复第1步,将PE1~PE7设置成输出脚。第3步:在工程窗口中,单击左边的“GPIO”列表项,窗口的中间就会出现GPIO口的模式与配置窗口,如右图所示。第4步:在图中单击GPIO口配置列表框中的PE0列表项,GPIO口配置列表框的下面就会出现“PE0Configuration”框架。第5步:在“PE0Configuration”框架中点击“GPIOoutputlevel”下拉列表框,从中选择“Low”,将PE0引脚的复位后的电平设置为低电平。配置GPIO口3.配置STM32的硬件资源(3)配置GPIO引脚第6步:按同样的方式将“GPIOmode”(GPIO口的模式)设置成“OutputPushPull”(推挽输出),将“GPIOPull-up/Pull-down”(GPIO口的上拉电阻和下拉电阻)设置成“NoPull-upandnopull-down”(无上拉电阻也无下拉电阻),将“Maximumoutputspeed”(最大输出速度)设置成“High”(高速)。配置GPIO口3.配置STM32的硬件资源(3)配置GPIO引脚第7步:重复第4步~第6步,将PE1~PE7引脚配置成输出高电平、推挽输出、既无上拉电阻也无下拉电阻,各引脚配置后的状态如右图所示。【说明】

GPIO配置窗口中允许将多引脚同时配置为相同的参数,以同时配置PE1~PE4这4个引脚为例,在GPIO口配置列表框点击PE1,然后按住Ctrl键后再点击PE2、PE3、PE4,PE1~PE4同时选中,然后在GPIO口配置列表框下面的Configuration框架中设置所选择GPIO的参数。各引脚配置后的状态3.配置STM32的硬件资源(4)配置时钟第1步:在STM32CubeMX的工程窗口中点击“ClockConfiguration”标签,进入时钟配置页面,如右图所示。第2步:设置外部高速时钟的时钟频率。在图所示的页面的“Inputfrequency”文本框中输入开发板上所接的晶振的频率,本例中晶振的频率为8MHz,所以此文本框中需输入8。第3步:点击“PLLSourceMux”(锁相环时钟源的多路开关)中的HSE单选钮,将锁相环的时钟源设置为外部高速时钟,此时PLL标签中将显示“8”。

时钟配置页面3.配置STM32的硬件资源第4步:单击“PLLMul”下拉列表框,将锁相环倍频系数设置成9。第5步:点击“SystemClockMux”(系统时钟多路选择开关)中的PLLCLK单选钮,将系统时钟的来源设置为锁相环时钟,此时SYSCLK标签中将显示“72”,表示此时系统时钟的频率为72MHz。第6步:单击“AHBPrescaler”下拉列表框,将AHB的预分频系统设置成1,此时HCLK(高性能总线时钟)的频率刚好为其最大值72MHz。第7步:单击“APB1Prescaler”下拉列表框,将APB1的预分频系统设置成2,此时PCLK1的频率刚好为其最大值36MHz。

【说明】

在时钟配置页面中,如果某处的时钟频率超过了其最大值,则对应的文本框将呈红色显示,此时修改其对应的分频系数或倍频系数。时钟配置页面4.管理STM32CubeMX工程步骤第1步:在STM32CubeMX的工程窗口中点击“ProjectManager”标签,进入工程管理页面。第2步:在页面的“ProjectName”文本框中输入工程名“Task2”,然后单击“ProjectLocation”下面的“Browse”按钮,打开“ChooseProjectFolder”对话框,在对话框中选择保存工程的文件夹“D:\ex”,此时“ProjectLocation”下面的文本框中将显示保存工程文件的文件夹“D:\ex”。工程管理页面4.管理STM32CubeMX工程第3步:单击“Toolchain/IDE”下拉列表框,从中选择我们后面进行STM32开发时所用的开发工具“MDK-AMRV5”,即Keil5。其他的项选择默认值。第4步:在右图所示的工程管理页面中,单击页面左边的“CodeGenerator”标签,页面的右边就会显示代码生成器的配置选项。

工程管理页面4.管理STM32CubeMX工程第5步:在右图的页面中,单击“Copyonlythenecessarylibraryfiles”(只复制必要的库文件)单选钮。第6步:在“Generatedfiles”框架中勾选“Generateperipheralinitializationasapairof‘.c/.h’filesperperipheral”复选框,使STM32CubeMX在生成代码时为每个外设生成一对‘.c/.h’的外设初始化文件。第7步:在窗口中单击菜单栏上的“File”→“SaveProject”菜单项,或者按快捷键Ctrl+S,保存工程文件。代码生成器配置5.生成Keil工程代码步骤(1)在STM32CubeMX工程窗口中单击“GENERATECODE”按钮,STM32CubeMX将会按照用户的配置要求生成C语言程序代码,并显示代码生成的进度,如右侧上图所示。代码生成结束后会出现如下图所示的代码生成提示框。(2)在代码生成提示框中单击“OpenProject”按钮,系统就会调用Keil5,并打开当前所生成的工程。(3)关闭STM32CubeMX工程窗口。产生代码代码生成提示框5.生成Keil工程代码步骤(4)在Keil5集成开发环境中,单击“Project”窗口中“Application/User”文件夹前面的“+”号,打开文件夹,找到main.c文件名,然后双击main.c文件名,集成开发环境的右边窗口中就会显示main.c文件的内容,如下图所示。打开main.c文件6.配置Keil工程步骤Keil工程的配置主要是配置Keil的输出文件。目的是,让Keil工程编译时能产生STM32的执行文件(Hex文件),以便后续用串口将此Hex文件下载至STM32中。第1步:在Keil窗口中单击目标选项图标按钮“”,打开如右图所示的“OptionforTarget”对话框。第2步:在“OptionforTarget”对话框中单击“Output”标签,进入Output页面。“OptionforTarget”对话框6.配置Keil工程步骤第3步:在Output页面中勾选“CreateHEXFile”复选框。如果要修改hex文件存放的位置,则可点击Output页面中“SelectfolderforObject”按钮,然后在弹出的对话框中选择hex文件存放的位置。第4步:在“OptionforTarget”对话框中单击“OK”按钮,完成输出文件的配置。Output页面7.编译连接程序配置好工程后就可以进行编译、连接了,以便生成STM32可以直接执行的16进制文件(HEX文件)。编译、连接的方法是,在Keil工程窗口中,单击图标工具栏上的重新编译连接图标按钮“”,如右图所示。这时,Keil窗口下面的“BuildOutput”窗口中会显示编译信息,如果源程序中存在语法上的错误,输出窗口中将会有错误报告出现,双击错误报告行,可以定位到出错的位置。对源程序反复修改后最终会得到如右图所示的结果。提示生成了Hex文件错误数报告编译连接重新连接BuildOutput窗口Keil工程窗口8.下载程序程序下载有用仿真器下载、用串口下载等多种方式,用仿真器下载程序适用于手中有源程序的情况,用串口下载程序常用于手中无仿真器或者没有源程序而只有Hex文件的情况。任务2中我们用串口下载程序,下载软件为mcuisp,下载程序的方法如下:第1步:按照前面介绍的方法编译连接程序。第2步:用USB线连接计算机与开发板,并给开发板上电。第3步:在开发板上将程序运行模式开关拔至“接VCC”位置,即使K1处于闭合状态,也就是STM32复位后从系统存储器中启动程序。第4步:按开发板上的复位键,让STM32复位,STM32就从系统存储器中启动程序。第5步:按照任务1中所介绍的方法查看USB口映射的串口号,并记录其串口号。

8.下载程序第6步:在文件夹中找到“mcuisp.exe”文件,然后双击“mcuisp.exe”文件,打开mcuisp工作窗口。第7步:在mcuisp工作窗口中点击菜单栏上的“Port”菜单,“Port”菜单中就会以子菜单的形

温馨提示

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

评论

0/150

提交评论