условно работающий первый канал, не вычисляется только duration

This commit is contained in:
2025-04-01 14:42:19 +03:00
parent b577be4b82
commit 40fca38a75
5 changed files with 78 additions and 16 deletions

View File

@@ -61,7 +61,8 @@ void Error_Handler(void);
#define LED_GPIO_Port GPIOC
/* USER CODE BEGIN Private defines */
#define LED_On() LED_GPIO_Port->BSRR = (LED_Pin << 16)
#define LED_Off() LED_GPIO_Port->BSRR = (LED_Pin)
/* USER CODE END Private defines */
#ifdef __cplusplus

View File

@@ -9,25 +9,25 @@ extern "C" {
#endif
// размер буфера, должен быть 2^x
#define CHANNEL_BUFFER_SIZE 1024
#define CHANNEL_BUFFER_SIZE 2048
#define CHANNEL_BUFFER_SIZE_MASK (CHANNEL_BUFFER_SIZE - 1)
typedef struct {
uint64_t timepoint;
uint32_t duration;
} BufferItem;
} BufferItem_t;
// Структура кольцевого буфера
typedef struct {
volatile uint32_t head;
volatile uint32_t tail;
volatile uint32_t overruns;
BufferItem buffer[CHANNEL_BUFFER_SIZE];
BufferItem_t buffer[CHANNEL_BUFFER_SIZE];
} ChannelBuffer_t;
void ChannelBuffer_reset(ChannelBuffer_t *buffer);
void ChannelBuffer_push(ChannelBuffer_t *buffer, BufferItem item);
int ChannelBuffer_pop(ChannelBuffer_t *buffer, BufferItem* dest);
void ChannelBuffer_push(ChannelBuffer_t *buffer, const BufferItem_t* item);
int ChannelBuffer_pop(ChannelBuffer_t *buffer, BufferItem_t* dest);
extern ChannelBuffer_t buffer_ch1;
extern ChannelBuffer_t buffer_ch2;