OpenEdv-开源电子网

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

stm32f4 串口(485) 发送完转接收会进入一次串口接收中断时什么原因

[复制链接]

1

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2016-8-22
在线时间
13 小时
发表于 2016-8-22 10:12:28 | 显示全部楼层 |阅读模式
void USART_SendProcess(u8 uartNum)
{
  if(txDataCount[uartNum]<txDataLength[uartNum])
  {
    USART_SendData(uartX[uartNum],uartTxbuffer[uartNum][txDataCount[uartNum]]);
    txDataCount[uartNum]++;
  }
  else
  {
     USART_ITConfig(uartX[uartNum], USART_IT_TXE, DISABLE);
                        if(uartNum==RS485I)
                        {
                                EN485I(0);       
                        }else if(uartNum==RS485II)
                        {
                                EN485II(0);
                        }
     USART_ITConfig(uartX[uartNum], USART_IT_RXNE, ENABLE);//开启接收中断
  }

}

void USART2_IRQHandler(void)                        //串口2中断服务程序
{
        OSIntEnter();   
        if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET)  
        {
                USART_ReceiveProcess(1);
  }
  if(USART_GetITStatus(USART2, USART_IT_TXE) != RESET)
  {
      USART_SendProcess(1);
  }
  if (USART_GetFlagStatus(USART2,USART_FLAG_ORE)==SET)
  {
      USART_ClearFlag(USART2,USART_FLAG_ORE);    //读SR
      USART_ReceiveData(USART2);                 //读DR
  }
        OSIntExit();                                                                                           
}

发送完成后一开启接收中断 程序就会进入一次接收中断函数 导致第一个数据是0 怎么解决。希望大神指正。


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

使用道具 举报

58

主题

6293

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11476
金钱
11476
注册时间
2014-4-1
在线时间
1297 小时
发表于 2016-8-22 11:17:18 | 显示全部楼层

先把发送关掉,
查查接收是什么情况。

回复 支持 反对

使用道具 举报

22

主题

751

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1605
金钱
1605
注册时间
2015-6-10
在线时间
222 小时
发表于 2016-8-22 11:36:28 | 显示全部楼层
你接收中断为什么要关闭啊
回复 支持 反对

使用道具 举报

0

主题

34

帖子

0

精华

高级会员

Rank: 4

积分
968
金钱
968
注册时间
2016-7-18
在线时间
109 小时
发表于 2016-8-22 11:40:50 | 显示全部楼层
开启接收中断前清除接收中断标志
回复 支持 反对

使用道具 举报

1

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2016-8-22
在线时间
13 小时
 楼主| 发表于 2016-8-22 18:35:17 | 显示全部楼层
关闭前清中断了没用,不关闭接收中断到没试过,不过就是不清楚为啥发送转接收时候 开接收中断会触发一次中断接收,而初始化完成后开启接收中断不会触发。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-28 04:16

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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