金牌会员
 
- 积分
- 2008
- 金钱
- 2008
- 注册时间
- 2014-7-1
- 在线时间
- 189 小时
|
1金钱
遇到个奇怪问题,
串口3使用dma每秒输出一串内容,输出正常。
不用dma,独立使用串口3输出一串内容也正常。
想实现dma输出结束后,在独立输出一串内容。
dma输出正常,独立输出一串只有第一次有效(但缺了第一个字符),第二次及之后无输出。
在线仿真设置断点后,第二次又有输出了。dma结束后加入100毫秒延时,输出也正常。
是什么原因哪?
- //如果每秒的心跳包发送完成
- if(GetDMAState()==1){
- USART3->CR3 &=~(1<<7);
- //delay_ms(100);
- //发送询问指令,是否采用本次数据
- show_ConfirmResultReply();
- USART3->CR3=1<<7;
- }
复制代码- //得到DMA发送状态
- u8 GetDMAState(void)
- {
- if((DMA1->ISR&DMA_ISR_TCIF2)==DMA_ISR_TCIF2)//发送完成
- {
- DMA1->IFCR=DMA1->IFCR|DMA_IFCR_CGIF2;
- return 1;
- }
- else
- {
-
- }
- return 0;
- }
复制代码
|
|