找回密码
 立即注册
查看: 926|回复: 2

串口DMA如何让当前已接受的数量清零。

[复制链接]
  • 打卡等级:偶尔看看III
  • 打卡总天数:47
  • 最近打卡:2025-04-30 20:21:43

9

主题

62

回帖

697

积分

高级会员

积分
697
发表于 2023-7-13 14:51:06 | 显示全部楼层 |阅读模式
串口DMA如何让当前已接受的数量清零。

void BMM_Config(void)
{
        P_SW2 = 0x80;
//发送配置   
        BMM_UR1T_CFG = 0x80;                //bit7 1:Enable Interrupt        BMM_UR1T_STA = 0x00;        BMM_UR1T_AMT = 0xff;                //设置传输总字节数:n+1        BMM_UR1T_TXA = BmmBuffer;        BMM_UR1T_CR = 0xc0;                        //bit7 1:使能 UART1_BMM, bit6 1:开始 UART1_BMM 自动发送

//接收配置

        BMM_UR1R_CFG = 0x80;                //bit7 1:Enable Interrupt                 BMM_UR1R_STA = 0x00;

        BMM_UR1R_AMT = 0x64;                //设置传输总字节数:n+1    这个地方配置100

        BMM_UR1R_RXA = BmmBuffer;        BMM_UR1R_CR = 0xa1;                        //bit7 1:使能 UART1_BMM, bit5 1:开始 UART1_BMM 自动接收, bit0 1:清除 FIFO
}
void main()
{
if((BmmBuffer[BMM_UR1R_DONE ]  == 0x10 ) &&(BmmBuffer[BMM_UR1R_DONE-1 ]  == 0x09))       
{
//这里我想在这里清理     BMM_UR1R_DONE 为 0

//BMM_UR1R_DONE = 0

//我发现 现在只有产生接收中断 BMM_UR1R_DONE 才会变为0
//我现在数据长度不定 有的一帧 8 ~ 20个字节
// 这个想法能够实现吗?
}
}
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:415
  • 最近打卡:2025-04-30 09:58:34
已绑定手机

39

主题

2006

回帖

6843

积分

论坛元老

积分
6843
发表于 2023-7-13 20:17:50 | 显示全部楼层
可以参考这个帖子的方法:
串口1使用DMA中断+软件超时接收不定长数据心得
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=2710
(出处: 国芯论坛-STC全球32位8051爱好者互助交流社区)
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:47
  • 最近打卡:2025-04-30 20:21:43

9

主题

62

回帖

697

积分

高级会员

积分
697
发表于 2023-7-17 22:25:57 | 显示全部楼层
乘风*** 发表于 2023-7-13 20:17
可以参考这个帖子的方法:
串口1使用DMA中断+软件超时接收不定长数据心得
https://www.stcaimcu.com/forum. ...

已经开始研究谢谢。
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 18:09 , Processed in 0.118002 second(s), 61 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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