
. ?& G& U7 b5 ]4 p![]() STM32F103ZET6(144脚芯片)' v* I s1 y% L9 u& C 7组IO,每组16个,一共112个IO口。7 f3 o' B# ^; e( e l* r2 a1 `5 G- B , N1 M$ y* S7 M- {. p, E9 ? GPIOA,GPIOB…GPIOG $ M* A7 H2 a% d% H GPIOA ![]() ! K6 D" {5 a& e1 E FT表示可以容忍5V, i& e' f8 q" J5 @' b 一、4种输入模式:输入浮空,输入上拉,输入下拉,模拟输入8 s4 ]( A1 X3 W9 w4 V4 g! i: B ( W# p9 ^& w6 D$ J$ p2 W4 ]! R 1.GPIO的输入工作模式1—输入浮空模式 ![]() / J D' U* Y! u. R3 z! C' [ 2.GPIO的输入工作模式2—输入上拉模式" s8 B* V1 _! p' r: }+ x - d3 g1 U8 j) E; w3 `( Y7 e ![]() " N E' c: g3 o0 Y6 P, V 3.GPIO的输入工作模式3—输入下拉模式 ![]() 4.GPIO的输入工作模式4—模拟模式 ![]() 8 R1 O0 l! R8 \) `+ z; [ 二、4种输出模式:开漏输出,开漏复用功能,推挽式输出,推挽式复用功能+ k: C: e( a4 V& R; _ 2 k" b; h. ]2 P; C0 z8 d 1.GPIO的输出工作模式1—开漏输出模式6 F9 m) @3 E' ]' q- a4 k) i 2.GPIO的输出工作模式2—开漏复用输出模式; u- g& v* j8 O s3 K# p' i, E t$ b' C' r, D: i; d0 N ![]() 3 @4 t$ J c. k1 x* J7 z- Z+ Q- q0 \3 c 3.GPIO的输出工作模式3—推挽输出模式8 U- l( W- b7 \1 v- J ![]() 2 i9 o6 ?% r1 ? b 4.GPIO的输出工作模式4—推挽复用输出模式5 X. Y: Y; ]- `8 K9 ~) S6 H3 m! q 2 A+ X- j6 {4 T; E 6 J L: S: G/ _$ \3 e Z# A 三、3种最大翻转速度:2MHZ,10MHZ,50MHZ m; z( E! h" T0 U, y 四、GPIO工作方式6 s' n! C- @% c 推挽输出:可以输出强高低电平,连接数字器件 。 ' q8 n8 ]" L3 C 开漏输出:只可以输出强低电平,高电平得靠外部电阻拉高。 8 c( r" a1 k2 e7 E0 a R 每组GPIO端口的寄存器包括:2 A! O8 F& X. T4 C' i2 i - X, h. \5 w2 {1 S, _ 两个32位配置寄存器(GPIOx_CRL ,GPIOx_CRH)8 @' [2 ^1 O* ~( O/ B- t 两个32位数据寄存器 (GPIOx_IDR和GPIOx_ODR) 一个32位置位/ 复位寄存器(GPIOx_BSRR) 2 e# y' H: `) J, f2 Z3 S 一个16位复位寄存器(GPIOx_BRR) 一个32位锁定寄存器(GPIOx_LCKR): I8 |1 E& \ p 每个I/O端口位可以自由编程,然而I/O端口寄存器必须按32位字被访问(不允许半字或字节访问) 。 ! [, P' Z' L/ Q. n/ E 每组IO口含下面7个寄存器。也就是7个寄存器,一共可以控制一组GPIO的16个IO口。 GPIOx_CRL :端口配置低寄存器 GPIOx_CRH:端口配置高寄存器 GPIOx_IDR:端口输入寄存器 GPIOx_ODR:端口输出寄存器2 ~3 m2 o1 o% @- b+ l $ n3 d( }' j: j) f0 E/ G GPIOx_BSRR:端口位设置/清除寄存器 % m/ y; J6 g$ @3 n1 S3 e; `$ v6 a GPIOx_BRR :端口位清除寄存器% K) G8 e2 i. i/ t! d( {% M GPIOx_LCKR:端口配置锁存寄存器2 j6 h; A( t5 o/ j8 {( B 3 H0 L" z7 i( S* Z$ h; x, t& A; h 1.端口配置低寄存器(GPIOx_CRL)和端口配置高寄存器(GPIOx_CRH) ![]() 2.端口输入数据寄存器(GPIOx_IDR)+ m$ j* s: C( \% Y ![]() 端口输出数据寄存器(GPIOx_ODR)& K8 o3 Y4 V B6 Q1 k, k* r % M; G2 K* O* x- x 1 `- ~# n9 P; \( u9 c d1 r 3.通过设置ODR控制端口位为上拉还是下拉输出模式" J) q; A5 g8 S) M( P S3 G ![]() ODRx设置为0就是下列输入,ODRx设置为1就是上拉输入。$ [/ f, N0 ~) _9 [- ?: F! l' ^ ! y& X9 ]4 ?1 F0 N3 ] u' \ 4.端口位设置/清除寄存器(GPIOx_BSRR) ![]() & n3 ?3 A% D n& M1 o- J 端口位清除寄存器(GPIOx_BRR)% d9 h! Z' L: t- E2 e$ c 1 N* I; W9 Y) y3 H 通常就采用BSRR的低16位和BRR的低16位,因为BRR的低16位与BSRR的高16位作用类似。 2 G' w' E4 |, M( O" V" I+ p V 5.端口复用功能: STM32的大部分端口都具有复用功能。 所谓复用,就是一些端口不仅仅可以做为通用IO口,还可以复用为一些外设引脚。 6.端口重映射功能:就是可以把某些功能引脚映射到其他引脚。比如串口1默认引脚是PA9,PA10可以通过配置重映射映射到PB6,PB7。' H: n) P$ _ c" x$ R 和51单片机相比,32所有的IO口都可以作为中断输入。 |
非常清楚 感谢。