前言
0 a: ?0 [! A/ ~. y学完频率计之后花了一周重新看了一下物联网的东西,忙完之后终于有时间开始学习G431单片机了,花了两天时间 把发光二极管点亮了; t8 q+ t( j. h5 I2 {+ p
! e4 p3 s9 b# d1 w3 P电路分析
+ x. Y0 }: _5 o9 E7 Y& d' Z' G# g0 ~: e
0 F3 Y4 P3 j3 V! C4 l
G431开发板自带的发光二极管模块
/ p/ G7 x6 F: o9 y& o3 `; a+ [0 b* k/ ~ @" a: r) o
可以看到在这个电路中PA5引脚输出高电平时三极管导通二极管发光,如果该引脚输出低电平时二极管熄灭。+ V! E" Y) l2 R# H+ S1 r& T
# P) @2 e0 j6 O9 h# p0 {4 N, b
cubemx的相关配置
* U/ Q. s% { i# @( i) I
2 j7 `& _- Z& e4 Y5 U/ F
5 l6 T* E \8 y! J) X# d/ k
@' o4 X4 A, ?4 i* z" R1 S. h. g8 O J) |0 L! u6 I: P8 }
. T ]0 b& W# G, f `
! k0 _( |0 E7 F6 ^- a3 S! S这里我们配置该LD2的引脚PA5为输出端口。
$ k) y$ u. Y+ F6 Q- y) C; D因为该二极管为高电平使能二极管,所以我们设置输出端口为低电平。) |* o* ?, B2 b. x9 n
因为是连接数字器件所以我们选择推挽输出模式。: c b/ i5 _& V' h H1 I( D2 _
设置为下拉模式。
( j! a. o# [# F2 h: X7 W因为二极管对gpio输出的速度没有要求,所以配置速度为低速。
5 u: `" q; @6 C1 e" C$ n; d为了使后面的代码可操作性更好,我设置了user lable 为LD2。) ~3 U- C n/ a+ g" z
9 b5 x9 s, I0 ^( Y; ^代码实现 P; D0 Z- n7 L3 D% F
user lable的相关代码9 Z5 O: v0 i% }
5 v3 l4 z& |2 @( \+ e0 O& z/ n
- /* Private defines -----------------------------------------------------------*/
, L2 h+ u" k* a" Q0 A - #define LD2_Pin GPIO_PIN_5
( S3 Q& s- X4 |" a, T - #define LD2_GPIO_Port GPIOA( L' \+ q& W: f1 W# T3 k
- /* USER CODE BEGIN Private defines */
复制代码 6 ?3 T' U$ V- G; P* k- B
主函数代码
1 { P( s" c1 K5 Z$ t: F+ ]2 ?2 S3 n1 A2 a' r! c
- while (1). r/ P4 v% x9 q+ I& W$ B- r# d* l R
- {) `0 o* J) \* N- K( |$ H( H$ j
- HAL_GPIO_WritePin(LD2_GPIO_Port, LD2_Pin, GPIO_PIN_SET);
% P$ R3 U6 s, N - HAL_Delay(1000);( B, V8 @/ R. |$ S* p5 f
- HAL_GPIO_WritePin(LD2_GPIO_Port, LD2_Pin, GPIO_PIN_RESET);
( y2 G9 N: S& E" P8 S& \* G, X - HAL_Delay(1000);
5 J" U# w! h3 ?9 F7 N3 v$ [: a+ ` - /* USER CODE END WHILE */
# [+ }* q8 H ]
# ^/ G7 K6 a) S( m9 }- /* USER CODE BEGIN 3 */, r$ I1 K5 H5 Y1 y/ M2 Q
- }
复制代码 ; K J6 U- j6 F' m3 T( t
这里就没什么好讲的了,就是上拉下拉GPIO,来让二极管发光熄灭。但是我也之前没有写最后一行的延时函数,结果那个发光二极管一直亮着的卡了我好久( \% M: q4 a) w) ~
* I* Y3 ^& A/ y& X' E; ]6 f
( ^, o# h- z' |5 J* m
! q: N7 S- n# ?: T( X9 k |