打印
[ARM入门]

STM32F407 DMA求助

[复制链接]
1664|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
aoty|  楼主 | 2014-5-6 19:32 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
思路:我写的是利用DMA将内存的数据送到串口3上,在中断里写清除的标志位!
现象:在所有的数据都搬运完毕后,才打印剩余量!
代码:
***********************************************************************************************************
int main(void)
{
int pro=0;
int i=0;
BSP_Init();
delay_init();
for(i=0;i<8000;i++)
Buffer=i;
USART_OUT(USART3,"****  F407_USART_DMA  ****\r\n");              //向串口1发送开机字符
USART_DMACmd(USART3, USART_DMAReq_Tx, ENABLE);/*使能 USART3的发送数据DMA请求 至此USART3与DMA开始工作*/
GPIO_SetBits(GPIOB,GPIO_Pin_11);
while(1)
{
/*因为 DMA 工作是独立于 CPU 之外的,所以在 DMA 工作的同时 CPU 可以做其他事
我们等到 DMA 传输完毕后产生一个状态指示,即点亮一个 LED */
delay_ms(1000);
pro=DMA_GetCurrDataCounter(DMA1_Stream3);
USART_OUT(USART3, "剩余传送量=%d\r\n",pro);

/*DMA 传输完毕后会自动关闭通道,数据就打印不出来了!   
而且还得开启DMA的接收完成中断服务函数*/
}
}
***********************************************************************************************************
void DMA1_Stream3_IRQHandler(void)
{
if (DMA_GetITStatus(DMA1_Stream3, DMA_IT_TCIF3) != RESET)  //判断传输完成后,标志位置1
{
DMA_ClearITPendingBit(DMA1_Stream3, DMA_IT_TCIF3);//清除通道3传输完成标志
DMA_Cmd(DMA1_Stream3, DISABLE);  
GPIO_ResetBits(GPIOB,GPIO_Pin_11);
USART_OUT(USART3,"\r\n        ****DMA传输完毕_中断*******        \r\n");
}
}
***********************************************************************************************************




相关帖子

沙发
aoty|  楼主 | 2014-5-6 20:25 | 只看该作者
顶!

使用特权

评论回复
板凳
aoty|  楼主 | 2014-5-7 10:04 | 只看该作者
没人看看么?

使用特权

评论回复
地板
jplzl| | 2014-5-7 13:14 | 只看该作者
你在求助什么问题?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:很高兴注册21IC

31

主题

207

帖子

1

粉丝