前言
( c9 Z* S( o: I1 }9 A学完频率计之后花了一周重新看了一下物联网的东西,忙完之后终于有时间开始学习G431单片机了,花了两天时间 把发光二极管点亮了/ Y0 k9 D9 ?( q
! J* X& p1 y$ y! r7 h) ]8 i/ g+ g电路分析
: g& d8 @+ J2 k3 }. A" s! h5 ]1 j0 C/ l) K: e( ]" k
3 b- Y5 D o7 w8 MG431开发板自带的发光二极管模块' L: Y0 Y* K! k- O/ h' T# y* J
; T* e* o; g5 c! o; s
可以看到在这个电路中PA5引脚输出高电平时三极管导通二极管发光,如果该引脚输出低电平时二极管熄灭。! C) Y0 Z' _8 b1 b7 ^" I
$ L6 ^. u9 w0 t$ f% Z* U* i
cubemx的相关配置
* C5 S6 n# q9 f0 q2 E+ z6 T1 B; {3 C; J, K
$ B4 |* e; s* k
4 T; B" X* d9 _* C! v
. I1 W# _( L, P. u: M, ]
' w$ @& Q' w' x: B- Y
" u0 X1 I- P7 k: b这里我们配置该LD2的引脚PA5为输出端口。
0 v" n m" N3 @9 d; z4 r因为该二极管为高电平使能二极管,所以我们设置输出端口为低电平。
$ I9 Y% H% T2 ]5 {因为是连接数字器件所以我们选择推挽输出模式。
! ^/ k, V6 s0 I3 x# p设置为下拉模式。- Q# V4 C/ F0 @- a! M$ C4 y
因为二极管对gpio输出的速度没有要求,所以配置速度为低速。
7 M5 ], S1 P9 J3 A2 f为了使后面的代码可操作性更好,我设置了user lable 为LD2。6 N! D7 c/ A/ T/ k$ z# Y8 D
( e, {5 W. h/ O7 j" D& D) y4 ]0 m代码实现
, K- w V8 |0 N% N. Q5 Z; V( muser lable的相关代码
" `* p" J9 @* I7 q/ n( H- @( }1 G$ \% ~
- /* Private defines -----------------------------------------------------------*/
- w4 Q! M- i- L/ F - #define LD2_Pin GPIO_PIN_56 H: a+ Z% H& d" H
- #define LD2_GPIO_Port GPIOA
% @# i: e# I+ q: C, ` X - /* USER CODE BEGIN Private defines */
复制代码 ' t. n7 M/ u( k# v
主函数代码1 ]7 o5 f) ^ s$ X7 @4 Y
- l8 p3 r) C$ t- while (1)
( U+ x' V. o( O6 q/ K/ i+ N - {
+ Q8 @7 u; Q3 W - HAL_GPIO_WritePin(LD2_GPIO_Port, LD2_Pin, GPIO_PIN_SET);9 M% c o& I! h7 h. L( g: p
- HAL_Delay(1000);% F' y) ?7 `3 o) K
- HAL_GPIO_WritePin(LD2_GPIO_Port, LD2_Pin, GPIO_PIN_RESET);6 n2 H* r! s1 p) c: Y/ O( {! ?
- HAL_Delay(1000);
( k0 \% P4 j N& B0 v7 M0 _) f7 \ - /* USER CODE END WHILE */
; j: l9 A* h5 X7 G - ! d5 f4 |/ {; s: A- i6 i/ _
- /* USER CODE BEGIN 3 */
9 }; s5 i6 Y- @: I6 a6 ?2 P - }
复制代码 ) u! j2 k+ @ A7 a0 c4 L* m9 E4 O& Z
这里就没什么好讲的了,就是上拉下拉GPIO,来让二极管发光熄灭。但是我也之前没有写最后一行的延时函数,结果那个发光二极管一直亮着的卡了我好久$ o9 G6 [, X, e1 `
6 }4 K' |8 R# S" U( _" z! }7 y
5 N2 I/ F# s9 ~) l" Z0 a2 f
3 [6 \5 a$ Y. G0 _$ s) m |