使用DMA时卡在configASSERT( pxQueue );

        FreeRTOS系统中使用ADC-DMA模式,在DMA中断中发送信号量,结果程序进入一次中断后不再进入中断。

        检查ADC及DMA寄存器:在KEIL中把ADC1->CR等寄存器添加到watch窗口,注意添加DMA寄存器时,基地址稍稍有些不同,LISR的基地址是DMA->LISR,DMA_SxCR等寄存器的基地址为 DMA2_Stream0->CR,具体到某个数据流。检查后确认配置没有问题。

        断点调试发现程序卡死在:configASSERT( pxQueue );查看具体信号量的句柄,发现没有被赋值,分析流程发现ADC及DMA的使能是在信号量句柄使能之前,所以产生了卡死的BUG,在中断中添加:

if(voltagecplt!=NULL)
{

}

BUG解决。

 

另一种情况:引用

http://www.stm32cube.com/article/79

你可能感兴趣的:(STM32代码,DEBUG)