сделал новую версию рабаем с 0
This commit is contained in:
58
new rev/john103C8T6/linkBlink/linkBlink.c
Normal file
58
new rev/john103C8T6/linkBlink/linkBlink.c
Normal file
@@ -0,0 +1,58 @@
|
||||
#include "linkBlink.h"
|
||||
|
||||
|
||||
/* Ëîêàëüíàÿ êîïèÿ êîíôèãóðàöèè */
|
||||
static LED_BlinkRx_Config_t led_cfg;
|
||||
|
||||
/* Âíóòðåííèå ïåðåìåííûå ñîñòîÿíèÿ */
|
||||
static uint32_t last_tick = 0; // Âðåìÿ ïîñëåäíåãî ïåðåêëþ÷åíèÿ
|
||||
static uint8_t toggle_counter = 0; // Ñ÷¸ò÷èê ïåðåêëþ÷åíèé
|
||||
static uint8_t blinking = 0; // Ôëàã àêòèâíîãî ìèãàíèÿ
|
||||
|
||||
|
||||
/**
|
||||
* @brief Èíèöèàëèçàöèÿ ñòðóêòóðû
|
||||
*/
|
||||
void LED_BlinkRx_Init(LED_BlinkRx_Config_t *cfg)
|
||||
{
|
||||
led_cfg = *cfg;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief Çàïóñê ìèãàíèÿ ïðè ïðè¸ìå äàííûõ
|
||||
*/
|
||||
void LED_BlinkRx_OnRx(void)
|
||||
{
|
||||
|
||||
blinking = 1;
|
||||
toggle_counter = 0;
|
||||
last_tick = HAL_GetTick();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief Ôóíêöèÿ äîëæíà âûçûâàòüñÿ ðåãóëÿðíî (â while(1))
|
||||
*/
|
||||
void LED_BlinkRx_Process(void)
|
||||
{
|
||||
if (!blinking)
|
||||
return;
|
||||
|
||||
/* Ïðîâåðêà èñòå÷åíèÿ ïåðèîäà */
|
||||
if (HAL_GetTick() - last_tick >= led_cfg.blink_period)
|
||||
{
|
||||
last_tick = HAL_GetTick();
|
||||
|
||||
/* Ïåðåêëþ÷àåì ñîñòîÿíèå ïèíà */
|
||||
HAL_GPIO_TogglePin(led_cfg.port, led_cfg.pin);
|
||||
toggle_counter++;
|
||||
|
||||
/* Êàæäîå ìèãàíèå = 2 ïåðåêëþ÷åíèÿ (âêë + âûêë) */
|
||||
if (toggle_counter >= led_cfg.blink_count * 2)
|
||||
{
|
||||
HAL_GPIO_WritePin(led_cfg.port, led_cfg.pin, GPIO_PIN_SET);
|
||||
blinking = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user