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

【STM32C0评测】3、GPIO测试

[复制链接]
qintian0303 发布时间:2025-5-2 00:12
      本次测评的第一个基础任务是GPIO测试:使用外部中断控制小灯点亮熄灭,实际上不管是外部中断还是小灯的亮灭控制,都是对GPIO的基本控制,一个是输入附带中断,一个就是纯纯的输出控制,这里我们将在上一个例程的基础上通过对STM32CubeMX对单片机进行配置然后实现这些功能,毕竟上一个历程中实际上并没有对任何控制引脚进行配置,只不过有最基础的一些系统配置,保证芯片可以运行起来。6 C' R4 r+ ?4 g( V7 o
      我们看一下时钟的配置:
4 z9 T4 ~+ y. Q6 ~
1.png
; o3 Q4 e. U/ y5 |2 O. s$ h( y$ G4 b. I

; x! I* ?9 D# q% m; [: t& i- J( z      目前已经配置为最大的48MHz的系统时钟,使用的是内部的振荡器,这里我们就不修改了,虽然板子上配备的高速外部时钟,对本次测试的影响不大。& O9 Q: G$ m* l' b8 l
      首先看一下对应的灯的原理图:
7 @5 Q, I$ @& W
2.png 6 y; Y" e7 y! N% f  l
% y, g  M. I6 R' M' R
      本开发板上一共配备了2个可以自定义的LED,LD1是绿灯,可以通过PA5引脚进行控制,LD2是蓝灯,可以通过PC9进行控制,通过原理图进行分析,当PA5为高电平时LD1亮起,PC9为低电平时LD2亮起。
- w- E) X7 ?, a      再看一下按键的原理图:2 Y+ v- B/ N& ]5 J8 [, l3 c( M
3.png
4 \* G2 f8 I& d, `) t( o
3 s$ V  m7 ]: ?: V
      按键还是老样子,连接的是PC13引脚。% a0 y+ _# a& E7 D
      接下来我们看一下STM32CubeMX中的配置:) n( Z% H% C3 s# `" A1 w3 I- A+ s
      按键配置为外部中断:
9 K8 d* M" N) L0 g. }, w
4.png ( A. @( J, w- {+ e: ]$ S: J

1 l' Y- ]( G( Y' g1 e      并修改为下降沿触发:. x, j% {+ a& \5 N$ @$ v7 F
5.png . M! q/ X( w0 V: [) x0 ^

& O0 ?$ n* B# p# c8 n3 t      开启中断:+ H& t+ Q2 @' X% q7 x
6.png
- G) A+ q5 b5 R: c: p# f/ O- c
  x/ C) ^8 i& w7 s9 S
      LED的输出控制配置就比较简单了,配置为输出:
7 e  u: X; u7 ~% S; ]6 a; a
7.png
  K2 b  Z3 R; T0 e+ \) S3 v

  z5 o5 W$ U" h% j6 F2 |      简单改一下配置让灯初始状态为灭的:1 \) B" `% Y* m6 H
8.png
6 t0 j( u# s& l, A

  E, J& S) m, K' f/ e      另一个灯的控制引脚的处理是一样的。, n- [' m- T, q7 C" H- R0 ?
      软件方面咱们主要写的就是外部中断的回调函数,这里注意一下,这次看到主要的中断是下降沿触发,对应的是HAL_GPIO_EXTI_Falling_Callback(GPIO_Pin);重写如下:! v- q% F5 T  J; p
  1. void HAL_GPIO_EXTI_Falling_Callback(uint16_t GPIO_Pin)' r  d+ g% t4 w
  2. {
    ' X! }7 h. l0 y4 q; a; j
  3.      if(GPIO_Pin == GPIO_PIN_13)
    5 S8 z* I, e1 x( T# M+ v' N! i
  4.      {
    , Y' M4 F( S5 r6 Y- h, n
  5.             HAL_GPIO_TogglePin(LED1_GPIO_PORT, LED1_PIN);0 W% m2 X9 u7 U9 k, g$ O
  6.             HAL_GPIO_TogglePin(LED2_GPIO_PORT, LED2_PIN);% Y; g5 j" [  b0 ?4 f) o
  7.      }
    4 S( `- |/ a1 h2 g5 k, x5 U
  8. }
复制代码
     这里有一点注意一下,我们在最开始按键引脚配置的时候选择的不上拉不下拉,这样是不可以的,因为这个板子按键的物理上拉电阻竟然没有给,这个成本的节约有点太明显了。
  z% }0 H4 @! m7 Z+ T1 |      效果如下:( P) [; K: g0 l% ?; e$ |5 N
GPIO测试 (1).gif
4 W/ t/ \) y/ P$ ~- l  ^

) r2 W0 L0 x/ x" X* L5 c; N7 Q5 a0 o
9 N+ m8 X' `* g/ n" u
0 [  z' Y) N2 E+ i' k( s
5 q% p) R: o; I. b" z# Z' i
3 H2 L& g9 r1 i* j9 Q4 v0 C$ r

* K$ B6 E$ Q5 a" i( Z* P5 R0 [; q& a5 W# ^2 D9 q; E
6 a8 G, |% V$ [+ x* U; |3 `: g
% c9 p+ w3 F# q. R- y

3 h6 N  j6 c/ q9 m" Z- d1 I1 M$ W
收藏 评论0 发布时间:2025-5-2 00:12

举报

0个回答

所属标签

相似技术帖

官网相关资源

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