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

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

[复制链接]
STMCU小助手 发布时间:2021-12-19 15:00
17. STM32H7之GPIO的HAL库API, [+ M8 }3 _# l0 X/ ^7 t/ W  I
我这里简单的总结一下GPIO的APi函数:
4 ]" }) W. ~, p, w' `8 q( SHAL_GPIO_Init:此函数用于初始化GPIO* ], q0 k6 @( B1 o* Y# D( e% L
先定义,配置结构体GPIO_InitTypeDef,再调用此函数初始化" i* g/ |& c( a$ P6 u7 A
HAL_GPIO_DeInit:此函数用于复位IO到初始化状态
3 b- j& J. j' o- k# R+ L9 hHAL_GPIO_ReadPin:此函数用于读取引脚状态,通过GPIO的IDR寄存器读取。; Y! ~/ C: A% R9 |& w5 y# A
HAL_GPIO_WritePin:此函数用于设置引脚输出高电平或者低电平。使用GPIO的BSRR寄存器进行设置,使用这个寄存器的好处是支持原子操作,由硬件支持的。3 o" b. j4 Y; H
HAL_GPIO_TogglePin:此函数用于设置引脚的电平翻转,使用GPIO的ODR寄存器进行设置。; [5 p' f  p2 x9 y
HAL_GPIO_LockPin:此函数用于锁住GPIO引脚所涉及到的寄存器,这些寄存器包括GPIOx_MODER,GPIOx_OTYPER,GPIOx_OSPEEDR,GPIOx_PUPDR,GPIOx_AFRL 和 GPIOx_AFRH。  d7 C$ A- L3 N1 M+ ~
注意事项:. K9 E8 V3 |9 z) K! U
此函数是锁住用户设置的引脚所对应的寄存器某些位,并不是把整个寄存器都锁住了。
  ~+ B7 m5 r" _- R0 Z- _' F$ M一旦锁住后,就不能再修改,只有复位后才可以重新配置。' K  O* q) g  R( t' A2 H, J' n' K9 ?. ~
7 ]7 \5 r% L# n, J* [' L
如何使用HAL库的GPIO驱动$ P) _) l* x# @! D- r3 L) I
使用方法由HAL库提供(本章17.3.1小节提供的例子就是这种方式):) w( W8 H$ S% \0 G

, V6 A  J4 `# ^, x! J; Q第1步:使能GPIO所在总线的AHB时钟,__HAL_RCC_GPIOx_CLK_ENABLE()。
6 a* C8 \) I9 }% y$ E5 i9 X" q5 v/ b# N
第2步:通过函数HAL_GPIO_Init()配置GPIO。0 h% c1 [2 q# E+ G+ T4 Y

2 Y$ m  |, {7 w6 M* g4 L(1) 通过结构体GPIO_InitTypeDef的成员Mode配置输入、输出、模拟等模式。
0 y: Z; @1 \* n- r- Q5 U' G9 g: W" b3 u/ O8 S
(2) 通过结构体GPIO_InitTypeDef的成员Pull配置上拉、下拉电阻。
% n- `3 w. P0 x; |3 Z  s! Y: Z  z# K4 H$ d# S6 R& O
(3) 通过结构体GPIO_InitTypeDef的成员Speed配置GPIO速度等级。
1 X& A! c) Z" L8 C. X4 N* b( @3 y& |" _1 o* e! c
(4) 如果选择了复用模式,那么就需要配置结构体GPIO_InitTypeDef的成员Alternate。
+ L! E3 `& I/ P/ R
5 h% L1 e* Z  W% [8 T# L6 G(5) 如果引脚功能用于ADC、DAC的话,需要配置引脚为模拟模式。
. K) i: l, k$ H# F# b
# ]! `. n* Z! h6 g" A(6) 如果是用于外部中断/事件,结构体GPIO_InitTypeDef的成员Mode可以配置相应模式,相应的上升沿、下降沿或者双沿触发也可以选择。9 A! A, ~% P5 e+ a: J0 l3 w+ _
  k9 A: Q# W2 G9 s$ n% s
第3步:如果配置了外部中断/事件,可以通过函数HAL_NVIC_SetPriority设置优先级,然后调用函数HAL_NVIC_EnableIRQ使能此中断。
  I2 h% P( c' F! T9 ]. ?5 n2 Y
! ?+ O/ Z/ T! s& I第4步:输入模式读取引脚状态可以使用函数HAL_GPIO_ReadPin。
/ a. l5 q' L" z- T5 r. j
9 `, p! q) I, f+ [1 G第5步:输出模式设置引脚状态可以调用函数HAL_GPIO_WritePin()和HAL_GPIO_TogglePin。: ?: \/ w: r1 K( }1 A3 A# i

1 s; J3 @( F: b$ u; Y& k. C另外注意下面三个问题:
- Q2 r6 s, _- A, J. p$ [, A$ ?0 F( r* j1 @3 b' M! u+ V
系统上电复位后,GPIO默认是模拟模式,除了JTAG相关引脚。* H, C3 f. O8 A% \; z3 V3 V4 E
关闭LSE的话,用到的两个引脚OSC32_IN和OSC32_OUT(分别是PC14,PC15)可以用在通用IO,如果开启了,就不能再做GPIO。
' ?7 y0 r. W8 n5 U! _! A关闭HSE的话,用到的两个引脚OSC_IN和OSC_OUT(分别是PH0,PH1)可以用在通用IO,如果开启了,就不能再做GPIO。
& J& u6 N4 R" R$ n
( `9 q! ], _+ k5 S2 h/ Z, x5 ^  I; J) h, V
附上简单的 跑马灯程序做例子
4 M% `5 V! V- M! O+ v+ ~& B3 |: q
20200109102255425.png
+ w6 h: s- @" W# H! o. X: z
+ I+ Y& j6 |( H5 J; j

( \# t+ g0 v* Y' }9 {( A2 y. j
, `% P& z6 r4 \; D' r2 h
; o/ ]  u. p6 B) Q# y* `1 ^+ [) h
收藏 评论0 发布时间:2021-12-19 15:00

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版