|
STM32 维护丨 点灯V2.1.0 之前的点灯最终版,最终在后续的测试中,还是发现了一些小问题。今晚就先来维护一下这个小小的LED驱动。 首先就是,之前的使能函数,有不合理的地方,我这里先贴之前的程序。 - /** @brief 使能LED8 x+ b6 h, J) [( F; _; T) x
- * @param[in] Enable :使能
' {5 X; B$ X. z - * @param[out] 无
/ u$ ^, K. o+ N - * @retval 无
& W% l V5 i3 q( |: q6 L6 z - * @note 无) M& Q2 _# Q1 z! B
- */" U/ h+ v; K6 w2 ^2 L% S" l
- void sLED_Enable(u8 Enable)( x. H" I9 D6 C) m4 W$ J/ E6 G
- {( E% z) L/ Q9 O: Q8 K
- Enable = (Enable != 0);; ?5 `. ~3 t; I
- s_LED.Enable = sLed_Polar(s_LED.PolarLED , Enable);1 }4 `' K* a) v& z8 }8 a
- }
复制代码 , E( }+ z3 r0 Z& J! g4 T2 Z; P
从我们Debug的情况来看,我们只要给Enable赋值1,灯就能亮了,所以,在这个使能函数里,不需要在进行翻转,也不需要进行端口检测,直接赋值就好。修改后的程序如下 - /** @brief 使能LED0 s7 c0 ]* t& H
- * @param[in] Enable :使能 ) E" x. [% Q8 y4 J
- * @param[out] 无
' j. K6 ^' O2 D& j) V - * @retval 无' y& }* s3 K b. \
- * @note 无0 y5 E" y" w1 Z
- */* e4 b/ `7 h1 }
- void sLED_Enable(u8 Enable)0 ]' ?9 _( z m: U, o
- {
& }+ k3 ^( B; g' |) u - s_LED.Enable = Enable;
$ s+ p1 E( W( b: R( m7 M- } - }
复制代码
6 v7 g% y& l3 y( R4 P% H, O对,就是这么简单。 程序嘛,都是修改出来的,都是在用的时候,不顺手了,就顺手修改一下,最后就顺手了。 在应用的过程中,我发现没有给故障码赋值的函数,我也在程序里加了这个功能。 - /** @brief 设置LDE的故障码( |3 H! u' U9 {' @6 D; w! P
- * @param[in] Err : 类型
* K- V9 l8 [- U: v# n0 G2 g - * @param[out] 无
" W4 I6 X* w/ m w! o0 f* E - * @retval 1 : 设置成功
. U' @" `; o. N( m - 0 : 设置失败; [6 h/ [; p5 O/ J
- * @note 无! f2 X" U7 [$ q5 N. K+ j
- */ V% i5 A# l* U4 C
- void sLED_SetErrNum(u8 Num)+ @/ P# Z- t- w0 v! h
- {: y: I6 O% d" d1 V t, ?
- s_LED.Err_num = Num;
+ a+ u# q& @, x- d - }
复制代码
" t0 K( k: L+ @! x& g( a- d 在应用的过程中,我还发现,赋值的函数有点多,需要每个参数都单独赋值,这么一来,程序接口的初衷就体现不出来,所以我添加了一个同时给LED所有参数赋值的函数,当然,同时也需要有读所有参数的函数。 设置所有参数。 - /** @brief 设置LED所有参数
5 j* m/ k N+ p( h% J6 }- b) A - * @param[in] led :led的参数的指针
$ E! C- V, U; r5 i - * @param[out] 无, `5 d7 T+ x9 g
- * @retval 无
$ X5 |' [0 N6 c - * @note 无
/ S2 b1 o) v4 P. | - */5 p8 X) b/ w# O2 `$ O0 L% _
- void sLED_SetAllDat(LED_t *led)
/ t1 B3 J) i! Q. s# y; x - {" I; ]4 P" B+ Z/ @ F
- s_LED = *led;
1 S$ }" T% B# r- Y- J - }
复制代码 ( f6 f4 s2 Q8 m! A
读所有参数 - /** @brief 设置LED所有参数2 M; ?% L: Z8 Z7 s# E
- * @param[in] led :接收led参数的指针 ) Y+ d: a; A3 m2 ]+ S
- * @param[out] 无
5 t8 C7 E c& D+ J - * @retval 无 a! t8 P+ u3 h+ A
- * @note 无
7 E+ R) n1 T9 z9 \6 T4 x - */
6 [" p8 a2 m8 @- q6 ^9 `. p - void sLED_ReAllDat(LED_t *led)
4 p6 V. k% h* T2 B+ q - {
e* e( C2 q% @2 j( u - *led = s_LED; , c, P0 ]$ x9 I9 T( z7 a/ N H
- }) U6 M5 M4 ]( [& c
复制代码
/ c6 }; O& q6 ]% D- X+ i0 N' h 既然需要在其他文件里用到我们的结构体定义,那么我们就需要将结构体的定义放到头文件里,这样只要其他文件包含了头文件,就可以在其他文件里用我们结构体的定义来定义参数了。 现在暂时算是完成了,当然,哪天用得不顺手,也是有可能修改、维护的。 文章出处: Yue無缺 . p5 D( W( ^! }
|