From d9c19bf7438ae35274a56b99e815eb8884d34f22 Mon Sep 17 00:00:00 2001 From: Razvalyaev Date: Mon, 25 Aug 2025 16:03:37 +0300 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20id=20=D0=BF=D0=BE=20can:=20=D0=B1=D1=8B=D0=BB=20?= =?UTF-8?q?std,=20=D1=82=D0=B5=D0=BF=D0=B5=D1=80=D1=8C=20ext=20(=D0=B1?= =?UTF-8?q?=D0=B8=D1=82=20IDE=20=D0=B2=20msgHeaderSend)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Сделано моргание диодом только по успешной отправке по CAN --- Core/Src/can.c | 24 +++++++++++++++++++++--- Core/Src/main.c | 33 ++++++++++++++++++++++----------- 2 files changed, 43 insertions(+), 14 deletions(-) diff --git a/Core/Src/can.c b/Core/Src/can.c index 2b8f409..e73dc79 100644 --- a/Core/Src/can.c +++ b/Core/Src/can.c @@ -151,6 +151,7 @@ int CAN_send(uint16_t data[], int Addr, int Qua) if (HAL_CAN_GetTxMailboxesFreeLevel(&hcan) != 0) { + msgHeaderSend.IDE = 1; msgHeaderSend.ExtId = TX_box_ID | (Addr & 0xFFFF); msgHeaderSend.DLC = Qua*2; @@ -164,14 +165,14 @@ int CAN_send(uint16_t data[], int Addr, int Qua) msgDataSend[7] = (data[Addr+3] ) & 0x00ff; HAL_CAN_AddTxMessage(&hcan, &msgHeaderSend, msgDataSend, &mailBoxNum); - - LED_0_TGL; + return 1; } else { HAL_CAN_Stop(&hcan); HAL_CAN_Start(&hcan); + HAL_CAN_ActivateNotification(&hcan, CAN_IT_TX_MAILBOX_EMPTY|CAN_IT_ERROR); return 0; } } void Setup_CAN_addr(uint8_t mode) @@ -180,5 +181,22 @@ void Setup_CAN_addr(uint8_t mode) RX_box_ID = (0x80+mode)<<20; TX_box_ID = RX_box_ID | (1L<<28); } - +// Успешная отправка - моргание диодом +void HAL_CAN_TxMailbox0CompleteCallback(CAN_HandleTypeDef *hcan) +{ + LED_0_TGL; +} +void HAL_CAN_TxMailbox1CompleteCallback(CAN_HandleTypeDef *hcan) +{ + LED_0_TGL; +} +void HAL_CAN_TxMailbox2CompleteCallback(CAN_HandleTypeDef *hcan) +{ + LED_0_TGL; +} +// Ошибки: выключение диода +void HAL_CAN_ErrorCallback(CAN_HandleTypeDef *hcan) +{ + LED_0_OFF; +} /* USER CODE END 1 */ diff --git a/Core/Src/main.c b/Core/Src/main.c index 2d23486..9c35416 100644 --- a/Core/Src/main.c +++ b/Core/Src/main.c @@ -539,16 +539,20 @@ void Millisecond() power_lamp = norm_diod = 0; // Базовое состояние - выключено // Уровень освещенности 2: постоянно включено - if(Lightness == 2) power_lamp = norm_diod = 1; + if(Lightness == 2) + power_lamp = norm_diod = 1; // Уровень освещенности 3: медленное мигание (50%) - if(Lightness == 3) power_lamp = norm_diod = blink_over; + if(Lightness == 3) + power_lamp = norm_diod = blink_over; // Уровень освещенности 4: быстрое мигание (12.5%) - if(Lightness == 4) power_lamp = norm_diod = blink_alarm; + if(Lightness == 4) + power_lamp = norm_diod = blink_alarm; // Уровень освещенности 5: инверсное быстрое мигание (87.5%) - if(Lightness == 5) power_lamp = norm_diod = !blink_alarm; + if(Lightness == 5) + power_lamp = norm_diod = !blink_alarm; } //=== РЕЖИМ ОШИБОК ===// else if(Errors.all) @@ -567,20 +571,27 @@ void Millisecond() if(++count_bright == 10) // maximum_bright (100%) { count_bright = 0; - if(power_lamp) Pvt1_ON; // Включение на полную яркость - else Pvt1_OFF; // Выключение + if(power_lamp) + Pvt1_ON; // Включение на полную яркость + else + Pvt1_OFF; // Выключение } //=== УПРАВЛЕНИЕ ЯРКОСТЬЮ ===// if(count_bright == Brightness) - if(!TST) Pvt1_OFF; // Отключение лампочки с регулировкой яркости + if(!TST) + Pvt1_OFF; // Отключение лампочки с регулировкой яркости //=== УПРАВЛЕНИЕ СВЕТОДИОДАМИ ===// - if(work_diod) LED_2_ON; // Включение рабочего светодиода - else LED_2_OFF; // Выключение рабочего светодиода + if(work_diod) + LED_2_ON; // Включение рабочего светодиода + else + LED_2_OFF; // Выключение рабочего светодиода - if(norm_diod) LED_3_ON; // Включение нормального светодиода - else LED_3_OFF; // Выключение нормального светодиода + if(norm_diod) + LED_3_ON; // Включение нормального светодиода + else + LED_3_OFF; // Выключение нормального светодиода }