前言
7 Q. u' Z1 P- r( x3 [. s学完频率计之后花了一周重新看了一下物联网的东西,忙完之后终于有时间开始学习G431单片机了,花了两天时间 把发光二极管点亮了7 l- I- e2 G0 r8 ?) S4 W' c
! T! H W7 |$ M& f
电路分析
1 J, L1 l! Y# ^; b7 t3 q+ Z! \4 [+ r# s( L" u6 H
' }4 H" K" y3 x/ y: P
G431开发板自带的发光二极管模块
+ T( l: F7 |+ N, o) A# @1 r- \9 l& I0 w7 p) ^3 z
可以看到在这个电路中PA5引脚输出高电平时三极管导通二极管发光,如果该引脚输出低电平时二极管熄灭。
! w9 O. ^; z! |0 ?) I2 b' H: S# R( l8 \: M* i: N, [
cubemx的相关配置
6 H) t( C9 T9 |, o2 r+ n- v/ J9 i" v+ m0 j9 j8 Q1 z+ L! l. U
8 e2 l$ U6 @7 G a
" v0 y& h$ z: H- _
- Y+ T2 B: F/ H* z* C, }+ w, b8 v' i+ m& Z2 S
, J. r: g& O; H; f9 U/ o7 ~
这里我们配置该LD2的引脚PA5为输出端口。0 A- ~# _9 ?" j D5 d% ^
因为该二极管为高电平使能二极管,所以我们设置输出端口为低电平。
9 R- G% N0 c" ]因为是连接数字器件所以我们选择推挽输出模式。
4 M& Q$ Z9 y! q2 X9 j8 j+ Z设置为下拉模式。# a0 z' Q" R' _$ k4 {
因为二极管对gpio输出的速度没有要求,所以配置速度为低速。
% w9 ?8 y. G, O# {" t6 _为了使后面的代码可操作性更好,我设置了user lable 为LD2。
+ S; Y& d! Q& @' l! n4 K4 d. H8 x" e1 G; C5 d( P
代码实现
5 ]& G. h; B) E3 R: o! ^9 Yuser lable的相关代码
( C5 G0 d+ h# i; U7 ~1 ]# p( A
- /* Private defines -----------------------------------------------------------*/! T' p; v C7 P& ?) a! j* f3 ?
- #define LD2_Pin GPIO_PIN_5
! E2 [0 h: g) ?, @& c$ V - #define LD2_GPIO_Port GPIOA
. m, G& E# z, Z8 N( e - /* USER CODE BEGIN Private defines */
复制代码
' r* \6 h1 a1 T4 H主函数代码* d" z! y* g. ?% x0 ?
- ^ \+ j# s; J. Z
- while (1)
* y. l# P5 D5 B3 x9 S& \: Q - {
# H2 C8 _7 B9 v, A# B/ | - HAL_GPIO_WritePin(LD2_GPIO_Port, LD2_Pin, GPIO_PIN_SET);, d9 L b1 t/ J
- HAL_Delay(1000);& H# s- P% j/ \9 G& a7 |9 W- J
- HAL_GPIO_WritePin(LD2_GPIO_Port, LD2_Pin, GPIO_PIN_RESET);7 \! r0 A- K, ?$ a$ i+ G
- HAL_Delay(1000);% u: m+ j0 O4 K+ | _% U# b
- /* USER CODE END WHILE */
/ r; S! p" S1 d& z0 o - 4 M6 l/ w. {6 b4 K' r. @
- /* USER CODE BEGIN 3 */7 v4 Q* w+ E( W' Q- ]9 z) s
- }
复制代码
# d- h1 Q0 v) D- h: o- S9 \) |这里就没什么好讲的了,就是上拉下拉GPIO,来让二极管发光熄灭。但是我也之前没有写最后一行的延时函数,结果那个发光二极管一直亮着的卡了我好久
, j' i/ B0 T8 F/ }, z+ u" I+ H8 f
* i9 v5 q- J" o
8 g) H& n7 u% B1 P6 s: \ |