开发环境

(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串口通信的更多相关文章

  1. 【C51】UART串口通信

    我们常需要单片机和其他模块进行通信,数据传输,常用的方式就是串口通信技术. 常用来 单片机<-->电脑,  单片机<-->单片机之间通信. 串行通信 versus 并行通信 并 ...

  2. 【ARM】2410裸机系列-ADC数模转换

    开发环境   1.硬件平台:FS2410 2.主机:Ubuntu 12.04 ADC寄存器配置       1.初始化ADC(ADCCON) 设置预分频,预分频因子,选择A/D转换通道,并选择正常模式 ...

  3. Win10 IoT C#开发 4 - UART 串口通信

    Windows 10 IoT Core 是微软针对物联网市场的一个重要产品,既可以开发设备UI与用户交互式操作,又可以控制GPIO等接口,使得原来嵌入式繁琐的开发变得简单.通过Remote Debug ...

  4. 【ARM】2410裸机系列-流水灯

    开发环境   1.硬件平台:FS2410(s3c2410) 2.主机:Ubuntu 12.04 LTS LED原理图 LED的GPIO的配置 配置GPFCON寄存器,设置GPF4-7为输出 配置GPF ...

  5. 【ARM】2410裸机系列-按键查询式控制led

    开发环境   硬件平台:FS2410 主机:Ubuntu 12.04 LTS LED灯原理图 按键原理图 按键的接线资源 KSCAN0 -> GPE11    KSCAN1 -> GPG6 ...

  6. 【ARM】2410裸机系列-中断处理

    目的 为了更好地掌握S3C2410中断的原理及中断程序的编写. 内容利用S3C2410的外部中断0和外部中断1实现两个按键功能 原理 本次选择的是外部中断EXTINT0和EXTINT11.中断的产生分 ...

  7. ARM裸编程系列---UART

    S5PV210 UART说明 通用异步收发器缩写UART,这是UNIVERSAL ASYNCHRONOUS RECEIVER AND TRANSMITTER.它被用来传送串行数据.当发送数据,CPU将 ...

  8. UART串口通信

    #include "sys.h" #include "delay.h" #include "usart.h" u8 rdata[]; UAR ...

  9. 【iCore3 双核心板_FPGA】实验二十五:NIOS II之UART串口通信实验

    实验指导书及代码包下载: http://pan.baidu.com/s/1eRMZq18 iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...

随机推荐

  1. ios中项目

    上一个版本 http://pan.baidu.com/share/link?shareid=2183244558&uk=923776187 下载地址  http://pan.baidu.com ...

  2. Java成神之路[转]

    阿里大牛珍藏架构资料,点击链接免费获取 针对本文,博主最近在写<成神之路系列文章> ,分章分节介绍所有知识点.欢迎关注. 主要版本 更新时间 备注 v1.0 2015-08-01 首次发布 ...

  3. Python装饰器几个有用又好玩的例子

    装饰器是一种巧妙简洁的魔术,类似于Java中的面向切面编程,我们可以再函数执行前.执行后.抛出异常时做一些工作.利用装饰器,我们可以抽象出一些共同的逻辑,简化代码.而简化代码的同时,就是在增加代码鲁棒 ...

  4. 编程实践笔记{Java 线程 并发处理 Webservice}(转)

    http://www.cnblogs.com/mingzi/archive/2009/03/09/1406694.html 1, 保证线程安全的三种方法: a, 不要跨线程访问共享变量 b, 使共享变 ...

  5. 【java】java开发中的23种设计模式详解

    设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...

  6. 【struts2】自定义登录检查拦截器

    在实际开发中,一个常见的功能要求是:有很多操作都需要登录后才能操作,如果操作的时候还没有登录,那么通常情况下会要求跳转回到登录页面. 1)如何实现这样的功能呢? 在具体实现之前,先来考虑几个问题: ( ...

  7. Elasticsearch与RDS比较

    Elasticsearch是一个分布式,实时,全文搜索引擎.所有操作都是通过RESTful接口实现,其底层实现是基于Lucene全文搜索引擎.数据以JSON文档的格式存储索引,不需要预先规定范式. 和 ...

  8. Groovy 学习手册(4)

    6. 领域特定语言 Groovy 有许多特性,使它非常适合写DSL(领域特定语言).这些特性包活: 具有委托机制的闭包: 点号(.)和语句末尾的分号(;)是可选的: 运算符的重载(例如,加号,减号等) ...

  9. Mysql命令行改动字段类型

    在做微信公众平台 知识百科(账号:zhishiwiki) 时,由于字段先前设计的不合理.导致内容装不下,因此须要改动其字段类型为 text 这里使用到了 alter 命令 alter table 表名 ...

  10. JAVA classpath jar问题[zz]

    classpath问题可以说是所有初学者头疼的问题,偶也一样. 1) classpath的作用:  它的作用就事让java找到你所要执行,或你拥有的类. 2) classpath的设置:  设置cla ...