Исправлен id по can: был std, теперь ext (бит IDE в msgHeaderSend)

Сделано моргание диодом только по успешной отправке по CAN
This commit is contained in:
Razvalyaev 2025-08-25 16:03:37 +03:00
parent 327f65e16b
commit d9c19bf743
2 changed files with 43 additions and 14 deletions

View File

@ -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 */

View File

@ -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; // Выключение нормального светодиода
}