Implement task for sending CAN data via UART #21

Merged
eeeck merged 71 commits from dev_serial-send into main 2026-06-18 15:35:23 +02:00
Showing only changes of commit 9d96b3d4f2 - Show all commits
+5 -8
View File
@@ -49,19 +49,11 @@ void CAN_Logger_Init(CAN_HandleTypeDef *hcan1, CAN_HandleTypeDef *hcan2)
filter.FilterActivation = ENABLE;
filter.SlaveStartFilterBank = 14;
HAL_NVIC_SetPriority(CAN1_RX0_IRQn, 6, 0);
HAL_NVIC_EnableIRQ(CAN1_RX0_IRQn);
HAL_NVIC_SetPriority(CAN2_RX0_IRQn, 6, 0);
HAL_NVIC_EnableIRQ(CAN2_RX0_IRQn);
filter.FilterBank = 0;
if (HAL_CAN_ConfigFilter(hcan1, &filter) != HAL_OK) Error_Handler();
if (HAL_CAN_Start(hcan1) != HAL_OK) Error_Handler();
filter.FilterBank = 14;
if (HAL_CAN_ConfigFilter(hcan2, &filter) != HAL_OK) Error_Handler();
if (HAL_CAN_Start(hcan2) != HAL_OK) Error_Handler();
}
/* END CAN_Logger_Init */
@@ -120,8 +112,13 @@ void vCANListener(void *argument)
osMessageQueueId_t queue = (hcan->Instance == CAN1) ? xCAN1RxQueue : xCAN2RxQueue;
CanMessage_t message;
if (HAL_CAN_Start(hcan) != HAL_OK) Error_Handler();
HAL_CAN_ActivateNotification(hcan, CAN_IT_RX_FIFO0_MSG_PENDING);
uint32_t irqn = (hcan->Instance == CAN1) ? CAN1_RX0_IRQn : CAN2_RX0_IRQn;
HAL_NVIC_SetPriority(irqn, 6, 0);
HAL_NVIC_EnableIRQ(irqn);
for (;;)
{
if (osMessageQueueGet(queue, &message, NULL, osWaitForever) == osOK)