设置成循环的只是说当数据传输量寄存器里面的内容变为零会重新加载,然后重新传输,但是这一切前提都是进行了设置和使能(这里应该是DMA请求,我还没看出来别的使能方式,正在学习呵呵),但是记住只有再怎么写好设置的子函数或者说模块,如果没有main里调用,不会运行的,因为单片机只执行MAIN里的函数,如果没有调用语句,是不会自己跑到DMA设置子函数里的,也就是说不会不断执行。
用和不用当然都可以发送。不用DMA发送是需要单片机实时参与,由单片机一个一个地发送数据并进行监控。但是如果用DMA,设置了起始地址,数据大小等参数后,就直接由专门的一个DMA模块进行数据发送,发送过程中单片机无需参与。发送完后会产生中断告知单片机。由此可知用DMA可以节省单片机资源,让单片可以在同一时间里干更多事。
如果数据要显示在电脑显示器上,分2种情况,一种你就是单片机做采集,然后通过串行接口传输到电脑主机,主机采用vb或者vc编程,然后把串口传输过来的数据采集并显示。
第二种,就是你在单片机的板子上弄个显示驱动电路。然后把要显示的东西和做显卡一样,通过电路直接传输给显示器。这种情况你也可以把所谓的显示器,采用LCD屏显示,买大点的屏,利用单片机驱动。或者用LED的屏,利用点阵显示原理。这样的话,最容易。
希望对你有用。
USART_DMACmd(USART2,USART_DMAReq_Tx,ENABLE); //使能串口2的DMA发送
/*等待DMA传输完成,实际应用中,传输数据期间,可以执行另外的任务 */
while(1)
{
if(DMA_GetFlagStatus(DMA1_FLAG_TC7)!=RESET) //判断通道7传输完成
{
SZ_STM32_LED1Toggle();
SZ_STM32_LED2Toggle();
DMA_ClearFlag(DMA1_FLAG_TC7);//清除通道7传输完成标志
}
看不到你写的程序 给你个DMA中断提示
本文标签:stm32DMA数据实时更新