版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章
通用输入输出口(GPIO)1通用输入输出口(GPIO)2GPIO工作原理3GPIO口配置与应用4GPIO应用实例通用输入输出口(GPIO)1第3章
通用输入输出口(GPIO)1通用输入输出口(GPIO)2GPIO工作原理3GPIO口配置与应用4GPIO应用实例通用输入输出口(GPIO)2STM32GPIO口概述STM32最常用的外设模块就是GPIO口。GPIO全称为GeneralPurposeInputOutput,即通用输入/输出,GPIO口具有8种输入和输出模式,本质就是其他单片机的输入/输出口,只不过它的灵活性更强、适用范围更广。STM32芯片的GPIO引脚与外部设备连接,可实现与外部通信、控制外部硬件或者采集外部硬件数据的功能。在输入模式下,GPIO口接收外部设备产生的电信号,并将其转换为数字信号传送给处理器。在输出模式下,GPIO口将处理器输出的数字信号转换为电信号向外部设备发送。重点——掌握四种输入模式的特点、各自应用的场合难点——相关函数的使用、四种模式的灵活应用通用输入输出口(GPIO)3STM32F103ZET6芯片的GPIO引脚STM32F103ZET6芯片为144引脚芯片,它基于Cortex-M3内核。STM32F103ZET6包含7个GPIO口组,分别为:GPIOA、GPIOB、GPIOC、GPIOD、GPIOE、GPIOF和GPIOG每组包含16个GPIO口,分别为
PA0~PA15、PB0~PB15、PC0~PC15、PD0~PD15、PE0~PE15、PF0~PF15、PG0~PG15。通用输入输出口(GPIO)4GPIO引脚的复用STM32有多个非GPIO内置外设,GPIO引脚也可作为这些外设的外部引脚使用。也就是说,一个引脚可以有多种功能。但是,STM32默认GPIO口为I/O口,如果想使用一个内置外设的功能引脚,就需要借助GPIO引脚的复用,换言之,某个GPIO引脚作为非GPIO内置外设的外部引脚使用,即为复用,比如,PB10、PB11可与串口USART3的TX、RX引脚进行复用,在实现USART3串口通信功能时,就是将上述两个GPIO引脚复用为串口输出和输入引脚。通用输入输出口(GPIO)5GPIO内部结构图通用输入输出口(GPIO)6第3章
通用输入输出口(GPIO)1通用输入输出口(GPIO)2GPIO工作原理3GPIO口配置与应用4GPIO应用实例通用输入输出口(GPIO)7GPIO的输入模式——四种(1)GPIO_Mode_AIN 模拟输入
(2)GPIO_Mode_IN_FLOATING 浮空输入
(3)GPIO_Mode_IPD 下拉输入
(4)GPIO_Mode_IPU 上拉输入重点——掌握四种输入模式的特点、各自应用的场合难点——相关函数的使用、四种模式的灵活应用通用输入输出口(GPIO)8GPIO的输入模式——四种(1)GPIO_Mode_IN_FLOATING 浮空输入
(2)GPIO_Mode_AIN 模拟输入
(3)GPIO_Mode_IPD 下拉输入
(4)GPIO_Mode_IPU 上拉输入信号进入芯片内部后,既没有接上拉电阻也没有接下拉电阻,经由触发器输入。
配置成这个模式后,用电压变量引脚电压为1点几伏,这是不确定值。例如:使用GPIO模拟IIC总线SDA(数据总线)——输出时设置成推挽
——输入时,如果没有外接上拉电阻时,则配置成上拉输入,如果有上拉电阻,则配置成浮空输入。又如:USARTx串口通信——TX,设置成复用推挽
——RX,设置成浮空输入举例特点应用由于其输入阻抗比较大,一般把这种模式用于标准的通讯协议,比如IIC、USART的等。通用输入输出口(GPIO)9GPIO的输入模式——四种(1)GPIO_Mode_IN_FLOATING 浮空输入
(2)GPIO_Mode_AIN 模拟输入
(3)GPIO_Mode_IPD 下拉输入
(4)GPIO_Mode_IPU 上拉输入信号进入后不经过上拉电阻或下拉电阻,关闭施密特触发器,经由另一线路把电压信号传送到片上外设模块。比如传送给ADC模块。模拟输入的信号是未经处理的信号例如:ADC外设对应的输入引脚——16路对应16个引脚,均应配置成模拟输入。又如:低功耗使用stop模式下——所有IO口最好配置成模拟输入,以降低功耗举例特点应用应用ADC模拟输入或者低功耗下省电通用输入输出口(GPIO)10GPIO的输入模式——四种(1)GPIO_Mode_IN_FLOATING 浮空输入
(2)GPIO_Mode_AIN 模拟输入
(3)GPIO_Mode_IPD 下拉输入
(4)GPIO_Mode_IPU 上拉输入信号进入后经过内部上拉电阻或下拉电阻(30~50KΩ),经施密特触发器输入。默认情况下:上拉模式:读入的值为1下拉模式:读入的值为0例如:按键输入——使用上拉,按键按下,则切换为低电平选用上拉或下拉,取决于外部电路可以省去上拉或下拉电阻举例特点应用确保在没有输入信号时,有明确的电平要求的场合通用输入输出口(GPIO)11GPIO的输入模式——使用要领(1)GPIO输入的初始化设置
(2)引脚状态的读入不同的应用,需要设置不同的输入模式要领通用输入输出口(GPIO)12GPIO的输入模式——单功能按键利用一个按键控制发光一个二极管的发光。每按一次按键,发光二极管的状态就发生切换。——GPIO对应引脚的初始化——按键的捕捉与识别按键去抖动两法硬件去抖动软件去抖动——按键的处理要领通用输入输出口(GPIO)13GPIO的输入模式——一键多用在单片机应用系统中,为了节省硬件资源和产品成本,常采用一键多用的形式,即按键复用。一个按键有多个功能。——场景切换式根据场景的不同,自动切换其功能定义——时间切换式根据其按下的持续时间的长短,决定其不同的功能——按键组合式由两个按键或多个按键组合,实现少量按键的多功能化一个按键——短按:控制LED亮灭长安:使系统复位重启举例要领检测到S1被按下后,开始计时:——如果是3秒以内释放的,则切换D2的状态——如果3秒以上的,则执行系统重启系统重启可通过STM32单片机的软复位特性加以实现原理什么是软复位?通用输入输出口(GPIO)14GPIO的输入模式——一键多用在单片机应用系统中,为了节省硬件资源和产品成本,常采用一键多用的形式,即按键复用。一个按键有多个功能。系统软复位在系统的可靠性设计中十分有用。例如,当检测到外设模块死机,就可以通过软复位系统实现重启,使得外设重新被初始化而恢复正常工作。软复位在官方固件库的core_cm3.h文件里直接提供了系统复位的函数:static
__INLINE
void
NVIC_SystemReset(void)在发出复位请求前,要先把FAULTMASK
置位。static
__INLINE
void
__set_FAULTMASK(uint32_t
faultMask)
该函数的作用就是关闭中断,如果参数为1的话。软复位实现不得不说,软复位很有用!通用输入输出口(GPIO)15GPIO的输入模式——一键多用示例程序(只包括识别按键部分)按键识别u8KeyPressed(u16time){u16cnt=0;if(S1_DOWN)//按键按下否{delay_nms(10);//延时去抖动if(S1_DOWN){while(S1_DOWN)//等待按键释放
{delay_nms(10);cnt++;//计时}}}if(cnt==0)return0;elseif(cnt<time/10)return1;elsereturn2;}——参数time为判断时间设置,例如:3000为3秒——返回值0表示没有按键,1表示短按,2表示长按通用输入输出口(GPIO)16STM32的GPIO输出模式STM32的最常用的外设模块是GPIO,它通常用于信号的输入输出。STM32的GPIO具有四种输入、四种输出模式。(1)GPIO_Mode_AIN
模拟输入
(2)GPIO_Mode_IN_FLOATING
浮空输入
(3)GPIO_Mode_IPD
下拉输入
(4)GPIO_Mode_IPU
上拉输入
(5)GPIO_Mode_Out_OD
开漏输出
(6)GPIO_Mode_Out_PP
推挽输出
(7)GPIO_Mode_AF_OD
复用开漏输出
(8)GPIO_Mode_AF_PP
复用推挽输出4种输出模式这2种输出模式同在用在II2总线、串行通信等17STM32的GPIO输出模式STM32的GPIO用于一般的输入输出——第一步:对GPIO进行初始化设置第二步:对GPIO进行写入、读取操作对GPIO进行初始化设置:设置什么、如何设置对GPIO进行写入操作:写入1、0(高、低电平),如何写入18STM32的GPIO输出模式STM32的GPIO初始化设置——结合例子voidLED_GPIO_Config(void){GPIO_InitTypeDefGPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);//使能C口时钟
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8|GPIO_Pin_9;//选择对应的引脚
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//推挽输出
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;//速度为10MGPIO_Init(GPIOC,&GPIO_InitStructure);//初始化PC端口
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_11|GPIO_Pin_12; //引脚
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_OD;//输出开漏方式
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;//速度为10MGPIO_Init(GPIOC,&GPIO_InitStructure);//初始化C端口
}速度是啥意思?19STM32的GPIO输出模式STM32的GPIO的速度设置——GPIO的引脚速度——I/O口驱动电路的响应速度,而不是输出信号的速度。输出信号的速度只取决于程序。当STM32的GPIO端口设置为输出模式时,有三种速度可以选择——2MHz、10MHz和50MHz。这个速度是指I/O口驱动电路的速度,是用来选择不同的输出驱动模块,达到最佳的噪声控制和降低功耗的目的。
高频的驱动电路,噪声也高。当你不需要高的输出频率时,请选用低频驱动电路,这样非常有利于提高系统的EMI性能。
如果你要输出较高频率的信号,但却选用了较低频率的驱动模块,你很可能会得到失真关键是,GPIO的引脚速度如何与应用匹配?
举例:对于串口,假如最大波特率只需115.2k,那么用2M的GPIO的引脚速度就够了,既省电也噪声小。原来是这个意思啊,城里套路深!20STM32的GPIO输出模式STM32的GPIO写入(输出)操作——库函数法、寄存器法GPIO_WriteBit(GPIOx,GPIO_Pin_y,BIT_SET/BIT_RESET)置位或者复位单个输出端口的数据GPIO_Write(GPIOx,0x1111)置位或者复位整个输出端口的数据。其中x:A-Gy:0-15GPIO_SetBits(GPIOA,GPIO_Pin_0
|
GPIO_Pin_1)设置PA0--PA1高电平
GPIO_ResetBits(GPIOA,GPIO_Pin_0
|
GPIO_Pin_1)设置PA0--PA1低电平GPIOB->ODR=0XFFFF;
//设置PB0高电平
GPIOB->ODR=0XFFFE;
//设置PB0低电平例如:GPIO_WriteBit(GPIOA,GPIO_Pin_3,1)设置PA3高电平GPIO_WriteBit(GPIOA,GPIO_Pin_3,0)设置PA3低电平库函数法。注意用法寄存器法21STM32的GPIO输出模式STM32的GPIO写入(输出)操作——考考你!假设一个LED接在GPIOB的8脚上,高电平关闭。如果要让它以500ms/500ms的周期闪烁显示,请写出程序?22第3章
通用输入输出口(GPIO)1通用输入输出口(GPIO)2GPIO工作原理3GPIO口配置与应用4GPIO应用实例通用输入输出口(GPIO)23GPIO口配置(1)选择所用引脚
(2)配置引脚参数通用输入输出口(GPIO)24GPIO口配置(1)选择所用引脚
(2)配置引脚参数通用输入输出口(GPIO)25GPIO函数(1)初始化函数
(2)复位函数(3)读指定引脚的值(4)写指定引脚的值(5)GPIO引脚电平求反(6)GPIO引脚电平锁定通用输入输出口(GPIO)26第3章
通用输入输出口(GPIO)1通用输入输出口(GPIO)2GPIO工作原理3GPIO口配置与应用4GPIO应用实例通用输入输出口(GPIO)27GPIO输出控制—控制LED闪烁显示(1)MCU型号选择
(2)功能参数设置
配置RCC
配置时钟树
配置Debug
配置相应引脚PB5
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年体育教育知识与能力培养方案
- 2026年法医病理学司法鉴定备考题
- 2026年挖掘机司机招聘考试题库
- 2026年冬季家庭消防安全知识讲座
- 2026年高考英语阅读理解技巧与仿真题
- 2026年景观设计师资格考试笔试模拟题
- 2026年小学生心理健康知识手册
- 2026年软考网络工程师模拟题及答案
- 2026年证券从业金融市场高频考点集
- 2026年中级审计师专业知识
- AQ 3067-2026 《化工和危险化学品生产经营企业重大生产安全事故隐患判定准则》解读
- 2026年装备技术服务计划
- 【期末】《生成式人工智能应用基础》(杭州电子科技大学)期末考试慕课答案
- 小熊旅行记课件
- 智能客服中心项目可行性分析报告:基于2025年人工智能创新应用
- 中国茶品鉴入门:从种类到冲泡的指南
- 小学劳动教育评价体系与学校课程实施效果评价研究教学研究课题报告
- GB/T 21873-2025橡胶密封件给、排水管及污水管道用接口密封圈材料规范
- 肖春宏-舌诊和治肝法在疑难杂症中的应用
- 高层建筑动火作业安全防护方案
- 职场内部沟通课件
评论
0/150
提交评论