LCM — CH32V003 Light Control Module
Light Control Module, I2C slave
Loading...
Searching...
No Matches
lcm_led.h
Go to the documentation of this file.
1
/********************************** (C) COPYRIGHT *******************************
2
* File Name : lcm_led.h
3
* Description : Индикация LCM: красный (ошибка), зелёный (активность I2C).
4
*********************************************************************************/
5
6
#ifndef __LCM_LED_H
7
#define __LCM_LED_H
8
9
#include <stdint.h>
10
11
/*********************************************************************
12
* @fn LCM_Led_Init
13
*
14
* @brief Настройка PD4 (красный) и PC0 (зелёный). Вызывать из main
15
* до старта I2C.
16
*/
17
void
LCM_Led_Init
(
void
);
18
19
/*********************************************************************
20
* @fn LCM_Led_ErrorOn / LCM_Led_ErrorOff
21
*
22
* @brief Управление красным индикатором ошибки.
23
*
24
* @details ErrorOn() зажигает красный и (пере)запускает минимальный таймер
25
* показа (~100 мс, см. LCM_LED_RED_MIN_MS в lcm_led.c). ErrorOff()
26
* вызывается диспетчером команд (lcm_module.c) сразу после КАЖДОЙ
27
* команды (в т.ч. без явного GET_ERROR — см. описание протокола
28
* в lcm_module.h), поэтому красный работает как короткая вспышка
29
* «ошибка произошла», а не постоянный индикатор непрочитанной
30
* ошибки. ErrorOff() гасит светодиод немедленно, если минимальный
31
* таймер уже истёк, иначе фактическое гашение довершает
32
* LCM_Led_Poll() — это гарантирует видимую вспышку даже при
33
* мгновенном ErrorOn()+ErrorOff() в одном вызове.
34
*/
35
void
LCM_Led_ErrorOn
(
void
);
36
void
LCM_Led_ErrorOff
(
void
);
37
38
/*********************************************************************
39
* @fn LCM_Led_ActivityPulse
40
*
41
* @brief Запрос зелёной вспышки (~100 мс) на принятую I2C-команду.
42
*
43
* @details Безопасно вызывать из I2C ISR: только прямая запись GPIO
44
* (BSHR/BCR — одна инструкция) и установка флага; НЕ использует
45
* __disable_irq()/__enable_irq() (это ломает MPIE при возврате
46
* из WCH-Interrupt-fast обработчика и вешает прерывания навсегда).
47
*/
48
void
LCM_Led_ActivityPulse
(
void
);
49
50
/*********************************************************************
51
* @fn LCM_Led_Poll
52
*
53
* @brief Гашение зелёного через ~100 мс после ActivityPulse и гашение
54
* красного по истечении минимального времени показа (если
55
* ErrorOff() уже был запрошен). Вызывать из главного цикла main().
56
*/
57
void
LCM_Led_Poll
(
void
);
58
59
#endif
/* __LCM_LED_H */
LCM_Led_Init
void LCM_Led_Init(void)
Definition
lcm_led.c:83
LCM_Led_ActivityPulse
void LCM_Led_ActivityPulse(void)
Definition
lcm_led.c:110
LCM_Led_ErrorOff
void LCM_Led_ErrorOff(void)
Definition
lcm_led.c:100
LCM_Led_ErrorOn
void LCM_Led_ErrorOn(void)
Definition
lcm_led.c:93
LCM_Led_Poll
void LCM_Led_Poll(void)
Definition
lcm_led.c:116
User
lcm_led.h
Generated by
1.11.0