《嵌入式技术入门与实战(基于STM32)》 课件 3.3-功能IO模块及输入_第1页
《嵌入式技术入门与实战(基于STM32)》 课件 3.3-功能IO模块及输入_第2页
《嵌入式技术入门与实战(基于STM32)》 课件 3.3-功能IO模块及输入_第3页
《嵌入式技术入门与实战(基于STM32)》 课件 3.3-功能IO模块及输入_第4页
《嵌入式技术入门与实战(基于STM32)》 课件 3.3-功能IO模块及输入_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

第3章STM32I/O应用实战《嵌入式技术入门与实战(基于STM32)》3、任务2按键点灯的控制与实现第3章STM32I/O应用实战PartThree3、任务2按键点灯的控制与实现3.1GPIO输入工作模式3.2GPIO作为输入的应用设计3.3实现与代码分析33.4GPIO的寄存器描述3.1、GPIO输入工作模式1、GPIO输入工作模式模拟输入1浮空输入2上拉输入3下拉输入4输入模式上拉、下拉和浮空输入的内部配置输出缓冲器被禁止,施密特触发器输入被激活上拉电阻开关闭合接VDD,下拉电阻开关打开在引脚没有外部输入时,引脚被上拉至高电平,且保持高电平状态7上拉输入开关闭合下拉电阻开关闭合接GND,上拉电阻开关打开在引脚没有外部输入时,引脚被下拉至低电平,且保持低电平状态8下拉输入开关闭合输入引脚即不接高电平,也不接低电平。由外部输入决定引脚的状态。9浮空输入开关都打开关闭施密特触发器,上拉和下拉电阻被禁止。10模拟输入3.2、GPIO作为输入的应用设计设计并实现一个按键控制LED灯系统,具体要求:系统上电后,按下4个按键KEY0、KEY1、KEY2、WK_UP分别控制翻转LED1与LED2的亮灭状态12GPIO作为输入的应用芯片:STM32F407ZGT6实验板:正点原子探索开发套件实验板已实现了硬件电路,无需重新搭建。13硬件平台条件按下按键时导通A端与B端;松开按键保持电路开路状态14按键原理在闭合及断开的瞬间均伴随有一连串的抖动,抖动时间一般为5ms~10ms。硬件消抖:在按键上并联一个电容,利用电容的充放电特性来对抖动过程中产生的电压毛刺进行平滑处理。软件消抖:使用程序完成消抖任务。15按键消抖硬件设计原理图KEY0→PE4,KEY1→PE3,KEY2→PE2、WK_UP→PA0按键连接硬件电路功能:基于嵌入式MCU设计并实现一个按键控制LED灯系统。KEY0→PE4:上拉输入模式KEY1→PE3:上拉输入模式KEY2→PE2:上拉输入模式WK_UP→PA0:下拉输入模式GPIO作为输出的应用-模式选择思考与练习◎简述GPIO有哪几种输入工作模式。◎分析上拉、下拉和浮空输入的区别。3.3、实现与代码分析掌握详细实现过程,分析具体实现代码3.3.1

实现过程第一步使用STM32CubeMX完成GPIO引脚初始化配置和工程代码的生成第二步按键扫描和按键点灯代码添加第三步下载调试3.3.2代码分析1)GPIO引脚初始化代码2)按键扫描代码3)按键点灯代码21GPIO引脚初始化代码22按键扫描思路按键扫描代码244、GPIO的寄存器描述GPIO寄存器GPIO寄存器实现对GPIO端口初始化配置和数据输入输出控制每个寄存器只能以32位(字)进行访问STM3F40x芯片系列的GPIO寄存器:GPIO配置寄存器GPIO端口模式寄存器GPIOx_MODERGPIO端口输出类型寄存器GPIOx_OTYPERGPIO端口输出速度寄存器GPIOx_OSPEEDRGPIO端口上拉/下拉寄存器GPIOx_PUPDR数据寄存器GPIO端口输入数据寄存器GPIOx_IDRGPIO端口输出数据寄存器GPIOx_ODR置位/复位寄存器GPIO端口置位/复位寄存器GPIOx_BSRR锁定寄存器GPIO端口配置锁定寄存器GPIOx_LCKR复用功能选择寄存器GPIO复用功能高位寄存器GPIOx_AFRHGPIO复用功能低位寄存器GPIOx_AFRL27GPIO端口模式寄存器GPIOx_MODER每个引脚2bit:MODEy[1:0]32bit可配置16个引脚,即1个端口PA0输入模式的配置:GPIOA_MODER,MODER0[1:0]=00GPIO端口输出类型寄存器GPIOx_OTYPER28每个引脚仅用1bit表示引脚输出类型:OTy[0],1个端口仅占用低16位,高16位保留PE5推挽输出:在GPIOE_MODER中,MODER5[1:0]=01,在GPIOE_OTYPER中,OT5=0GPIO端口输出速度寄存器GPIOx_OSPEEDR29每个引脚2bit:OSPEEDRy[1:0]32bit可配置16个引脚,即1个端口GPIO端口上拉/下拉寄存器GPIOx_PUPDR30每个引脚2bit:PUPDRy[1:0],32bit可配置16个引脚,即1个端口PE3上拉输入模式:在GPIOE_MODER中,MODER3[1:0]=00,在GPIOE_PUPDR中,PUPDR3[1:0]=01端口输入数据寄存器(GPIOx_IDR)31GPIO_PinStateHAL_GPIO_ReadPin(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin){GPIO_PinStatebitstatus;/*Checktheparameters*/assert_param(IS_GPIO_PIN(GPIO_Pin));if((GPIOx->IDR&GPIO_Pin)!=(uint32_t)GPIO_PIN_RESET){bitstatus=GPIO_PIN_SET;}else{bitstatus=GPIO_PIN_RESET;}returnbitstatus;}每个引脚仅需1bit表示状态“0”或“1”1个端口仅占用低16位,高16位保留:IDRy[15:0]32端口输出数据寄存器(GPIOx_ODR)每个引脚仅需1bit表示状态“0”或“1”1个端口仅占用低16位,高16位保留:ODRy[15:0]33端口位设置/复位寄存器(GPIOx_BSRR)voidHAL_GPIO_WritePin(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin,GPIO_PinStatePinState){/*Checktheparameters*/assert_param(IS_GPIO_PIN(GPIO_Pin));assert_param(IS_GPIO_PIN_ACTION(PinState));if(PinState!=GPIO_PIN_RESET){

GPIOx->BSRR=GPIO_Pin;}else{

GPIOx->BSRR=(uint32_t)GPIO_Pin<<16u;}}每个引脚置位和复位各1bit,低16位为置位

温馨提示

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

最新文档

评论

0/150

提交评论