OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2632|回复: 2

关于串口DMA发送数据后,检查是否传输完成函数

[复制链接]

9

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
73
金钱
73
注册时间
2017-2-6
在线时间
16 小时
发表于 2018-7-5 11:55:36 | 显示全部楼层 |阅读模式
1金钱
[mw_shl_code=applescript,true]//串口屏底层关联函数

void SendChar(uint8 t)
{/*
        while((USART2->SR&0X40)==0);
          USART2->DR = t; */
          while(HAL_UART_GetState(&UART2_Handler) == HAL_UART_STATE_RESET);
          HAL_UART_Transmit_DMA(&UART2_Handler,(uint8_t*)&t, 1);
}[/mw_shl_code]
我想每次发送前检查一下是否发送完成?可是这个函数不对?请问谁用过吗

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

6

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
146
金钱
146
注册时间
2017-11-14
在线时间
44 小时
发表于 2019-1-21 13:48:40 | 显示全部楼层
可以做一个标记,发送时把标记置位,然后启用dma发送完成中断,中断里清除标记即可
回复

使用道具 举报

28

主题

150

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
488
金钱
488
注册时间
2016-9-29
在线时间
113 小时
发表于 2019-1-24 11:35:12 | 显示全部楼层
用中断方式的话就想二楼说的一样,
不用中断方式的话,假设是使用F103的串口2 DMA1通道7,我想到的代码如下:

if (DMA1->ISR & DMA1_IT_TC7)          //检查上一次的DMA1通道7是否有发送完成
{//DMA1通道7已经发送完成

    DMA1->IFCR |= DMA1_FLAG_TC7;   //清除发送完成标志位
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-23 07:42

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表