这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 企业专区 » Renesas » 串口通信

共1条 1/1 1 跳转至

串口通信

助工
2012-09-15 03:05:40     打赏

异步串行通信,收发波特率都设置为9600














关键代码:
主程序中在循环中不停地发送数据
void main(void)
{
    /* Start user code. Do not edit comment generated here */
  
    char str[6],a[50];
    R_UART0_Start();
  
    R_UART0_Send("abcdn",5);
  
    while (1U)
    {
       R_UART0_Send("----never give up----\r\n",24);
       delay(5000);
     ;
    }
    /* End user code. Do not edit comment generated here */
}

在r_cg_serial_user.c中,特别注意中断函数里回调函数
__interrupt static void r_uart0_interrupt_send(void)
{
    if (g_uart0_tx_count > 0U)
    {
        TXD0 = *gp_uart0_tx_address;
        gp_uart0_tx_address++;
        g_uart0_tx_count--;
    }
    else
    {
        SMR00 &= ~_0001_SAU_BUFFER_EMPTY;

        if ((SSR00 & _0040_SAU_UNDER_EXECUTE) == 0U)
        {
            r_uart0_callback_sendend();
        }
    }
}

回调函数
static void r_uart0_callback_sendend(void)
{
    /* Start user code. Do not edit comment generated here */
  
    R_UART0_Send(gp_uart0_tx_address, g_uart0_tx_count);
    /* End user code. Do not edit comment generated here */
}





顺便说下个人困惑,纠结于瑞萨的单片机异步串口通信好些日子,遗憾的是至今仍然没有醍醐灌顶的感觉,不理解自动生成代码里的TXD0,不是一个输出引脚吗,怎么向下面这么用 TXD0=*gp_uart0_tx_address;还有连续连行代码输出时
 R_UART0_Send("abcdn",5);
R_UART0_Send("----never give up----\r\n",24);第一行在串口上老是没有显示,期望高人指点




关键词: 串口     通信     uart0    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]