ARM Cortex-M3嵌入式开发及应用教与学 课件 第3、4章 STM32F103学习平台;LED灯控制与KEIL MDK工程框架_第1页
ARM Cortex-M3嵌入式开发及应用教与学 课件 第3、4章 STM32F103学习平台;LED灯控制与KEIL MDK工程框架_第2页
ARM Cortex-M3嵌入式开发及应用教与学 课件 第3、4章 STM32F103学习平台;LED灯控制与KEIL MDK工程框架_第3页
ARM Cortex-M3嵌入式开发及应用教与学 课件 第3、4章 STM32F103学习平台;LED灯控制与KEIL MDK工程框架_第4页
ARM Cortex-M3嵌入式开发及应用教与学 课件 第3、4章 STM32F103学习平台;LED灯控制与KEIL MDK工程框架_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

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

文档简介

ARMCortex-M3嵌入式控制技术

——基于STM32F103RCT6

STM32F103硬件系统与KEILMDK工程第三章

STM32F103学习平台1STM32F103核心电路2电源电路与按键电路3

LED与蜂鸣器驱动电路4串口通信电路5FLASH与EEPROM电路6温湿度传感器电路7LCD屏接口电路8JTAG与复位电路9声码器电路3.1STM32F103核心电路本书使用的计算机配置为IntelCoreI9-13900K处理器、32GB内存、1TB硬盘、32寸液晶显示屏和Windows11操作系统,现有流行的计算机配置均可实现本书的学习与实验工作。STM32F103学习实验平台:STM32F103RCT6学习实验板实现了以下功能:5集成电源指示LED灯;具有复位按键;具有1个串口,可与计算机串口相连;支持SWD串行仿真调试;具有2个GPIO口直接相连的用户按键输入;具有3个GPIO口驱动的LED灯和1个蜂鸣器;具有ZLG7289B芯片驱动的8个LED灯、16个按键和1个四合一七段数码管(带时间显示);具有1个DS18B20温度传感器;具有1个240×320点阵彩色TFT型LCD屏,带有电阻式触摸屏;支持1个ADC输入口;具有1个128KB的EEPROM存储器AT24C128;具有1个64Mb的Flash存储器W25Q64;具有SYN6288声码器;+5V单电源供电。STM32F103RCT6核心电路63.2电源电路与按键电路3.3LED与蜂鸣器驱动电路JTAG电路和复位电路可视为STM32F103RCT6微控制器的最小系统,即STM32F103RCT6微控制器的最小系统应包括电源电路、用户按键电路、LED灯指示电路、复位电路(可内部复位)、晶体振荡器电路(可省略)和相应的STM32F103RCT6芯片核心电路。3.4串口通信TM32F103RCT6芯片的PA2和PA3通过网标TXD232和RXD232与芯片ST3232的T2IN和R2OUT相连接。ST3232电平转换芯片支持2路串口,图中仅使用了一路,J1为DB9接头,通过串口线与计算机的串口相连实现异步串行通信。3.5FLASH与EEPROM电路EEPROM芯片AT24C128电路FLASH芯片W25Q64电路3.6温度传感器电路温度传感器DS18B20接口电路3.7复位电路、JTAG和ADC电路SWD串行调试只需要占用数据和时钟两个端口JTAG接口J5通过网标SWDIO和SWCLK与STM32F103RCT6芯片的SWDIO(PA13)和SWCLK(PA14)管脚相连接。3.8ZLG7289B电路TM32F103RCT6学习板上集成了一片ZLG7289B芯片,通过ZLG7289B可以驱动多个用户按键和LED灯。一片ZLG7289B最多可同时驱动64个按键和64个LED灯,在STM32F103RCT6学习板上,使用ZLG7289B驱动了16个按键、8个LED灯和1个四合一七段数码管。ZLG7289B电路-I3.8ZLG7289B电路ZLG7289B电路-IIZLG7289B电路-III3.8ZLG7289B电路ZLG7289B电路-IVZLG7289B电路-VZLG7289B模块与STM32F103RCT6间有5个连接,即图3-2中的网标7289INT、7289CLK、7289CS、7289DIO和USER_D3D4,占用了STM32F103RCT6的5个GPIO口,这里依次使用了PA12、PA11、PA8、PA13和PB103.9LCD屏接口电路STM32F103RCT6学习板上集成了一块240×320像素分辨率TFT型LCD屏和一块电阻式触摸屏,其与STM32F103RCT6的电路连接如图所示。3.10声码器电路STM32F103RCT6学习板集成了一块SYN6288声码器,通过串口向其发送文本信息,声码器实现TTS(TexttoSpeech:文本转化为语音)变换,其电路原理如图所示。3.11参考电路板使用AltiumDesigner绘制了PCB图,并制作了STM32F103RCT6学习板,选取了一块没有焊装器件的电路板在绘图所示电路板时,请注意:19电源线、地线的宽度应在20mil以上;信号线宽度在6mil以上,且长度不应超过7cm;过孔的外径应大于24mil,内径应大于12mil,内外径差值不少于12mil;接插件应根据实际器件的针脚粗细设计内径,一般接插件的内径应为0.9mm;在PCB布局、布线完成后,应覆铜,且应使模拟地和数字地的铜皮在一点相连接;电阻和电容建议选用0805贴片封装(除少数电解电容外);电路板上的标号应按从左向右或从下向上的方向摆放。thankyou第四章

