打印
[N32G03x]

LPUART串口会连续发送两次数据

[复制链接]
602|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
fzy_666|  楼主 | 2022-12-14 07:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void LPUART_DMA_Configuration(void)
{
    RCC_EnableAHBPeriphClk(RCC_AHB_PERIPH_DMA, ENABLE);                                                                                                        /* DMA 外设DMA时钟使能 */

/*=========== LPUARTy TX DMA信道(由LPUARTy TX事件触发)配置 ===========*/
                DMA_DeInit(LPUARTy_Tx_DMA_Channel);                                                                                                                                                                        /* DMA 采用DMA的通道1,外设地址 */
                LPUART_DMA_InitStructure.PeriphAddr                                = LPUARTy_DAT_Base;                                                                /* DMA LPUART外设数据寄存器基地址 */
                LPUART_DMA_InitStructure.MemAddr                                        = (uint32_t)TxBuffer1;                                                /* DMA 内存源地基地址 */
                LPUART_DMA_InitStructure.Direction                                = DMA_DIR_PERIPH_DST;                                                        /* DMA 传送方向:从内存源地基地址到LPUART外设基地址 */
                LPUART_DMA_InitStructure.BufSize                                        = TxBufferSize1;                                                                        /* DMA 缓冲区大小:countof(TxBuffer1) */
                LPUART_DMA_InitStructure.PeriphInc                                = DMA_PERIPH_INC_DISABLE;                                        /* DMA LPUART外设基地址自增量禁能 */
                LPUART_DMA_InitStructure.DMA_MemoryInc                = DMA_MEM_INC_ENABLE;                                                        /* DMA 内存目的地基地址自增量使能 */
                LPUART_DMA_InitStructure.PeriphDataSize                = DMA_PERIPH_DATA_SIZE_BYTE;                        /* DMA LPUART外设数据宽度:字节(8bit) */
                LPUART_DMA_InitStructure.MemDataSize                        = DMA_MemoryDataSize_Byte;                                /* DMA 内存目的地数据宽度:字节(8bit) */
                LPUART_DMA_InitStructure.CircularMode                        = DMA_MODE_NORMAL;                                                                /* DMA 模式:工作在正常缓存模式 */
                LPUART_DMA_InitStructure.Priority                                        = DMA_PRIORITY_VERY_HIGH;                                        /* DMA 优先级:拥有非常高优先级 */
                LPUART_DMA_InitStructure.Mem2Mem                                        = DMA_M2M_DISABLE;                                                                /* DMA 内存到内存:禁能 */
                DMA_Init(LPUARTy_Tx_DMA_Channel, &LPUART_DMA_InitStructure);                                                                /* DMA 配置进行封装 */
                DMA_RequestRemap(LPUARTy_Tx_DMA_REMAP, DMA, LPUARTy_Tx_DMA_Channel, ENABLE);/* DMA 使能DMA和DMA通道1 */
                DMA_ConfigInt(LPUARTy_Tx_DMA_Channel, DMA_INT_TXC, ENABLE);                                                            /* 启用LPUARTy Tx DMA通道传输完成中断 */
}
void SendAnsw(void)
{
                DMA_ClearFlag(LPUARTy_Tx_DMA_FLAG,DMA);                                                                                                                                        /* 清除DMA中断标志 */
                DMA_EnableChannel(LPUARTy_Tx_DMA_Channel,DISABLE);                                                                                        /* DMA_TX通道禁能 */
                DMA_SetCurrDataCounter(LPUARTy_Tx_DMA_Channel,TxBufferSize1);                                                /* 重置DMA_TX发送数据量 */
                DMA_EnableChannel(LPUARTy_Tx_DMA_Channel,ENABLE);                                                                                                /* DMA_TX通道使能 */
}

碰到的问题是,DMA会发送两次数据,请求帮助,谢谢!

使用特权

评论回复
沙发
sy12138| | 2022-12-14 13:51 | 只看该作者
怎么看到传输两次数据的?

使用特权

评论回复
板凳
fzy_666|  楼主 | 2022-12-15 07:47 | 只看该作者
是一次,已经找到,在蓝牙端的问题,谢谢!

使用特权

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

本版积分规则

37

主题

327

帖子

4

粉丝