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

stm32mp1 Cortex M4开发篇8:扩展板LED灯控制实验

[复制链接]
STMCU小助手 发布时间:2022-10-2 09:44
1.资源扩展板介绍
, ]3 w3 W% M6 ~! L) p
& {2 W) J2 L( I$ z5 D1.1硬件介绍5 v; |$ }! o$ |% R- O2 O
% E9 R! }: U# {& [3 J9 n0 M, A
2a60597904b14da696b646f8afbdf7d2.png ! D& q3 Y& a* Q- m- U. c+ @

; g; i( S: D, K1.2资源扩展板可开发项目
  |3 M) `8 t+ {' U7 x
* J( V7 {9 y6 Z6 J. ]) O1 ? b92e4e61eb734b448ea07a13872f58cf.png
7 Z: [; }2 y' @9 z9 z9 i
- M2 |$ n! O  _2 @6 h* l& M! o$ _- \) x) O
2.扩展板LED灯控制3 ~* T! P8 J7 _
2.1实验原理: p% N: t* h9 _! `1 U
打开扩展板原理图对照扩展板可以看到扩展板有四个LED灯,其中LED4为底板电压指示灯,LD1、LD2、LD3为可控LED,原理如下:
* _+ E& _9 B9 a3 S; p7 ^8 L( L$ m, e  T- T3 n* q" e+ Y' f6 ~+ ~
b2bb1c6986c2b09b73ac136ec521e817.png ( h+ h7 `5 v" l3 A# h
( T" U( }6 j8 D- J$ g, O# e
有图可知,当LED1为高电平是三极管Q1导通,这时发光二极管LED1会被点亮,同理当LED2和LED3为高电平时LD2、LD3会被点亮。
, ^! y1 O! H9 H& y+ J0 g
! v* T; |+ y+ r% Z6 Q& B查看原理图可知LED1、LED2、LED3分别对应STM32MP157芯片的PE10、PF10、PE8如下图:
8 N2 g* [6 ^8 \4 }4 Y2 {$ u" @. i/ Z$ J0 K7 \7 _
2e6bcc6dbd8e7597a7ee7f6eeeb6efe4.png
( f9 \9 s1 k3 L: n4 V
8 y* S1 U9 p2 u$ ]8 U6 _" T扩展板与底板接口对照图
+ r- ]% c2 [& B7 u. g: F; s# J5 s# j% _) `8 |8 F! I$ l
根据网络编号可最终追至CPU对应管脚,由于上图已经可以明确LED灯对应管脚。& ~7 B( G3 s4 r: |! c+ l* ~7 Y

* j, q! Z5 w4 N3 J9 G" Y GRJJO(S}(JM(TQKU3B(IJQS.png
+ f& j9 d" W- l0 ]3 \- k
2 m: {' K9 e( u/ ~  k$ [% B3 v9 j' s9 c5 n5 ?) `/ h$ O
2.2实验目的6 ]' P, W+ S; A, H, e  ^2 Q- u
了解LED工作原理
0 W8 z9 {- {" [0 [, ~0 f1 ?# m1 C" p, L& b
学习GPIO口的使用方法,掌握如何利用STM32MP157A芯片的I/O口控制LED; Z  H: g" z$ ^, D

4 }# m6 D, R) v" s8 J, H2.3实验环境
8 Z1 ]6 S. V, y( v2 vFS-MP1A开发平台, a9 T1 \: L3 s3 b+ W

5 {9 m0 }1 h9 O9 }) b' WST-Link仿真器
' u5 O% A; Y* h0 l) y' d
- T& ]7 r8 Z" {STM32CubeIDE开发软件
* [' r0 d' m6 n9 \. L' Y, c( V
1 Q8 j( k  A' F8 R6 UPC机 XP、Window7/10 (32/64bit)
. {4 |% E9 S* d0 O' [$ K$ }' [: {( O0 ]4 [; Q/ C9 M: b5 o
2.4实验步骤2 Q5 Y- @/ f) _( s1 ^- b
打开STM32CubeIDE,配置CubeMX。
2 ?& q4 z% c5 q& a. s& a: W' O5 [4 s7 ]% W+ a
搜索框内搜索扩展板LED对应GPIO引脚PE8、PE10、PF10,左键点击设置为GPIO_Output- D0 b  K$ u' F2 J

* h. v/ o% R* N3 |+ \6 ` d06ca1ae7227d85e449931cf75e0f57b.png 5 g8 p* L$ E7 y1 q+ `* l, m

* R4 S8 |, O! J; B$ E1 Y6 b" p( M这里我们需要注意一下,和其他单片机不同,还需要继续设置“ Pin Reservation”给“ Cortex-M4”,否则STM32CubeMX不会生生成GPIO初始化相关代码。具体操作:在刚才选择的引脚上,鼠标右键选择“ Pin Reservation”->“ Cortex-M4”。8 Q3 A5 Z9 T' x: f  M6 c2 G* p: q

, t4 R6 m4 S5 c( F1 b* O bf2ef15661be5735ce5bbbdf49ee0db0.png & j7 _1 B1 w+ j5 u7 k' R

5 `) T( E5 W2 k6 a$ f在Code Generator处选择为每个外设生成单独的C和H文件,这样设置方便阅读代码
, m  v! ?4 z7 ~) g' l  ^2 I
- ~4 z1 V5 z- k+ w6 R  Q& R3 r* ? 11c9e7c7b315505469c935c7f7d6b260.png 9 p, `' f- _" o/ u5 p

8 F9 H0 b1 t# n* g完成以上设置后,Ctrl+S保存,会提示是否需要生成代码,选择Yes即可自动生成代码。系统会自动生成System Clock代码
8 J, B; |) |8 A3 D0 s! O2 i8 Q- X4 P* c, H+ I7 [$ X% F
98b56eb40d6899dbba92ce9f5d025765.png " ]5 H$ m" A$ B9 Z6 w

! v( a8 K, Q" |8 Q+ W% t上述为新建工程配置过程,可参考12.3.2章节进行导入已有工程,工程存放路径
1 ~, [/ b3 k3 d( f9 g% B# g: a% W7 l
添加GPIO函数说明:" B; J. n* w3 H, D0 V8 U" |

: {" e3 [, g$ c: Z6 V, A我们需要在main.c中添加GPIO相关函数, GPIO引脚输出电平高低函数9 w8 [: O: W' P& y( F" t8 E
' Q& i' O; f# e" w& h
  1. void bsp_led_on(void): @# I5 _- W* Z7 g& W8 U
  2. 9 \- l. F: w/ L# p
  3. {2 }- ?( ~9 g( {2 I5 j. |' t3 \$ q' \
  4. . ?0 d5 k0 Y( H7 M! K  ~1 N
  5. HAL_GPIO_WritePin(GPIOE,GPIO_PIN_8,GPIO_PIN_SET);
    6 Q3 E3 j$ K/ i7 m) v8 ]
  6. ! M7 [. i  J( V/ H, u5 u, i: z: Z
  7. HAL_GPIO_WritePin(GPIOE,GPIO_PIN_10,GPIO_PIN_SET);- m$ I6 {$ Z6 f

  8. : J  P* G% ~8 W# i5 l! z5 g
  9. HAL_GPIO_WritePin(GPIOF,GPIO_PIN_10,GPIO_PIN_SET);3 N" M& ?+ q7 M. U& E! Q
  10. 6 m; i' y6 E8 H9 g
  11. }
    ; F8 O" a2 z: i" v) U/ b2 x3 O
  12. - E/ \8 o6 H. ^+ i
  13. void bsp_led_off(void)  [4 c( `  }5 t7 K* d; Y! T
  14. " o6 Y& A. \) h
  15. {/ f1 |6 l1 g9 h5 L( I" G. ]

  16. ' D9 o$ Z9 i3 c
  17. HAL_GPIO_WritePin(GPIOE,GPIO_PIN_8,GPIO_PIN_RESET);
    $ p) C5 C. M8 ?. n2 R( [
  18. - Y4 z9 j! o! @. [* X# |: o" @
  19. HAL_GPIO_WritePin(GPIOE,GPIO_PIN_10,GPIO_PIN_RESET);
    5 z0 }+ I: d4 E9 {7 d
  20. 9 |, i. r; b6 x9 z
  21. HAL_GPIO_WritePin(GPIOF,GPIO_PIN_10,GPIO_PIN_RESET);
    ; Y# a5 Q) p% v. J2 U2 y4 p
  22. 3 B5 I* u/ o  Z& n3 R
  23. }
复制代码
% q5 P# @8 L2 q1 L
在main.c中调用函数改变GPIO引脚高低电平来改变LED灯的状态' v6 B+ f$ A* W3 s, R7 C

! S& b- b' A7 c  I" J6 y% K0 |" K ab792532734a7f501d9e9ce2aee72319.png $ S: |2 l, p" r$ s

$ G( ^0 m6 c4 n- g! @————————————————6 ~. D$ Y% z: g: \; g+ }
版权声明:华清远见IT开放实验室
% ^3 F3 o: D+ a/ g5 Q& |: `1 D& o, k

' n  v& ^5 _9 B5 s2 G, ^0 C. z
赞 收藏 评论0 发布时间:2022-10-2 09:44

举报

0个回答

所属标签

相似技术帖

官网相关资源

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