From b2f8de82943c18f2e02f1c822036d62ee5455c61 Mon Sep 17 00:00:00 2001 From: Sam Lin Date: Fri, 9 Dec 2016 10:44:28 +0800 Subject: [PATCH] Repair the Transmit mailbox (0,1,2) empty interrupt Flag not clear BUG --- targets/TARGET_STM/TARGET_STM32F1/can_api.c | 9 +++++++++ 1 file changed, 9 insertions(+) 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);