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

【STM32C0评测】3、GPIO测试

[复制链接]
qintian0303 发布时间:2025-5-2 00:12
      本次测评的第一个基础任务是GPIO测试:使用外部中断控制小灯点亮熄灭,实际上不管是外部中断还是小灯的亮灭控制,都是对GPIO的基本控制,一个是输入附带中断,一个就是纯纯的输出控制,这里我们将在上一个例程的基础上通过对STM32CubeMX对单片机进行配置然后实现这些功能,毕竟上一个历程中实际上并没有对任何控制引脚进行配置,只不过有最基础的一些系统配置,保证芯片可以运行起来。- t' F4 d) g  ^9 t* k# F
      我们看一下时钟的配置:
' g8 @7 `+ l7 s
1.png 5 C: A/ E  k' s3 v
9 Y9 p/ i" m5 f
      目前已经配置为最大的48MHz的系统时钟,使用的是内部的振荡器,这里我们就不修改了,虽然板子上配备的高速外部时钟,对本次测试的影响不大。
% w2 l- V! A/ M' a, Q      首先看一下对应的灯的原理图:
/ d# @+ p2 D  o" x: V' e
2.png - f% U' ]- S: `7 K" @6 Y

7 R% n! m; X7 L/ t; }4 X/ R      本开发板上一共配备了2个可以自定义的LED,LD1是绿灯,可以通过PA5引脚进行控制,LD2是蓝灯,可以通过PC9进行控制,通过原理图进行分析,当PA5为高电平时LD1亮起,PC9为低电平时LD2亮起。
* _. T  ]9 r. y      再看一下按键的原理图:
- R& M6 H2 Q6 q$ H) w9 f5 K
3.png
! h& b8 e% z# a4 Z$ v
+ Y8 o4 F/ x9 d) U  P4 A6 i, l
      按键还是老样子,连接的是PC13引脚。' L; e6 E/ T" ?7 V! I/ ?  e
      接下来我们看一下STM32CubeMX中的配置:1 O2 _+ D' ^7 C% E  z
      按键配置为外部中断:& i( }. G0 u! o2 b8 ?3 X
4.png , U' o3 |: p* z# M' e0 m
7 ]& |$ Y4 ~: Z5 W& l: w
      并修改为下降沿触发:) }, ?: i% u. V/ `- T- |$ K
5.png
2 B1 c) r0 D  ]) X

/ @+ M$ a' ?: b4 T      开启中断:( [4 u% z4 V' m, v' W
6.png
) a% m6 `+ ?  _- M  K: q1 V
1 G. Z: k: _* |
      LED的输出控制配置就比较简单了,配置为输出:
, z. {" W$ V' V: L: p. h( t# o
7.png % Q* Z/ r- Q5 I6 v

  \) w. M/ x' T/ `! f' e( t( e/ I      简单改一下配置让灯初始状态为灭的:
* s1 V0 Q* F" T, ]6 z0 O0 ]
8.png - i4 V% m2 f- I8 ]
# w9 O6 E- C- L4 }0 r* L7 n
      另一个灯的控制引脚的处理是一样的。1 l# c% s0 @; M3 A! c8 {
      软件方面咱们主要写的就是外部中断的回调函数,这里注意一下,这次看到主要的中断是下降沿触发,对应的是HAL_GPIO_EXTI_Falling_Callback(GPIO_Pin);重写如下:- z( t2 y4 V5 a1 E1 N" h3 N: E, |
  1. void HAL_GPIO_EXTI_Falling_Callback(uint16_t GPIO_Pin)- n* S+ b2 K# U0 ^6 i) Z0 y8 D
  2. {- Z  q. |- `4 w3 V- H6 [& }2 I
  3.      if(GPIO_Pin == GPIO_PIN_13)
    6 T* a' S) ^( j7 [& U8 q: k
  4.      {
    * y2 u' U& c9 }# r
  5.             HAL_GPIO_TogglePin(LED1_GPIO_PORT, LED1_PIN);
    & @- M% d9 J7 L6 d* V
  6.             HAL_GPIO_TogglePin(LED2_GPIO_PORT, LED2_PIN);
    8 v. k$ A4 w, ]7 n" R
  7.      }1 ?8 g8 g/ L2 n+ O- h
  8. }
复制代码
     这里有一点注意一下,我们在最开始按键引脚配置的时候选择的不上拉不下拉,这样是不可以的,因为这个板子按键的物理上拉电阻竟然没有给,这个成本的节约有点太明显了。
) t3 G8 ]5 F5 |* v* b      效果如下:( E$ R5 c/ W7 g  t# ^1 `6 u& {, w
GPIO测试 (1).gif
% f: H( T# g, r

8 E6 n' \1 u' o6 M- h* y) u# Y9 d- ^0 p! r  r, b/ C( m
2 a0 N; r/ V5 ~
# x) E' h3 s% t3 B% Y1 S( L! j

3 U% e4 s/ H4 Y# a% |  h1 B3 }
: M  _9 q: @  M+ H+ E9 I* Q1 K1 }7 _1 {% A
# U2 z: ]. A1 g& ^5 k' c

; O0 F% I' q6 p' ^$ I% p. m% q8 }6 y7 y

3 W) |0 n$ o) p2 a( l
赞 收藏 评论0 发布时间:2025-5-2 00:12

举报

0个回答

所属标签

相似技术帖

官网相关资源

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