s3c6410_uart初始化及读写
参考:
1)《USER'S MANUAL-S3C6410X》第31章 UART
2)u-boot uart初始化及读写:u-boot-x.x.x/board/samsumg/smdk6410/lowlevel_init.S
u-boot-x.x.x/cpu/s3c64xx/serial.c
3) 内核串口驱动:linux-x.x.x/driver/tty/serial/s3c6400.c samsung.c serial_core.c
#include "uart.h" #define GPACON (*((volatile unsigned long *)0x7f008000)) #define ULCON0 (*((volatile unsigned long *)0x7f005000))
#define UCON0 (*((volatile unsigned long *)0x7f005004))
#define UFCON0 (*((volatile unsigned long *)0x7f005008))
#define UMCON0 (*((volatile unsigned long *)0x7f00500c))
#define UTRSTAT0 (*((volatile unsigned long *)0x7f005010))
#define UERSTAT0 (*((volatile unsigned long *)0x7f005014))
#define UFSTAT0 (*((volatile unsigned long *)0x7f005018))
#define UMSTAT0 (*((volatile unsigned long *)0x7f00501c))
#define UTXH0 (*((volatile unsigned long *)0x7f005020))
#define URXH0 (*((volatile unsigned long *)0x7f005024))
#define UBRDIV0 (*((volatile unsigned long *)0x7f005028))
#define UDIVSLOT0 (*((volatile unsigned long *)0x7f00502c))
#define UINTP0 (*((volatile unsigned long *)0x7f005030))
#define UINTSP0 (*((volatile unsigned long *)0x7f005034))
#define UINTM0 (*((volatile unsigned long *)0x7f005038)) void uart0_init(void)
{
GPACON &= ~0xff;
GPACON |= 0X22; ULCON0 = 0x03; //data frame: 8n1
/*
clk: pclk
tx int type: level
rx int type: pulse
rx err int enable
tx/rx mode: interrupt or polling
*/
UCON0 = 0x245;
UFCON0 = 0x00; //disable fifo;
UMCON0 = 0X00; //disable auto flow control(AFC)
/*
DIV_VAL = UBRDIV + (num of 1's in UDIVSLOT)/16
DIV_VAL = (PCLK/(bps*16))-1 = (66000000/115200)-1=34.8
UBRDIV = 34;
num of 1's in UDIVSLOT = 13;
*/
UBRDIV0 = 0x22;
UDIVSLOT0 = 0x1fff;
} int uart0_getc(void)
{
while (!(UTRSTAT0 & 0x1));
return (URXH0 & 0xff);
} void uart0_putc(const char c)
{
while (!(UTRSTAT0 & 0x2));
UTXH0 = c;
if (c == '\n')
{
uart0_putc('\r');
}
} void uart0_puts(const char *s)
{
while (*s)
{
uart0_putc(*s++);
}
}
s3c6410_uart初始化及读写的更多相关文章
- SD/MMC卡初始化及读写流程
二.MMC/SD卡的模型和工作原理 PIN脚.SD卡总线.SD卡结构.SD卡寄存器.上电过程 SD卡寄存器: OCR:操作电压寄存器: 只读,32位 第31位: 表示卡上电的状态位 CID: 卡 ...
- 【雕爷学编程】Arduino动手做(52)---MicroSD卡读写模块
37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种 的.鉴于本人手头积累了一些传感器和模块,依照实践(动手试试)出真知的理念,以学习和交流为目的,这里准 ...
- Keil MDK STM32系列(九) 基于HAL和FatFs的FAT格式SD卡TF卡读写
Keil MDK STM32系列 Keil MDK STM32系列(一) 基于标准外设库SPL的STM32F103开发 Keil MDK STM32系列(二) 基于标准外设库SPL的STM32F401 ...
- string黑科技
1. string对象的定义和初始化以及读写 string s1; 默认构造函数,s1为空串string s2(s1); 将s2初始化为s1的一个副本string s3("valuee&qu ...
- STM32启动文件详细解析(V3.5.0) 以:startup_stm32f10x_hd.s为例
我用的是IAR,这个貌似是MDK的,不过很有用,大家可以看一下 ;* 文件名 : startup_stm32f10x_hd.s ;* 库版本 : V3.5.0 ;* 说明: 此文件为STM32F10x ...
- objective-c常用方法列表(总结)
第1章 Objective-C学习环境准备 1.1 Objective-C基础 1.1.1 Objective-C的发展历程 1.1.2 Objective-C语言的特点 1.1.3 技术架构 1.2 ...
- libevent源码分析:bufferevent
struct bufferevent定义在文件bufferevent_struct.h中. /** Shared implementation of a bufferevent. This type ...
- stm32f系列单片机startup_stm32fxxx.s文件说明(转)
* 文件名 : startup_stm32f10x_hd.s;* 库版本 : V3.5.0;* 说明: 此文件为STM32F10x高密度设 ...
- API分析——Jquery UI Dialog
1.阅读API文档的一般方法? 通常地, API由三部分构成:属性.方法.事件. 属性表示参数配置,作为一个组件的微调,或者功能的开启与关闭: 方法表示组件能够发生的动作,或者组件的状态监测: 事件表 ...
随机推荐
- setInterval()和setTimeout()的区别
一.setInterval()函数的语法结构: setInterval(code,interval) setInterval()函数可周期性执行一段代码,也就是说代码会被周期性不断的执行下去. 函数具 ...
- Python中在脚本中引用其他文件函数的方法
在导入文件的时候,Python只搜索当前脚本所在的目录,加载(entry-point)入口脚本运行目录和sys.path中包含的路径例如包的安装地址.所以如果要在当前脚本引用其他文件,除了将文件放在和 ...
- R如何检验类别变量(nominal variable)与其他变量之间的相关性
1.使用Pearson积差相关系性进行检验的话可以判断两个变量之间的相关性是否显著以及相关性的强度 显著性检验 (significant test) 连续变量 vs 类别变量 (continuous ...
- Codeforces 622F 「数学数论」「数学规律」
题意: 给定n和k,求 1 ≤ n ≤ 109, 0 ≤ k ≤ 106 思路: 题目中给的提示是对于给定的k我们可以求出一个最高次为k+1的关于n的通项公式. 根据拉格郎日插值法,我们可以通过k+2 ...
- HDU 4405 【概率dp】
题意: 飞行棋,从0出发要求到n或者大于n的步数的期望.每一步可以投一下筛子,前进相应的步数,筛子是常见的6面筛子. 但是有些地方可以从a飞到大于a的b,并且保证每个a只能对应一个b,而且可以连续飞, ...
- (转)一段如何調用Button.Click事件的故事
原文地址:http://helloouc.blog.163.com/blog/static/5530527120091050314590/ 一.前言 由于小朱与BillChung的启发,想写一个故事, ...
- oracle 内存结构 share pool sql解析的过程
1.sql解析的过程 oracle首先将SQL文本转化为ASCII字符,然后根据hash函数计算其对应的hash值(hash_value).根据计算出的hash值到library cache中找到对应 ...
- android项目中如何加载已有so库 <转>
1,在项目根目录下建立文件夹libs/armeabi文件夹 2,将so库放入 libs/armeabi文件夹 注意事项: 1,如果采用静态注册的方式请注意C文件中严格按照命名规则 Java_packa ...
- 浅析JNI函数的注册过程
我们在java中调用Native code的时候,一般是通过JNI来实现的,我们只需要在java类中加载本地.so库文件,并声明native方法,然后在需要调用的地方调用即可,至于java中nativ ...
- MatlabR2014a 安装破解详细图文教程(附下载链接(内附CVX工具箱))
MATLAB和Mathematica.Maple并称为三大数学软件.它在数学类科技应用软件中在数值计算方面首屈一指.MATLAB可以进行矩阵运算.绘制函数和数据.实现算法.创建用户界面.连接其他编程语 ...