现在用瑞萨M30870单片机 100引脚,采用UART3发送接收数据。我写了两个函数一个初始化串口程序,一个是发送函数。波特率采用19200 数据位:8 停止位:1 无奇偶校验。
void ut_Uart_init(void)
{
PRCR.PRC2 = 1;
PD9.PD9_2 = 1;
PRCR.PRC2 = 1;
PS3.PS3_2 = 1;
PSL3.PSL3_2 = 0;
PRCR.PRC2 = 1;
PD9.PD9_1 = 0;
PRCR.PRC2 = 1;
PS3.PS3_1 = 0;
S3RIC.all= 0x07;
S3TIC.all = 0x07;
U3BRG = 65;
U3MR.all = B00000101; //1 //数据位8停止位1无奇偶校验内部时钟
U3C0.all = B00010000; //1 //f1 CTS/RTS无效
U3C1.all = B00000100;//0x05; //1 //TXD RXD 使能
U3SMR.all = 0x00;
U3SMR2.all = 0x00;
U3SMR3.all = 0x00;
U3SMR4.all = 0x00;
S3RIC.all= 0x04;
S3TIC.all = 0x04;
}
发送函数为:
void ut_UART4_transmit( )
{
uchar i;
uchar d_transmit_cmd[15];
memcpy(d_transmit_cmd,"ABCDEFGHI",9);
for(i = 0;i < 9;i++){
U3TB = d_transmit_cmd[i];
U3C1_TE = 1;
while(U3C1_TI==0);
U3C1_TE = 0;
}
}
函数中的寄存器是我重新宏定义过的。
但是设备的串口与电脑串口相连没有接收到单片机发送的数据。发送函数在程序运行到某个动作时启动发送功能。请大家帮我看下函数那里写错了。谢谢了