历史上的今天
今天是:2025年06月04日(星期三)
2018年06月04日 | S3C2440之UART驱动代码模板(RealView MDK)
2018-06-04 来源:eefocus
好记心不如烂笔头,为方便以后查看代码及代码重复利用,这里贴出S3C2440 UART驱动代码。使用友善MINI2440开发板,开发环境为RealView MDK 4.22。需要注意的是,本代码中,对GPIO的初始化放在了s3c2440.s中完成,采用keil自带的html方式进行配置。
该源码结构简单明了,原始工程下载地址:点击打开链接
UART控制器初始化:
void Uart_Init(void)
{
#define rULCON0 (*(volatile unsigned int*)0x50000000)
#define rUCON0 (*(volatile unsigned int*)0x50000004)
#define rUBRDIV0 (*(volatile unsigned int*)0x50000028)
#define PCLK 50000000
#define BUADRATE 115200
rULCON0 = 0x03; //No parity, One stop bit, 8-bits data
rUCON0 = 0x05; //Tx Enable, Rx Enable, PCLK as source clock
rUBRDIV0 = (int)(PCLK / (BUADRATE * 16)) - 1; //115200bps
}
字符发送函数:
void Uart_Putc(unsigned char c)
{
#define rUTRSTAT0 (*(volatile unsigned int*)0x50000010)
#define rUTXH0 (*(volatile unsigned int*)0x50000020)
#define BUFFER_EMPTY (1 << 1)
while(!(rUTRSTAT0 & BUFFER_EMPTY));
rUTXH0 = c;
}
字符接收函数:
unsigned char Uart_Getc(void)
{
#define rUTRSTAT0 (*(volatile unsigned int*)0x50000010)
#define rURXH0 (*(volatile unsigned int*)0x50000024)
#define BUFFER_READY (1 << 0)
while(!(rUTRSTAT0 & BUFFER_READY));
return rURXH0;
}
为了使用printf库函数,需要进行如下重映射:
struct __FILE
{
int handle;
/* Whatever you require here. If the only file you are using is */
/* standard output using printf() for debugging, no file handling */
/* is required. */
};
/* FILE is typedef'd in stdio.h. */
FILE __stdout;
int fputc(int ch, FILE *f)
{
Uart_Putc(ch);
return ch;
}
int ferror(FILE *f) {
/* Your implementation of ferror */
return EOF;
}
测试代码:
int main(void)
{
unsigned char ch;
//clock_init();
Uart_Init();
printf("%s, %d", __FILE__, __LINE__);
while(1)
{
ch = Uart_Getc();
Uart_Putc(ch);
}
}
史海拾趣
|
本帖最后由 jameswangsynnex 于 2015-3-3 19:58 编辑 可用性排名:5 Intel的90nm MLC NOR闪存可达1Gb存储密度 编辑推荐:Intel公司推出的第五代StrataFlash多级单元(MLC)闪存产品M18是首个实现量产的1.8V、90nm NOR器件。M18主 ...… 查看全部问答> |
|
STC 半导体 宏晶科技 8051单片机第一品牌 中国本土 MCU 领航者 宏晶科技生产的STC89C51系列单片机的优点: 超强抗干扰,轻松过 4KV 快速脉冲干扰(EFT) 高抗静电(ESD),6KV静电可直接打在芯片管脚上 客户的整机抗静电测试,8 ...… 查看全部问答> |
|
哎,买了个太阳能小夜灯,被骗了。想自己改进一下,请假一下电路如何改进 买了个太阳能小夜灯,说白天太阳底下充电一个白天,能亮一个晚上。可它是当快没电了的时候,一闪一闪的。正常亮也就亮两个小时,然后就是一闪一闪的亮。晚上一闪一闪的晃的睡不着。 我想改进一下,当它快没电的时候不让它亮了。 请问有 ...… 查看全部问答> |
|
0) 液晶\\Debug\\Exe\\测试.d43 1) 串口通信(发送一个字节)\\Backup of 串口通信(发送一个字节).ewp 2) 输出MCLK时钟信号\\Debug\\Exe\\test.d43 3) 看门狗定时器\\Debug\\Exe\\test.d43 4) 定时器设置定时时间\\Debug\\Exe\\tes ...… 查看全部问答> |
|
调试时弹出提示:·····flash···address 0000 ····protect ···记不清了那2行英文,基本上排除硬件上的问题,用Silicon C8051F编程器查看flash前几K擦除不掉,从来没弄过代码保护,调试调试着就出现这个问题了,有什么解决方法么。不 ...… 查看全部问答> |




