OpenEdv-开源电子网

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

求助,关于串口接收中断

[复制链接]

20

主题

120

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
230
金钱
230
注册时间
2015-6-4
在线时间
5 小时
发表于 2015-10-11 20:10:46 | 显示全部楼层 |阅读模式
5金钱
想用串口接收一段数据,然后再发出来,使用串口1,试试了试前辈们的超时法,无奈太笨,没有弄出来,后来改用DMA,但还是不行,快奔溃了,以下是串口DMA配置代码,恳请大神们帮忙!谢谢!

void USART1_Configuration(void)
{
    USART_InitTypeDef  USART_InitStructure;
    DMA_InitTypeDef    DMA_InitStructure;
   
    USART_InitStructure.USART_BaudRate = 9600;
    USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
    USART_InitStructure.USART_Mode = USART_Mode_Rx|USART_Mode_Tx;
    USART_InitStructure.USART_Parity = USART_Parity_No;
    USART_InitStructure.USART_WordLength = USART_WordLength_8b;
    USART_InitStructure.USART_StopBits = USART_StopBits_1;

    USART_Init(USART1,&USART_InitStructure);
   
    RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1,ENABLE);
    DMA_DeInit(DMA1_Channel5);
    DMA_InitStructure.DMA_BufferSize=8;
    DMA_InitStructure.DMA_DIR=DMA_DIR_PeripheralDST;
    DMA_InitStructure.DMA_M2M=DMA_M2M_Disable;
    DMA_InitStructure.DMA_MemoryBaseAddr=(u32)&USART1_TX_BUF;
    DMA_InitStructure.DMA_MemoryDataSize=DMA_MemoryDataSize_HalfWord;
    DMA_InitStructure.DMA_MemoryInc=DMA_MemoryInc_Enable;
    DMA_InitStructure.DMA_Mode=DMA_Mode_Normal;
    DMA_InitStructure.DMA_PeripheralBaseAddr=USART1_Address;
    DMA_InitStructure.DMA_PeripheralDataSize=DMA_PeripheralDataSize_HalfWord;
    DMA_InitStructure.DMA_PeripheralInc=DMA_PeripheralInc_Disable;
    DMA_InitStructure.DMA_Priority=DMA_Priority_High;
    DMA_Init(DMA1_Channel5,&DMA_InitStructure);
   
    USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);
    USART_Cmd(USART1,ENABLE);
    USART_ClearFlag(USART1,USART_FLAG_TC); 
 
    USART_DMACmd(USART1,USART_DMAReq_Rx,ENABLE);
}

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

使用道具 举报

20

主题

120

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
230
金钱
230
注册时间
2015-6-4
在线时间
5 小时
 楼主| 发表于 2015-10-11 20:12:03 | 显示全部楼层
对了,还有
#define USART1_Address  (u32)0x40013800+0x04
主程序是while里面
  printf("%s\n",USART1_TX_BUF);
求助,各位大神
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-10-11 22:22:20 | 显示全部楼层
建议:先别搞DMA,直接实现简单的数据收发先.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

20

主题

120

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
230
金钱
230
注册时间
2015-6-4
在线时间
5 小时
 楼主| 发表于 2015-10-12 17:40:23 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
   if(USART_GetITStatus(USART1,USART_IT_RXNE)!=RESET)
 { 
  USART_SendData(USART1,USART_ReceiveData(USART1));
   while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET);
   
 }
这样可以实现用串口助手发送数据然后再发送到串口助手上,现在我想对接收到到的数据进行处理!不知道该怎么接收了!
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-10-12 23:08:59 | 显示全部楼层
回复【4楼】张晓斌:
---------------------------------
 存放到数据组里面啊
可以参考我们的串口例程.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

20

主题

120

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
230
金钱
230
注册时间
2015-6-4
在线时间
5 小时
 楼主| 发表于 2015-10-13 16:41:47 | 显示全部楼层
回复【5楼】正点原子:
---------------------------------
嗯嗯 好的,我再试试吧
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-18 23:27

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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