Fixed bug 3607518.

git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@5401 35acf78f-673a-0410-8e92-d51de3d6d3f4
master
gdisirio 2013-03-10 11:04:37 +00:00
parent cd4329c9d1
commit 4e3ffc5134
8 changed files with 17 additions and 8 deletions

View File

@ -309,7 +309,8 @@ typedef void (*stm32_dmaisr_t)(void *p, uint32_t flags);
* @special * @special
*/ */
#define dmaStreamDisable(dmastp) { \ #define dmaStreamDisable(dmastp) { \
(dmastp)->channel->CCR &= ~STM32_DMA_CR_EN; \ (dmastp)->channel->CCR &= ~(STM32_DMA_CR_TCIE | STM32_DMA_CR_HTIE | \
STM32_DMA_CR_TEIE | STM32_DMA_CR_EN); \
dmaStreamClearInterrupt(dmastp); \ dmaStreamClearInterrupt(dmastp); \
} }

View File

@ -320,7 +320,8 @@ typedef void (*stm32_dmaisr_t)(void *p, uint32_t flags);
* @special * @special
*/ */
#define dmaStreamDisable(dmastp) { \ #define dmaStreamDisable(dmastp) { \
(dmastp)->channel->CCR &= ~STM32_DMA_CR_EN; \ (dmastp)->channel->CCR &= ~(STM32_DMA_CR_TCIE | STM32_DMA_CR_HTIE | \
STM32_DMA_CR_TEIE | STM32_DMA_CR_EN); \
dmaStreamClearInterrupt(dmastp); \ dmaStreamClearInterrupt(dmastp); \
} }

View File

@ -320,7 +320,8 @@ typedef void (*stm32_dmaisr_t)(void *p, uint32_t flags);
* @special * @special
*/ */
#define dmaStreamDisable(dmastp) { \ #define dmaStreamDisable(dmastp) { \
(dmastp)->channel->CCR &= ~STM32_DMA_CR_EN; \ (dmastp)->channel->CCR &= ~(STM32_DMA_CR_TCIE | STM32_DMA_CR_HTIE | \
STM32_DMA_CR_TEIE | STM32_DMA_CR_EN); \
dmaStreamClearInterrupt(dmastp); \ dmaStreamClearInterrupt(dmastp); \
} }

View File

@ -320,7 +320,8 @@ typedef void (*stm32_dmaisr_t)(void *p, uint32_t flags);
* @special * @special
*/ */
#define dmaStreamDisable(dmastp) { \ #define dmaStreamDisable(dmastp) { \
(dmastp)->channel->CCR &= ~STM32_DMA_CR_EN; \ (dmastp)->channel->CCR &= ~(STM32_DMA_CR_TCIE | STM32_DMA_CR_HTIE | \
STM32_DMA_CR_TEIE | STM32_DMA_CR_EN); \
dmaStreamClearInterrupt(dmastp); \ dmaStreamClearInterrupt(dmastp); \
} }

View File

@ -373,7 +373,9 @@ typedef void (*stm32_dmaisr_t)(void *p, uint32_t flags);
* @special * @special
*/ */
#define dmaStreamDisable(dmastp) { \ #define dmaStreamDisable(dmastp) { \
(dmastp)->stream->CR &= ~STM32_DMA_CR_EN; \ (dmastp)->stream->CR &= ~(STM32_DMA_CR_TCIE | STM32_DMA_CR_HTIE | \
STM32_DMA_CR_TEIE | STM32_DMA_CR_DMEIE | \
STM32_DMA_CR_EN); \
while (((dmastp)->stream->CR & STM32_DMA_CR_EN) != 0) \ while (((dmastp)->stream->CR & STM32_DMA_CR_EN) != 0) \
; \ ; \
dmaStreamClearInterrupt(dmastp); \ dmaStreamClearInterrupt(dmastp); \

View File

@ -311,7 +311,8 @@ typedef void (*stm32_dmaisr_t)(void *p, uint32_t flags);
* @special * @special
*/ */
#define dmaStreamDisable(dmastp) { \ #define dmaStreamDisable(dmastp) { \
(dmastp)->channel->CCR &= ~STM32_DMA_CR_EN; \ (dmastp)->channel->CCR &= ~(STM32_DMA_CR_TCIE | STM32_DMA_CR_HTIE | \
STM32_DMA_CR_TEIE | STM32_DMA_CR_EN); \
dmaStreamClearInterrupt(dmastp); \ dmaStreamClearInterrupt(dmastp); \
} }

View File

@ -86,6 +86,8 @@
***************************************************************************** *****************************************************************************
*** 2.5.2 *** *** 2.5.2 ***
- FIX: Fixed spurious interrupt disabling an STM32 DMA stream (bug 3607518)
(backported to 2.4.4).
- FIX: Fixed surprising non-CRLF lines in source (bug 3607380). - FIX: Fixed surprising non-CRLF lines in source (bug 3607380).
- FIX: Fixed no entry point defined at link time (bug 3607319). - FIX: Fixed no entry point defined at link time (bug 3607319).
- FIX: Fixed sdc_lld_collect_errors does not collect errors (bug 3606743). - FIX: Fixed sdc_lld_collect_errors does not collect errors (bug 3606743).

View File

@ -158,9 +158,9 @@ int main(void) {
* handled entirely in background. * handled entirely in background.
*/ */
uartStopReceive(&UARTD2); uartStopReceive(&UARTD2);
// uartStopSend(&UARTD2); uartStopSend(&UARTD2);
uartStartReceive(&UARTD2, 16, buffer); uartStartReceive(&UARTD2, 16, buffer);
// uartStartSend(&UARTD2, 16, message); uartStartSend(&UARTD2, 16, message);
} }
chThdSleepMilliseconds(500); chThdSleepMilliseconds(500);
} }