Добавлена проверка на успешную инициализацию Register Callback для CAN и TIM.

This commit is contained in:
2026-05-29 13:41:17 +03:00
parent 8ffba3b9e0
commit 88af7cdfce
12 changed files with 1061 additions and 918 deletions

View File

@@ -93,9 +93,11 @@ int main(void)
MX_TIM4_Init();
/* USER CODE BEGIN 2 */
HAL_CAN_Start(&hcan);
HAL_CAN_ActivateNotification(&hcan, CAN_IT_RX_FIFO0_MSG_PENDING | CAN_IT_ERROR | CAN_IT_BUSOFF | CAN_IT_LAST_ERROR_CODE);
PROTOCAN_INIT(&hcan, &hrtc, &htim4);
PROTOCAN_LOOP();
if(PROTOCAN_INIT(&hcan, &hrtc, &htim4) == PROTOCAN_OK)
{
HAL_CAN_ActivateNotification(&hcan, CAN_IT_RX_FIFO0_MSG_PENDING | CAN_IT_ERROR | CAN_IT_BUSOFF | CAN_IT_LAST_ERROR_CODE);
PROTOCAN_LOOP();
}
/* USER CODE END 2 */
/* Infinite loop */

View File

@@ -59,15 +59,15 @@ void PROTOCAN_DEINIT(uint8_t stage)
*/
PROTOCAN_INIT_StatusTypeDef PROTOCAN_INIT(CAN_HandleTypeDef *tmp_hcan, RTC_HandleTypeDef *tmp_hrtc, TIM_HandleTypeDef *tmp_tim)
{
//HAL_CAN_Start(_HCAN);
//HAL_CAN_ActivateNotification(_HCAN, CAN_IT_RX_FIFO0_MSG_PENDING | CAN_IT_ERROR | CAN_IT_BUSOFF | CAN_IT_LAST_ERROR_CODE);
//MX_TIM4_Init();
//MX_RTC_Init();
unsigned initStage = 0;
if(tmp_hcan) {
_HCAN = tmp_hcan;
#if (USE_HAL_CAN_REGISTER_CALLBACKS == 1)
HAL_CAN_RegisterCallback(_HCAN, HAL_CAN_RX_FIFO0_MSG_PENDING_CB_ID, ProtoCanRxFifo0MsgPendingCallback);
HAL_StatusTypeDef CAN_RC_RESULT = HAL_CAN_RegisterCallback(_HCAN, HAL_CAN_RX_FIFO0_MSG_PENDING_CB_ID, ProtoCanRxFifo0MsgPendingCallback);
if(CAN_RC_RESULT != HAL_OK) {
PROTOCAN_DEINIT(initStage);
return PROTOCAN_HRTC_ERROR;
}
#endif
} else {
PROTOCAN_DEINIT(initStage);
@@ -84,7 +84,11 @@ PROTOCAN_INIT_StatusTypeDef PROTOCAN_INIT(CAN_HandleTypeDef *tmp_hcan, RTC_Handl
if(tmp_tim) {
_HTIM = tmp_tim;
#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
HAL_TIM_RegisterCallback(_HTIM, HAL_TIM_PERIOD_ELAPSED_CB_ID, ProtoCanPulseCallback);
HAL_StatusTypeDef TIM_RC_RESULT = HAL_TIM_RegisterCallback(_HTIM, HAL_TIM_PERIOD_ELAPSED_CB_ID, ProtoCanPulseCallback);
if(TIM_RC_RESULT != HAL_OK) {
PROTOCAN_DEINIT(initStage);
return PROTOCAN_HRTC_ERROR;
}
#endif
} else {
PROTOCAN_DEINIT(initStage);