# M# Q/ V9 e" @& i STM32F103ZET6(144脚芯片)$ ^. L, A# e% f5 [* M: n# @ : Z N2 c* Y& w' B/ L; e 7组IO,每组16个,一共112个IO口。+ M: u0 @' L) g9 y2 S. Z GPIOA,GPIOB…GPIOG 4 M/ V2 Z' c8 j GPIOAA0~PA15(A,B,C,D,E,F,G均是16个IO口) A+ }' [) K, O0 f# z( z 7 E9 d1 W" e+ B$ R+ ^# K FT表示可以容忍5V6 _$ ~2 G: ?6 T. j% Q 6 r6 \2 k$ E" Y7 l5 g) r 一、4种输入模式:输入浮空,输入上拉,输入下拉,模拟输入 + y# w" ^6 {+ S: x 1.GPIO的输入工作模式1—输入浮空模式/ h+ i+ u# [4 r2 X, R 8 P3 \6 G9 k8 B% y% W' a, T0 ]" U 2.GPIO的输入工作模式2—输入上拉模式 3.GPIO的输入工作模式3—输入下拉模式 4.GPIO的输入工作模式4—模拟模式 , D9 [8 t3 S5 I8 {: o0 p0 W) Z 二、4种输出模式:开漏输出,开漏复用功能,推挽式输出,推挽式复用功能 b: ]% v, _+ c; @9 b; Y5 _. ? 1.GPIO的输出工作模式1—开漏输出模式 2.GPIO的输出工作模式2—开漏复用输出模式 1 _5 [4 X$ N7 D: H 3.GPIO的输出工作模式3—推挽输出模式 4.GPIO的输出工作模式4—推挽复用输出模式 ' b! Y: q' f& B, Q, F! P 三、3种最大翻转速度:2MHZ,10MHZ,50MHZ 四、GPIO工作方式2 T. [$ {9 \" F, L( e& I 3 q; l- J$ J/ M# h! H$ f5 M) F 推挽输出:可以输出强高低电平,连接数字器件 。) Y; k3 ~5 f Y% A, L" d 开漏输出:只可以输出强低电平,高电平得靠外部电阻拉高。 * f$ {* }4 Y8 g) _1 g) k6 ? 每组GPIO端口的寄存器包括:( L7 h2 z8 x& L$ u3 f / \) n% F; d' l 两个32位配置寄存器(GPIOx_CRL ,GPIOx_CRH). g' d4 _" M' \7 W* E 9 n. j/ H0 M" y* T: ? 两个32位数据寄存器 (GPIOx_IDR和GPIOx_ODR): w$ e, t9 Y' Q* q8 m7 W# C3 P: G ) y- f0 g3 \5 h9 A4 u- n 一个32位置位/ 复位寄存器(GPIOx_BSRR) 7 N8 Q6 {9 A9 C6 @, R6 i" K4 C: _ 一个16位复位寄存器(GPIOx_BRR)1 C, a% }* t. O- h 一个32位锁定寄存器(GPIOx_LCKR)/ I- S5 p, d3 C1 @' E& w ( k1 |5 ]2 z6 g) I0 c 每个I/O端口位可以自由编程,然而I/O端口寄存器必须按32位字被访问(不允许半字或字节访问) 。1 H. ~8 ~2 J2 @1 V 0 @; z* i D: t1 h! A7 @ 每组IO口含下面7个寄存器。也就是7个寄存器,一共可以控制一组GPIO的16个IO口。 GPIOx_CRL :端口配置低寄存器( v: g% F$ ^5 y/ H) \4 k W & R+ a" k- S6 x2 M! ^. y GPIOx_CRH:端口配置高寄存器! ~ o# J+ K' ?+ O/ a GPIOx_IDR:端口输入寄存器* Q6 s3 h4 \# P: C2 T4 p$ m GPIOx_ODR:端口输出寄存器* R# n7 {. y0 M$ B0 G6 h ! t9 @- e+ E# }: k6 V GPIOx_BSRR:端口位设置/清除寄存器 GPIOx_BRR :端口位清除寄存器" R0 `$ e# A% n! A* V4 E' Z" N- b 9 V' q3 Z" j# V7 G3 }$ O; {7 y7 C GPIOx_LCKR:端口配置锁存寄存器# C% s3 O& t+ @. L . e7 I; s# |( v8 U- t( e2 A 1.端口配置低寄存器(GPIOx_CRL)和端口配置高寄存器(GPIOx_CRH)7 o* `6 t/ p) s% N; l* F 8 ^4 y' s g) ~2 Z 2.端口输入数据寄存器(GPIOx_IDR) 端口输出数据寄存器(GPIOx_ODR)% R6 o7 M1 X; h8 ]! x1 O6 M0 c ' R/ N3 V1 |3 ?. s 3.通过设置ODR控制端口位为上拉还是下拉输出模式 ODRx设置为0就是下列输入,ODRx设置为1就是上拉输入。 3 S) h( a2 U" ? 4.端口位设置/清除寄存器(GPIOx_BSRR)' k( R, ^. l- m9 F7 }3 K& V; p ! W6 ]+ {) ~6 o0 q: v% y 端口位清除寄存器(GPIOx_BRR) 通常就采用BSRR的低16位和BRR的低16位,因为BRR的低16位与BSRR的高16位作用类似。 5.端口复用功能: STM32的大部分端口都具有复用功能。 所谓复用,就是一些端口不仅仅可以做为通用IO口,还可以复用为一些外设引脚。4 j! A& _7 Q g3 L 6.端口重映射功能:就是可以把某些功能引脚映射到其他引脚。比如串口1默认引脚是PA9,PA10可以通过配置重映射映射到PB6,PB7。 和51单片机相比,32所有的IO口都可以作为中断输入。% P0 c+ C. x$ f6 `& l % a. G8 \& H8 ] |
非常清楚 感谢。