S3C2451_uart_ARM串口操作

本文介绍了如何进行S3C2451微处理器的UART多接口初始化,包括设置串口号、波特率、比特位宽度和停止位。还提供了自动配置波特率以及串口的发送、接收、中断处理等功能的实现代码。欢迎指正讨论。
摘要由CSDN通过智能技术生成

这里给大家看一下我写的S3C2451的UART多接口初始化程序

只要输入想要配置的串口号,波特率,比特位宽度以及停止位,自动配置串口波特率
以及发送接受字符、发送字符串、串口中断等函数
如果有什么不对的地方希望赐教!


/*UART*/
#define     ULCON0      (*(volatile unsigned long *)0x50000000)
#define     ULCON1      (*(volatile unsigned long *)0x50004000)
#define     ULCON2      (*(volatile unsigned long *)0x50008000)
#define     ULCON3      (*(volatile unsigned long *)0x5000c000) 

#define     UCON0       (*(volatile unsigned long *)0x50000004)
#define     UCON1       (*(volatile unsigned long *)0x50004004)
#define     UCON2       (*(volatile unsigned long *)0x50008004)
#define     UCON3       (*(volatile unsigned long *)0x5000c004)

#define     UFCON0      (*(volatile unsigned long *)0x50000008)
#define     UFCON1      (*(volatile unsigned long *)0x50004008)
#define     UFCON2      (*(volatile unsigned long *)0x50008008)
#define     UFCON3      (*(volatile unsigned long *)0x5000c008)

#define     UMCON0      (*(volatile unsigned long *)0x5000000c)
#define     UMCON1      (*(volatile unsigned long *)0x5000400c)
#define     UMCON2      (*(volatile unsigned long *)0x5000800c)

#define     UTRSTAT0    (*(volatile unsigned long *)0x50000010)
#define     UTRSTAT1    (*(volatile unsigned long *)0x50004010)
#define     UTRSTAT2    (*(volatile unsigned long *)0x50008010)
#define     UTRSTAT3    (*(volatile unsigned long *)0x5000c010)

#define     UERSTAT0    (*(volatile unsigned long *)0x50000014)
#define     UERSTAT1    (*(volatile unsigned long *)0x50004014)
#define     UERSTAT2    (*(volatile unsigned long *)0x50008014)
#define     UERSTAT3    (*(volatile unsigned long *)0x5000c014)

#define     UFSTAT0     (*(volatile unsigned long *)0x50000018)
#define     UFSTAT1     (*(volatile unsigned long *)0x50004018)
#define     UFSTAT2     (*(volatile unsigned long *)0x50008018)
#define     UFSTAT3     (*(volatile unsigned long *)0x5000c018)

#define     UMSTAT0     (*(volatile unsigned long *)0x5000001c)
#define     UMSTAT1     (*(volatile unsigned long *)0x5000401c)
#define     UMSTAT2     (*(volatile unsigned long *)0x5000801c)

#define     UTXH0       (*(volatile unsigned long *)0x50000020)
#define     UTXH1       (*(volatile unsigned long *)0x50004020)
#define     UTXH2       (*(volatile unsigned long *)0x50008020)
#define     UTXH3       (*(volatile unsigned long *)0x5000c020)

#define     URXH0       (*(volatile unsigned long *)0x50000024)
#define     URXH1       (*(volatile unsigned long *)0x50004024)
#define     URXH2       (*(volatile unsigned long *)0x50008024)
#define     URXH3       (*(volatile unsigned long *)0x5000c024)

#define     UBRDIV0     (*(volatile unsigned long *)0x50000028)
#define     UBRDIV1     (*(volatile unsigned long *)0x50004028)
#define     UBRDIV2     (*(volatile unsigned long *)0x50008028)
#define     UBRDIV3     (*(volatile unsigned long *)0x5000c028)

#define     UDIVSLOT0   (*(volatile unsigned long *)0x5000002c)
#define     UDIVSLOT1   (*(volatile unsigned long *)0x5000402c)
#define     UDIVSLOT2   (*(volatile unsigned long *)0x5000802c)
#define     UDIVSLOT3   (*(volatile unsigned long *)0x5000c02c)
/* 枚举串口号 */
typedef enum
{
    UART0 = 0,
    UART1,
    UART2,
    UART3

}UART_TyPeDef;

/* 枚举比特位宽 */
typedef enum
{
    DATA_WIDTH_5BIT = 0,
    DATA_WIDTH_6BIT,
    DATA_WIDTH_7BIT,
    DATA_WIDTH_8BIT
}DATA_WTDTH_TyPeDef;

/* 枚举停止位 */
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zxnsirius

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值