LED灯控制与KEILMDK工程框架目录STM32F103通用目的输入输出口STM32F103库函数用法KeilMDK工程框架LED灯闪烁实例本章小结本章将介绍STM32F103RCT6微控制器的通用目的输入/输出口(GPIO)及其相关的寄存器,阐述STM32F103库函数访问GPIO口的方法,讲述KeilMDK集成开发环境的应用技巧和工程框架设计,最后借助LED灯的闪烁实例详细说明GPIO口的具体操作方法。而库函数类型程序设计方法本质上也是采用了寄存器类型程序设计方法,但是STM32芯片开发商(意法半导体)设计了访问各种寄存器的库函数,使得应用STM32F103RCT6微控制器的程序开发人员通过调用库函数实现相应的外设控制功能,而无需关心片上外设相关的寄存器及其地址。2STM32F103RCT6微控制器有两种程序设计方法,即寄存器类型程序设计方法和库函数类型程序设计方法。寄存器类型程序设计方法类似于传统的单片机程序设计方法,借助于芯片的寄存器地址访问寄存器,通过访问寄存器实现相应的控制功能。4.1STM32F103通用目的输入输出口34STM32F103RCT6微控制器具有3个16位的GPIO口,记为Px(x=A,B,C),以及1个3位的GPIO口,记为PD,共占用了51个引脚,每根GPIO端口引脚的内部结构如下图所示。STM32F103通用目的输入输出口5由上图中的3个“开关”和“输出控制”可知,GPIO端口具有以下工作模式:(1)输入悬空(开关1和开关2均打开);(2)输入上拉有效(开关1闭合、开关2打开);(3)输入上拉和下拉均有效模式(开关1和开关2均闭合);(4)模拟输入(开关1和开关2均打开、开关3关闭);(5)输出开漏方式(当输出高电平时,“输出控制”关闭P-MOS管和N-MOS管;当输出低电平时,“输入控制”关闭P-MOS管并打开N-MOS管);STM32F103通用目的输入输出口6(6)输出推挽方式(当输出高电平时,“输出控制”打开P-MOS管并关闭N-MOS管;当输出低电平时,“输出控制”关闭P-MOS管并打开N-MOS管);(7)替换功能输入(开关1、开关2和开关3均关闭);(8)替换功能推挽输出(当输出高电平时,“输出控制”打开P-MOS管并关闭N-MOS管;当输出低电平时,“输出控制”关闭P-MOS管并打开N-MOS管)。(9)替换功能开漏输出(当输出高电平时,“输出控制”关闭P-MOS管和N-MOS管;当输出低电平时,“输出控制”关闭P-MOS管并打开N-MOS管)STM32F103通用目的输入输出口7每个GPIO口具有7个寄存器,即2个32位的配置寄存器(GPIOx_CRL和GPIOx_CRH)、2个32位的数据寄存器(GPIOx_IDR和GPIOx_ODR),1个32位的置位/清零寄存器(GPIOx_BSRR)、1个16位的清零寄存器(GPIOx_BRR)和1个32位的配置锁定寄存器(GPIOx_LCKR),这里x=A,B,C,D。端口配置寄存器GPIOx_CRL和GPIOx_CRH,分别如下面两张图所示:GPIO寄存器832位的端口置位/清零寄存器GPIOx_RSRR(偏移地址0x10,复位值为0x0),可以单独置位或清零某个GPIO管脚。GPIOx_RSRR高16位的每位记为BRy(y=0,1,...,15),低16位的每位记为BSz(z=0,1,...,15),如下图所示。GPIO寄存器9配置锁定寄存器GPIOx_LCKR(偏移地址0x18,复位值为0x0),用于锁定配置寄存器GPIOx_CRL和GPIOx_CRH的值,如下图所示。GPIO寄存器10APB2外设复位寄存器RCC_APB2RSTR(复位值为0x0)和APB2外设时钟有效寄存器RCC_APB2ENR(复位值为0x0)分别如下面两张图所示。GPIO寄存器11AFIO寄存器的基地址为0x40010000,STM32F103RCT6共包括7个AFIO寄存器(复位值均为0x0),即事件控制寄存器AFIO_EVCR(偏移地址0x0)、替换功能重映射寄存器AFIO_MAPR(偏移地址0x04)、外部中断配置寄存器AFIO_EXTICR1(偏移地址0x08)、外部中断配置寄存器AFIO_EXTICR2(偏移地址0x0C)、外部中断配置寄存器AFIO_EXTICR3(偏移地址0x10)、外部中断配置寄存器AFIO_EXTICR4(偏移地址0x14)和替换功能重映射寄存器AFIO_MAPR2(偏移地址0x1C)。下面依次详细介绍这些寄存器各位的含义。AFIO寄存器12事件控制寄存器AFIO_EVCR,如下表所示。AFIO寄存器13替换功能重映射寄存器AFIO_MAPR如下表所示。AFIO寄存器14外部中断配置寄存器AFIO_EXTICR1、AFIO_EXTICR2、AFIO_EXTICR3和AFIO_EXTICR4的含义如下表所示。AFIO寄存器4.2STM32F103库函数用法1516了解了STM32F103RCT6的GPIO寄存器,就可以操作GPIO口了。例如,令PB5(即GPIOB的第5脚)输出高电平,可以使用语句“GPIOB->ODR|=(1uL<<5);”或“GPIOB->BSRR=(1uL<<5);”实现。这里的GPIOB是定义在文件stm32f10x.h中的结构体指针,如右面的程序段所示。STM32F103库函数用法17事实上,文件stm32f10x.h中宏定义了STM32F103RCT6微控制器的各种片内外设的寄存器结构体指针,可以直接使用。文件stm32f10x.h是由KeilMDK自动产生的。如果不使用stm32f10x.h文件中的寄存器结构体指针,则需要自行定义各个寄存器,例如,对于地址为0x40010C0C的寄存器GPIOB_ODR,如下面的程序段所示。STM32F103库函数用法18除了寄存器类型程序外,STM32F103还支持一种抽象的程序类型,称为借助库函数的工程程序,简称库函数类型程序。库函数相关的文件如下表所示。STM32F103库函数用法19库函数全部的文件都是开源的C语言代码,常量定义和函数声明位于.h文件中,函数体位于.c文件中。例如,在stm32f10x_gpio.h中有以下宏定义语句和函数声明:STM32F103库函数用法而在相应的stm32f10x_gpio.c文件中有以下函数:4.3KeilMDK工程框架2021本书使用了KeilMDKv5.39集成开发环境(官网),是截止本书收官时的最新版本,本书中的全部工程都可以使用于KeilMDKv5.39及其后续版本。KeilMDK工程框架22KeilMDK工程框架23KeilMDK工程框架24KeilMDK工程框架25KeilMDK工程框架4.4LED灯闪烁实例2627在STM32F103RCT6学习板上集成了3个LED灯,下如图所示。由图可知,LED灯D9由PB2控制,LED灯D10由PD2控制,LED灯D11由PB7控制。下面介绍LED灯闪烁控制的工程设计实例。LED灯闪烁实例28对于STM32F103RCT6学习板而言,将下面的程序段中的函数替换系统文件system_stm32f10x.c中的同名函数SetSysClockTo72,将芯片的工作时钟调整到64MHz。LED灯闪烁实例29LED灯闪烁实例“工程管理器”中的分组名与子文件夹的名称是相同的,但是二者没有联系,分组名可以使用各种符号和汉字。30下面依次介绍工程PRJ01中的各个文件。LED灯闪烁实例31LED灯闪烁实例32LED灯闪烁实例33LED灯闪烁实例由下图所示,工程PRJ01上电复位后,首先执行位于文件system_stm32f10x.c中的SystemInit函数,用于将STM32F103RCT6的时钟由8MHz调整到64MHz;然后转到main函数执行;进入到main函数后,首先调用LEDInit函数初始化LED灯的控制;接着进入无限循环体,依次循环执行“LED灯D9亮、D10灭、D11亮——延时约1秒——LED灯D9灭、D10亮、D11灭——延时约1秒”。其中,各个LED灯的亮和灭是由main函数调用led.c文件中的LED函数实现的,延时函数Delay位于主文件main.c中,由for循环实现

温馨提示

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

评论

0/150

提交评论