|
STM32 维护丨 点灯V2.1.0 之前的点灯最终版,最终在后续的测试中,还是发现了一些小问题。今晚就先来维护一下这个小小的LED驱动。 首先就是,之前的使能函数,有不合理的地方,我这里先贴之前的程序。 - <font face="微软雅黑">/** @brief 使能LED
- h0 r, E, e3 u- q3 a - * @param[in] Enable :使能 & N$ V |: {" E7 H: K' p9 B
- * @param[out] 无
( }& ~1 P; Y8 \! o p( _8 P8 \ - * @retval 无9 v9 W# e+ k& s, A6 \& B- W* J
- * @note 无
1 a' q) b) G1 n - */
" d) s/ W& m5 S1 U( c, }, \ - void sLED_Enable(u8 Enable)
/ _1 X' E' p: q+ k2 \$ G9 o( f" P - {# N: M* Z3 e: V9 D( f
- Enable = (Enable != 0);# w h8 f- m* {4 x
- s_LED.Enable = sLed_Polar(s_LED.PolarLED , Enable);5 w' W) a* }' M" I, B2 n! Y. t
- }</font>
复制代码从我们Debug的情况来看,我们只要给Enable赋值1,灯就能亮了,所以,在这个使能函数里,不需要在进行翻转,也不需要进行端口检测,直接赋值就好。修改后的程序如下 - <font face="微软雅黑">/** @brief 使能LED1 l2 P9 N+ e, X$ g9 V, S
- * @param[in] Enable :使能 ' [2 H) T6 D+ b+ G5 O* b; f- x
- * @param[out] 无
' J" @% O. C% ~5 M7 y g5 B+ _% r/ y# a - * @retval 无
; i" R; p: z: r9 K5 P - * @note 无# G3 J3 o. R: {' l1 }; [1 D
- */- K' r! i% a* t6 y9 c2 j: P X) [/ g
- void sLED_Enable(u8 Enable)
* g- n0 E; d2 q - {
q& w6 j3 y3 q/ P! } |% X$ n" I. } - s_LED.Enable = Enable;3 K8 H2 T9 t7 G
- }</font>
复制代码 对,就是这么简单。 程序嘛,都是修改出来的,都是在用的时候,不顺手了,就顺手修改一下,最后就顺手了。 在应用的过程中,我发现没有给故障码赋值的函数,我也在程序里加了这个功能。 - <font face="微软雅黑">/** @brief 设置LDE的故障码
$ x( X$ W% I2 ?: o; c8 s - * @param[in] Err : 类型9 q5 Q$ q) q0 D! M
- * @param[out] 无
8 G( X. I9 u" u& P - * @retval 1 : 设置成功
( P5 @( c" f1 Y) D - 0 : 设置失败
) @; |4 j) J9 P - * @note 无. o- w- }. B( v0 F
- */# {4 |! [8 ?: ~/ a
- void sLED_SetErrNum(u8 Num)7 t- R- }# b2 C. o0 l( _
- {
3 k5 J! m$ M, f4 r - s_LED.Err_num = Num;
6 G. j% F5 F9 d. d - }</font>
复制代码在应用的过程中,我还发现,赋值的函数有点多,需要每个参数都单独赋值,这么一来,程序接口的初衷就体现不出来,所以我添加了一个同时给LED所有参数赋值的函数,当然,同时也需要有读所有参数的函数。 设置所有参数。 - <font face="微软雅黑">/** @brief 设置LED所有参数
+ {: [& p- {' s% ` - * @param[in] led :led的参数的指针 & Y! {/ j3 X" z
- * @param[out] 无
) w2 Z6 @9 o3 R5 i. s2 G - * @retval 无& F) }' b+ V6 {9 Q+ A$ ?& d
- * @note 无
, r. L! \9 a/ T+ R - */
- ~* d1 L) e( Z" X( j - void sLED_SetAllDat(LED_t *led)% b3 E# f0 Q/ t' F6 E* j l
- {, A1 k+ [6 d( w2 V" R
- s_LED = *led;
4 y+ }7 _ A( S. o" C6 A - }</font>
复制代码6 D9 j: g( x/ C0 U9 x9 e
读所有参数
$ {/ j4 z1 O! z, A- O
- <font face="微软雅黑">/** @brief 设置LED所有参数
4 d9 {* j2 l# h/ Z$ N( R1 K# d0 S - * @param[in] led :接收led参数的指针
" u% c, B9 m. h9 _, t - * @param[out] 无8 e4 K; l1 k) d6 a
- * @retval 无( r7 i% Y2 E0 o; c) f |
- * @note 无0 h; X5 B3 j& Q* c& W( ^
- */
( F; I: V9 p: ?5 T8 f8 V$ s. R, \# f - void sLED_ReAllDat(LED_t *led)" g9 G9 L0 t, B5 x/ r9 ]( ^0 Z
- {7 C7 Y8 D# a. J! S5 F5 n) ]6 W$ o3 f
- *led = s_LED; ! x5 C& F. i, p' u$ u
- }</font>
复制代码
/ [. w0 U+ S1 c: j
既然需要在其他文件里用到我们的结构体定义,那么我们就需要将结构体的定义放到头文件里,这样只要其他文件包含了头文件,就可以在其他文件里用我们结构体的定义来定义参数了。 现在暂时算是完成了,当然,哪天用得不顺手,也是有可能修改、维护的。如果大家懒得复制这些函数,也可以在公众号后台找我要完整的工程文件。 文章出处: Yue無缺 , Z/ g( i( r. _6 U( m" c& ?% q/ ]7 ^
|