GPIO工作原理
在学习原子哥视频的同时做如下笔记整理,便于读者学习回顾,其中内容包括视频及学习资料内的知识和自己的理解,部分图片也来自正点原子,在此声明。
STM32引脚说明
64引脚—51IO口
GPIO基本结构
查阅30页(FT)标识:可承担5V电压
GPIO工作方式
- 1-4输入
- 5-8输出
-
3种最大反转速度:2MHZ、10MHZ、50MHZ
配置
配置寄存器CRL CRH
理解:每组IO口有16个IO,分两组,高八位CRH低八位CRL控制,CRH和CRL是两个32位(这里指二进制0或1)寄存器,每一位IO口有四位二进制数,前两位是CNF即输入输出模式,后两位是mode即反转速度。
控制如下:
端口输出数据寄存器ODR(敲重点)
理解:ODR是一个端口输出数据寄存器,也只用了低16位。该寄存器为可读写!从该寄存器读取出的数据,可以用于判断当前io口的输出状态,而向该寄存器写数据则可以控制某个io 口的输出电平。
特技:在输入模式下,控制上拉(1)下拉(0)
端口输入寄存器IDR
理解:输入模式下,是上拉还是下拉?端口输入寄存器IDR,只用了低16位。该寄存器为只读寄存器,并且只能以16位的形式读出。每组IO正是16组,一一对应。要想知道某个io的电平状态,只要读这个寄存器,再看某个位的状态就可以!并且,在输出模式下也可以使用,作用是读取输出状态。
端口位设置/清除寄存器BSRR
理解:BSRR寄存器和前面提到的ODR寄存器有类似的功能,都可以用来设置端口的输出位是1还是0, 本质上是间接设置ODR。BSRR寄存器低16位对应位设置为1,那么IO口输出为高电平,对应位设置为0,对应IO口不产生任何影响;高16位设置为1,那么IO输出为低电平,对应位设置为0,对应IO不产生任何影响。
端口位清除寄存器BRR
和BSRR的高16位作用功能一样的,高16位起作用,高16位设置为1,那么IO输出为低电平,对应位设置为0,对应IO不产生任何影响。
比较少用
端口复用功能
stm32的大部分端口都有复用功能。复用就是一些端口不仅仅可以作为通用io口,还可以复用为一些外设引脚。比如PA9、PA10可以复用为stm32的串口1引脚。以此最大限度地利用端口资源。
端口重映射功能
把某些功能引脚映射到其他引脚,比如PA9、PA10通过配置重映射映射到PB6、PB7,以此方便布线。
理解原理是基础,还要结合代码,在实战中学会使用