stm32正点原子学习笔记(12)GPIO工作原理
带有FT标识的容忍5V
浮空模式下黄色阴影的是通的。
30~50K
模拟输入熟悉的就是AD转换,外部电压是模拟量,不是01,是电压的形式(0~3.3V),而不是电平(高低)。
如果是写1,N-MOS管是关闭的,那么输出不会由输入的1决定,因为截止了,电平是由外部上拉和下拉决定改的,类似浮空状态。输出状态也可以从6、7这里读取,但不一定是读的写的那个1,是由外部上拉下拉决定改的,而如果是写0,就N-MOS就开启了,IO口电平就会被拉到VSS,低,能被读到。
和前面差不多,不过那个是cpu写寄存器控制,这里是由复用功能(外设)输出决定的。
前半部分类似,但是到了输出驱动器这里,如果输入为1,那么P-MOS导通,N-MOS截止,IO口输出1,如果输入为0,则相反,IO口为0。同样也可以通过输入电路读取IO口输出。
两个32位配置寄存器包含一个低,一个高
stm32是32位的寄存器,一共只有32个位,配置每个IO口要4个位,所以一组32位只能配置8个IO口,1组IO口有16个,所以要两个。
如果是GPIOA_CRL那么就是PA0~PA7
IO口有八种模式,三种速度就是在这里配置。
每个IO口用4位控制,分成两半,两位控制输入输出模式和速度,还有两位控制到底是哪一个模式。
最终的上拉下拉是由ODR寄存器配置的。
用于读IO口输入的,在输出模式下也可以读输出。
这两个都只用到了16位,高16位是保留的。
ODR寄存器还有一个作用,在输入模式下,配置上拉下拉
cpu写寄存器时,先写位设置/清除寄存器,达到设置输出数据寄存器的目的,ODR;我们也可通过下面直接设置。
经常只用BSRR的低16位和BRR的低16位,BSRR的高16位很少用。
对于F4就只有一个,没有两个寄存器了。(可能)