你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】STM32H7学习继续(STM32H7系列5)第十七章比较实用,以后写程序的时候会用到

[复制链接]
STMCU小助手 发布时间:2021-12-19 15:00
17. STM32H7之GPIO的HAL库API8 e0 w$ z1 h7 D( B8 T, ~
我这里简单的总结一下GPIO的APi函数:
0 |1 _  {5 h& X6 d! hHAL_GPIO_Init:此函数用于初始化GPIO
0 q8 \) p$ r1 B2 I0 m; u, R! r& q先定义,配置结构体GPIO_InitTypeDef,再调用此函数初始化/ m8 b0 }3 f+ U, e4 F0 O. n0 B
HAL_GPIO_DeInit:此函数用于复位IO到初始化状态
* k# H" S3 ^: S- MHAL_GPIO_ReadPin:此函数用于读取引脚状态,通过GPIO的IDR寄存器读取。8 Q: A  S: z0 X; b5 z1 ?- ~( s, @5 {
HAL_GPIO_WritePin:此函数用于设置引脚输出高电平或者低电平。使用GPIO的BSRR寄存器进行设置,使用这个寄存器的好处是支持原子操作,由硬件支持的。
# D" F5 o4 Y  iHAL_GPIO_TogglePin:此函数用于设置引脚的电平翻转,使用GPIO的ODR寄存器进行设置。0 G4 G, S9 L0 \4 G, X& `
HAL_GPIO_LockPin:此函数用于锁住GPIO引脚所涉及到的寄存器,这些寄存器包括GPIOx_MODER,GPIOx_OTYPER,GPIOx_OSPEEDR,GPIOx_PUPDR,GPIOx_AFRL 和 GPIOx_AFRH。3 _5 g: c7 {/ f- l+ L2 j8 s6 P
注意事项:
! R, B+ _- Q$ A2 n此函数是锁住用户设置的引脚所对应的寄存器某些位,并不是把整个寄存器都锁住了。1 r; v& Z$ Y9 P5 k2 F8 n& w# P' _( K
一旦锁住后,就不能再修改,只有复位后才可以重新配置。9 q# D! X! \; N) {! g

( p3 z" t9 n3 D: I如何使用HAL库的GPIO驱动
) i, s8 a# @) C! ~( W使用方法由HAL库提供(本章17.3.1小节提供的例子就是这种方式):0 a; J# r# P! q* T
: @6 ]" `7 w1 @2 f
第1步:使能GPIO所在总线的AHB时钟,__HAL_RCC_GPIOx_CLK_ENABLE()。
' i1 z1 U3 t8 g% V9 R' g% v$ w# T5 P5 o/ ~0 e$ m; {0 w7 i- j3 U% `
第2步:通过函数HAL_GPIO_Init()配置GPIO。) a6 {% L9 D8 M) ~6 U, d& K1 W0 ]
& z8 R9 y) [& P1 A9 @0 [5 p
(1) 通过结构体GPIO_InitTypeDef的成员Mode配置输入、输出、模拟等模式。
( ?6 _! V9 e0 [) ]. a
/ u' ?: R& b  n, E(2) 通过结构体GPIO_InitTypeDef的成员Pull配置上拉、下拉电阻。
# a. W7 p' i) o; A' b9 ^3 a; q5 P) U, Y+ i
(3) 通过结构体GPIO_InitTypeDef的成员Speed配置GPIO速度等级。
! U9 R/ i& ^- y# P( v6 L$ j% i; i
" g% s  I7 X: X- }(4) 如果选择了复用模式,那么就需要配置结构体GPIO_InitTypeDef的成员Alternate。
( e9 P$ @2 z* L% n# i9 O1 Y( |) P
0 ]# j) x- E/ C" r(5) 如果引脚功能用于ADC、DAC的话,需要配置引脚为模拟模式。+ M8 L" g6 z; y# W+ c$ L
8 S; a) D# J. a
(6) 如果是用于外部中断/事件,结构体GPIO_InitTypeDef的成员Mode可以配置相应模式,相应的上升沿、下降沿或者双沿触发也可以选择。; a) p5 u( p$ _$ G( Y/ ]8 ]* i- r# k
! O- p9 x! @6 q
第3步:如果配置了外部中断/事件,可以通过函数HAL_NVIC_SetPriority设置优先级,然后调用函数HAL_NVIC_EnableIRQ使能此中断。0 i5 j6 ]6 c8 y- e
; }# N  o, ?  e1 u" a/ Y/ Z) f( b
第4步:输入模式读取引脚状态可以使用函数HAL_GPIO_ReadPin。# m; T8 L" X, t- N% Z- c! j0 R

$ l2 g) c8 l* `9 }2 c  N0 ?第5步:输出模式设置引脚状态可以调用函数HAL_GPIO_WritePin()和HAL_GPIO_TogglePin。6 A! f* [5 c$ ^5 o5 h

" \4 F5 B$ t9 J另外注意下面三个问题:: C$ F8 k4 A. w

0 K. y8 s4 I/ O* t% t1 q. I系统上电复位后,GPIO默认是模拟模式,除了JTAG相关引脚。
+ q( [7 Q# d+ t7 c关闭LSE的话,用到的两个引脚OSC32_IN和OSC32_OUT(分别是PC14,PC15)可以用在通用IO,如果开启了,就不能再做GPIO。. ]1 f( t; E! ]7 U: W
关闭HSE的话,用到的两个引脚OSC_IN和OSC_OUT(分别是PH0,PH1)可以用在通用IO,如果开启了,就不能再做GPIO。/ X* P+ {' z8 U+ v$ L
# u. Y0 w, D  G: C

- I% s  X, m5 d* u" A; m% G附上简单的 跑马灯程序做例子6 ?8 @3 U# G6 c+ C/ G! x4 |
20200109102255425.png
$ B, i9 h/ l* C2 H% {
0 z$ D  X- e6 F

# F( U9 s4 i* \* c7 N& x. J/ ~: d+ V1 O1 {- k7 i
8 Q  U4 o6 C4 e' n$ S8 j5 t5 _6 L
收藏 评论0 发布时间:2021-12-19 15:00

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版