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

STM32MP157系列教程连载-Cortex-M4开发篇3:STM32MP1微控制器之按键扫描

[复制链接]
STMCU小助手 发布时间:2022-9-20 20:48
第 1 章 Cortex-M4 按键扫描
7 y2 l3 I3 a' H0 y实验目的8 g$ c9 G7 v# z( B& s% x
熟悉STM32CubeIDE工具软件的使用。
0 C+ c5 ^. {$ @+ m0 b* e掌握STM32CubeIDE软件的基本设计流程和设计步骤,能够使用工具进行设计、编程、仿真调试。/ a0 }* l, {' F5 i0 O9 c9 w
学习GPIO口的使用方法,掌握如何利用STM32MP157A芯片的I/O口读取按键状态。$ X7 P0 m; ~! y+ i

6 c1 K0 W9 y) z5 X2 v+ Z1 I实验环境# C& {' F. a7 _! `( ~# R
FS_MP1A开发平台4 f+ m+ e; P4 q( P
ST-Link仿真器. y) V+ ~6 S' K0 e  I
STM32CubeIDE开发软件
0 G6 V4 u, h9 L( r, d! b" MPC机 XP、Window7/10 (32/64bit)% ^% }: A& c5 I, a+ X
3 L! \- h) V+ t! l
实验原理
! J) p2 z, \0 ]$ D0 E1 J/ i8 Q本实验主要通过调用函数HAL_GPIO_ReadPin读取开发板上按键K2的IO口状态,控制LED灯的点亮和关闭状态。. l! C' f4 ]0 K2 x
/ u: O6 `2 E- M2 L, Z( ]& i
该实验需要使用到开发板上的LED灯,按键,相关硬件电路如下:
& g+ U$ e1 c  F6 Q2 C% `& b1 w2 c3 V
20201021145825732.png
6 j$ S' i4 W2 q5 _/ y3 K: }  d 20201021145839771.png 2 G: R0 V# o" e5 `% A6 h: P

) x7 i1 q# f$ K# b. Q$ v 20201021145902329.png
  s8 ]  b+ W+ p5 P, _8 N5 n+ O7 n
% W9 g  c% J: G, A' z! q9 L实验步骤" r+ z/ ~! |9 ^4 z5 G7 E, d" U& z

6 P0 ]4 u* c$ F  a" h$ Y% N打开STM32CubeIDE->File->New->STM32 Project
- h- o7 Y8 q- k  G+ f% _" R) s/ V* `" M0 G& B) c  ~
20201021150009145.png # ~- i! x  h8 D6 P

7 P, c% I: h6 @% E可以在左侧搜索框内输入芯片型号STM32MP157A进行搜索,选择对应芯片,点击Next.
# ]# o9 [2 N3 O7 d. V! j
3 I2 H$ r6 F  m1 b3 T 20201021150040275.png / M0 S: _, k. K9 }  j. q
6 N  `* n# t$ Q5 O4 H; X
填写工程名,点击Finsh3 Q. C$ ~# I1 {. G8 t  \, |, b8 r$ N
, G$ R  U, i* \8 i- g$ v: h' Y3 D4 a
20201021150108886.png
7 J" {9 g" D3 S4 V! }4 M
" C8 q0 t! F2 N点击Yes打开配置页面7 E$ S2 Z8 z4 R3 y# L

: p. j2 D* _" h4 r5 c* D- w 20201021150143177.png + _* f6 X+ y6 u# U# F

" X6 m; s) s* n* `5 Z5 a0 N' P1 S搜索框内搜索K2对应GPIO引脚PA0,左键点击设置为GPIO_Input。
( B  w; v8 C* o
* D0 @+ Q9 m- {. a6 w 20201021151648389.png ' }  u  G% |5 V; S0 o+ m; k6 z
; }4 X" q  P0 C" d
在Code Generator处选择为每个外设生成单独的C和H文件,这样设置方便阅读代码。
* Z$ b1 n3 K! Q1 R* n0 q% O  \0 O
2 w% B) A1 M# |6 @9 g; W 20201021151716517.png 4 l  k. }( ~. o! A# P. s) s! ]

