热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【ARM】2410裸机系列-uart串口通信

开发环境(1)硬件平台:FS2410(2)主机:Ubuntu12.04FS2410串口的原理图串

开发环境

 

   (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');}elseputc(*str);str++;}
}int main(void)
{char ch;char str[100];int i &#61; 0, j;for(j &#61; 0; j <100; j&#43;&#43;) //清空字符串str[j] &#61; &#39;\0&#39;;rGPHCON &#61; rGPHCON & ~(0xf <<4) | (0xa <<4); //配置RXD0、TXD0rGPHUP &#61; 0x0c; //设置上拉电阻rUFCON0 &#61; 0; //不用FIFOrUMCON0 &#61; 0; //不用流控rULCON0 &#61; 0x3; //8位数据&#xff0c;1个停止位&#xff0c;无校验&#xff0c;正常模式rUCON0 &#61; 0x5; //时钟源位PCLK&#xff0c; 中断方式为查询rUBRDIV0 &#61; ((int)(50000000 / 115200 / 16) - 1); //设置波特率为115200putc(&#39;\r&#39;);putstr("hello mystery \n");while(1){ch &#61; getc(); //接收字符putc(ch); //发送字符str[i&#43;&#43;] &#61; ch;if(ch &#61;&#61; &#39;\r&#39;){i &#61; 0;putc(&#39;\n&#39;);putstr("mystery:");putstr(str);putstr("\n");for(j &#61; 0; j <100; j&#43;&#43;) //清空字符串str[j] &#61; &#39;\0&#39;;}}return 0;
}

 

//start.S

.text
.global _start
_start:
#define WATCHDOG 0x53000000ldr r0, &#61;WATCHDOGmov r1, #0str r1, [r0]ldr sp, &#61;1024*4bl mainloop:b loop

 

//Makefile

uart.bin: start.S uart.carm-linux-gcc -c start.S -o start.oarm-linux-gcc -c uart.c -o uart.oarm-linux-ld -Ttext 0x30008000 start.o uart.o -o uartarm-linux-objcopy -O binary -S uart uart.binclean:rm -f *.o uart.binxyyc

 


编译运行

 

 

   编译运行都OK

 



推荐阅读
  • 本文介绍了深入浅出Linux设备驱动编程的重要性,以及两种加载和删除Linux内核模块的方法。通过一个内核模块的例子,展示了模块的编译和加载过程,并讨论了模块对内核大小的控制。深入理解Linux设备驱动编程对于开发者来说非常重要。 ... [详细]
  • 32位ubuntu编译android studio,32位Ubuntu编译Android 4.0.4问题
    问题一:在32位Ubuntu12.04上编译Android4.0.4源码时,出现了关于emulator的错误,关键是其Makefile里的 ... [详细]
  • Word2vec,Fasttext,Glove,Elmo,Bert,Flairpre-trainWordEmbedding源码数据Github网址:词向量预训练实现Githubf ... [详细]
  • 本文介绍了GTK+中的GObject对象系统,该系统是基于GLib和C语言完成的面向对象的框架,提供了灵活、可扩展且易于映射到其他语言的特性。其中最重要的是GType,它是GLib运行时类型认证和管理系统的基础,通过注册和管理基本数据类型、用户定义对象和界面类型来实现对象的继承。文章详细解释了GObject系统中对象的三个部分:唯一的ID标识、类结构和实例结构。 ... [详细]
  • 本文概述了JNI的原理以及常用方法。JNI提供了一种Java字节码调用C/C++的解决方案,但引用类型不能直接在Native层使用,需要进行类型转化。多维数组(包括二维数组)都是引用类型,需要使用jobjectArray类型来存取其值。此外,由于Java支持函数重载,根据函数名无法找到对应的JNI函数,因此介绍了JNI函数签名信息的解决方案。 ... [详细]
  • linux进阶50——无锁CAS
    1.概念比较并交换(compareandswap,CAS),是原⼦操作的⼀种,可⽤于在多线程编程中实现不被打断的数据交换操作࿰ ... [详细]
  • 原文地址http://balau82.wordpress.com/2010/02/28/hello-world-for-bare-metal-arm-using-qemu/最开始时 ... [详细]
  • Howtobuilda./configure&&make&&makeins ... [详细]
  • linux 字符串数组初始化,C++字符数组初始化方法的分析
    发现了一个字符数组初始化的误区,而这个往往能导致比较严重的性能问题,分析介绍如下:往往我们在初始化一个字符数组,大概有如下几 ... [详细]
  • 第三周读书笔记《程序员的自我修养》  计划对这本书是精读,这周读了3,4章。第三章目标文件里有什么  首先介绍了目标文件的格式,Windows下是pe-coff, ... [详细]
  • VS用c语言连接mysql,c语言连接mysql完整演示
    #include#includeintmain(){MYSQL*conn;创建一个指向mysql数据类型的指针connmysql_init(NULL);mysql的初始化if(!c ... [详细]
  • 1.      准备工作: 程序:MinGW-3.1.0-1.exe     windows下的gcc,编译c语言的工具下载地址: http:umn.dl.sourceforge. ... [详细]
  • 每当我尝试使用NEON16位浮点内在函数时都会收到此错误。我没有遇到其他数据类型内在函数的任何问题。是否可以在Android上使用NEON16位浮点内在函数? ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
author-avatar
forsoz_627
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有