add
This commit is contained in:
90
john103C6T6NewVer/linkBlink/linkBlink.h
Normal file
90
john103C6T6NewVer/linkBlink/linkBlink.h
Normal file
@@ -0,0 +1,90 @@
|
||||
#ifndef LED_BLINKER_RS485_H
|
||||
#define LED_BLINKER_RS485_H
|
||||
|
||||
#include "stm32f1xx_hal.h" // Èçìåíèòå ïîä ñâîé êîíêðåòíûé ìèêðîêîíòðîëëåð
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
typedef struct {
|
||||
GPIO_TypeDef* led_port; // Ïîðò ñâåòîäèîäà
|
||||
uint16_t led_pin; // Ïèí ñâåòîäèîäà
|
||||
GPIO_TypeDef* de_re_port; // Ïîðò óïðàâëåíèÿ RS485 (NULL åñëè íå èñïîëüçóåòñÿ)
|
||||
uint16_t de_re_pin; // Ïèí óïðàâëåíèÿ RS485
|
||||
TIM_HandleTypeDef* htim; // Òàéìåð äëÿ îòñ÷åòà âðåìåíè
|
||||
uint32_t blink_duration; // Äëèòåëüíîñòü ìèãàíèÿ â ìñ
|
||||
uint32_t last_blink_tick; // Âðåìÿ ïîñëåäíåãî ìèãàíèÿ (â òèêàõ)
|
||||
bool led_state; // Òåêóùåå ñîñòîÿíèå ñâåòîäèîäà
|
||||
bool blinking; // Ôëàã ìèãàíèÿ
|
||||
uint8_t blink_count; // Ñ÷åò÷èê ìèãàíèé
|
||||
uint8_t target_blink_count; // Öåëåâîå êîëè÷åñòâî ìèãàíèé
|
||||
uint32_t last_packet_tick; // Âðåìÿ ïîñëåäíåãî ïàêåòà
|
||||
} LedBlinker_HandleTypeDef;
|
||||
|
||||
/**
|
||||
* Èíèöèàëèçàöèÿ ñòðóêòóðû ìèãàëêè
|
||||
* @param hblinker - óêàçàòåëü íà ñòðóêòóðó
|
||||
* @param led_port - ïîðò ñâåòîäèîäà
|
||||
* @param led_pin - ïèí ñâåòîäèîäà
|
||||
* @param de_re_port - ïîðò óïðàâëåíèÿ RS485 (NULL åñëè íå èñïîëüçóåòñÿ)
|
||||
* @param de_re_pin - ïèí óïðàâëåíèÿ RS485
|
||||
* @param htim - òàéìåð äëÿ âðåìåííûõ îòñ÷åòîâ
|
||||
* @return HAL_OK èëè HAL_ERROR
|
||||
*/
|
||||
HAL_StatusTypeDef LedBlinker_Init(LedBlinker_HandleTypeDef* hblinker,
|
||||
GPIO_TypeDef* led_port, uint16_t led_pin,
|
||||
GPIO_TypeDef* de_re_port, uint16_t de_re_pin,
|
||||
TIM_HandleTypeDef* htim);
|
||||
|
||||
/**
|
||||
* Îáðàáîò÷èê ìèãàíèÿ (âûçûâàòü â îñíîâíîì öèêëå)
|
||||
* @param hblinker - óêàçàòåëü íà ñòðóêòóðó
|
||||
*/
|
||||
void LedBlinker_Update(LedBlinker_HandleTypeDef* hblinker);
|
||||
|
||||
/**
|
||||
* Îáðàáîòêà ïîëó÷åííîãî ïàêåòà
|
||||
* @param hblinker - óêàçàòåëü íà ñòðóêòóðó
|
||||
* @param data - óêàçàòåëü íà äàííûå
|
||||
* @param len - äëèíà äàííûõ
|
||||
*/
|
||||
void LedBlinker_ProcessPacket(LedBlinker_HandleTypeDef* hblinker,
|
||||
uint8_t* data, uint16_t len);
|
||||
|
||||
/**
|
||||
* Ïðîñòîå ìèãàíèå ïðè ïîëó÷åíèè ïàêåòà
|
||||
* @param hblinker - óêàçàòåëü íà ñòðóêòóðó
|
||||
* @param duration - äëèòåëüíîñòü ìèãàíèÿ â ìñ
|
||||
*/
|
||||
void LedBlinker_BlinkOnce(LedBlinker_HandleTypeDef* hblinker, uint32_t duration);
|
||||
|
||||
/**
|
||||
* Ìèãàíèå ñ îïðåäåëåííûì ïàòòåðíîì
|
||||
* @param hblinker - óêàçàòåëü íà ñòðóêòóðó
|
||||
* @param count - êîëè÷åñòâî ìèãàíèé
|
||||
* @param duration - äëèòåëüíîñòü îäíîãî ìèãàíèÿ â ìñ
|
||||
*/
|
||||
void LedBlinker_BlinkPattern(LedBlinker_HandleTypeDef* hblinker,
|
||||
uint8_t count, uint32_t duration);
|
||||
|
||||
/**
|
||||
* Óñòàíîâêà ðåæèìà RS485
|
||||
* @param hblinker - óêàçàòåëü íà ñòðóêòóðó
|
||||
* @param transmit - true äëÿ ïåðåäà÷è, false äëÿ ïðèåìà
|
||||
*/
|
||||
void LedBlinker_SetRS485Mode(LedBlinker_HandleTypeDef* hblinker, bool transmit);
|
||||
|
||||
/**
|
||||
* Ïðîâåðêà, ìèãàåò ëè ñåé÷àñ ñâåòîäèîä
|
||||
* @param hblinker - óêàçàòåëü íà ñòðóêòóðó
|
||||
* @return true åñëè ìèãàåò
|
||||
*/
|
||||
bool LedBlinker_IsBlinking(LedBlinker_HandleTypeDef* hblinker);
|
||||
|
||||
/**
|
||||
* Ïîëó÷åíèå âðåìåíè ñ ïîñëåäíåãî ïàêåòà
|
||||
* @param hblinker - óêàçàòåëü íà ñòðóêòóðó
|
||||
* @return âðåìÿ â ìñ ñ ïîñëåäíåãî ïàêåòà
|
||||
*/
|
||||
uint32_t LedBlinker_GetTimeSinceLastPacket(LedBlinker_HandleTypeDef* hblinker);
|
||||
|
||||
#endif // LED_BLINKER_RS485_H
|
||||
Reference in New Issue
Block a user