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

【STM32C0评测】3、GPIO测试

[复制链接]
qintian0303 发布时间:2025-5-2 00:12
      本次测评的第一个基础任务是GPIO测试:使用外部中断控制小灯点亮熄灭,实际上不管是外部中断还是小灯的亮灭控制,都是对GPIO的基本控制,一个是输入附带中断,一个就是纯纯的输出控制,这里我们将在上一个例程的基础上通过对STM32CubeMX对单片机进行配置然后实现这些功能,毕竟上一个历程中实际上并没有对任何控制引脚进行配置,只不过有最基础的一些系统配置,保证芯片可以运行起来。
- K& |( p6 q1 Y& N( O/ d* x8 E( t      我们看一下时钟的配置:# {+ a. n: e1 h6 Z2 x2 G
1.png 2 h" N" V- _; G- w6 k: o1 Q* M, Z

, H) E! p7 r. V+ M      目前已经配置为最大的48MHz的系统时钟,使用的是内部的振荡器,这里我们就不修改了,虽然板子上配备的高速外部时钟,对本次测试的影响不大。: @5 H5 p# l2 ?  ^- q; t
      首先看一下对应的灯的原理图:
6 p9 D1 L# t" b* g( K* u
2.png + S8 A1 n) _$ e* {1 z8 Q9 c9 i

# q$ D# \% M) O' v2 J" K      本开发板上一共配备了2个可以自定义的LED,LD1是绿灯,可以通过PA5引脚进行控制,LD2是蓝灯,可以通过PC9进行控制,通过原理图进行分析,当PA5为高电平时LD1亮起,PC9为低电平时LD2亮起。$ }7 }. O; q8 Z6 p0 }
      再看一下按键的原理图:4 e3 B3 m8 ~. f) O  ]- m4 L) W
3.png # I  O4 R- F0 G5 @7 |+ [7 o- r

; w- O+ S% Y% l2 G      按键还是老样子,连接的是PC13引脚。
8 q8 p$ v, e2 N4 u5 {! ^+ _      接下来我们看一下STM32CubeMX中的配置:
8 r9 z- H6 s0 r& y- I      按键配置为外部中断:
6 p# @1 [8 `) i1 F# S) l- z- e' S
4.png
3 e8 p& O- o# i0 C$ ]* x, I2 j& U
* _% E. N6 k( u. J
      并修改为下降沿触发:
1 M- x" i+ p! J% }! A
5.png ) T8 i' H$ d1 g

8 W8 ]' a" }9 F      开启中断:; }6 x& X. H. W3 I
6.png
/ |* @4 M' z. L' c
7 M$ \8 L9 w* L* U3 O- q
      LED的输出控制配置就比较简单了,配置为输出:
3 o4 d8 ]* W. y7 i7 Z* H9 g
7.png
# A) Y, t2 r; Z$ s
* O5 E3 I4 p# ]: ^4 F! O
      简单改一下配置让灯初始状态为灭的:
9 a" I# Y2 F. }8 p, A
8.png
) X8 N- V& B+ K+ E6 k

$ \4 p$ [$ f# N, |: M      另一个灯的控制引脚的处理是一样的。
/ `- _( I' m' P! |      软件方面咱们主要写的就是外部中断的回调函数,这里注意一下,这次看到主要的中断是下降沿触发,对应的是HAL_GPIO_EXTI_Falling_Callback(GPIO_Pin);重写如下:7 Q9 m" c, V  ^  g: B+ A
  1. void HAL_GPIO_EXTI_Falling_Callback(uint16_t GPIO_Pin)$ W& _. B( f, M+ K( T
  2. {
    $ ~2 c8 b) M; T, }: x
  3.      if(GPIO_Pin == GPIO_PIN_13)
    & P) m' q% A5 G9 _
  4.      {% D( r5 s/ X0 F$ Q& E0 Y7 l' |  n
  5.             HAL_GPIO_TogglePin(LED1_GPIO_PORT, LED1_PIN);, t% ]9 J2 z2 x; q. ^1 F4 i# D
  6.             HAL_GPIO_TogglePin(LED2_GPIO_PORT, LED2_PIN);
    7 q# h/ L8 E1 T+ {; ~
  7.      }
    ) y% e& s, F5 {" ]
  8. }
复制代码
     这里有一点注意一下,我们在最开始按键引脚配置的时候选择的不上拉不下拉,这样是不可以的,因为这个板子按键的物理上拉电阻竟然没有给,这个成本的节约有点太明显了。2 e7 m0 ]( X2 a
      效果如下:. K, i+ O& i9 |' L4 q0 h& _5 d
GPIO测试 (1).gif , ~, o7 x1 s' T4 t
  _! @# |) ]! S( f

5 o. V. c+ s# X- [& X3 O
% ]$ d  x1 l7 h  B; s+ s- J& j7 n
: s7 n. t0 }% A, @1 m* ^0 V* H' y) a' b" a; [6 @  [( K) W
  R4 b5 Z2 l) I; M. F# Y! b9 @

  c  _0 q+ r0 W% d2 Z  g
# l& l: q/ e/ o3 j$ [) _5 X; }
: C3 c9 s( F5 I- m: [

- T- ~& U$ L+ N) B3 ]
赞 收藏 评论0 发布时间:2025-5-2 00:12

举报

0个回答

所属标签

相似技术帖

官网相关资源

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