打印
[STM8]

串口中断的问题

[复制链接]
963|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 | 只看该作者
中断的话,只有接收也还好吧;

使用特权

评论回复
5
Cjy_JDxy|  楼主 | 2018-1-31 10:27 | 只看该作者
按道理,发送AT,应该收到AT OK,可是只有A

使用特权

评论回复
6
fengfeng的恒| | 2018-1-31 15:15 | 只看该作者
Cjy_JDxy 发表于 2018-1-31 09:48
初始化:  UART1_DeInit();
    //波特率,字节数,1个停止位,无奇偶效验位,   非同步模式,        允 ...

没听懂,谁发送了AT给谁?然后STM8的串口中断收到好多'A'?
你可以仿真接受一段数据看看,不用在中断里打断点。中断里打断点的话,你收到'A'的时候,进入中断,程序停止运行了,但是SIM800还是继续给你发数据,然后你就收不到后面数据了。

使用特权

评论回复
7
Cjy_JDxy|  楼主 | 2018-1-31 15:17 | 只看该作者
fengfeng的恒 发表于 2018-1-31 15:15
没听懂,谁发送了AT给谁?然后STM8的串口中断收到好多'A'?
你可以仿真接受一段数据看看,不用在中断里打 ...

单片机发AT指令给GPRS模块

使用特权

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

本版积分规则

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

553

主题

3530

帖子

19

粉丝