前言
自己在使用stm32H743XIH6调试UART的DMA中断时发现,只要freertos一运行,DMA就接收不到数据,不使能freertos,DMA就能接收到中断,接收到数据
解决办法
把开启DMA接收放在freertos的一个task里执行,执行完毕后,这个task自行销毁
这样回调函数就能正常接收到数据了
究其原因是因为
FreeRTOS在 void vTaskStartScheduler( void )里调用 configSETUP_TICK_INTERRUPT(), 也就是void FreeRTOS_SetupTickInterrupt( void )。void FreeRTOS_SetupTickInterrupt( void )在文件portZynqUltrascale.c里实现,会初始化MPSoC的中断控制器。