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

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

[复制链接]
STMCU小助手 发布时间:2022-9-20 20:48
第 1 章 Cortex-M4 按键扫描
0 S: `4 |, G3 Z) D1 l实验目的
5 S/ J9 f* W' v* t- A* z4 F4 K熟悉STM32CubeIDE工具软件的使用。5 T* L  I, X% T; M, X5 W* M" z
掌握STM32CubeIDE软件的基本设计流程和设计步骤,能够使用工具进行设计、编程、仿真调试。
! \0 t( y- ~6 \学习GPIO口的使用方法,掌握如何利用STM32MP157A芯片的I/O口读取按键状态。
$ w/ a4 {( x% v  ?8 B& R
, e1 J" h# K7 h6 S$ y实验环境8 L0 m7 W( A  f0 ?# H/ k
FS_MP1A开发平台0 [- [+ X7 V3 I7 m- S1 [  b
ST-Link仿真器; w/ R* K. p( B& a) p
STM32CubeIDE开发软件
' z3 H3 f  c0 JPC机 XP、Window7/10 (32/64bit)
# M' d0 Q! x: ^8 V
" G& M. X8 {' F8 {$ O% l2 }实验原理! N1 c: @5 ~( b- k- ~. A* P
本实验主要通过调用函数HAL_GPIO_ReadPin读取开发板上按键K2的IO口状态,控制LED灯的点亮和关闭状态。
: @5 ]7 L, g4 C* t% ^+ K; }' r0 c1 C. d5 z+ N, b8 r. N- w" A6 {% g
该实验需要使用到开发板上的LED灯,按键,相关硬件电路如下:4 r) A1 _: I: T: O; g# m, ~1 v

% C- U$ a5 T2 u" j' V, i8 P. y 20201021145825732.png 3 Z* \- q1 M! N7 z* m! ^. X
20201021145839771.png % x  ^/ {& n1 }5 g' {5 V% p. t

8 B2 U3 K7 L" o8 C% K6 @1 { 20201021145902329.png
( P+ o" e# A0 Z  q9 E3 G
' Q8 G) r& p3 Y# D  @) P  O! q实验步骤$ G5 D1 ]" G4 l8 R

" [" p. X% l; j5 q, E1 [打开STM32CubeIDE->File->New->STM32 Project2 q5 J- g9 z6 g  e" _

: L, T3 h4 G5 O. Y8 f: m7 c  i1 O 20201021150009145.png
: r  ^" D- w0 f9 ~, e8 \+ Z2 _/ f9 p5 v0 Q3 r- Z1 w) a
可以在左侧搜索框内输入芯片型号STM32MP157A进行搜索,选择对应芯片,点击Next.$ b0 e8 ]+ N3 B! ?

( Q: \) d& B; O: J 20201021150040275.png . h1 S, y5 r/ w7 `2 W2 S0 z
( b+ n' G7 d# X3 w& T
填写工程名,点击Finsh( Z% [9 @0 ^( F( W. `/ P* b
' g8 u/ @' W& c' C$ B
20201021150108886.png " V! F+ y. a! Y; }: ]$ D
( p2 t8 Z' {. `/ v  s0 S# B
点击Yes打开配置页面
* I6 O, [0 [. v
) ^6 r. i6 r0 O 20201021150143177.png ( X' Q; e/ q% ?9 ~  D. z. q
* ?$ V1 K4 O; s+ o7 V* f' N5 \9 R
搜索框内搜索K2对应GPIO引脚PA0,左键点击设置为GPIO_Input。: Q! K& V' u# z) s( }0 \, V) Z
3 B7 z5 T3 [' c9 q% _! ^3 O
20201021151648389.png ; D5 U5 i  k4 s  B* U  v, ?
9 E2 M1 G1 z- u7 _* _+ `
在Code Generator处选择为每个外设生成单独的C和H文件,这样设置方便阅读代码。
& n5 \4 z9 }) N- q$ t5 B! T6 K0 c2 o% h5 f1 k
20201021151716517.png 9 F( C9 C6 z: a
" I/ s0 m; _; E/ c3 d( M
完成以上设置后,Ctrl+S保存,会提示是否需要生成代码,选择Yes即可自动生成代码。系统会自动生成System Clock代码。
; ^; g/ G& R( e4 H
" f8 G% K" Q$ G; b4 e: R/ m8 P 20201021151737429.png
6 N" [1 f7 q, F' U% h( f, l! l) t0 |0 Y7 c9 H' Z
可以在左侧工程文件夹找到KEY_CM4子工程,打开main.c,添加GPIO初始化函数,初始化LED灯引脚PZ5为输出模式,初始化K2引脚PA0为输入模式。/ a. q1 Y% e1 b# T

9 v% |8 j. S7 ^) W
  1. void bsp_gpio_init(void)8 D- c  z: ]$ L/ Q6 d: j6 i# N, t
  2. {
    ! \9 I, @( I9 d3 e1 O1 b" W
  3.     GPIO_InitTypeDef   GPIO_InitStruct;
    & F7 r2 l- o8 o/ t' o; ~1 X  w7 O
  4. * ]# L7 d( V9 B( v
  5.     __HAL_RCC_GPIOZ_CLK_ENABLE();
    8 Y4 L# W' a& ^6 p; d4 o
  6.     __HAL_RCC_GPIOA_CLK_ENABLE();. G( D5 b& [% |! b% t( O8 c
  7.   W" Z6 ~. O+ c/ M( f1 l
  8.     HAL_GPIO_WritePin(GPIOZ, GPIO_PIN_5, GPIO_PIN_SET);
    / X5 Q& `& w8 \
  9. 8 |0 e9 T$ S7 }2 D- Y- y2 P
  10.     /*Configure GPIO pin : PZ5 */) W( E1 u" a# P& q) E! H- T( r
  11.     GPIO_InitStruct.Pin = GPIO_PIN_5;% U; T5 C+ w* C% \6 M
  12.     GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;) n1 z: u# y8 U6 ]
  13.     GPIO_InitStruct.Pull = GPIO_PULLUP;5 i' ]0 Y- K: N9 V$ }
  14.     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
    & G! v8 g: [+ F
  15.     HAL_GPIO_Init(GPIOZ, &GPIO_InitStruct);
    6 i, K. _. n  M9 s" ]
  16. ' s$ b1 M+ d3 V- S* F1 k; I
  17.     /*Configure GPIO pin : PA0 */* \. {# J) j$ l: X" G# _3 l2 B4 i
  18.     GPIO_InitStruct.Pin = GPIO_PIN_0;- s8 g. r& j/ m9 q- A
  19.     GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
    " a% Z+ p& ]3 ~  X% M1 Q7 u
  20.     GPIO_InitStruct.Pull = GPIO_NOPULL;8 N3 y0 D8 @+ b5 c& q7 V0 l0 a
  21.     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);& _% m: S4 N( Q
  22. }
复制代码
, y1 v6 V+ j) f: m2 k. c
在main.c中调用GPIO初始化函数,在while循环中添加GPIO读函数,判断K2引脚高低电平,改变LED灯状态。
7 i2 `8 B5 f8 \8 |0 p; ^' ^8 A: ?* t) \5 ~' F3 a% S( P$ l
20201021151823108.png 2 u9 J# z' n) z# [9 h

3 M+ l) A0 d2 w! l上述为新建工程配置过程,可参考《Cortex-M4开发篇1:STM32MP1微控制器之开发环境》章节进行导入已有工程,工程存放路径【华清远见-FS_MP1A开发资料\02-程序源码\ARM体系结构与接口技术\Cortex-M4部分\2_KEY】。
' W+ [! x2 f1 n* m; m————————————————5 a. s3 b1 G7 G* [; \' q
版权声明:左月先生9 n2 \/ _  V! m  `: B% d* |+ N; p

4 O3 U$ u/ J2 M% M
赞 收藏 评论0 发布时间:2022-9-20 20:48

举报

0个回答

所属标签

相似技术帖

官网相关资源

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