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

【经验分享】STM32库函数开发GPIO

[复制链接]
STMCU小助手 发布时间:2022-5-9 19:00
前言/ K- `! e1 T) K- B* z9 \
一、GPIO函数
! J7 I2 K; p+ h) V* y+ Y, @- ~
在固件库开发中,操作寄存器 CRH 和 CRL 来配置 IO 口的模式和速度是通过 GPIO 初始化函数完成:; _6 {  _/ K$ x5 J4 B4 H: o
void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);- i5 j% z. I1 m, Q

6 J! y" u( Y" q. {4 A' W2 i5 n1、结构体:
  W& C1 p. M" F  O) N
! Q, L+ ^. h9 D) e9 O% c% W
  1. typedef struct$ i4 N$ m8 [6 z7 g+ i. Q6 D
  2. { uint16_t GPIO_Pin; # _' |+ h- z! ~3 q3 _* k
  3. GPIOSpeed_TypeDef GPIO_Speed; 5 ~. ~# s: [& m. V: ?+ H
  4. GPIOMode_TypeDef GPIO_Mode; 1 o' i( F# g# }0 T% s$ S' Z
  5. }GPIO_InitTypeDef;
复制代码
" ?+ q( e% E$ R1 o
2、通过初始化结构体初始化 GPIO 的常用格式是:
' s, ], O, c( ]  h8 z+ g
* i$ o0 J% n& r, h: B4 a, M
  1. GPIO_InitTypeDef GPIO_InitStructure;5 s+ m% j0 \4 F; a
  2. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //LED0-->PB.5 端口配置
    % G$ z; ^- C& q) r8 M4 _
  3. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出1 x1 C% K- H9 R- N
  4. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//速度 50MHz
    8 S/ f" Q; _- a! r/ Z
  5. GPIO_Init(GPIOB, &GPIO_InitStructure);//根据设定参数配置 GPIO
复制代码

! N( G, l$ `+ k% l3、BRR 寄存器是端口位清除寄存器。该寄存器的作用跟 BSRR 的高 16 位雷同,这里就不做
4 S3 {, b0 T0 @6 A1 u详细讲解。在 STM32 固件库中,通过 BSRR 和 BRR 寄存器设置 GPIO 端口输出是通过函数GPIO_SetBits()和函数 GPIO_ResetBits()来完成的。- k" z6 x$ r/ G! P2 ]* U
1 q! v& q; y6 P" Q
  1. void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
    : `; ?7 y  }9 b3 ^6 f$ D, L) E+ P
  2. void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
复制代码

' u- a: ~9 W) H' e7 z/ [在多数情况下,我们都是采用这两个函数来设置 GPIO 端口的输入和输出状态。比如我们要设置 GPIOB.5 输出 1,那么方法为:4 T$ k+ R7 |8 t
GPIO_SetBits(GPIOB, GPIO_Pin_5);
/ Q  j  }2 C! `( b' A9 i2 p  j' G- Q) K* N! o  m7 Y$ T* V
反之如果要设置 GPIOB.5 输出位 0,方法为:; i' e; D: P9 ^8 t
GPIO_ResetBits (GPIOB, GPIO_Pin_5)
  N1 @, w. n0 ~  G
5 ~' X2 E0 p/ o' w  c( O9 |% o操作步骤为:
% ]0 |0 `# |/ f# I* n1) 使能 IO 口时钟。调用函数为 RCC_APB2PeriphClockCmd()。
/ `* Y1 X: D' @* x$ b2) 初始化 IO 参数。调用函数 GPIO_Init();# @4 c: Y& ], z8 S$ {( \
3) 操作 IO(配置结构体 参数)。1 ]1 R, p! ~! D

" x0 u2 C# J5 t# g
7 v, t/ Q  d( E& `7 X
5 ~/ P! O" m1 \1 M( q/ S- \) C! f. I2 J4 y
赞 收藏 评论0 发布时间:2022-5-9 19:00

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版