前言5 N1 m* N4 E+ v) {( E
学完频率计之后花了一周重新看了一下物联网的东西,忙完之后终于有时间开始学习G431单片机了,花了两天时间 把发光二极管点亮了) q' n/ Y2 O8 ]
* `% E+ j# Q% w9 L; T
电路分析
w1 s$ }0 S5 s7 R! j+ h; q/ T$ s B) i6 X3 ~' z
- H- F) Y$ n) |8 E6 [
G431开发板自带的发光二极管模块3 [1 ^0 \& F0 q
/ [( k' f" m' G) T
可以看到在这个电路中PA5引脚输出高电平时三极管导通二极管发光,如果该引脚输出低电平时二极管熄灭。
9 t& @$ q; `8 S2 U9 w; M; L& z; n" P0 |) W2 R" @' L
cubemx的相关配置+ O/ i" Z. {& M; `) E, L2 j
4 f% `* e( H% J7 G
1 z* X' Q( E E3 g
0 y6 n2 e% `. V! o3 S* {) F! W
4 F9 i6 F; t1 W5 l
/ g% u q! Z- d6 @- B7 ] j9 ?% _1 |2 @& e5 ?
这里我们配置该LD2的引脚PA5为输出端口。0 M5 R7 I" l5 b. s5 W
因为该二极管为高电平使能二极管,所以我们设置输出端口为低电平。1 d C& _: f) m2 D3 k6 j! E
因为是连接数字器件所以我们选择推挽输出模式。, q* P, R; n4 Z: h; N
设置为下拉模式。, a5 e, |8 u$ U3 {( D& X
因为二极管对gpio输出的速度没有要求,所以配置速度为低速。
0 z) ^3 c9 N+ U% O( E- @2 D为了使后面的代码可操作性更好,我设置了user lable 为LD2。
! a- Q5 Y4 h J( E/ _
s2 r$ l. Q& v/ @代码实现
0 b. N* U: v' k8 q& n: Juser lable的相关代码
' f- G- E: Y7 T' _) A2 ?# z2 ~/ w9 H0 f* l6 M4 Z9 {
- /* Private defines -----------------------------------------------------------*/& T2 U6 J5 a) J, D. \2 N' {
- #define LD2_Pin GPIO_PIN_50 r) L( ] `. E$ u
- #define LD2_GPIO_Port GPIOA
( z( K0 {+ z% b, Q - /* USER CODE BEGIN Private defines */
复制代码
! I( I9 Z/ g1 I: ~6 m7 o主函数代码3 T4 `. T5 E! m. A. a
# u% d# S$ m. @. X$ t% k- while (1)
* X$ N7 O4 W _& j% R) X" ~ - {" X; W' ?; q3 B9 f2 l/ R% }. [
- HAL_GPIO_WritePin(LD2_GPIO_Port, LD2_Pin, GPIO_PIN_SET);
' E# n; ^# k( x" D: o - HAL_Delay(1000);9 G- c$ M1 S8 x
- HAL_GPIO_WritePin(LD2_GPIO_Port, LD2_Pin, GPIO_PIN_RESET);
' C- }" ] ]/ T1 Z1 P9 S1 U+ r - HAL_Delay(1000);0 P( e0 h% l& J! g9 b4 }& _
- /* USER CODE END WHILE */' R% C0 P* C$ `2 t+ Q
- ' |) U: m# `9 i
- /* USER CODE BEGIN 3 */
- f" [! v) c( t! n: S+ i1 P8 G - }
复制代码
) A3 k w" B6 s5 w! k这里就没什么好讲的了,就是上拉下拉GPIO,来让二极管发光熄灭。但是我也之前没有写最后一行的延时函数,结果那个发光二极管一直亮着的卡了我好久( z& V3 |1 O! W
# V; X& d6 Z' n3 s+ R
8 ? s F O4 M/ z4 l2 V( r0 M+ F2 E0 t# H+ O( H( d
|