版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录CONTENTS1234输入/输出01STM32F407的GPIO02
STM32F407GPIOHAL库函数0302第三章通用输入/输出口GPIO实例04知识、能力、素质目标阐述输入/输出模块的相关概念阐述STM32F407的GPIO构成说明STM32F407GPIO的HAL库函数说明GPIO的开发流程知识目标通过实例实践,培养学生的动手能力和解决问题的能力。强调团队合作和沟通的重要性,让学生在实践中学会与他人协作完成任务。鼓励学生进行创新性思考和探索,将GPIO应用于更多领域,提升创新能力和实践技能。素质目标运用STM32CubeMX软件配置GPIO工程运用KeilMDK软件编写程序,并进行分析运用Proteus软件搭建GPIO仿真电路设计基于GPIO的实例能力目标目标输入/输出01
嵌入式系统的输入/输出(Input/Output,I/O)是系统与外界环境或内部组件之间进行数据交换的关键部分。在嵌入式系统中,I/O扮演着至关重要的角色,它使得系统能够接收来自外部设备(如传感器、键盘等)的输入信息,并通过输出设备(如显示器、电机等)将处理结果反馈给外部环境。3.1输入/输出1.2.嵌入式系统输入/输出口的概念嵌入式系统的I/O设备
嵌入式系统的I/O设备种类繁多,包括但不限于数字I/O、模拟I/O、串口通信、并口通信、网络通信等。这些设备通过特定的接口与嵌入式处理器相连,实现数据的传输和控制。
嵌入式系统的I/O是系统与外界环境交互的窗口,其性能和可靠性直接影响到整个系统的功能和性能。因此,在嵌入式系统设计中,要重视I/O设备的选择和驱动程序的开发。3.4.连接的桥梁交互的窗口
在嵌入式系统设计中,I/O驱动是连接硬件设备和软件系统的桥梁。驱动程序负责控制硬件设备的工作状态,如初始化设备、读写数据、处理中断等。为了实现高效的I/O操作。此外,嵌入式系统的I/O操作还涉及到数据缓冲、中断处理、同步与互斥等复杂问题。STM32F407的GPIO02STM32F407的GPIO高度的灵活性和可配置性GPIO引脚配置:启用对应GPIO的时钟配置GPIO的引脚使能GPIO编写业务逻辑STM32F407的GPIO引脚被分成多个组,每组包含一定数量的引脚,便于管理和配置。如控制LED灯的亮灭或驱动继电器等,在输入模式下,GPIO引脚可以检测外部电平信号,用于读取按键状态或接收外部设备的信号。STM32F407的GPIO支持多种工作模式,包括浮空输入、上拉输入、下拉输入、模拟输入、开漏输出、推挽输出、复用开漏输出和复用推挽输出等。GPIO引脚内置了保护二极管和上下拉电阻等保护机制,以防止引脚受到过高或过低的电压冲击,从而保护芯片免受损坏。总线起始地址外设AHB30xA0000000-0xA0000FFFFSMC控制寄存器0x90000000-0x9FFFFFFFFSMCbank40x80000000-0x8FFFFFFFFSMCbank30x70000000-0x7FFFFFFFFSMCbank20x60000000-0x6FFFFFFFFSMCbank1AHB20x50060800-0x50060BFFRNG0x50050400-0x500607FFHASH0x50050000-0x500503FFDCMI0x50060000-0x500603FFCRYP0x50000000-0x5003FFFFUSBOTGFSAHB10x40040000-0x4007FFFFUSBOTGHS0x4002B000-0x4002BBFFDMA2D0x40028000-0x400293FF以太网MAC0x40026400-0x400267FFDMA20x40026000-0x400263FFDMA10x40024000-0x40024FFFBKPSRAM0x40023C00-0x40023FFF闪存接口寄存器0x40023800-0x40023BFFRCC0x40023000-0x400233FFCRC0x40022800-0x40022BFFGPIOKAHB10x40022400-0x400227FFGPIOJ0x40022000-0x400223FFGPIOI0x40021C00-0x40021FFFGPIOH0x40021800-0x40021BFFGPIOG0x40021400-0x400217FFGPIOF0x40021000-0x400213FFGPIOE0x40020C00-0x40020FFFGPIOD0x40020800-0x40020BFFGPIOC0x40020400-0x400207FFGPIOB0x40020000-0x400203FFGPIOA总线起始地址外设AHB30xA0000000-0xA0000FFFFSMC控制寄存器0x90000000-0x9FFFFFFFFSMCbank40x80000000-0x8FFFFFFFFSMCbank30x70000000-0x7FFFFFFFFSMCbank20x60000000-0x6FFFFFFFFSMCbank1AHB20x50060800-0x50060BFFRNG0x50050400-0x500607FFHASH0x50050000-0x500503FFDCMI0x50060000-0x500603FFCRYP0x50000000-0x5003FFFFUSBOTGFSAHB10x40040000-0x4007FFFFUSBOTGHS0x4002B000-0x4002BBFFDMA2D0x40028000-0x400293FF以太网MAC0x40026400-0x400267FFDMA20x40026000-0x400263FFDMA10x40024000-0x40024FFFBKPSRAM0x40023C00-0x40023FFF闪存接口寄存器0x40023800-0x40023BFFRCC0x40023000-0x400233FFCRC0x40022800-0x40022BFFGPIOKAHB10x40022400-0x400227FFGPIOJ0x40022000-0x400223FFGPIOI0x40021C00-0x40021FFFGPIOH0x40021800-0x40021BFFGPIOG0x40021400-0x400217FFGPIOF0x40021000-0x400213FFGPIOE0x40020C00-0x40020FFFGPIOD0x40020800-0x40020BFFGPIOC0x40020400-0x400207FFGPIOB0x40020000-0x400203FFGPIOASTM32F407系列寄存器组起始地址3.2.1STM32F407GPIO寄存器数据寄存器GPIOx_MODER寄存器用于选择GPIO方向(输入、输出、AF、模拟)。GPIOx_OTYPER寄存器用于选择输出类型(推挽或开漏)GPIOx_OSPEEDR寄存器用于选择输出速度
无论采用GPIO用于输入还是输出,GPIOx_PUPDR寄存器都用于选择上拉/下拉电阻。——每个GPIO有4个32位存储器映射的配置寄存器,可配置多达
16个GPIO配置寄存器——每个GPIO都具有
2个32位数据寄存器:输入和输出数据寄存器GPIOx_ODR用于存储待输出数据,可对其进行读/写访问。通过GPIO输入的数据存储到输入数据寄存器(GPIOx_IDR)中,为只读寄存器。置位复位寄存器(GPIOx_BSRR)——一个32位寄存器,它允许应用程序在输出数据寄存器(GPIOx_ODR)中对各个单独的数据位执行置位和复位操作。置位复位寄存器的大小是GPIOx_ODR的二倍。GPIOx_ODR中的每个数据位对应于GPIOx_BSRR中的两个控制位:BSRR(i)和BSRR(i+SIZE)。如果在GPIOx_BSRR中同时尝试对某个位执行置位和清零操作,则置位操作优先。GPIOx_BSRR寄存器允许对GPIO进行原子操作(原子操作是指不会被中断的操作,在多任务环境下非常重要)。锁定寄存器复用功能寄存器——GPIO锁定寄存器GPIOx_LCKR用于锁定GPIO的配置,以防止意外更改一旦锁定寄存器被设置,GPIO的配置就不能再被更改,除非先解锁该寄存器。GPIOx_LCKR是一个32位的寄存器。它的每一位都对应于一个GPIO引脚,当某一位被设置为1时,对应的GPIO引脚配置就被锁定。——GPIO复用功能低位寄存器(GPIOx_AFRL)和GPIO复用功能高位寄存器(GPIOx_AFRH)GPIOx_AFRL和GPIOx_AFRH用于每个GPIO可用的16个复用功能中进行选择。GPIOx_AFRL寄存器用于选择GPIO低8位的复用功能,GPIOx_AFRH寄存器用于选择GPIO高8位的复用功能。由于复用选择信号由复用功能输入和复用功能输出共用,所以只需为每个GPIO的复用功能输入/输出选择一个通道即可。3.2.2STM32F407GPIO引脚模式GPIO位的基本结构1.输入/输出模式浮空输入:数字输入,读取引脚电平,若引脚悬空,则电平不确定上拉输入:数字输入,读取引脚电平,内部连接上拉电阻,悬空时默认高电平下拉输入:数字输入,读取引脚电平,内部连接下拉电阻,悬空时默认低电平模拟输入:数字输入,GPIO无效,引脚直接接入内部ADC开漏输出:数字输出,输出引脚电平,高电平为高阻态,低电平接VSS推挽输出:数字输出,输出引脚电平,高电平接VDD,低电平接VSS复用开漏输出:数字输出,由片上外设控制,高电平为高阻态,低电平接VSS复用推挽输出:数字输出,由片上外设控制,高电平接VDD,低电平接VSS
在复位期间及复位刚刚完成后,复用功能尚未激活,GPIO被配置为输入浮空模式。复位后,调试引脚处于复用功能上拉/下拉状态:引脚PA15为JTDI处于上拉状态;引脚PA14为JTCK/SWCLK处于下拉状态;引脚PA13为JTMS/SWDAT处于下拉状态;引脚PB4为NJTRST处于上拉状态;引脚PB3为JTDO处于浮空状态。GPIO作为输入时01
输出缓冲器被关闭,施密特触发器输入被打开,根据GPIOx_PUPDR寄存器中的值决定是否打开上拉和下拉电阻,输入数据寄存器每隔1个AHB1时钟周期对GPIO引脚上的数据进行一次采样,对输入数据寄存器的读访问可获取GPIO状态。
GPIO作为输出时02
GPIO作为输出时,输出缓冲器被打开,开漏模式输出为低电平时N-MOS导通,而输出为高电平时端口保持高组态(P-MOS断开),推挽模式输出低电平时N-MOS导通,而输出高电平时P-MOS导通,施密特触发器输入被打开,根据GPIOx_PUPDR寄存器中的值决定是否打开弱上拉电阻和下拉电阻,输入数据寄存器每隔1个AHB1时钟周期对GPIO引脚上的数据进行一次采样,对输入数据寄存器的读访问可获取GPIO状态,对输出数据寄存器的读访问可获取最后的写入值。GPIO位的输出配置2.STM32F407GPIO的复用及模拟模式
GPIO通过多路复用器,只允许一个外设的复用功能连接到GPIO引脚一次,因而,共享同一GPIO引脚的外围设备之间就不会发生冲突。每个GPIO引脚都有一个多路复用器,该多路复用器具有16个复用功能输入(AF0至AF15),可以通过GPIOx_AFRL(用于引脚0至7)和GPIOx_AFRH(用于引脚8至15)进行配置寄存器。重置后,所有GPIO都连接到系统的复用功能0(AF0);外围设备的复用功能从AF1映射到AF13;Cortex-M4FEVENTOUT映射在AF15上。GPIO引脚复用功能选择STM32F407引脚复用功能选择GPIO位的复用功能配置对于ADC和DAC,在GPIOx_MODER寄存器中将所需GPIO配置为模拟通道。对于其他外设,在GPIOx_MODER寄存器中将所需GPIO配置为复用功能,通过GPIOx_OTYPER、GPIOx_PUPDR和GPIOx_OSPEEDER寄存器,分别选择类型、上拉/下拉以及输出速度,在GPIOx_AFRL或GPIOx_AFRH寄存器中,将GPIO连接到所需AFx。对GPIO端口作为复用功能时,可将输出缓冲器配置为开漏或推挽,输出缓冲器由来自外设的信号驱动(发送器使能和数据),施密特触发器输入被打开,根据GPIOx_PUPDR寄存器中的值决定是否打开弱上拉电阻和下拉电阻,输入数据寄存器每隔1个AHB1时钟周期对GPIO引脚上的数据进行一次采样,对输入数据寄存器的读访问可获取GPIO状态。GPIO位的复用功能配置GPIO位的高阻态模拟输入配置GPIO位的高阻态模拟输入配置
对GPIO端口作为模拟配置时,输出缓冲器被禁止,施密特触发器输入停用,GPIO引脚的每个模拟输入的功耗变为零,施密特触发器的输出被强制处理为恒定值0,弱上拉和下拉电阻被关闭,对输入数据寄存器的读访问值为“0”。STM32F407GPIOHAL库函数03函数名功能描述HAL_GPIO_Init初始化GPIO引脚HAL_GPIO_DeInitGPIO引脚恢复为默认状态HAL_GPIO_ReadPin读取GPIO引脚的电平状态HAL_GPIO_WritePin设置GPIO引脚的电平状态HAL_GPIO_TogglePin翻转GPIO引脚的电平状态HAL_GPIO_LockPin锁定GPIO引脚的状态,防止其被更改STM32F407GPIOHAL库函数
STM32F407GPIOHAL库函数一览01
初始化GPIO引脚函数原型:VoidHAL_GPIO_Init(GPIO_TypeDef*GPIOx,GPIO_InitTypeDef*GPIO_Init),初始化指定的GPIO引脚。参数:GPIOx指定要初始化的GPIO;GPIO_Init提供初始化GPIO引脚所需的各种配置参数。返回值:无。结构体GPIO_InitTypeDef成员:Mode设置引脚的工作模式,如输入、输出、复用功能、外部中断等Alternate当引脚配置为复用功能时,指定要连接的外设Pull配置引脚的上下拉电阻Speed设置引脚的速度等级Pin指定要配置的引脚03
读取GPIO引脚电平状态04
设置GPIO引脚电平状态函数原型:GPIO_PinStateHAL_GPIO_ReadPin(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin),读取指定的GPIO引脚电平状态。参数:GPIOx指定要读取的GPIO,GPIO_Pin指定要读取的引脚。返回值:引脚的电平状态,GPIO_PIN_SET表示高电平,GPIO_PIN_RESET表示低电平。函数原型:voidHAL_GPIO_WritePin(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin,GPIO_PinStatePinState),设置指定的GPIO引脚的电平状态。参数:GPIOx指定要设置的GPIO,GPIO_Pin指定要设置的引脚,PinState要设置的电平状态(GPIO_PIN_SET设置高电平,GPIO_PIN_RESET设置低电平)。返回值:无。02GPIO引脚恢复默认状态
函数原型:voidHAL_GPIO_DeInit(GPIO_TypeDef*GPIOx,uint32_tGPIO_Pin),将指定的GPIO引脚恢复为默认状态。
参数:GPIOx指定要恢复的GPIO,GPIO_Pin指定要恢复的引脚。
返回值:无。06
锁定GPIO引脚的电平状态05
翻转GPIO引脚的电平状态函数原型:voidHAL_GPIO_TogglePin(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin),翻转指定的GPIO引脚的电平状态。参数:GPIOx指定要翻转的GPIO,GPIO_Pin指定要翻转的引脚。返回值:无。函数原型:HAL_StatusTypeDefHAL_GPIO_LockPin(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin),锁定指定的GPIO引脚的状态,防止其被更改。参数:GPIOx指定要锁定的GPIO,GPIO_Pin指定要锁定的引脚。返回值:HAL_OK表示函数执行成功,HAL_ERROR表示函数执行失败,HAL_BUSY表示函数当前正忙,HAL_TIMEOUT表示函数执行超时。GPIO实例04STM32CubeMX工程GPIO实例KeilMDK程序Proteus仿真电路实例要求:通过按键控制发光二极管闪烁。通过GPIO引脚输出高低电平控制发光二极管,并通过改变高低电平的时间间隔实现二极管闪烁。3.4.1STM32CubeMX工程01
创建新工程双击软件图标启动STM32CubeMX软件。STM32CubeMX软件界面如图所示,在菜单列表中选中File选项卡,并单击NewProject创建新项目。STM32CubeMX软件界面STM32CubeMX新工程界面STM32CubeMX新工程界面如图所示。新工程需要确定所使用的芯片型号,在CommercialPartNumber框中输入使用的芯片型号,例如输入STM32F407V,检索出与输入关键词相近且封装不同的芯片型号,选择所用的芯片型号STM32F407VET6。单击右上角StartProject,在Pinout&Configuration界面中给出STM32F407VET6芯片引脚视图如图所示。Pinout&Configuration界面选择左侧SystemCore中的SYS选项卡,SYSModeandConfiguration配置如图所示,Debug选项卡中选择SerialWire。SYSModeandConfiguration配置02
配置系统时钟芯片的时钟源通过选择RCC设置,选择SystemCore中的RCC。配置高速外部时钟和低速外部时钟。RCCModeandConfigurationClockConfiguration单击ClockConfiguration选项页实例选用16M内部高速时钟HSI,外部时钟源输入频率(InputFrequency)取值范围为4-26MHz,输入设置频率为8MHz。在HCLK(MHz)框中输入16后回车,系统自动完成系统时钟配置。GPIOPA0工作模式功能图03
配置GPIO引脚工作模式单击Pinout&Configuration选项卡,配置GPIOPA0引脚工作模式。本节实例通过单个GPIO引脚输出高低电平控制发光二极管,并通过改变高低电平的时间间隔实现二极管闪烁,因而将PA0引脚工作模式配置为输出功能(GPIO_Output)。04GPIO引脚参数配置选择SystemCore中的GPIO选项卡,配置PA0引脚详细参数。本节实例将PA0引脚配置为高电平输出、推挽式输出模式、电阻上拉、高速输出,引脚标签为LED。GPIOModeandConfiguration界面将PA1引脚配置为输入功能(GPIO_Input)将PA1引脚配置为电阻上拉,引脚标签为key。PA1引脚配置PA1引脚配置
配置工程参数05
工程管理单击ProjectManager选项页,配置工程参数。在ProjectName里输入项目名称;ProjectLocation为当前工程的存放路径;Toolchain/IDE选择MDK-ARM;MinVersion选择版本为V5.32。单击左侧的CodeGenerator选项卡,代码生成器参数配置。代码生成器参数配置参数设置完成后单击GenerateCode,代码生成提示框如图所示。生成源代码代码生成提示框3.4.2KeilMDK程序KeilMDK工程文件界面如图,单击左侧工程目录树中Application/User/Core文件下的main.c文件,然后右侧显示main.c文件源代码。KeilMDK工程文件界面
通过STM32CubeMX软件配置,工程文件的相关外设配置代码已大部分生成。配置指定的GPIO引脚,包括引脚号、模式(输入、输出、复用功能、模拟等)、速度、上拉/下拉电阻等,并初始化GPIO时钟,使能GPIO的时钟,以便能够对其进行配置配置STM32微控制器的时钟系统,包括内部高速时钟(HSI)、外部高速时钟(HSE)、PLL(相位锁定环)等,以满足应用程序对时钟频率的需求初始化HAL库的内部数据结构和变量HAL_Init()SystemClock_Config()MX_GPIO_Init()
下一步根据需求编写应用逻辑代码,在KeilMDK软件中编写发光二极管闪烁程序代码。需要注意,编写的代码要在注释语句的BEGIN与END之间,否则STM32CubeMX重新生成代码时会自动删除掉不在注释语句BEGIN与END之间所编写的代码,如下所示。/*USERCODEBEGIN2*/GPIO_PinStateKeyStaus;/*USERCODEEND2*/
在main.c文件的while(1)循环中加入以下代码:KeyStaus=HAL_GPIO_ReadPin(GPIOA,Key_Pin);if(KeyStaus==GPIO_PIN_RESET){ HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_0,GPIO_PIN_RESET);} HAL_Delay(300);
按键控制发光二极管闪烁程序如图所示,在KeilMDK软件中对该工程进行编译Compile和构建Bulild,生成hex文件。按键控制发光二极管闪烁程序3.4.3Proteus仿真电路01
创建Proteus工程——通过Proteus仿真软件构建发光二极管闪烁的仿真环境,模拟STM32F407VET6的运行状态。双击Proteus8Professional图标启动仿真软件,进入Proteus软件主页,单击菜单File中的NewProject,弹出新建工程向导如图所示。新建工程向导
设置工程名为STM32F407_LED,并选择工程存放的位置,单击Next进入下一步,创建原理图如图所示。创建原理图
可根据设计需求选择图纸大小,例程选择DEFAULT模板,然后单击Next进入下一步。PCB布局
实例不需要PCB布局,选择DonotcreateaPCBlayout,单击Next进行下一步。新建工程类型选择
选择NoFirmwareProject,单击Next进入下一步。02
原理图绘制
单击Finish完成Proteus仿真工程创建,原理图绘制界面如图所示。原理图绘制界面
单击左侧DEVICE
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 清洁能源技术推进承诺函4篇
- 创新项目管理与创意激发模板
- 科技公司数据备份恢复流程手册
- 工业产品质量保障承诺书9篇
- 四川省简阳市简城区重点名校2026年中考英语试题目标测试卷(1)含解析
- 产品开发流程管理与支持工具
- 居民区服务品质承诺书(4篇)
- (正式版)DB3210∕T 1057-2020 《淮扬美食品鉴师服务评价规范》
- 2026年入河排污口布局优化与总量控制研究
- 2026年地铁电梯逆行伤人事故责任认定与改进案例
- 办公室安全知识培训
- 《GNSS定位测量》考试复习题库(含答案)
- 塑料搅拌机安全操作规程
- 2024年皖西卫生职业学院单招职业适应性测试题库及答案解析
- 《爱鸟惜花守家园·考察身边的生物资源》课件 2023-2024学年辽海版《综合实践活动》七年级下册
- GB/T 6553-2024严酷环境条件下使用的电气绝缘材料评定耐电痕化和蚀损的试验方法
- 《家用电冰箱与空调器维修》课件
- GB/T 14048.11-2024低压开关设备和控制设备第6-1部分:多功能电器转换开关电器
- 国家公园入口社区建设标准指南专项研究-国家公园研究院+自然资源保护协会-2024
- 《先进制造技术》教案
- 房建工程监理大纲范本(内容全面)
评论
0/150
提交评论