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

【STM32C0评测】3、GPIO测试

[复制链接]
qintian0303 发布时间:2025-5-2 00:12
      本次测评的第一个基础任务是GPIO测试:使用外部中断控制小灯点亮熄灭,实际上不管是外部中断还是小灯的亮灭控制,都是对GPIO的基本控制,一个是输入附带中断,一个就是纯纯的输出控制,这里我们将在上一个例程的基础上通过对STM32CubeMX对单片机进行配置然后实现这些功能,毕竟上一个历程中实际上并没有对任何控制引脚进行配置,只不过有最基础的一些系统配置,保证芯片可以运行起来。
+ ~- n+ d) z3 G! b! i( V      我们看一下时钟的配置:8 O' m0 S' l" u: ]- W
1.png
) ^8 t. A; m5 S0 M7 u, [
9 Z, x5 k& o( }- K7 ^( b
      目前已经配置为最大的48MHz的系统时钟,使用的是内部的振荡器,这里我们就不修改了,虽然板子上配备的高速外部时钟,对本次测试的影响不大。& K1 b! t' q1 T9 E8 y
      首先看一下对应的灯的原理图:
& }9 o9 d- z. B
2.png * J2 o% s. O) w5 ?7 s7 u
( @& j# R. @1 c. F3 D- U' \
      本开发板上一共配备了2个可以自定义的LED,LD1是绿灯,可以通过PA5引脚进行控制,LD2是蓝灯,可以通过PC9进行控制,通过原理图进行分析,当PA5为高电平时LD1亮起,PC9为低电平时LD2亮起。
" F& W- y4 o- O: M      再看一下按键的原理图:& w8 D, [4 i6 M1 d, s) r
3.png + v* v, G) y' [0 B6 H& r7 R9 B

- B% U6 M0 f, W0 V4 X: j2 G$ v" Z      按键还是老样子,连接的是PC13引脚。
* \/ M2 N) ]  c; D) }( B. ^      接下来我们看一下STM32CubeMX中的配置:( ^/ t% b" K1 o4 g
      按键配置为外部中断:
- }0 k+ w+ a2 K/ G) H% v
4.png
" ?; n: w7 W! H& q% E4 f, u
+ u. N3 T9 X7 g5 p. q
      并修改为下降沿触发:
7 u# P' `3 J- Q" t5 E+ q+ u
5.png
+ E1 d0 R5 v( |: @

( @# @  e$ w' `2 o  b  C  U      开启中断:) ]8 T8 G4 V: N3 @* `' G) D: a
6.png
7 c7 p3 O* y: }  D( ?
  D$ e/ O, D5 b/ A! v. Z
      LED的输出控制配置就比较简单了,配置为输出:9 @: y* I7 q6 d$ p
7.png
% J/ B" K5 R$ ^1 H, y5 H6 V+ _
: n/ V3 f9 x- E: z8 X. Q: I4 K
      简单改一下配置让灯初始状态为灭的:
$ I0 p2 i- ?" Q: Y4 B- B
8.png
3 |: n( b0 ?5 O, B0 o) H
* q& K7 w- Z$ m$ }( m, h$ \
      另一个灯的控制引脚的处理是一样的。
# I5 o- s  m8 s$ h  H! D      软件方面咱们主要写的就是外部中断的回调函数,这里注意一下,这次看到主要的中断是下降沿触发,对应的是HAL_GPIO_EXTI_Falling_Callback(GPIO_Pin);重写如下:$ u$ ?2 S9 x& y8 r
  1. void HAL_GPIO_EXTI_Falling_Callback(uint16_t GPIO_Pin)
    . @' Q- k% Z% i
  2. {
    % ]3 |; q' g- N) @. A
  3.      if(GPIO_Pin == GPIO_PIN_13)
    ) u* @- P# i+ ^( G
  4.      {* w* }) t3 n) P- d0 C/ n  E: Y
  5.             HAL_GPIO_TogglePin(LED1_GPIO_PORT, LED1_PIN);
    : M4 K+ I1 i2 p" G$ }5 Q
  6.             HAL_GPIO_TogglePin(LED2_GPIO_PORT, LED2_PIN);. M, i6 M% a" o% @) h
  7.      }
    7 V$ K% H/ c, T. O% {. p
  8. }
复制代码
     这里有一点注意一下,我们在最开始按键引脚配置的时候选择的不上拉不下拉,这样是不可以的,因为这个板子按键的物理上拉电阻竟然没有给,这个成本的节约有点太明显了。0 f2 p6 n5 d7 F  ~/ D* H
      效果如下:
' b6 [; ^4 D6 z- H! o$ {: r
GPIO测试 (1).gif 2 k- g1 A1 S; K
# C1 D! m# a# X. k1 H

9 y# D6 T4 J9 e' t8 S3 g, A9 s7 e3 x2 w0 K
) P$ @( G0 }- Q: e; i: Q

- q1 B$ R7 R- ^' q3 e6 ~- Y' ]" S( Z! B7 N' e
( `. k9 u- |. t/ `
( D' H- B) P  }

6 g! V$ F/ Q- ]; g9 O- |" w/ g  B1 R" |# Q! c  C) P0 ?, w1 B

. z- B3 w% ]2 j4 X1 d0 a* u* H3 ~5 z7 h
收藏 评论0 发布时间:2025-5-2 00:12

举报

0个回答

所属标签

相似技术帖

官网相关资源

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