一 GPIO基本原理与寄存器配置 1 GPIO基本结构和工作方式 参考资料:: {4 K3 `: i+ e$ |4 T0 @! b3 n 战舰/精英STM32F1开发板 《STM32F1开发指南-库函数版本》-第六章 跑马灯实验6.1小节 miniSTM32F1开发板 《STM32不完全手册-库函数版本》-第六章 跑马灯实验6.1小节7 _6 m1 k" Y- ?5 O' U# G STM32F1xx官方资料; Z) N: h$ p" ~( c" O 《STM32中文参考手册V10》-第8章通用和复用功能IO(GPIO和AFIO)7 B1 @% f9 \; w, l0 ~# a 芯片数据手册(datasheet) ) @% u8 E2 l2 e IO说明:# o9 H; L! \: o; W, p4 L6 ] N 战舰版和精英版144引脚如STM32F103ZET6 一共7组IO 每组IO口有16个IO一共112个IO,从GPIOA-GPIOG mini版如STM32F103RCT6 一共4组IO 一共16*3+3=51个IO GPIOA-GPIOD 其中GPIOD只有GPIOD0-D29 b$ }' [; n) I/ x0 G, C : W8 K9 }( n: G" u! K& f8 s 注:STM32的大部分引脚除了当GPIO使用外,还可以复用为外设功能引脚(比如串口) 注:大部分IO可容忍5V(有FT标识). w6 a( ^/ f Y3 m( D2 D4 W GPIO工作方式9 I& t1 D" i' \9 V7 r$ y) [2 q, v# F4 h 4种输入模式:0 }- T) t# r! m 输入浮空& h: A. N4 C4 z! a8 z 输入上拉 输入下拉( c5 y! ~6 c1 E# }1 M9 G 模拟输入2 t+ n) H& U& ~9 v) d, F9 u2 Y 4种输出模式: 开漏输出: X1 v2 `+ D" d) z 开漏复用功能 推挽式输出; [, t( S1 r# m8 {* k 推挽式复用功能5 B9 C5 ?9 c) Y9 A: K2 S: L. _ j# e8 H 参考资料:STM32八种IO口模式的区别.pdf 3种最大翻转速度:% I) }# D- A% m( J/ k5 b* i- m 2MHZ. X2 l- S" d- |& U8 ?1 m0 i- A 10MHZ 50MHZ# E& r* i! S. l" E# e6 j' O 注:如果写进去1 N-MOS处于关闭,输出值是由外部上拉或下拉决定的,所以读取的值不一定和写进去的一样。 0 U7 V0 S% ^1 ?5 L; d: S% J, J8 J. T 参考帖子:http://www.openedv.com/posts/list/21980.htm 3 Q; D" [: z8 A 注:* B7 V. I! l8 `! Z$ ]# S 推挽输出可以输出强高低电平,连接数字器件; 开漏输出只可以输出强低电平,高电平得靠外部电阻拉高。输出端相当于三极管的集电极,要得到高电平状态需要上拉电阻才行,适合做电流型的驱动,其吸收电流的能力相对强(一般20mA以内) 2 GPIO寄存器说明: ~+ n' c5 i. Z4 \- z 每组GPIO端口的寄存器包括: 两个32位配置寄存器(GPIOx_CRL,GPIOx_CRH), 两个32位数据寄存器(GPIOx_IDR和GPIOx_ODR), 一个32位置位/复位寄存器(GPIOx_BSRR), 一个16位复位寄存器(GPIOx_BRR), 一个32位锁定寄存器(GPIOx_LCKR).# N* B* B+ I9 k9 q" G# [6 P 每个I/O端口位可以自由编程,然而I/O端口寄存器必须按32位字被访问(不允许半字或字节访问)7 Q+ Z. j3 ~/ i: }2 _ 每四位控制一个IO 低两位是MODE 高两位是CNF 具体参数设置需要按表所需。 7 w' [7 l; l( v; A) ~ 输入模式下配置CRL或CRH 需要配合ODR配置成上拉或下拉% J5 H! P' D: N/ e L 简单来说 配置BSRR可以单独对位操作,就是配置某一个位为1,其他位为0 时,配置0的不改变它本来的状态。而在ODR配置中,配0配1都会发生相应的改变。 3 @+ M F5 K/ A/ y: z BRR相当于BSRR的高16位。$ o: V) [9 P1 R+ q 3 STM32F10x GPIO引脚说明 & z) v8 w2 { ~( e7 p( p9 @ 注:所有IO都可以作为中断输入7 F4 M- E. {' o% n; M5 \3 ? ; L! K( a( k% N7 I. o7 w& k" O |
【经验分享】STM32F1和STM32F4 区别
【经验分享】STM32F1系列之常用外设说明
【经验分享】STM32介绍
【经验分享】STM32F1x系列——Flash 模拟 EEPROM
【经验分享】STM32F1在MDK下新建标准库函数工程
【经验分享】stm32f1的存储器与复位
【经验分享】STM32F10X-架构
【经验分享】stm32F1 us延时函数
【经验分享】STM32F1之定时器
【经验分享】【stm32】stm32f1代码中core_cm3、system_stm32f10x、stm32f10x_conf、stm32f10x等文件的作用