diff --git a/targets/TARGET_STM/TARGET_STM32F1/can_api.c b/targets/TARGET_STM/TARGET_STM32F1/can_api.c index 183645f91f..44945914fa 100644 --- a/targets/TARGET_STM/TARGET_STM32F1/can_api.c +++ b/targets/TARGET_STM/TARGET_STM32F1/can_api.c @@ -377,6 +377,15 @@ static void can_irq(CANName name, int id) tmp1 = __HAL_CAN_TRANSMIT_STATUS(&CanHandle, CAN_TXMAILBOX_0); tmp2 = __HAL_CAN_TRANSMIT_STATUS(&CanHandle, CAN_TXMAILBOX_1); tmp3 = __HAL_CAN_TRANSMIT_STATUS(&CanHandle, CAN_TXMAILBOX_2); + if (tmp1){ + CanHandle.Instance->TSR |= CAN_TSR_RQCP0; + } + if (tmp2){ + CanHandle.Instance->TSR |= CAN_TSR_RQCP1; + } + if (tmp3){ + CanHandle.Instance->TSR |= CAN_TSR_RQCP2; + } if(tmp1 || tmp2 || tmp3) { irq_handler(can_irq_ids[id], IRQ_TX);