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

如何区别stm32F1和F4对GPIO的操作

[复制链接]
攻城狮Melo 发布时间:2023-3-14 16:48
以下是stm32f4xx.h中对GPIO的定义。3 B$ `' J: N5 g/ g1 ?1 E
  1. typedef struct9 X) r6 Y  D6 t; `6 p
  2. {
      o2 M0 \2 I- g
  3.   __IO uint32_t MODER;    /*!< GPIO port mode register,               Address offset: 0x00      */' i8 ?5 W: Q! S$ [1 m
  4.   __IO uint32_t OTYPER;   /*!< GPIO port output type register,        Address offset: 0x04      */0 n8 W$ ~& z( z- _( _
  5.   __IO uint32_t OSPEEDR;  /*!< GPIO port output speed register,       Address offset: 0x08      */5 z$ F$ k0 a; j
  6.   __IO uint32_t PUPDR;    /*!< GPIO port pull-up/pull-down register,  Address offset: 0x0C      */. `! Z) P- s) ^9 k1 ]6 \- W
  7.   __IO uint32_t IDR;      /*!< GPIO port input data register,         Address offset: 0x10      */
    : g3 l4 E$ k" o
  8.   __IO uint32_t ODR;      /*!< GPIO port output data register,        Address offset: 0x14      */
    ; e1 Q7 R# t+ e3 u% Z+ [
  9.   __IO uint16_t BSRRL;    /*!< GPIO port bit set/reset low register,  Address offset: 0x18      */, q! k( w0 H) X* U  S1 W
  10.   __IO uint16_t BSRRH;    /*!< GPIO port bit set/reset high register, Address offset: 0x1A      */7 ~" D) L8 X3 w+ Y
  11.   __IO uint32_t LCKR;     /*!< GPIO port configuration lock register, Address offset: 0x1C      */$ s. `' n/ V$ h! k% ]
  12.   __IO uint32_t AFR[2];   /*!< GPIO alternate function registers,     Address offset: 0x20-0x24 */: s& L9 t" i  e
  13. } GPIO_TypeDef;
    8 @. h. p: v+ ?- F2 \4 M( D% y' |0 l9 A; T
复制代码
  A2 C0 A0 _# I" x. c$ v! C% e
以下是stm32f10x.h中对GPIO的定义。: P1 C1 J; C$ e& v  N
  1. typedef struct
    0 i+ A7 l. x8 S
  2. {
    & p# Z! P# k% [9 v5 H
  3.   __IO uint32_t CRL;; r6 M4 ?4 _* w6 E2 x' c
  4.   __IO uint32_t CRH;
    7 O2 q1 I0 ]% @2 [- R. U- l5 u* F
  5.   __IO uint32_t IDR;
    4 s* [' B; j. e" d4 ]* H! @
  6.   __IO uint32_t ODR;# i+ m6 U. [# k' f6 I& Z
  7.   __IO uint32_t BSRR;
    " N! f; d4 a, k' f8 k1 T5 r; d
  8.   __IO uint32_t BRR;
      A# m% e! x. }2 [' d* d5 f
  9.   __IO uint32_t LCKR;
    0 n# W! W# h8 V5 P/ Z& @% ~
  10. } GPIO_TypeDef;: f7 L  ?; s8 B/ `6 m: s- `+ z
复制代码

: @3 A7 n7 i$ PF1的CRL、CRH用于配置输入输出、推完开漏模式、速度、上下拉输入、复用输出,和F4的MODER、OTYPER、OSPEEDR、PUPDR、AFR[2]等效。# O! I% F# g) O
3 {, r& Z/ w0 C
IDR和ODR都是一样的,输入输出寄存器。0 T5 L; b# ]3 _; G# E) W7 D  i

* n$ P) F- P& N  I* h# O; S. G2 {F1的BSRR的低16位是置位,F4的BSRRL是置位。(F1的BSRR高16位和BRR等效,都是复位)4 }% F5 ^' H$ n( E

9 j% ]. |! h# g! X& I: bF1的BRR是复位,F4的BSRRH是复位。" l2 m) e5 z9 P8 G% M( L: L
3 g7 b/ b" z* U& L& x) G
LCKR是锁存配置,一般不用。/ C9 ^. ^3 v1 e; q7 s

' x! u- y: k# X  V: b然后F1的AFIO是独立的,不在GPIO的结构体里。/ R9 u+ Q" |# o/ n4 m
; K  r2 O8 r2 p  p. }- U, I
下面举个F4设置IO电平的例子:4 v# h2 z5 s; Z1 z- q% S
  1. #define CONVST_1()        GPIOC->BSRRL = GPIO_Pin_6: ^: A- N8 C- i2 ~4 H0 G
  2. #define CONVST_0()        GPIOC->BSRRH = GPIO_Pin_63 p2 M5 l! A/ R2 W
复制代码
  j) @  M' @  y* r5 \
F1设置IO电平的例子:  q! f% p( X) v1 {. U1 ]9 _1 U
  1. #define CONVST_1()        GPIOC->BSRR = GPIO_Pin_6) X3 v. M3 i* Z. _% D
  2. #define CONVST_0()        GPIOC->BRR = GPIO_Pin_6
    ; z, p' r; {5 U8 d6 x) X
复制代码

. V7 q7 P6 f- }) F  O4 ~操作之前记得初始化!
. C) I5 |" E2 E. f————————————————% w" T. @) P4 j
版权声明:小盼你最萌哒3 h; M: D/ P0 u3 h
如有侵权请联系删除2 o& z  c' X3 \1 n# |
赞 收藏 评论0 发布时间:2023-3-14 16:48

举报

0个回答

所属标签

相似技术帖

官网相关资源

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