Uart串口


title: Uart串口

tags: ARM

date: 2018-10-20 16:38:28

Uart串口

和单片机的应用没什么区别,首先设置IO复用,设置波特率和数据位,以及中断相关的,简单的应用测试可以先关掉中断.从下图看到,usb转串口连接到COM1COM1是内部的Uart0

Uart串口

Uart串口

程序初始化

UART0
RX0 GPH3
TX0 GPH2
//init uart
void Uart0_init()
{
//配置GPIO 复用为uart
//配置相应的 GPHCON 为10 串口
// 也就是 _BIT5,BIT7 置1 BIT4,BIT6清零
GPHCON &=~(_BIT4|_BIT5|_BIT6|_BIT7);
GPHCON |=(_BIT5|_BIT7); //设置上拉
GPHUP &=~(_BIT2|_BIT3); //禁止红外,8N1
ULCON0=(_BIT0|_BIT1); // PCLK(50M),中断/查询模式打开
// FCLK : HCLK : PCLK = 400m : 100m : 50m
UCON0 = (0x01)|(0x01<<2);
UBRDIV0=26;//CLK/(baund*16)-1 //UFCON0 FIFO 不使用
//UMCON0 不使用流控
//UTRSTAT0 中断标志位
//UERSTAT0 错误标志
//UFSTAT0 FIFO标志
//UMSTAT0 模式配置,CTS
//UTXH0、URXH0 BUF //这里要清除标志位,不然好像有点问题
UTRSTAT0=0x06;
} int putchar(int c)
{
while(!(UTRSTAT0&_BIT2));
// UTXH0 被定义为uint,这里应该是char类型的地址0x50000023(B)
UTXH0 = (unsigned char )c;
}
int getchar(void)
{
while(!(UTRSTAT0&_BIT0));
return URXH0;
} int puts(const char *s)
{
while(*s)
{
putchar(*s);
s++;
}
}
上一篇:The connection to adb is down, and a severe error has occured(Android模拟器端口被占用)


下一篇:洗牌算法Fisher_Yates原理