【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 ...
随机推荐
- Xcode7 运行iOS10以上系统(10.1、10.2、10.3)解决Could not find Developer Disk Image
由于历史原因,需要在Xcode7上真机运行下app,无奈手机系统已是10.3了,一运行, 就提示:Could not find Developer Disk Image 解决办法: 1.找到xcode ...
- Xcode 常用调试技巧总结
NSLog,po命令和普通断点调试相信每个iOS开发者都会,这里就不作介绍了. 一.Memory Graph Xcode8新增:Memory Graph解决闭包引用循环问题 有很多叹号说明就有问题了. ...
- kafka负载均衡相关资料收集(二)
[转]关于kafka producer 分区策略的思考 from:http://blog.csdn.net/ouyang111222/article/details/51086037 今天跑了一个简单 ...
- nginx 中文和英文资料
http://www.nginx.cn/doc/ http://manual.51yip.com/nginx/ http://tool.oschina.net/apidocs/apidoc?api=n ...
- HDU 4607 Park Visit (树的最长链)
Park Visit Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- [转]在Linux CentOS 6.6上安装Python 2.7.9
在Linux CentOS 6.6上安装Python 2.7.9 查看python安装版本 python -V yum中最新的也是Python 2.6.6,所以只能下载Python 2.7.9的源代码 ...
- 技术的正宗与野路子 c#, AOP动态代理实现动态权限控制(一) 探索基于.NET下实现一句话木马之asmx篇 asp.net core 系列 9 环境(Development、Staging 、Production)
黄衫女子的武功似乎与周芷若乃是一路,飘忽灵动,变幻无方,但举手抬足之间却是正而不邪,如说周芷若形似鬼魅,那黄衫女子便是态拟神仙. 这段描写出自<倚天屠龙记>第三十八回. “九阴神抓”本是& ...
- 关于 os模块的常用用法
作为常用模块中的os模块,需要掌握的用法是非常重要的,今天就在这里把它归纳总结总结,以便自己日后的使用 一.os模块 含义:提供程序与操作系统直接操作的各个功能 二.常用的几个用法 os.getcwd ...
- 《JAVA与模式》之解释器模式 (转载)
一.引子 其实没有什么好的例子引入解释器模式,因为它描述了如何构成一个简单的语言解释器,主要应用在使用面向对象语言开发编译器中:在实际应用中,我们可能很少碰到去构造一个语言的文法的情况. 虽然你几乎用 ...
- ef 通用类
using System; using System.Collections.Generic; using System.Data.Entity; using System.Data.Entity.I ...