5 _8 K: E  U. C9 ]7 x, h完成以上设置后,Ctrl+S保存,会提示是否需要生成代码,选择Yes即可自动生成代码。系统会自动生成System Clock代码。
; Y/ e' n( o8 ]; r  A2 \- s! Q6 ]+ F+ p
20201021151737429.png # Y: `# K3 b7 P4 _# E
, a  A! ]- j( s& U( X
可以在左侧工程文件夹找到KEY_CM4子工程,打开main.c,添加GPIO初始化函数,初始化LED灯引脚PZ5为输出模式,初始化K2引脚PA0为输入模式。* s1 v7 }: V/ Q/ y

7 o& }; P5 ]& N
  1. void bsp_gpio_init(void)
    ; \! F  z' B& w, C
  2. {
    ) ^& h/ B5 q1 @$ }) A  P
  3.     GPIO_InitTypeDef   GPIO_InitStruct;
    + y3 T6 B" K1 n7 b0 u! [
  4. $ P' {+ I: i1 s- h
  5.     __HAL_RCC_GPIOZ_CLK_ENABLE();
    # m0 K. U/ s" k6 C
  6.     __HAL_RCC_GPIOA_CLK_ENABLE();
    $ t- L7 q, c. @# D# q& k3 [4 S/ K3 N9 w
  7. % c: b1 S( q& L" b" F0 V, W$ N
  8.     HAL_GPIO_WritePin(GPIOZ, GPIO_PIN_5, GPIO_PIN_SET);. E: B4 D3 D" ~  R1 Y4 x. ~6 J
  9. ; x' U/ P/ p: O9 M1 u* t/ A0 A
  10.     /*Configure GPIO pin : PZ5 */
      F& u) J* b6 N2 ]
  11.     GPIO_InitStruct.Pin = GPIO_PIN_5;8 E, x' O5 W6 H! Q
  12.     GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;9 W% m' j4 J" D
  13.     GPIO_InitStruct.Pull = GPIO_PULLUP;
    # ^- E3 M7 D: \
  14.     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;( A: H' ]! x4 x2 C
  15.     HAL_GPIO_Init(GPIOZ, &GPIO_InitStruct);% {/ k* y5 J* x+ w  ~* ]

  16. 4 S9 |! A9 N( }" }, e* w
  17.     /*Configure GPIO pin : PA0 */7 X0 ]8 ^9 S6 s1 Q
  18.     GPIO_InitStruct.Pin = GPIO_PIN_0;
    ' c# K! I+ d& x) e
  19.     GPIO_InitStruct.Mode = GPIO_MODE_INPUT;: [8 d' g/ \1 _) x4 R4 n
  20.     GPIO_InitStruct.Pull = GPIO_NOPULL;) C- ?# P3 [" y: }3 @0 J
  21.     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
    7 M1 [6 P( L* _" ?) M
  22. }
复制代码
2 a0 S6 C. [% P/ P0 p) J/ e; q. }
在main.c中调用GPIO初始化函数,在while循环中添加GPIO读函数,判断K2引脚高低电平,改变LED灯状态。
& C/ N8 O3 U6 y6 z) u# N
0 b9 Z) W, u! I: O/ ? 20201021151823108.png
2 y' c% U. }& x# q3 I# ^8 g' D2 K% v9 k0 ]' M+ ~% T: y
上述为新建工程配置过程,可参考《Cortex-M4开发篇1:STM32MP1微控制器之开发环境》章节进行导入已有工程,工程存放路径【华清远见-FS_MP1A开发资料\02-程序源码\ARM体系结构与接口技术\Cortex-M4部分\2_KEY】。5 p! t; j2 D, S: c' K" d1 A
————————————————+ [$ P2 d8 U8 x" ~
版权声明:左月先生
: P; b. ^- Q# q3 h9 ?" j2 \/ m+ k
, F9 ?- e" D& X( N3 g  I4 P
赞 收藏 评论0 发布时间:2022-9-20 20:48

举报

0个回答

所属标签

相似技术帖

官网相关资源

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