基于fs4412单板的串口裸板程序编写

首先根据原理图查看串口连接,如下:

根据BUF_XuTXD2/BUF_XuRXD2查看连接主芯片的位置,如下:

查找数据手册将GPA1_0/GPA1_1两个引脚配置为uart功能,如下图所示:

然后通过数据手册中uart章所描述公式,

根据公式描述,其中

SCLK为100M

UBRp2 = 100M/115200/16 -1 = 53

UFRACVAL2 = 0.25 * 16 = 4

配置以下寄存器值,进行串口的初始化。

void InitUart()

{

//set gpio1_0 is uart rx, gpio1_1 tx

GPA1CON = GPA1CON &~ (0xFF) | (0x22);

// normal mode | no parity | one stop bit | 8bits

ULCON2 = ULCON2 | (0 << 6) | (0 << 3) | (0 << 2)| 0x3;

// [3:2] transmit mode is poll(01) [1:0] receive mode is poll(01)

UCON2 = UCON2 &~ (0xF) | ( 0x5 );

/*

100M / 115200 / 16 - 1 = 53.25

set UBRp2 53

set UFRACVAL2 0.25 * 16

*/

UBRp2 = 53;

UFRACVAL2 = 4;

}

接收与发送需根据寄存器进行判断

判断接收与发送的代码如下:

char RecvFromUart()

{

while( !(UTRSTAT2 & 0x1) )

{

;

}

return URXH2;

}

void SendToUart(char c)

{

while( !(UTRSTAT2 & (0x1 << 1)) )

{

;

}

UTXH2 = c;

}

嵌入式物联网需要学的东西真的非常多,千万不要学错了路线和内容,导致工资要不上去!

分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!(点击找小助理领取)


版权声明:本文为m0_70888041原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。