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

【STM32C0评测】3、GPIO测试

[复制链接]
qintian0303 发布时间:2025-5-2 00:12
      本次测评的第一个基础任务是GPIO测试:使用外部中断控制小灯点亮熄灭,实际上不管是外部中断还是小灯的亮灭控制,都是对GPIO的基本控制,一个是输入附带中断,一个就是纯纯的输出控制,这里我们将在上一个例程的基础上通过对STM32CubeMX对单片机进行配置然后实现这些功能,毕竟上一个历程中实际上并没有对任何控制引脚进行配置,只不过有最基础的一些系统配置,保证芯片可以运行起来。
; B$ F; E, a4 A/ m* g5 S      我们看一下时钟的配置:2 e  ~5 a7 \# S% w+ Q
1.png - J  R# r# H# Z/ u8 k

6 Y, O, F0 B8 h# ]5 h      目前已经配置为最大的48MHz的系统时钟,使用的是内部的振荡器,这里我们就不修改了,虽然板子上配备的高速外部时钟,对本次测试的影响不大。8 @/ q1 ]: b- ?0 G' F
      首先看一下对应的灯的原理图:
, n. Q$ G9 E% U' k/ a
2.png
% I# _( \# J7 U6 \- x3 f

8 h+ I' I8 k5 O2 i6 B      本开发板上一共配备了2个可以自定义的LED,LD1是绿灯,可以通过PA5引脚进行控制,LD2是蓝灯,可以通过PC9进行控制,通过原理图进行分析,当PA5为高电平时LD1亮起,PC9为低电平时LD2亮起。
  j, W! g' B: U      再看一下按键的原理图:
% v4 X* V. }+ W
3.png % i2 ]1 ~: n5 Q6 \3 z) O' C# ~
3 N8 g$ V0 a4 p& \1 b
      按键还是老样子,连接的是PC13引脚。$ J: ]- V% r; a$ Z
      接下来我们看一下STM32CubeMX中的配置:% f0 g5 N/ B( @7 T+ \1 @( S
      按键配置为外部中断:8 |& ]& d7 \" F! q4 I
4.png
3 d% d1 t* _: e* _6 E( j
; y" x2 a* F. ^5 G- [7 \- V
      并修改为下降沿触发:
5 |1 W7 t' P: u7 o9 e. A5 A
5.png
$ |, |1 y+ j* L4 D8 Y. E' K
: K5 x0 r& p6 ^! E
      开启中断:3 x6 T/ ?1 L) N
6.png
1 I4 s: N% `! C- ]
6 J! O$ r& n/ \3 i
      LED的输出控制配置就比较简单了,配置为输出:
/ o: y. ?4 P7 }; t, M2 o
7.png 0 T1 ?- k5 ?  d( L; x& v
+ S' o! o; ~8 C5 {# Y8 b
      简单改一下配置让灯初始状态为灭的:" C2 d; ]/ i. x; s, V& V) b; p
8.png : ^: _/ Q1 n7 O: j
4 p1 Z. V- |1 @4 B  t+ X( [+ J; v
      另一个灯的控制引脚的处理是一样的。
% B6 R  i5 w/ ~3 e6 O+ t$ U+ L. Z7 s      软件方面咱们主要写的就是外部中断的回调函数,这里注意一下,这次看到主要的中断是下降沿触发,对应的是HAL_GPIO_EXTI_Falling_Callback(GPIO_Pin);重写如下:8 d% h# n! e. R; R, C/ o
  1. void HAL_GPIO_EXTI_Falling_Callback(uint16_t GPIO_Pin)
    2 z5 G4 Y; N9 }0 b  E2 p$ q7 q
  2. {' X+ D8 v- `% B7 c6 j! z8 Y, ?
  3.      if(GPIO_Pin == GPIO_PIN_13)/ }9 p% S, Y/ c! o; S, t
  4.      {
    3 l! z5 q, H7 [) a
  5.             HAL_GPIO_TogglePin(LED1_GPIO_PORT, LED1_PIN);
    * |4 A" E! o* r" C. k4 v9 C
  6.             HAL_GPIO_TogglePin(LED2_GPIO_PORT, LED2_PIN);
    4 H3 o# W6 s- V; K
  7.      }* w+ \! _: U0 j! l2 ^1 U+ R, `5 K1 y
  8. }
复制代码
     这里有一点注意一下,我们在最开始按键引脚配置的时候选择的不上拉不下拉,这样是不可以的,因为这个板子按键的物理上拉电阻竟然没有给,这个成本的节约有点太明显了。! |7 T* E: e/ ]* p4 s8 \
      效果如下:0 U/ H+ [5 u) H0 b$ v) t+ e
GPIO测试 (1).gif
2 x* z8 z: t+ p9 I% y
; z2 ^8 L8 Q1 @+ E6 C2 a3 t2 V

" [7 W7 ?& G6 @& t, j, J$ S& R( x  q: `' y
! T( J% Q* N9 d

2 F3 b/ w" w; i, O2 X* ^  u
3 d' c8 s, J4 R% u. i  w
0 j) y1 A5 o6 d  M; d6 ?" [
6 i, y3 {4 \  @. p
- @9 ?, I1 L4 k0 E, H5 f
# H$ _1 u! x( O) Q
# {& Z2 H, d) i5 k  I$ ^3 U
收藏 评论0 发布时间:2025-5-2 00:12

举报

0个回答

所属标签

相似分享

官网相关资源

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