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

STM32G071使用评测:GPIO

[复制链接]
STM1024 发布时间:2019-1-11 18:10
本帖最后由 stm1024 于 2019-1-11 18:27 编辑 5 ?+ A- m/ P4 j0 Z) W0 a6 _

: K0 t; l" F" W+ b  C( T拿到开发板,熟悉的套路都是先从GPIO着手,这次通过对比G071和之前的F071,看看G系列在GPIO方面有哪些新的变化。0.Port
  m7 M, n( I9 F2 u$ O& r看参考手册,G071只有ABCDF口,而F071有ABCDEF口,似乎F0更多一些?如果仔细看针脚定义,就知道原因了:" {/ m* J! f8 ?
F01.png g01.png
! P: d5 o- z" K3 m3 _& h0 S猜猜看哪一个是G0的针脚定义?当然是右边。通过对比可以发现,G0的针脚定义更加规整连续,应该是在推出之前做过缜密设计,相比较而言,F0系列的就显得混乱一些。
: j0 r' s$ `% x8 p: i0 d, e7 Z8 e% L  C# o) y0 e' |  |
1.寄存器+ R) g  W* E  U' ^7 V
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 ?; P/ q8 O' _  J3 q9 G0 D* K& y
( U, J% @- q3 Y4 Q4 p6 J

2 W* f" H% p% p* y( N' q% r% e* \( ~  w0 F+ R' J. h
2.特征6 t4 k, z5 U& k; K
这个方面没有太对的变化,不过得益于G0的GPIO数量的增加,因此Alternative Function不像以前F0那样,有些针脚最多要支持16个AF,G0系列最多只支持8个AF。2 O) Q- @" O: E  ~5 B. l( [, B; V
2 D6 H8 I5 q- Z( l" E8 |
3.功能" w9 X' J$ q# m
GPIO的常规功能基本上与F0系列保持相同,但是也增加了一个新的功能:USB PD / Dead battery support
3 ]0 g5 {: F8 e5 R$ `这项功能应该是支持Type-C Power Delivery的,也是我目前比较关注并想了解的一项功能,不过官方尚未就GPIO对此项功能做详细的解释。
8 a' F$ q5 i) U2 p* k' O3 g+ B2 v3 r5 S 2019-01-11_175440.png
6 U( d& H, L4 a) M. @; U9 P* U) L. Z2 w# @: W: {$ s9 r
最后是简单的测试代码:
1 s  M$ J8 c: z* P! d
  1. int main(void)
    $ e4 @2 E8 v. a$ V( i  E2 `
  2. {' P& T/ m; T9 o  x' Y) Y
  3.   HAL_Init();
    2 R# K" Z. L( l% e8 I
  4.   SystemClock_Config();
    ; U; x& M" g0 s% w
  5.   LED4_GPIO_CLK_ENABLE();
    ! ^6 |8 Q& C2 }4 C8 N4 H$ @
  6.   GPIO_InitStruct.Mode  = GPIO_MODE_OUTPUT_PP;( o8 I. T. }/ J+ p& t6 k" a% E! z+ J. ~
  7.   GPIO_InitStruct.Pull  = GPIO_PULLUP;- j7 m) r# F! i. y! s
  8.   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
    $ \; `/ O% z. r9 R: W+ C" b
  9.   GPIO_InitStruct.Pin = LED4_PIN;
    - B# o/ x* d2 M0 G- z7 j
  10.   HAL_GPIO_Init(LED4_GPIO_PORT, &GPIO_InitStruct);$ X5 w# g' R/ c! ^0 [, o
  11.   while (1)
    0 N+ j* X7 s7 F' c2 ]
  12.   {# `+ ?0 s, i  D" {: [/ Z5 R, W
  13.     HAL_GPIO_TogglePin(LED4_GPIO_PORT, LED4_PIN);
    : n& n9 [$ g. T! h) d
  14.     HAL_Delay(500);4 R0 ?' X9 S. {* l4 ?, Z! j
  15.   }0 V! W2 x+ t6 r$ N; _; ]* e
  16. }
复制代码
在GPIO上也玩不出什么新花样,主要还是对比了与之前F0存在的不同。
; B& U$ {# T8 l0 d' b4 S& p; O) M6 a% r. [9 c
收藏 评论1 发布时间:2019-1-11 18:10

举报

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