STMCU小助手
发布时间:2022-12-27 18:00
|
概述* w( k# y& X3 J8 G STM32F103RCT69 l% Q- P4 X4 S/ | 共4组IO口9 b. D, y u2 E& T4 N% e 16*3+3 = 51个IO口+ ?! H% J3 x; X J) U1 _ GPIOA0 ~ A15 GPIOB0 ~ B15! M# r. g/ S$ B GPIOC0 ~ C15; J3 R h" T, e4 g0 n GPIOD0 ~ D2 IO口的基本结构
4种输入模式 输入浮空+ ]1 f4 }3 [# V! i
输入上拉- k" Y& ~4 K% `- x6 `1 a 上图中上面打叉的部分开关闭合,上拉电阻约为30至50k / E$ t5 A; t0 ~6 ` 输入下拉6 ` B! c0 H1 f! K6 L! ~ 与上类似6 I5 I2 m3 `3 J! R8 |% M# K$ g 模拟输入 " s! t) ~* {3 D6 W( }3 v+ O
9 q; \" h. r2 q$ Y) H0 ?$ q 4种输出模式 q7 G6 E% S* Z% h. [. `% L 开漏输出 2 `& T% V5 b0 N" _5 w) g2 W
开漏复用功能4 I0 ~! O9 N8 o8 r3 f & c* m4 [% w, x' [+ d" a3 Y* x
推挽式输出 推挽式复用功能$ h) c, e" M' [9 P" N0 a : f+ h$ s) Y, K9 D: \0 X0 f 3种最大翻转速度7 y$ l' i& O8 V G% ~6 w 2MHz 10MHz; @- [1 P) M+ V5 r1 J 50MHz2 q& L: ]0 U' s9 b4 h6 F 1 h1 k6 `9 G* l+ K4 D% q 每组IO口包括的寄存器+ E( C( c6 c- S0 m& @ 两个32位配置寄存器,GPIOx_CRL GPIOx_CRH. |: t+ x" A8 @ 两个32位数据寄存器,GPIOx_IDR GPIOx_ODR 一个32位置位/复位寄存器,GPIOx_BSRR d N* g+ S1 H( ~* z4 Y% r9 X 一个16位复位寄存器,GPIOx_BRR 一个32位锁存寄存器,GPIOx_LCKR 每个IO端口位允许自由编程,然后IO端口寄存器必须按32位字进行访问,不允许字节访问 2 E5 Q2 e9 |& d& ^/ \ 对于一组IO口,每个IO口的配置需要寄存器的4位,每组一共16个IO口,因此需要寄存器的64位,由于STM32是32位的,所以分成了2个寄存器去配置 + b+ r- R5 a* U/ v. N# V GPIOx_CRL A0~PA72 ~6 g: e1 Z) h! q8 Q GPIOx_CRH A8~PA15+ x S: G9 p( ?# M& ~; {' V: F/ m& B3 r 每个IO口的配置需要寄存器的4位,其中2位是模式位MODE,2位是配置位CNF # l y; O t: J7 g 6 {* P2 i% I! b5 } 输入数据寄存器5 K* b, E1 W# l# E/ _ - }$ N4 R7 U0 x0 [ GPIOA_IDR分别对应每一位,即GPIOx_IDR0对应PA0- r- d5 g3 l0 I9 n : F7 w7 {2 o9 L6 t3 F8 x e4 Q 输出数据寄存器 GPIOA_ODR与上类似$ o% B# ]2 N" t" c " t7 s( v8 T. h1 U * w* y& X: B% r! d j0 p0 I GPIOx_BSRR置位寄存器, m. I: _6 H% d f ~0 c9 v 其实就是控制下图红框中的部分; l4 m# H% j0 B- k0 n! G. o , q( T! X: y" y) R) ^" j
) [% m# |4 ?' h& b 例如,我要操作某一位,使其置1,则只需要将这一位置1,其他位置0即可,与ODR寄存器不同的是,ODR寄存器给1就是1,给0就是0,BSRR给1就是1,给0不修改 通常只使用BSRR的低16位 i1 N6 Y, @6 {7 x) A 6 E6 h+ `+ u! y+ y- h # w2 h7 ^3 ]2 _4 Q; V7 S2 P- N GPIOx_BRR置位寄存器. w) Z3 h* k6 P+ z* c' O- s 类似 通常只使用BRR的低16位 9 n8 [* n3 v. J. z2 P8 G 端口复用) P8 [) a- V' |, }/ F \0 w 相当于是一个开关 2 @8 `' Y# K" A+ N/ u$ _+ U 端口重映射/ C( D- B# \9 \# O0 h) r 方便布线,参考Datasheet里的Remap STM32的所有IO口都可以作为中断输入 : K1 Z0 C2 G! c/ ~* y) q3 p GPIO查看MODE、PIN、SPEED的可选项 ) G i! _1 t+ s4 c
' ^% ?3 R' z6 b4 h2 k/ V3 a+ k
* A8 U$ n* p; H5 a7 D 类似地,查看PIN 8 @8 c F& I3 Q+ B9 g
( T3 W7 w! W: v5 @; P: ?, E 查看SPEED A. @2 k& l4 C* O& q# a . j. r8 K3 O" ~. I% j+ V
4 I3 A+ y9 V6 P5 |8 g. M ————————————————9 |% T5 v. u) e8 y0 D 版权声明:CodeForCoffee ! O5 Y# M9 @: P l' C6 a |
DMA 原理从 0 到 1:为什么它能解放 CPU?一文讲透 DMA 的工作流程
【福利三:雨露均沾·逢7狂欢】之五:STM32系统时钟PLL故障排除1例
【福利三:雨露均沾·逢7狂欢】之三:AI帮我查BUG
福利三:雨露均沾·逢7狂欢】之二:STM32F407VG串口通信乱码故障的排除
基于STM32F103的I2C主从机通信
OpenBLT移植到STM32F103战舰开发板上适用于所有STM32F103系列的Bootloader
TFT LCD 与 FSMC 的硬件连接大容量 STM32F10xxx FSMC 接口
单片机:初学者该了解的STM32F103基础知识
2025软件工具兔哥知道
STM32之继电器模块
微信公众号
手机版