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

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

[复制链接]
STMCU小助手 发布时间:2022-5-15 15:29
一、实验说明
5 B5 {* [, ~' C  }! Z7 h实验平台:STM32F103RCT6 (正点原子mini板)' I8 N, r: k3 T9 ]' v9 o9 s

5 B! j, e& F) Z0 c6 n( l实验内容:使用GPIO 点亮LED ,使用按键控制LED灯。
- L7 U$ R. ?( N; ~1 ]& N& b
+ h4 v% Z; _! c% |; d使用IO口:led1 PD2,LED2 PA8 .(低电平点亮) 。按键  PC5  按下输入低电平。4 M. }5 {$ b5 G

9 x  ^: r5 U4 ?1 z0 U9 [1 F- c2 o二、实验操作5 o' W% f) h/ f7 |4 h
1、基础配置

; R3 ?1 b  r+ T    1)sys中,选好调试方式,例如jtag-4pin。
, N/ j- Q0 W  o- P) e0 m
; n# r% T' `( A. j' d: b9 l    2)RCC时钟,晶振选择。/ p) p) [, l' u; I: d$ g% K

/ l$ l/ W; w* R4 m1 k    3)时钟树配置。
- [6 ~& _2 I3 K% T+ L3 V' c, ~' b7 A! m$ a/ A/ s
    4)中断分组配置。0 t, ^: z1 U, A: l$ ~. E
# P) R. N  ]  l
    以上步骤可以参考串口中断实验。2 p* l5 [" ~: J5 v0 o" I

/ V2 ?% J) a  H- [+ _: Q, s/ ]2、外设配置—IO口配置
. Z4 j- Q, `5 i   1)IO口基本配置。3 g6 e3 C7 n$ \. U+ t2 g
+ R) a9 l3 c% M4 q7 x
03`7UM)O(UEJ5QCXJ~P9M_C.png ! Y, i7 i7 h7 @; u9 p; V4 X' b& ]" M/ w
; e1 U4 J: U( E; V6 O1 N/ N' A
9JXCP9O3S7F{}PAUUGI)Y0O.png
' n$ V$ J) u& y/ p! N+ x+ \/ e- ]# C+ ]# i( {3 ~6 c/ E
$ ~' |& g  D! M
如图配置PD2、PA8 为输出模式。7 E! G! ^- t. B) N- A

) e: w/ e7 ~: _) @9 A TBS}VMGU{5KFCNZ3DO2KJSN.png 7 Y' S& B' q. t7 G, o9 i
' q: ?8 ~8 g$ @
PC5 接的是按键所以配置为输入模式。5 O- f3 ?  ^% y* \/ a

. J7 R( x, Z4 k& D* W9 ? 5RQK5@CEM061RE6SA%_T.png
  o5 m; y. X% \: |
% G) j+ y- @" ^+ j% ~  K SKA{7(_QCA{L}E8[A0L6)ZD.png
( C8 H7 D/ w! `" J; F  j% [+ s1 q# A2 Q& {) b6 B% V
H{QREST3AUGGT2{[OQN@~7E.png
6 u$ \: H3 D" X" M% X# S/ F0 x, B0 {6 \% n- a4 o8 |
两个IO口接LED,配置为上图的参数。8 G0 A) b8 p! \" N
" W) v) x; J  l- f, [9 w) P
BDGZ@D417}[9(HREGX[{_J5.png
% I2 r9 G9 Q' W* u" Q& E; T) n  N- i2 U* N# g% r% g, r

" {/ x; \1 x- D* s: ]2 I1 ~PC5配置为输入模式,上拉。(因为PC5一端接GND,一端接IO口)
* u6 x* W( ?) T+ d: c4 z5 ~) ~. l& K" n: D9 @
2)、生成代码" m* j5 m4 I% A$ u
' C. L2 Z' Z; [1 {, ~& _/ S
     注意工程配置,和.c/.h 的添加。(串口中断实验有说明)) K4 T0 H8 l- h7 y9 G5 @

" f# O) m/ |) @, f: D3)、编写代码8 O7 P! F* H/ @+ E6 j3 P* V- L
9 l. D& k; p' T$ W  }
    在gpio.c中可以看到如下代码,就是GPIO的配置。" R, E( M# e! i& J  k

2 y# G0 O& Z. M7 E& w UIVG(2VD6}WSUFTU$%7]J06.png + ?0 }. ?+ p) S1 w& C- O, i5 J
# s# h7 O6 D3 h% m+ a
然后我们在主函数中编写控制代码。
6 G# {; u! n* j& ]4 S/ s
% k# h& j" h/ X, m0 I9 A使用HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, GPIO_PIN_RESET);  这个函数就可以操作IO口,让IO口输出高电平和低电平。: V0 p" f# F4 m# o8 t4 j$ z
+ P) ~' v. d9 X5 \* f
该函数有三个参数,1 B, X, o3 ?2 D; W
  D. U; k! y; v. Q2 [2 Q2 O( {
第一个是那组IO。
0 j: C. M% v& R% N# |
8 o- i1 y' c( }1 {6 T第二个是那个IO口。
/ J( B6 S7 q  ^# |6 C/ g0 x# \( F+ \7 E5 r# \! k, q
第三个是输出电平状态,GPIO_PIN_RESET为低,GPIO_PIN_SET为高。& X7 p1 h. P6 {

0 e/ C! u  n: C+ y' P+ [- `5 D# f XB]SOS$FQ$L_~379[ADWOOB.png : ?& e2 H# c5 e# m2 l
! d# C- n' v: \  K  v% Y; G9 k
下一步读取按键,控制LED(PA8),按下灯亮,抬起灯灭。. U$ d1 o; `6 b: _7 F3 X- \$ M
* f+ V8 m3 A6 h
    使用,HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_5)  函数判断io口的输入状态。
4 c- D- G  {8 V2 A+ d
3 Q  y/ F; |" A2 b; H% d8 M两个参数,一个是那组IO,另一个是那个IO口。+ t* `' j* G& k$ S2 f* i
% K0 i0 A8 \; L
该函数会返回读取到输入的电平状态。7 d% V5 W! J& `( K
- `7 c# {4 y5 I9 D) c' S4 h4 X
HAL_Delay(),是HAL 库提供的ms级延时函数。这里起消抖作用。4 y5 e5 y! u  W) l
}AF@J}SATAPG5PBQ_{1DJ{W.png 2 l8 U/ g0 _& w4 L. z& G7 r

: y7 ?2 l3 ^0 o
: b; L! x9 H" X$ U. D, n/ F' }0 o8 n" N0 |0 s
4 M6 L* |7 V2 w/ L# c" x

# ?/ T% ~5 J4 w+ t" ^* `' n  e
收藏 评论0 发布时间:2022-5-15 15:29

举报

0个回答
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版