% _% N9 k+ |) L! _* u7 n, W) k 8 M+ W9 \7 d& F! X STM32F103ZET6(144脚芯片)! {* D: l8 ]9 K+ [ ( B+ w. t* X! d# |# L3 C4 |2 b 7组IO,每组16个,一共112个IO口。0 @" N0 c- H2 J+ J, u* ^- A GPIOA,GPIOB…GPIOG. i* ^' ]4 p* z% h GPIOAA0~PA15(A,B,C,D,E,F,G均是16个IO口)7 j5 u( h: `+ u( e0 T , [ a x: L/ e8 b0 R4 g- p) ?; e6 R FT表示可以容忍5V ( x% G9 d' J+ Q8 {( ]+ t4 K8 k6 V7 q 一、4种输入模式:输入浮空,输入上拉,输入下拉,模拟输入# I' T, t/ A B+ S" p! n2 C/ A * R+ W/ z9 g) D! U0 \2 j) U 1.GPIO的输入工作模式1—输入浮空模式 4 |6 k/ z2 R6 J! x5 L ; |* `6 m3 O" J 2.GPIO的输入工作模式2—输入上拉模式- E2 }! z2 J% ?" D% H; T$ |% S) {2 O ! z0 O3 ?) K9 n9 x. W 0 n$ f. }0 r$ |( R1 y& N6 r! U4 \ 3.GPIO的输入工作模式3—输入下拉模式 2 c( s% d' G7 _, `8 u 4.GPIO的输入工作模式4—模拟模式 `/ p1 W+ n' P* b 4 B5 u7 z0 x& R. x; W- L7 \3 a5 \ 二、4种输出模式:开漏输出,开漏复用功能,推挽式输出,推挽式复用功能$ o1 @$ F3 g7 R) ]" b3 r$ X $ A: {% z2 F: d: N: }) ^ 1.GPIO的输出工作模式1—开漏输出模式2 z! i6 Y& k r5 F( D( Y5 G: I 2.GPIO的输出工作模式2—开漏复用输出模式 ( l4 ]* f/ a" z" {" R5 a k- d6 `! | " w8 L+ q1 ~- H$ y5 w& g 3.GPIO的输出工作模式3—推挽输出模式 5 p: j$ B% Q% r" g8 @ 4.GPIO的输出工作模式4—推挽复用输出模式 + [# N* h; f6 a3 m- R. I 三、3种最大翻转速度:2MHZ,10MHZ,50MHZ! y6 z+ A3 R* U4 E5 ^# {+ U & l3 e- F) h9 k2 ^, S7 ? 四、GPIO工作方式: L! x: ^3 E1 j" W/ h( Z1 E0 W 推挽输出:可以输出强高低电平,连接数字器件 。1 V9 L2 O3 t6 F* w1 R/ A: M $ f @2 I3 u/ w( ^& y p 开漏输出:只可以输出强低电平,高电平得靠外部电阻拉高。% x4 y. D5 {2 X' c5 ^2 u1 Q5 e9 Z3 ^( Y8 h ' c2 O! J& a+ j& Y" f" N 每组GPIO端口的寄存器包括: . |/ L7 ?3 T [& m 两个32位配置寄存器(GPIOx_CRL ,GPIOx_CRH) . v, \6 c! K# T6 J: h& y* e 两个32位数据寄存器 (GPIOx_IDR和GPIOx_ODR) 一个32位置位/ 复位寄存器(GPIOx_BSRR) 一个16位复位寄存器(GPIOx_BRR)- F/ I, V8 r/ N5 T( K/ j 一个32位锁定寄存器(GPIOx_LCKR)6 u- h" g( E+ c2 l# V 每个I/O端口位可以自由编程,然而I/O端口寄存器必须按32位字被访问(不允许半字或字节访问) 。$ ]7 F( Y8 }5 [ 每组IO口含下面7个寄存器。也就是7个寄存器,一共可以控制一组GPIO的16个IO口。 # O# B4 K1 |, F: A5 t- ~ GPIOx_CRL :端口配置低寄存器' t' }* |: B5 |" I Y8 ~ , K2 \0 k7 [1 ]( O- K GPIOx_CRH:端口配置高寄存器8 j. z% o! n0 X" v 0 ]3 J- D3 ]' q GPIOx_IDR:端口输入寄存器 ; T0 U8 n, r5 s GPIOx_ODR:端口输出寄存器7 u: r" b) D5 R4 s# t% [- i G GPIOx_BSRR:端口位设置/清除寄存器# z$ g/ T6 o- e5 v/ Y1 [, V3 J/ n* [ GPIOx_BRR :端口位清除寄存器 2 B8 K" u% ]+ [+ O/ d0 u GPIOx_LCKR:端口配置锁存寄存器% x, ^& t1 h! T9 n8 N" V 1.端口配置低寄存器(GPIOx_CRL)和端口配置高寄存器(GPIOx_CRH) / a- W# V8 R" @ / K6 a5 t* F% q" z 2.端口输入数据寄存器(GPIOx_IDR)2 E' E! [/ Q9 b0 E) t: ~/ c " ?+ h% o2 V: v+ ?. z 端口输出数据寄存器(GPIOx_ODR) 6 v! h2 H8 v( A8 U/ N; u# G . y9 U4 u$ M" v6 z8 x: _/ V" w : c. E% P: F- M( d. k1 y 3.通过设置ODR控制端口位为上拉还是下拉输出模式- ]1 f$ \! d, _' ~ V) n 2 k1 v% _1 T& C# ?$ Z ODRx设置为0就是下列输入,ODRx设置为1就是上拉输入。 ; @8 l* L( y9 y @1 y% @ 4.端口位设置/清除寄存器(GPIOx_BSRR)& _; Q* i. |) a% O" ]1 Y5 K* c# m 5 t5 h% ~; O, j) e+ W. t 端口位清除寄存器(GPIOx_BRR): r% B! w. N1 G 7 V8 q q \' Z9 ~ 通常就采用BSRR的低16位和BRR的低16位,因为BRR的低16位与BSRR的高16位作用类似。 5.端口复用功能: STM32的大部分端口都具有复用功能。 所谓复用,就是一些端口不仅仅可以做为通用IO口,还可以复用为一些外设引脚。8 P2 v7 Y: K& T8 {8 v x# a/ B' W( N+ { L' E 6.端口重映射功能:就是可以把某些功能引脚映射到其他引脚。比如串口1默认引脚是PA9,PA10可以通过配置重映射映射到PB6,PB7。; @0 M3 R b W' Y ; b o' i4 k1 \6 g 和51单片机相比,32所有的IO口都可以作为中断输入。 |
【经验分享】STM32F1和STM32F4 区别
【经验分享】STM32F1系列之常用外设说明
【经验分享】STM32介绍
【经验分享】STM32F1x系列——Flash 模拟 EEPROM
【经验分享】STM32F1在MDK下新建标准库函数工程
【经验分享】stm32f1的存储器与复位
【经验分享】STM32F10X-架构
【经验分享】stm32F1 us延时函数
【经验分享】STM32F1之定时器
【经验分享】【stm32】stm32f1代码中core_cm3、system_stm32f10x、stm32f10x_conf、stm32f10x等文件的作用