【ARM】2410裸机系列-uart串口通信
开发环境
(1)硬件平台:FS2410
(2)主机:Ubuntu 12.04
FS2410串口的原理图
串口UART寄存器配置
配置TXD0与RXD0(GPH2、GPH3)
设置波特率(UBRDIVn)
设置传输格式(ULCONn)
选择时钟源与中断方式(UCONn)
设置FIFO(UFCONn)
设置流控(UMCONn)
接收字符和发送字符(UTRSTATn)
源代码
//uart.c
#include "2410addr.h" void putc(char ch) //发送字符
{
while(!(rUTRSTAT0 & 0x2) ); //判断发送缓冲区是否为空 rUTXH0 = ch; //发送字符 } char getc(void) //接收字符
{
while(!(rUTRSTAT0 & 0x1)); //判断接收缓冲区是否为空 return rURXH0; //返回接收的字符
} void putstr(char *str) //发送字符串
{
while(*str != '\0')
{
if(*str == '\n')
{
putc('\n');
putc('\r');
}
else
putc(*str); str++;
}
} int main(void)
{
char ch;
char str[100];
int i = 0, j; for(j = 0; j < 100; j++) //清空字符串
str[j] = '\0'; rGPHCON = rGPHCON & ~(0xf << 4) | (0xa << 4); //配置RXD0、TXD0
rGPHUP = 0x0c; //设置上拉电阻 rUFCON0 = 0; //不用FIFO
rUMCON0 = 0; //不用流控
rULCON0 = 0x3; //8位数据,1个停止位,无校验,正常模式
rUCON0 = 0x5; //时钟源位PCLK, 中断方式为查询 rUBRDIV0 = ((int)(50000000 / 115200 / 16) - 1); //设置波特率为115200 putc('\r');
putstr("hello mystery \n"); while(1)
{
ch = getc(); //接收字符 putc(ch); //发送字符 str[i++] = ch; if(ch == '\r')
{
i = 0;
putc('\n');
putstr("mystery:");
putstr(str);
putstr("\n"); for(j = 0; j < 100; j++) //清空字符串
str[j] = '\0';
}
} return 0;
}
//start.S
.text
.global _start
_start:
#define WATCHDOG 0x53000000
ldr r0, =WATCHDOG
mov r1, #0
str r1, [r0] ldr sp, =1024*4
bl main loop:
b loop
//Makefile
uart.bin: start.S uart.c
arm-linux-gcc -c start.S -o start.o
arm-linux-gcc -c uart.c -o uart.o
arm-linux-ld -Ttext 0x30008000 start.o uart.o -o uart
arm-linux-objcopy -O binary -S uart uart.bin clean:
rm -f *.o uart.binxyyc
编译运行
编译运行都OK
【ARM】2410裸机系列-uart串口通信的更多相关文章
- 【C51】UART串口通信
我们常需要单片机和其他模块进行通信,数据传输,常用的方式就是串口通信技术. 常用来 单片机<-->电脑, 单片机<-->单片机之间通信. 串行通信 versus 并行通信 并 ...
- 【ARM】2410裸机系列-ADC数模转换
开发环境 1.硬件平台:FS2410 2.主机:Ubuntu 12.04 ADC寄存器配置 1.初始化ADC(ADCCON) 设置预分频,预分频因子,选择A/D转换通道,并选择正常模式 ...
- Win10 IoT C#开发 4 - UART 串口通信
Windows 10 IoT Core 是微软针对物联网市场的一个重要产品,既可以开发设备UI与用户交互式操作,又可以控制GPIO等接口,使得原来嵌入式繁琐的开发变得简单.通过Remote Debug ...
- 【ARM】2410裸机系列-流水灯
开发环境 1.硬件平台:FS2410(s3c2410) 2.主机:Ubuntu 12.04 LTS LED原理图 LED的GPIO的配置 配置GPFCON寄存器,设置GPF4-7为输出 配置GPF ...
- 【ARM】2410裸机系列-按键查询式控制led
开发环境 硬件平台:FS2410 主机:Ubuntu 12.04 LTS LED灯原理图 按键原理图 按键的接线资源 KSCAN0 -> GPE11 KSCAN1 -> GPG6 ...
- 【ARM】2410裸机系列-中断处理
目的 为了更好地掌握S3C2410中断的原理及中断程序的编写. 内容利用S3C2410的外部中断0和外部中断1实现两个按键功能 原理 本次选择的是外部中断EXTINT0和EXTINT11.中断的产生分 ...
- ARM裸编程系列---UART
S5PV210 UART说明 通用异步收发器缩写UART,这是UNIVERSAL ASYNCHRONOUS RECEIVER AND TRANSMITTER.它被用来传送串行数据.当发送数据,CPU将 ...
- UART串口通信
#include "sys.h" #include "delay.h" #include "usart.h" u8 rdata[]; UAR ...
- 【iCore3 双核心板_FPGA】实验二十五:NIOS II之UART串口通信实验
实验指导书及代码包下载: http://pan.baidu.com/s/1eRMZq18 iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...
随机推荐
- CentOS 7 使用 Yum 软件源安装谷歌 Chrome 浏览器
Google Chrome是一款由 Google 公司开发的网页浏览器,新版的 Chrome 浏览器使用的是 Blink 内核,具有运行速度快,稳定的特性.Chrome 能够运行在 Windows,L ...
- ubuntu下安装万能五笔
之前一直习惯了万能五笔输入法,使用Ubuntu12.04安装wnwb 在网络上搜索了一下并没有找到可 以在ibus下直接使用万能五笔的方法,于是想自己动手解决这个问题, 参考别人之前做的万能五笔For ...
- 给我一对公钥和私钥,我就能破解此RSA
RSA密码系统如果暴露了一套公钥和私钥,那么这套密码系统就全部失效了.因为根据公钥和私钥可以完成大整数的分解.暴露了两个质数. 记公钥为e,私钥为d,因为ed%phi=1,所以就得到了一个k=ed-1 ...
- /proc/net/sockstat 里的信息是什么意思?
cat /proc/net/sockstat sockets: used 294 TCP: inuse 35 orphan 0 tw 0 alloc 45 mem 1 UDP: inuse 13 me ...
- 《安卓考试》通用版ver-2,截图和源码
首先放出源码:https://github.com/chenyoca/AndroidTopicBankEx 然后是实际应用运行效果截图: 最后说明一下: 1.应用没有完成,应用的数据是模拟的. 2.应 ...
- centos6.4安装GitLab
参考文章: http://www.pickysysadmin.ca/2013/03/25/how-to-install-gitlab-5-0-on-centos-6/ yum安装redis的方法: h ...
- 对于不返回任何键列信息的 selectcommand 不支持 updatecommand 的动态 sql 生成
大家知道,DataSet保存的数据是位于服务器内存里面的原数据库的“副本”.所以用DataSet更新数据的过程就是先对“副本”进行更新,然后 在将“原本”更新,按照我的理解就是把“原本”覆盖掉.具体到 ...
- VC学习笔记:状态栏
原文链接: http://www.cnblogs.com/skyseraph/archive/2010/11/27/1889952.html 实例学习 1 新建对话框程序 2 为Dlg类添加成员变 ...
- asp.net中WinForm使用单例模式示例
例如在Windows应用程序中用下面代码打开一个窗体: 代码如下 复制代码 private void button1_Click(object sender, EventArgs e){ (new A ...
- python3 装饰器应用举例
[引子] python 中的装饰器是oop(面向对象编程)设计模式.之装饰器模式的一个应用.由于有语法糖衣的缘故.所以写起来也更加方便 [从一个比较经典的应用场景来讲解装饰器] 有过一定编程经历的工程 ...