关于stm32串口使用DMA接收数据的问题
我的程序目的,是在每次用PC机通过串口调试助手向STM32串口发送数据时,STM32自动将数据通过DMA接收,并保存至指定数组中。而在此期间STM32可以执行别的任务,不...
我的程序目的,是在每次用PC机通过串口调试助手向STM32串口发送数据时,STM32自动将数据通过DMA接收,并保存至指定数组中。而在此期间STM32可以执行别的任务,不用顾及串口接收。然后当我需要用到串口接收数据时,即可直接从指定的数组中调用。
具体程序内容如下:对DMA和USART1进行相关配置和使能(保证正确),后就进入while(1)。另设置了一个周期1秒的TIM定时器,在定时器中断中读取DMA保存数据的数组,并用串口将其打印出来。
程序现象如下:串口每个1秒打印一次数组数据,但都是初始数据。当我使用调试助手向STM32发送数据,串口打印的数组数据也无任何变化。故我推断DMA未能正常工作。
请问,当我向STM32的串口发送数据时,难道不能像触发串口接收中断一样直接触发DMA接收数据吗? 展开
具体程序内容如下:对DMA和USART1进行相关配置和使能(保证正确),后就进入while(1)。另设置了一个周期1秒的TIM定时器,在定时器中断中读取DMA保存数据的数组,并用串口将其打印出来。
程序现象如下:串口每个1秒打印一次数组数据,但都是初始数据。当我使用调试助手向STM32发送数据,串口打印的数组数据也无任何变化。故我推断DMA未能正常工作。
请问,当我向STM32的串口发送数据时,难道不能像触发串口接收中断一样直接触发DMA接收数据吗? 展开
1个回答
2015-10-30 · 知道合伙人数码行家
关注
展开全部
USART_DMACmd(USART2,USART_DMAReq_Tx,ENABLE); //使能串口2的DMA发送
/*等待DMA传输完成,实际应用中,传输数据期间,可以执行另外的任务 */
while(1)
{
if(DMA_GetFlagStatus(DMA1_FLAG_TC7)!=RESET) //判断通道7传输完成
{
SZ_STM32_LED1Toggle();
SZ_STM32_LED2Toggle();
DMA_ClearFlag(DMA1_FLAG_TC7);//清除通道7传输完成标志
}
看不到你写的程序 给你个DMA中断提示
/*等待DMA传输完成,实际应用中,传输数据期间,可以执行另外的任务 */
while(1)
{
if(DMA_GetFlagStatus(DMA1_FLAG_TC7)!=RESET) //判断通道7传输完成
{
SZ_STM32_LED1Toggle();
SZ_STM32_LED2Toggle();
DMA_ClearFlag(DMA1_FLAG_TC7);//清除通道7传输完成标志
}
看不到你写的程序 给你个DMA中断提示
迪凯特科技(北京)有限公司
2023-07-28 广告
2023-07-28 广告
要从电脑的一个串行口接收数据并将其从另一个串行口发送出去,你可以使用以下步骤:1. 确定你要使用的两个串行口。在大多数计算机上,串行口通常被称为COM1、COM2等。确保你了解每个串行口的名称或编号。2. 编写一个程序来读取来自一个串行口的...
点击进入详情页
本回答由迪凯特科技(北京)有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询