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

【STM32C0评测】3、GPIO测试

[复制链接]
qintian0303 发布时间:2025-5-2 00:12
      本次测评的第一个基础任务是GPIO测试:使用外部中断控制小灯点亮熄灭,实际上不管是外部中断还是小灯的亮灭控制,都是对GPIO的基本控制,一个是输入附带中断,一个就是纯纯的输出控制,这里我们将在上一个例程的基础上通过对STM32CubeMX对单片机进行配置然后实现这些功能,毕竟上一个历程中实际上并没有对任何控制引脚进行配置,只不过有最基础的一些系统配置,保证芯片可以运行起来。$ ?. o' F$ `( g$ D: A; w; S
      我们看一下时钟的配置:
- x0 E5 @1 g$ O8 y4 k
1.png
9 `$ j+ a: A# O" _' I
) u0 z$ A/ |) \$ F" \' \
      目前已经配置为最大的48MHz的系统时钟,使用的是内部的振荡器,这里我们就不修改了,虽然板子上配备的高速外部时钟,对本次测试的影响不大。$ C& \% U& }& f
      首先看一下对应的灯的原理图:
6 Z( H3 s9 w( |1 @# M. r$ _
2.png
$ K( {/ Y0 B8 J, g  e/ \( I
. Q& }4 ~+ J$ u; T
      本开发板上一共配备了2个可以自定义的LED,LD1是绿灯,可以通过PA5引脚进行控制,LD2是蓝灯,可以通过PC9进行控制,通过原理图进行分析,当PA5为高电平时LD1亮起,PC9为低电平时LD2亮起。6 _5 m3 V# N3 I6 C8 T$ C: U
      再看一下按键的原理图:- \* u/ V) O. n6 Y
3.png " d9 \$ z0 D, ]* g8 A
* l& Z$ b( I* j3 b. F3 P
      按键还是老样子,连接的是PC13引脚。  g) L" P7 t: z. l, A
      接下来我们看一下STM32CubeMX中的配置:
/ v2 l% Q7 M1 \- X) l  j5 r      按键配置为外部中断:
. v& b0 s/ A' S) X
4.png 8 T% h$ h% ~4 V1 n2 @

( L1 D8 l+ m. M% A      并修改为下降沿触发:
6 @3 O$ Q+ K$ ]9 s" C
5.png
, {6 W' N1 Z& [- O: J4 \

( Z/ C/ m% z- W4 H0 ^& y5 n3 z      开启中断:
, Z) D7 |2 [9 U; A( ~% C4 X
6.png
  ?8 ?, C8 o; L8 i. z

! M" p% k. K/ Y5 o! v/ L- W( \      LED的输出控制配置就比较简单了,配置为输出:3 |5 B7 Z' m+ G6 N: d6 ?
7.png
# a  Q( u" D# V" q+ y3 k

6 L/ w8 ]2 Z* ?3 F      简单改一下配置让灯初始状态为灭的:, X5 ~8 B( [5 I* {- e8 K
8.png 1 n  R6 r/ _' w! s' F" {
4 i$ `% T% n; P- h( g& P
      另一个灯的控制引脚的处理是一样的。
# Q4 B3 y. N, {% Q/ c      软件方面咱们主要写的就是外部中断的回调函数,这里注意一下,这次看到主要的中断是下降沿触发,对应的是HAL_GPIO_EXTI_Falling_Callback(GPIO_Pin);重写如下:
' h3 s2 \7 F* i, w; b
  1. void HAL_GPIO_EXTI_Falling_Callback(uint16_t GPIO_Pin)3 B" |+ q  Z9 I" T; G
  2. {
    3 X5 \' O5 T( q9 P$ N, w
  3.      if(GPIO_Pin == GPIO_PIN_13)
    . n7 U" s! z9 K/ N& V4 c. U) V
  4.      {0 c& {! Y4 W6 y& A0 E
  5.             HAL_GPIO_TogglePin(LED1_GPIO_PORT, LED1_PIN);* f) g; ~3 T: J$ s$ J* z
  6.             HAL_GPIO_TogglePin(LED2_GPIO_PORT, LED2_PIN);
    $ e( H" \0 |* B( l9 S% S
  7.      }
    # O# Q# i# |! r5 e7 S- G, V% [4 R7 z
  8. }
复制代码
     这里有一点注意一下,我们在最开始按键引脚配置的时候选择的不上拉不下拉,这样是不可以的,因为这个板子按键的物理上拉电阻竟然没有给,这个成本的节约有点太明显了。; ~9 @1 ~; B' r% @7 \5 ]
      效果如下:; [' A9 N* v# h: J
GPIO测试 (1).gif 5 f6 Q' e- Q! D* r8 Q

" w+ @4 c. V) h3 x. ~% t2 T
7 `; N) y  |, o5 o7 T9 M! q& V
( e" t. ^  I5 O0 q
0 E) ~& M4 E9 q( n: |& ]$ T) l& k! y, |' \) Y% I( C" }! b# {$ U
2 l% Z9 `" J! f( m0 ?4 N1 q  f; K

) s( S2 T2 T* |; R, b2 i! W# K' i) R9 d

' ~6 J5 F+ C* e1 u
' }$ L4 Z% o4 |- L: E1 R. r* H* q; f* P4 e$ h3 s  w, o2 h
收藏 评论0 发布时间:2025-5-2 00:12

举报

0个回答

所属标签

相似分享

官网相关资源

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