STM32F405的SPI3作为从机,使用DMA接收中断,接收中断代码如下: void SPIx_DMA_RX_IRQHandler(void) { HAL_DMA_IRQHandler(SpiHandle.hdmarx); if((aRxBuffer[0])==0x2211&&(aRxBuffer[1]) == 0x4433) { HAL_SPI_TransmitReceive_DMA(&SpiHandle, (uint8_t*)aTxBuffer, (uint8_t *)aRxBuffer,2); } else { .. } } 在不使用MDK的RTOS2前,接收正常,但是一但开启了RTOS2,没有创建任何线程,就会出现错帧, #ifdef RTE_CMSIS_RTOS2 /* Initialize CMSIS-RTOS2 */ osKernelInitialize(); /* Start thread execution */ osKernelStart(); #endif SPI3接收的数据每隔一段时间就出现错帧: 正常数据是 0xaabb 0x8877,5Hz,但是频繁的出现 0xBF46将0xaabb给代替的现象 RTOS必须得使用, 求助各位高手.... |
你调整下你的DMA接收中断测试看看? |