串口问题

R_SCI1_Serial_Send()函数执行后,如何等待串口发送完成再执行下面的代码。

  • 不用等待,这个函数是给你设置了发送的指针与发送字节数并启动发送的硬件模块,硬件模块会自动发送,每次发送完会产生发送中断,当全部要求的字数节发送完成后,会产生发送完成中断,这时你可以在callback函数中进行一些逻辑处理。
  • In reply to mike_bian:

    但我需要等待发送完成再执行下面的代码,要不然会导致数据丢失,而且我似乎没有进入发送完成中断
    发送代码
    R_SCI1_Serial_Send(a,1);
    while(end != 1);
    end = 0;

    static void r_sci1_callback_transmitend(void)
    {
    /* Start user code. Do not edit comment generated here */
    end = 1;
    /* End user code. Do not edit comment generated here */
    }
  • In reply to cainiao:

    怎么会导致数据丢失呢?你先测试一下数据能否发出去。
  • In reply to mike_bian:

    数据会发的出去,但如果不等待的话,我代码中可能还没等它发完又发了,导致缓冲区溢出,数据量比较大。所以我一定要等它发完再发下一个
  • In reply to cainiao:

    明白你的意思了,就是要连续发吧。那你可以在callback函数启动下一次发送呀,这不就连续起来了吗?等待的方法感觉不是特别好,哈哈。
  • In reply to mike_bian:

    但现在问题时,发现不能进入完成发送的中断函数
    R_SCI1_Serial_Send(a,1);
    while(end != 1);
    end = 0;

    static void r_sci1_callback_transmitend(void)
    {
    /* Start user code. Do not edit comment generated here */
    end = 1;
    /* End user code. Do not edit comment generated here */
    }

    执行时,程序卡死在while(end != 1);
  • In reply to cainiao:

    先确认有没有波形发出,也就是串口有没有正常启动。
  • In reply to mike_bian:

    恩,多谢了,已经解决了
  • In reply to cainiao:

    同学你好,请问你是怎么解决的
  • In reply to kaokaola:

    串口不发送数据,基本上两个问题点遇到的最多,1.没进入到硬件仿真。2.没调用start函数。
  • In reply to se7en:

    串口发送的数据不对是什么原因??求助!!1
  • In reply to lemon:

    数据不对,要检查波特率的设置,另外要检查系统的时钟,是否正常