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

【经验分享】STM32CubeMX—GPIO输入输出实验

[复制链接]
STMCU小助手 发布时间:2022-5-15 15:29
一、实验说明
) A7 q7 _9 j" H" s% Q实验平台:STM32F103RCT6 (正点原子mini板)
- ~2 B+ g& ~2 P% l. \% G4 g3 y
* ?1 A' s5 e2 l& }9 l实验内容:使用GPIO 点亮LED ,使用按键控制LED灯。' }1 J# U9 P' K" H4 R

' a- \  T, ?" ^  Q使用IO口:led1 PD2,LED2 PA8 .(低电平点亮) 。按键  PC5  按下输入低电平。9 L1 s9 e* z/ J% B4 H3 p
3 T3 k, H, S) d( ]! K
二、实验操作' p5 [# }. _) r8 k4 F
1、基础配置
: P+ ]6 c& H  u. v, @
    1)sys中,选好调试方式,例如jtag-4pin。
7 c$ k1 e" _; L" u1 R4 \& B. L6 y  L; T$ S/ Q* B2 ~
    2)RCC时钟,晶振选择。* V; [4 J/ ?7 D% h4 R. w, l+ G
9 D1 s7 c. ?4 o; D3 ?
    3)时钟树配置。
$ F- _$ ~: R' A) g) c
0 ?" ^' U8 s$ |4 |/ d7 B    4)中断分组配置。4 f# T' n+ u9 F( K& N6 ?4 f9 X6 e
* y( A  b6 D# [
    以上步骤可以参考串口中断实验。
3 ]% q$ |1 e4 m  z# P+ L6 Q5 P2 ?3 W  W- _! l% T
2、外设配置—IO口配置0 |/ l& P( W, J. u7 V
   1)IO口基本配置。
! z* }0 u- ^' m! W8 y0 b, |* ~: \2 O2 Y, X. L# J$ x
03`7UM)O(UEJ5QCXJ~P9M_C.png
/ a' R. `- q; A& K% s
& j5 }8 a6 I; U 9JXCP9O3S7F{}PAUUGI)Y0O.png
7 E2 H  [7 h1 V0 R" `
/ C8 U! v; r  G$ W% R! H" |- |& w. r/ I& c2 r& o
如图配置PD2、PA8 为输出模式。. s$ ?$ k! y: f$ }0 t
2 h; n+ i0 l: X/ h
TBS}VMGU{5KFCNZ3DO2KJSN.png
0 b/ m& k$ o/ S" t+ t* z3 `
! h  T. m8 n0 XPC5 接的是按键所以配置为输入模式。4 y+ s4 {" ~( V# w* R
" q9 b) C+ M2 f: s* E, K
5RQK5@CEM061RE6SA%_T.png 1 y, P; B% S& g, ^  c

4 Q1 B4 a3 a, _* n& Z: b9 A' D SKA{7(_QCA{L}E8[A0L6)ZD.png
7 k7 a5 v" N' E9 a) M- R, h$ q! Q' L, [8 u5 g" \% }7 a' J. C9 y
H{QREST3AUGGT2{[OQN@~7E.png
  [; }' A* [0 p5 x& J' ]3 ]* E1 f5 n( L" I/ S' v# k- l
两个IO口接LED,配置为上图的参数。
( J; v2 a: n- z4 W: c( I# f" l& v( A' x( _7 @. R
BDGZ@D417}[9(HREGX[{_J5.png
" c7 L1 O: ?1 n2 s, t0 Y! C) O
5 e5 Y- O/ }2 o5 H
5 p, u0 B7 l2 ^  w8 E2 FPC5配置为输入模式,上拉。(因为PC5一端接GND,一端接IO口)  T+ R9 t6 p6 j

! n& x/ Q+ Y! ~- [& z4 j2)、生成代码
% {% c! z, p% F' R: n3 |* d: a; L* ^: A; Y' L
     注意工程配置,和.c/.h 的添加。(串口中断实验有说明)
3 U% H; t: F: ^  [. ]# l* Q  f' i5 ?1 q3 O" }7 U' |+ U5 M$ Y
3)、编写代码
& Q( Y) X4 g4 i, z& c0 H2 u. ?1 A0 s6 [7 M, c' }' x. L3 I
    在gpio.c中可以看到如下代码,就是GPIO的配置。
) ]2 s" w9 D" w/ k% w, o1 h& i+ y5 V- C3 W+ k
UIVG(2VD6}WSUFTU$%7]J06.png / w/ Q# d9 y. U$ D% Y) m" e3 b

- [9 ]# V. o: x4 r: W8 D然后我们在主函数中编写控制代码。
' C7 B7 Q2 M) f( D6 M! k% L- t% R  ^. @
使用HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, GPIO_PIN_RESET);  这个函数就可以操作IO口,让IO口输出高电平和低电平。
. Q" w% U9 z7 J8 M) Y8 J/ M" W' Z: k3 Y) o: V2 Y
该函数有三个参数,
( k! a  `8 C  D0 n% k. g# x# n6 W6 n' E3 M4 ?
第一个是那组IO。
" n0 @& \) p" Z; i7 ]& U" i' G) Q& `0 d0 `% q
第二个是那个IO口。
0 Q3 _4 |+ }6 g2 V( s. N
! r6 A9 A+ K8 c4 ~第三个是输出电平状态,GPIO_PIN_RESET为低,GPIO_PIN_SET为高。) x9 v& N7 n/ M/ ]0 V* B3 }" @0 [, W) a
* F& b5 D3 H, z* v
XB]SOS$FQ$L_~379[ADWOOB.png ' M; Y( h/ U1 P1 R5 E( F

8 t; T$ b+ X4 Q下一步读取按键,控制LED(PA8),按下灯亮,抬起灯灭。5 ?3 ?( |9 _- K6 j, b
, X' R9 s+ y8 c: ]- @
    使用,HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_5)  函数判断io口的输入状态。. u* X5 C% g1 a- {/ \
& I  N; V$ l% N# X+ q
两个参数,一个是那组IO,另一个是那个IO口。2 x) R3 l& `) R  U) n- m
5 G# }$ U3 C  H: s0 W3 {0 |, k, r
该函数会返回读取到输入的电平状态。" N5 e% i* I( @

& s" R; o1 \: z+ r( s HAL_Delay(),是HAL 库提供的ms级延时函数。这里起消抖作用。
# Q, o$ e* }4 s% r" ` }AF@J}SATAPG5PBQ_{1DJ{W.png ; p& [& A! A$ }$ u' Y

/ [! n7 v7 O7 {7 L: L1 Q1 q* \7 [# x9 f$ j* G4 w" G1 o3 b

; m. W& d  F8 `7 g3 L7 l$ z$ C; c( E; X# `3 g0 B

: Z/ F3 l7 X; t, ]6 ]- M- h
赞 收藏 评论0 发布时间:2022-5-15 15:29

举报

0个回答

所属标签

相似技术帖

官网相关资源

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