STMGPIO原理与配置方法.ppt
ALIENTEK,例说STM32,例说STM32,2023/11/8,广州市星翼电子科技有限公司,1,ALIENTEK开发板购买店铺 店铺:http:/,ALIENTEK,第 4 讲 GPIO原理与配置方法,4.1 GPIO基本结构 4.2 GPIO配置方法 4.3 位带操作 4.4 跑马灯实验 4.5 按键输入实验,例说STM32,2,2023/11/8,广州市星翼电子科技有限公司,ALIENTEK,4.1 GPIO基本结构,例说STM32,3,2023/11/8,广州市星翼电子科技有限公司,ALIENTEK,例说STM32,4,2023/11/8,广州市星翼电子科技有限公司,每个IO口可以自由编程,单IO口寄存器必须要按32位字被访问。STM32的很多IO口都是5V兼容的,这些IO口在与5V电平的外设连接的时候很有优势,具体哪些IO口是5V兼容的,可以从该芯片的数据手册管脚描述章节查到(I/O Level标FT的就是5V电平兼容的)。,ALIENTEK,4.2 GPIO配置方法,例说STM32,5,2023/11/8,广州市星翼电子科技有限公司,ALIENTEK,例说STM32,6,2023/11/8,广州市星翼电子科技有限公司,GPIO 8种模式-输入浮空-输入下拉-输入上拉-模拟输入-开漏输出-推挽式输出-推挽式复用功能-开漏复用功能 3个最大输出速度-2MHz-10MHz-50MHz,ALIENTEK,例说STM32,7,2023/11/8,广州市星翼电子科技有限公司,GPIO 输入输出配置相关寄存器-GPIOx_CRL:端口配置低寄存器-GPIOx_CRH:端口配置高寄存器-GPIOx_IDR:端口输入寄存器-GPIOx_ODR:端口输出寄存器-GPIOx_BSRR:端口位设置/清除寄存器-GPIOx_BRR:端口位清除寄存器-GPIOx_LCKR:端口配置锁存寄存器 寄存器配置在STM32中文参考手册V10的8.2节有详细讲解。,ALIENTEK,例说STM32,8,2023/11/8,广州市星翼电子科技有限公司,ALIENTEK,例说STM32,9,2023/11/8,广州市星翼电子科技有限公司,输入模式下,上拉还是下拉输入由ODR寄存器相应位决定。,ALIENTEK,例说STM32,10,2023/11/8,广州市星翼电子科技有限公司,ALIENTEK,例说STM32,11,2023/11/8,广州市星翼电子科技有限公司,ALIENTEK,例说STM32,12,2023/11/8,广州市星翼电子科技有限公司,ALIENTEK,例说STM32,13,2023/11/8,广州市星翼电子科技有限公司,ALIENTEK,4.3 位带操作,位带操作就是把每个比特膨胀为一个32位的字,当访问这些字的时候就达到了访问比特的目的,比如说BSRR寄存器有32个位,那么可以映射到32个地址上,我们去访问(读-改-写)这32个地址就达到访问32个比特的目的。,例说STM32,14,2023/11/8,广州市星翼电子科技有限公司,ALIENTEK,位带操作就是把每个比特膨胀为一个32位的字,当访问这些字的时候就达到了访问比特的目的,比如说BSRR寄存器有32个位,那么可以映射到32个地址上,我们去访问(读-改-写)这32个地址就达到访问32个比特的目的。在 CM3 支持的位带中,有两个区中实现了位带。其中一个是 SRAM 区的最低 1MB 范围,0 x20000000 0 x200FFFFF(SRAM 区中的最低 1MB);第二个则是片内外设区的最低 1MB范围,0 x40000000 0 x400FFFFF(片上外设区中的最低 1MB)。,例说STM32,15,2023/11/8,广州市星翼电子科技有限公司,ALIENTEK,位带区:支持位带操作的地址区 位带别名:对别名地址的访问最终作用到位带区的访问上(注意:这中间有一个地址映射过程)映射关系式:,例说STM32,16,2023/11/8,广州市星翼电子科技有限公司,ALIENTEK,sys.h文件对GPIO输入输出部分功能实现了位带操作:,例说STM32,17,2023/11/8,广州市星翼电子科技有限公司,ALIENTEK,使用位带操作设置IO口输入输出方法:PAout(8)=0;/PA.8输出低 PAout(8)=1;/PA.8输出高 u8 led0;led0=PAin(8);/读取PA8的输入电平 使用位带操作IO口的前提是先进行了IO口端口模式 相关配置,也就是端口初始化。,例说STM32,18,2023/11/8,广州市星翼电子科技有限公司,ALIENTEK,4.4 跑马灯实验,硬件连接 该实验的硬件电路在ALIENTEM Mini STM32开发板上默认是已经连接好了 的。DS0接PA8,DS1接PD2。所以在硬件上不需要动任何东西。其连接原理图如图6.4下:LED与STM32连接原理图,例说STM32,19,2023/11/8,广州市星翼电子科技有限公司,ALIENTEK,实验现象两个LED:DS0和DS1交替闪烁。,例说STM32,20,2023/11/8,广州市星翼电子科技有限公司,ALIENTEK,例说STM32,21,2023/11/8,广州市星翼电子科技有限公司,实验源码:led.h,ALIENTEK,例说STM32,22,2023/11/8,广州市星翼电子科技有限公司,led.c,ALIENTEK,例说STM32,23,2023/11/8,广州市星翼电子科技有限公司,main.c,ALIENTEK,例说STM32,24,2023/11/8,广州市星翼电子科技有限公司,跑马灯实验软件仿真与下载,ALIENTEK,4.5 按键输入实验,硬件连接 本实验所需要的硬件电路在开发板上都已经连接好了,不需要经过任何设置,直接编写代码就可以了。LED的连接在上一节已经介绍过了,在MiniSTM32开发板上的按键KEY0是接在PA13 上,KEY1是接在PA15上的,WK_UP接在PA0上。按键与STM32连接原理图,例说STM32,25,2023/11/8,广州市星翼电子科技有限公司,ALIENTEK,例说STM32,26,2023/11/8,广州市星翼电子科技有限公司,这里需要注意的是KEY0和KEY1是低电平有效的,而WK_UP是高电平有效的,而且要确认WK_UP按钮与DS18B20的连接是否已经断开,如果没有,则要先断开,否则DS18B20会干扰WK_UP按键!并且KEY0和KEY1连接在与JTAG相关的IO口上,所以在软件编写的时候要先禁用JTAG功能(SWD也需要禁用),才能把这两个IO口当成普通IO口使用。实验现象:ALIENTEK MiniSTM32开发板上载有的3个按钮(KEY_UP、KEY0、KEY1),来控制板上的2个LED(DS0和DS1),其中KEY0控制DS0,按一次亮,再按一次,就灭。KEY1控制DS1,效果同DS0。KEY_UP则同时控制DS0和DS1,按一次,他们的状态就翻转一次。,ALIENTEK,例说STM32,27,2023/11/8,广州市星翼电子科技有限公司,程序源码:key.h,ALIENTEK,例说STM32,28,2023/11/8,广州市星翼电子科技有限公司,key.c 中KEY_Init()函数:,ALIENTEK,例说STM32,29,2023/11/8,广州市星翼电子科技有限公司,key.c 中KEY_Scan()函数:,ALIENTEK,例说STM32,30,2023/11/8,广州市星翼电子科技有限公司,main函数,