#include "s3c2440_soc.h"
/* 115200,8n1 */
void uart0_init()
{
/* 设置引脚用于串口 */
/* GPH2,3用于TxD0, RxD0 */
GPHCON &= ~((3<<4) | (3<<6));
GPHCON |= ((2<<4) | (2<<6));
GPHUP &= ~((1<<2) | (1<<3)); /* 使能内部上拉 因为传输协议要 拉高拉高拉高 拉高拉高拉高 拉高拉高拉高 拉高拉高拉高 拉高拉高拉高 拉高拉高拉高*/
/* 设置波特率 */
/* UBRDIVn = (int)( UART clock / ( buad rate x 16) ) –1
* UART clock = 50M
* UBRDIVn = (int)( 50000000 / ( 115200 x 16) ) –1 = 26
*/
UCON0 = 0x00000005; /* PCLK,中断/查询模式 */
UBRDIV0 = 26;
/* 设置数据格式 */
ULCON0 = 0x00000003; /* 8n1: 8个数据位, 无较验位, 1个停止位 */
/* */
}
int putchar(int c)
{
/* UTRSTAT0 */
/* UTXH0 发送的时候把数据写到这里面去*/
while (!(UTRSTAT0 & (1<<2)));// UTRSTAT0 表示移位寄存器数据是否发送出去
UTXH0 = (unsigned char)c;
}
int getchar(void)//URXH0 接受的数据在这里
{
while (!(UTRSTAT0 & (1<<0)));
return URXH0;
}
int puts(const char *s)//发送字符串
{
while (*s)
{
putchar(*s);
s++;
}
}
因为串口协议 所以内部电阻要拉高
最新推荐文章于 2024-06-16 17:26:51 发布