STMCU小助手
发布时间:2022-10-20 14:26
|
STM32WLE5的GPIO介绍; p! [. s; e! R) B% h# r # ]; z4 T- }& j C5 X1 x6 E8 H STM32WLE5引脚说明* Z. U* Q" p3 N' g6 o' X' L3 h # L. u d2 p: C# | GPIO是通用输入/输出端口的简称,用于感知外界信号(输入模式),控制外部设备(输出模式),是STM32WL的一种外设,与芯片的大部分引脚直接挂钩。这里的重点就是,GPIO一定是程序可控制的引脚。GPIO的引脚与外部硬件设备连接,可实现与外部通讯、控制外部硬件或者采集外部硬件数据的功能。$ T3 C" Q! l4 h- J STM32WLE5CB芯片为48脚芯片,如下图所示:" G* C& u K! L) r# f6 t
由上图可知,并不是所有的引脚都是GPIO引脚,STM32WL的 引脚可以分为下面几类: f3 ?* u" L$ \* } 1.电源引脚:引脚图中的 VDD、VDDA、VBAT、VDDPA、VDDRF 等都属于电源引脚。 2.晶振引脚:引脚图中的 PC14、PC15 和 OSC_IN、OSC_OUT 都属于晶振引脚,包括主晶振IO和RTC晶振IO,不过它们还可以作为普通引脚使用。1 f1 z3 c1 q8 K 3.复位引脚:引脚图中的 NRST 属于复位引脚,不做其他功能使用。 4.下载引脚:引脚图中的 PA13、PA14、PA15、PB3 和 PB4 属于 JTAG 或SW 下载引脚。不过它们还可以作为普通引脚或者特殊功能使用,具体的功能可以查看芯片数据手册,里面都会有附加功能说明。当然,STM32WL 的串口功能引脚也是可以作为下载引脚使用。 5.BOOT 引脚:引脚图中的 PH3-BOOT0属于 BOOT 引脚。9 j! M; J. v9 r 以上五部分IO组成的系统我们可以称为是最小系统。 GPIO 引脚:引脚图中的 PA、PB、PC等均属于 GPIO 引脚。从引脚图可以看出,GPIO 占用了 STM32WL 芯片大部分的引脚。并且每一个端口最多16个引脚,比如 PA 端口,它有 PA0-PA15。9 l* d+ _2 W; e- b3 L 8 X0 m; M) ]( {1 ~! Q STM32WL的大部分引脚除了当GPIO使用之外,还可以复用为外设功能引脚。一般来说其用途可以做如下划分: 1.专用器件接到专用的总线上,比如I2C, SPI, SDIO, FSMC, DCMI等这些总线的器件需要接到专用的IO上。: X9 u+ S- t+ f: J5 H' g 2.普通的元器件接到GPIO上,比如蜂鸣器,LED,按键等元器件用普通的GPIO即可。 3.如果还有剩余,可以根据项目需要引出或不引出均可。 / D u; E: e1 J' |1 p. u" ~ 那么,具体每个引脚的功能信息,可以看下图。 " ~) W/ i2 f( h5 j! q J& W
) F* t9 j7 s) s6 W/ O) i/ ~
( s9 C6 E7 \; {4 ~* L
$ g! a, g6 U/ Q- q
2 o; F9 }; A& F* O4 w8 @* t# E
如上所示,从数据手册中我们可以获取引脚的名字、引脚类型、引脚容忍的电压值和引脚复用功能等信息。" M( x( ^1 C5 z+ k 2 F0 U8 g8 \7 ^% f2 L GPIO功能框图$ P& j9 ?4 @& Z1 v& k( d3 `2 A 7 V2 E8 `( M+ R% r 每个GPIO内部都有这样的一个电路结构,这个结构的功能原理网上介绍的很多,这里就不再赘述。7 Y* i/ i6 F( L7 H . S: Z6 j& t- k. p9 c6 s" W3 j
3 V: ]; l. s- I$ _7 F2 C GPIO相关配置寄存器1 V9 K4 x7 N4 L $ i i' L% W) r7 ~3 y! k 每组GPIO端口含下面10个寄存器,它们可以控制一组GPIO的各个IO口。 1.一个端口模式寄存器(GPIOx_MODER)1 r" `# Z7 v" Y9 L 2.一个端口输出类型寄存器(GPIOx_OTYPER)6 G' s6 T7 h q4 i+ }' N 3.一个端口输出速度寄存器(GPIOx_OSPEEDR), V1 y% h9 ?8 c/ H 4.一个端口上拉下拉寄存器(GPIOx_PUPDR)$ S- P5 o% w* T+ B+ C. d! j5 M 5.一个端口输入数据寄存器(GPIOx_IDR)& `1 |; ?$ [) X; z, R 6.一个端口输出数据寄存器(GPIOx_ODR) 7.一个端口置位/复位寄存器(GPIOx_BSRR) 8.一个端口配置锁存寄存器(GPIOx_LCKR) 9.两个复用功能寄存器(低位GPIOx_AFRL & GPIOx_AFRH) 下面介绍一下本文需要用到的两个寄存器: & n! Y7 X4 R! ]* h) a% Y5 u 1、GPIO端口模式寄存器 , i* F9 a# O! z; y 查看参考手册上的GPIO端口模式寄存器,如下:$ N. D/ F% S: q" S5 V 3 {. y5 [- ]4 ^2 X1 w) `
* T1 G# `8 p" F: Z6 m 由此可知STM32WLE5支持四种工作模式:0 Z$ z- t M7 B9 W: k* s% S3 N / h% `: Z/ _: g1 |- ]3 _% e K 00:输入 01:通用输出模式 / _7 v! o: {4 C! s, t 10:复用功能模式 11:模拟模式(复位状态) " k, N$ C, {. M0 l 2、端口输出类型寄存器 查看参考手册上的GPIO端口输出类型寄存器,如下: + S$ z+ E5 f( o$ U
. X% C1 K( X9 x- k/ V+ O8 c; K 由此可知,输出类型分为:+ s, H9 f! v3 Y# X' @1 X: R' }. U 0:推挽输出(复位状态) 2 Y& v. J) E, {3 Q4 @ 1:开漏输出, q6 u' t- }0 b. E) j% r Y . p; ?' X- v% ?5 X4 @2 B6 U2 k 基于GPIO控制的点灯程序设计 上面已介绍了GPIO的相关知识,本部分将基于LM401评估的设计及SubGHz_Phy_PingPong例程,介绍一下点亮LED灯的实现过程。% o2 L7 [1 Z" x; ?. @ ( x3 X# }- [! b/ S 系统时钟配置 作为低功耗处理器,STM32WL一般用MSI时钟作为系统主时钟,默认使用最高的48MHz频率。配置如下:) i" L% X7 n% [- q* b5 k % V- p1 q, Q6 o5 X5 k
PS:这里配置LSE时钟,主要是为RTC使用,本例程中的HAL_Delay()函数也有使用。; |9 t) W$ ~2 @$ @$ x # v# F( Z. ]# I+ u9 s# O 6 Q: y4 c3 n" Z$ h: h9 ?# }+ } GPIO端口配置2 Z5 _2 i2 z- ^ k # q. Q, K0 i3 Q+ [1 } 由开发板的原理图可知,LED灯的设计连接如下:* _2 v1 X7 j* `* N1 ? % H k: D0 w5 B7 z% Z
' [/ M/ _0 |4 C9 Z0 v2 L 看上图,开发板上带了三个LED灯,分别连接到GPIO的PB3,PB4, PB5端口。" c `! @$ s7 T4 @ " Z, l6 F) Y' p/ J1 g F; M 本文以点亮LED1为例,初始化PB5端口。SDK中的LED灯初始化函数是BSP_LED_Init(), 具体实现如下:5 D/ f4 j5 E6 H3 _+ r0 i - D8 L4 N' u# F( P" f( H1 Q- a1 E
+ W; R' h$ D7 | LED闪灯程序% h4 M7 g3 A1 S6 ]/ \6 q8 D 本文中设计一个LED灯每隔500ms闪烁的程序,那么SubGHz_Phy_PingPong例程中的具体函数调用及实现代码如下:
F- \+ p8 ~- G& f/ l 以上就是基于开发板SDK实现的普通GPIO控制LED闪灯的程序。 8 r* I d: W3 P9 z! l0 ]# l 闪灯的实现方式有两种,一种就是上图中直接调用LED状态翻转函数实现,具体实现细节如下:
0 a0 o& d6 @# v! Y5 f 另一种是直接调用GPIO的Write函数,分别写入1或0,以实现LED灯的亮或灭。比如: $ ^# P- P" A/ x& O 写入1的调用是:6 V$ X# N1 X! ]) k+ c8 ]$ [" f) r HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, GPIO_PIN_SET);' b5 C9 o0 ]$ Q* g" @1 Q0 `/ W 写入0的调用是: HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, GPIO_PIN_RESET); 9 @. ~: B, d" I1 S 固件编译与烧写测试2 r. _+ g% C6 a# p/ \ l 程序编写完成,按下图所示,点击“编译”和“下载”图标即可完成相应的固件编译和烧写工作。烧写完成即可看到蓝灯闪烁的效果。/ h0 @8 b8 i/ a. o
& b8 I9 I2 M. e* d1 r# I 如果烧写失败,请检查如下设置是否一致: 9 V8 G! n. b, m/ e3 Q& i
' E1 o+ N+ I4 @& W- ^ ———————————————— 版权声明:enchen" [$ z9 F! Q4 G3 o" M # U% Q2 ?) _$ c% M+ W( k |
【新品测评】STM32WL3R芯片测评,从点亮第一个LED到subGhz启动
STM32WLE55 无线收发功能调试记录
STM32 无线 MCU HSE 频率与启动时间精确调谐实战指南
STM32新品选型指南:WL3R、C5、H5F/E、U3B/3C5 特性解析与场景适配
【新品有奖】新品STM32WL3R:低功耗智能交互,无线遥控新选择
STM32WL3R重磅登场,把无线遥控MCU卷到新高度
告别通用内卷!STM32WL3R凭“专用”破局,开启无线遥控新时代
经验分享 | STM32WL LoRa CAD 开启实操指南:低功耗信道活动检测实现方案
兔哥心中的ST中文论坛
小白也能明白的STM32的低功耗与唤醒机制
微信公众号
手机版