[STM8] 串口中断的问题

[复制链接]
1126|6
 楼主| Cjy_JDxy 发表于 2018-1-31 09:27 | 显示全部楼层 |阅读模式
INTERRUPT_HANDLER(UART1_RX_IRQHandler, 18)
{
    /* In order to detect unexpected events during development,
       it is recommended to set a breakpoint on the following instruction.
    */


    setUartReceivedFlag();

    Receive_Buffer[Receive_Cnt++] = UART1_ReceiveData8();                        //?áè?′??ú?óê?êy?Y
               
    if(Receive_Cnt >= 600) Receive_Cnt = 0;

    UART1_ClearITPendingBit(UART1_IT_RXNE);   
//?D???o3???ê?·?ò??ú               
               
   // ReceiveTime = 2;                                                                                                                                                                                                //éè??3?ê±±?á?£?ó???ò?êy?Y2?μ?3?1y20ms
}
我用STMS207C8T6写程序,以上是我的串口中断程序。
大家看看有什么问题吗?我总觉得这儿有问题。谢谢!

fengfeng的恒 发表于 2018-1-31 09:44 | 显示全部楼层
这样只看这个中断服务函数没什么问题,但是还有其他初始化,发送函数呢?中断里怎么用都可以,看你想怎么接收数据而已。
 楼主| Cjy_JDxy 发表于 2018-1-31 09:48 | 显示全部楼层
fengfeng的恒 发表于 2018-1-31 09:44
这样只看这个中断服务函数没什么问题,但是还有其他初始化,发送函数呢?中断里怎么用都可以,看你想怎么接 ...

初始化:  UART1_DeInit();
    //波特率,字节数,1个停止位,无奇偶效验位,   非同步模式,        允许接受和发送
    UART1_Init((u32)115200, UART1_WORDLENGTH_8D, UART1_STOPBITS_1,UART1_PARITY_NO , UART1_SYNCMODE_CLOCK_DISABLE , UART1_MODE_TXRX_ENABLE);
    UART1_ITConfig(UART1_IT_RXNE_OR,ENABLE );
    UART1_Cmd(ENABLE );


发送函数:
void UART1_sendchar(unsigned char c)
{
  UART1_SendData8(c);
  while(UART1_GetFlagStatus(UART1_FLAG_TXE)==RESET);
}
void Uart1_SendString(char *s)
{
  while(*s)
  {
    UART1_sendchar(*s++);
    //s++;
  }
}

SIM800C:
#define   AT                                                                 Uart1_SendString("AT\r")

我在搞SIM800C,仿真发现发送了AT指令,
串口中断里收到了好多'A'
mmuuss586 发表于 2018-1-31 09:51 | 显示全部楼层
中断的话,只有接收也还好吧;
 楼主| Cjy_JDxy 发表于 2018-1-31 10:27 | 显示全部楼层
按道理,发送AT,应该收到AT OK,可是只有A
fengfeng的恒 发表于 2018-1-31 15:15 | 显示全部楼层
Cjy_JDxy 发表于 2018-1-31 09:48
初始化:  UART1_DeInit();
    //波特率,字节数,1个停止位,无奇偶效验位,   非同步模式,        允 ...

没听懂,谁发送了AT给谁?然后STM8的串口中断收到好多'A'?
你可以仿真接受一段数据看看,不用在中断里打断点。中断里打断点的话,你收到'A'的时候,进入中断,程序停止运行了,但是SIM800还是继续给你发数据,然后你就收不到后面数据了。
 楼主| Cjy_JDxy 发表于 2018-1-31 15:17 | 显示全部楼层
fengfeng的恒 发表于 2018-1-31 15:15
没听懂,谁发送了AT给谁?然后STM8的串口中断收到好多'A'?
你可以仿真接受一段数据看看,不用在中断里打 ...

单片机发AT指令给GPRS模块
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:绿水本无忧因风皱面,青山原不老为雪白头。

553

主题

3530

帖子

20

粉丝
快速回复 在线客服 返回列表 返回顶部