STMCU小助手
发布时间:2021-8-13 14:15
|
STM32引脚说明' R" ?: K6 ^1 z [# m, f 64引脚—51IO口
: t: l( n' C0 P ~ t% W$ I3 L( t GPIO基本结构
+ H: V; S) a7 I' j. ?0 K/ k % X- j( Z v$ }# s! O: e 查阅30页(FT)标识:可承担5V电压
/ B X# _# o# v7 x4 S3 | GPIO工作方式+ o2 @& K- U1 R& h& S
1-4输入( k, P) K' y0 _; h4 h 5-8输出 3种最大反转速度:2MHZ、10MHZ、50MHZ
1 |, u, \8 A0 Y" {" c n$ W _ 6 u# K8 `; u8 l* ~- z b' ` 配置9 L" e& @# y* w! Q9 x0 A 配置寄存器CRL CRH& `! ^# M1 \! U2 d' o
8 @0 o4 ~* l6 G* w( h 理解:每组IO口有16个IO,分两组,高八位CRH低八位CRL控制,CRH和CRL是两个32位(这里指二进制0或1)寄存器,每一位IO口有四位二进制数,前两位是CNF即输入输出模式,后两位是mode即反转速度。 % `0 X& {4 ]2 u% \% Y 1 s! b t( ]: F9 _ 控制如下:! u' f- {$ @6 B8 j* r
) I5 T+ ]8 o' _ 3 X. l+ j5 p2 r* }. b; S ' f6 A5 P# o; w0 j 端口输出数据寄存器ODR(敲重点) * G+ j0 \, z$ W# T; ?% k0 Z% B 理解:ODR是一个端口输出数据寄存器,也只用了低16位。该寄存器为可读写!从该寄存器读取出的数据,可以用于判断当前io口的输出状态,而向该寄存器写数据则可以控制某个io 口的输出电平。7 ` j' t& [% V5 }/ J
* [% C* G5 Z( i: ~$ K% G & A% L; W( I$ U% E7 B& m 特技:在输入模式下,控制上拉(1)下拉(0)
/ x5 s, e- c, U, c3 i 端口输入寄存器IDR2 m) b; _$ o( `0 p 理解:输入模式下,是上拉还是下拉?端口输入寄存器IDR,只用了低16位。该寄存器为只读寄存器,并且只能以16位的形式读出。每组IO正是16组,一一对应。要想知道某个io的电平状态,只要读这个寄存器,再看某个位的状态就可以!并且,在输出模式下也可以使用,作用是读取输出状态。# v2 ~8 }) {9 `3 }$ o0 Q# m6 Q
$ O' T3 L! F3 A/ a4 w2 ~7 g2 H % Q6 w$ i7 u; k4 {/ D. n ' F, n0 B5 e; d2 q 端口位设置/清除寄存器BSRR ; W4 U4 l/ e% Y% n 6 f" E5 c% u: Z! p x" Y0 u0 h6 ?; z 理解:BSRR寄存器和前面提到的ODR寄存器有类似的功能,都可以用来设置端口的输出位是1还是0, 本质上是间接设置ODR。BSRR寄存器低16位对应位设置为1,那么IO口输出为高电平,对应位设置为0,对应IO口不产生任何影响;高16位设置为1,那么IO输出为低电平,对应位设置为0,对应IO不产生任何影响。% A* x0 W# d4 K$ h4 B+ P/ {8 x# ~. J
1 M6 C' d; _( [* R7 K, e: R, L 6 z5 s5 y7 S1 r) a6 O+ R" s! A 端口位清除寄存器BRR' H+ J# _3 ^' `; P1 i: H8 b 和BSRR的高16位作用功能一样的,高16位起作用,高16位设置为1,那么IO输出为低电平,对应位设置为0,对应IO不产生任何影响。 ) h5 c. m8 V( J1 _' f5 @- O 比较少用$ N. c) `6 o* G! d, q1 O2 f ; @7 Z" I$ `+ e3 |6 @- t1 e7 t 端口复用功能 1 f2 }( i5 z, r3 J" B, g + `0 H: M6 R: R4 o6 f! @6 u5 A stm32的大部分端口都有复用功能。复用就是一些端口不仅仅可以作为通用io口,还可以复用为一些外设引脚。比如PA9、PA10可以复用为stm32的串口1引脚。以此最大限度地利用端口资源。 端口重映射功能 , b# ` F3 N+ p8 T 2 ^6 t2 J" {" l C# c" g 把某些功能引脚映射到其他引脚,比如PA9、PA10通过配置重映射映射到PB6、PB7,以此方便布线。/ Z6 T2 _# V* z* l6 S' d : K* Y3 K" z/ k0 B* r 理解原理是基础,还要结合代码,在实战中学会使用6 z; U! e5 i4 U |
《STM32CubeMX2 实战课程》学习笔记5+CubeMX2生成的Uart初始化代码中没有使能
《STM32CubeMX2 实战课程》学习笔记4+FreeRTOS中的SysTick错误及改正
使用stm32C542做的低功耗密码锁示例
《STM32CubeMX2 实战课程》学习笔记1+由MX2生成MDK5项目并打开
《STM32CubeMX2 实战课程》学习笔记3.+sleep/stop/standby低功耗模式的入口
《STM32CubeMX2 实战课程》学习笔记2+MX2生成的MDK5工程中添加已存在文件(*.c / *.h)
【STM32MP257-DK】01开发板开箱、ST MPU 生态资源使用、环境搭建以及镜像更新
基于STM32在线升级OTA经验分享
【STM32C0测评】Nucleo-C092开发板驱动DS1302实验
Keil下的STM32N6之RAM运行工程配置说明
微信公众号
手机版