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

STM32G071使用评测:GPIO

[复制链接]
STM1024 发布时间:2019-1-11 18:10
本帖最后由 stm1024 于 2019-1-11 18:27 编辑 : ]& }! c& R# p- z& p( |9 q6 N, n

% }& ]5 V) ]  B7 j拿到开发板,熟悉的套路都是先从GPIO着手,这次通过对比G071和之前的F071,看看G系列在GPIO方面有哪些新的变化。0.Port$ O9 ~9 k9 r1 W7 h
看参考手册,G071只有ABCDF口,而F071有ABCDEF口,似乎F0更多一些?如果仔细看针脚定义,就知道原因了:8 a- A& e: A# a) K6 A8 P5 E
F01.png g01.png & q9 q5 _- H% T% l( e$ z+ W  U- P
猜猜看哪一个是G0的针脚定义?当然是右边。通过对比可以发现,G0的针脚定义更加规整连续,应该是在推出之前做过缜密设计,相比较而言,F0系列的就显得混乱一些。
; s0 Y: f6 |: `' |1 L
/ K+ c5 a. t/ h) O- Q* v7 E1.寄存器
9 J6 i# E2 m% r- y9 `2 ^F、G系列GPIO的四个基本配置寄存器GPIOx_MODER,GPIOx_OTYPER, GPIOx_OSPEEDR and GPIOx_PUPDR 是少不了的,两个数据寄存器GPIOx_IDR and GPIOx_ODR同样也是不可或缺的,最后一个就是Bit set/reset 寄存器(GPIOx_BSRR)。这是相同点,而且通常我们使用GPIO寄存器用的最多的也就是这些。那么不同点呢?首先是锁存寄存器GPIOx_LCKR,F0系列上,只有Port A和Port B有,而在G0系列上面则是所有的寄存器都有。
4 c4 ^, `* Q. C8 H' a) c, U# R/ ~
4 ~- ^/ ^8 Q( E8 x
& q, I/ t- ^$ M
& |- O# [3 ~' {2.特征
. G! r( I- C6 x' ~7 b' }这个方面没有太对的变化,不过得益于G0的GPIO数量的增加,因此Alternative Function不像以前F0那样,有些针脚最多要支持16个AF,G0系列最多只支持8个AF。3 y! u, C8 I; U

: X6 i! r2 G  w' n* r# {& W3.功能
8 m, X3 f. t) \; N: t7 u9 zGPIO的常规功能基本上与F0系列保持相同,但是也增加了一个新的功能:USB PD / Dead battery support
5 X7 i1 o$ d; y5 i2 h$ r" s" r  e这项功能应该是支持Type-C Power Delivery的,也是我目前比较关注并想了解的一项功能,不过官方尚未就GPIO对此项功能做详细的解释。3 e' e6 m4 y" L
2019-01-11_175440.png 7 J8 ?& d3 }* I% N# I: l
8 e% K/ I+ B, f) L% W& G* u7 p8 ]. D" z
最后是简单的测试代码:. z- s, [+ o3 x; \) m. @
  1. int main(void)
      Z# P" n4 n! [  A- l/ m1 x
  2. {! \! p' Z. ?- C( u/ |) K
  3.   HAL_Init();: h5 u! n2 _$ W; Q! y
  4.   SystemClock_Config();4 q' O; x; \. X- M
  5.   LED4_GPIO_CLK_ENABLE();) l  C6 u) B# u' ^
  6.   GPIO_InitStruct.Mode  = GPIO_MODE_OUTPUT_PP;1 p) E% D. i7 g$ I- P& N& K" E
  7.   GPIO_InitStruct.Pull  = GPIO_PULLUP;
    4 U% L$ G8 Z. O3 l
  8.   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
    1 Z) y6 H' \- q' O4 A2 Y, ~
  9.   GPIO_InitStruct.Pin = LED4_PIN;9 a7 @7 `& b+ s: r; F/ d
  10.   HAL_GPIO_Init(LED4_GPIO_PORT, &GPIO_InitStruct);
    1 [& A. r8 h: H) |5 Z% B
  11.   while (1)6 T- S: K& I2 h) w
  12.   {
    2 U3 x; Y$ C# J8 R9 j0 _3 H
  13.     HAL_GPIO_TogglePin(LED4_GPIO_PORT, LED4_PIN);
    2 t, w1 Q2 _, n7 f* c
  14.     HAL_Delay(500);, R9 x8 p( v9 b  i7 Y" z8 w5 Q
  15.   }% u" z9 T& q" c, b/ V
  16. }
复制代码
在GPIO上也玩不出什么新花样,主要还是对比了与之前F0存在的不同。
6 Q0 [1 q& v8 J- x1 D9 G/ h( H/ E
. x6 E' g0 h1 X' f' E
收藏 评论1 发布时间:2019-1-11 18:10

举报

1个回答
zhdzhd 回答时间:2019-1-12 21:27:43
支持
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版