From 83b7b6d1426a6d2e195b1897856a1cba7be07754 Mon Sep 17 00:00:00 2001 From: Filip Jagodzinski Date: Thu, 30 Jan 2020 13:17:13 +0100 Subject: [PATCH] LPC55S69: Fix serial IRQ handling Check that the RX or TX interrupt is enabled before calling a registered handler with RxIrq or TxIrq arg. --- .../TARGET_MCUXpresso_MCUS/TARGET_LPC/serial_api.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/targets/TARGET_NXP/TARGET_MCUXpresso_MCUS/TARGET_LPC/serial_api.c b/targets/TARGET_NXP/TARGET_MCUXpresso_MCUS/TARGET_LPC/serial_api.c index fe570da53c..2bf9b00362 100644 --- a/targets/TARGET_NXP/TARGET_MCUXpresso_MCUS/TARGET_LPC/serial_api.c +++ b/targets/TARGET_NXP/TARGET_MCUXpresso_MCUS/TARGET_LPC/serial_api.c @@ -1,5 +1,5 @@ /* mbed Microcontroller Library - * Copyright (c) 2006-2013 ARM Limited + * Copyright (c) 2006-2020 ARM Limited * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -189,10 +189,10 @@ void serial_format(serial_t *obj, int data_bits, SerialParity parity, int stop_b static inline void uart_irq(uint32_t transmit_empty, uint32_t receive_not_empty, uint32_t index) { if (serial_irq_ids[index] != 0) { - if (transmit_empty) + if (transmit_empty && (uart_addrs[index]->FIFOINTENSET & kUSART_TxLevelInterruptEnable)) irq_handler(serial_irq_ids[index], TxIrq); - if (receive_not_empty) + if (receive_not_empty && (uart_addrs[index]->FIFOINTENSET & kUSART_RxLevelInterruptEnable)) irq_handler(serial_irq_ids[index], RxIrq); } }