Добавить переносимый планировщик PULSE

This commit is contained in:
2026-09-01 20:54:58 +03:00
parent e9ec078b38
commit af82687e42
5 changed files with 179 additions and 1 deletions

View File

@@ -19,7 +19,7 @@
| Файл | Что делает | Зависимости |
|---|---|---|
| `can_sensor.h`, `can_sensor.c` | сборка и разбор SETTINGS, повторы передачи, счётчики обмена | `stdint.h` |
| `can_sensor.h`, `can_sensor.c` | сборка и разбор SETTINGS, планировщик PULSE, повторы передачи, счётчики обмена | `stdint.h` |
| `ports/stm32f1/` | опросный порт CAN1: GPIO, BTR, фильтр, mailbox/FIFO, тайм-аут ACK | CMSIS `stm32f10x.h` |
`ZZ` — номер сборки, `YY` — позиция. Нулевой ROM с DLC=8 очищает локацию.
@@ -40,14 +40,20 @@ CanSensor link;
CanSensor_Io io = { .send = bxcan_send, .receive = bxcan_receive, .context = &board };
CanSensor_Config config;
CanSensor_ConfigDefault(&config); /* TX 0x1FFE0000, RX 0x17FE0000 */
config.pulse_period_ms = 1000U; /* 0 — PULSE выключен */
CanSensor_Init(&link, &io, &config);
CanSensor_SendId(&link, position, assembly_serial, rom);
CanSensor_Task(&link, now_ms);
CanSensor_Message message;
if (CanSensor_Poll(&link, &message)) { /* принят идентификатор */ }
```
Период можно менять во время работы через `CanSensor_SetPulsePeriod()`. Значение
`0` именно выключает heartbeat: кадры PULSE больше не ставятся в очередь. При
повторном включении первый кадр отправляется через полный заданный период.
## Порт STM32F1
Порт не использует STM32 HAL и не занимает прерывания. Скопируйте