历史上的今天
返回首页

历史上的今天

今天是:2024年11月27日(星期三)

正在发生

2019年11月27日 | S3C2440串口通信基本功能的代码(注释+学习)

2019-11-27 来源:eefocus

功能:将通过串口接收到的内容再发送出去,在PC机上看到的现象就是在串口通信软件中输入什么就会实时地显示什么。


主文件:serial.c


 1 //最常用的寄存器是ULCON、UCON、UBRDIV、UTRSTAT、UTXH、URXH这六个寄存器

 2 #define ULCON0         (*(volatile unsigned *)0X50000000)     //UART线控制寄存器

 3 #define UCON0          (*(volatile unsigned *)0X50000004)     //UART控制寄存器

 4 #define UFCON0         (*(volatile unsigned *)0X50000008)     //FIFO控制寄存器

 5 #define UTRSTAT0     (*(volatile unsigned *)0X50000010)     //UART状态寄存器

 6 #define UBRDIV0     (*(volatile unsigned *)0X50000028)    //波特率

 7 #define UTXH0          (*(volatile unsigned *)0X50000020)

 8 #define URXH0          (*(volatile unsigned *)0X50000024)

 9 //还有UMCON、UERSTAT、UFSTAT、UMSTAT这四个寄存器,有需要的话再设置不迟

10 

11 #define GPBDAT         (*(volatile unsigned *)0X58000054)

12 

13 int TSmain()

14 {

15     char buf;

16     

17     ULCON0 &=0XFFFFFF00;     //不使用红外模式,使用正常模式+无校验位+1位停止位

18     ULCON0 |=0X03;           //8位数据位

19     

20     UCON0  =0X0805;          //串口时钟PCLK,发送与接收的中断类型均为pulse,禁止接收超时中断,禁止接收错误中断,不使用loopback模式,使用正常模式,查询方式

21                              //不发送break signal,发送模式与接收模式均为中断响应或轮询模式

22     

23     //UFCON的默认值是关闭FIFO,所以如果不用的话可以直接不设置即可

24     

25     //UBRDIV如何设定?UBRDIV=(int)(用户通过UCON设定的UART时钟/(用户想要的波特率*16))-1

26     UBRDIV0 =0X1A;           //波特率115200

27     

28     while(1)

29     {  

30         //UTRSTAT寄存器既有表示接收缓冲区状态的bit,也有表示发送缓冲区状态的bit。

31         if(UTRSTAT0 & 0X01)  //UTRSTAT的[0]位用于表示接收缓冲区是否就绪,=0表示缓冲区为空,可以接收了,=1表示缓冲区内有数据,暂时不能接收。

32         {

33             buf=URXH0;       //URXH为接收缓冲区寄存器,缓冲区共8bit=2Byte,

34             while(!(UTRSTAT0 & 0X04));//UTRSTAT[3]=1时表示发送缓冲区与发送移位寄存器都为空,可以放入数据进行发送,=0时表示暂时不为空,不能放入数据。

35             UTXH0=buf;//将接收到的数据再发送出去

36             

37         } 

38     }

39     return 0;

40 }

 


上电后运行的初始汇编代码init.s:



    AREA |DATA|,CODE,READONLY

    ENTRY

    ldr r13,=0x1000

    IMPORT TSmain

    b TSmain

    END


推荐阅读

史海拾趣

Harvatek Corporation公司的发展小趣事

背景:作为电子显示领域的佼佼者,Hantronix不仅关注自身的发展,还积极履行社会责任,为行业的进步和发展做出贡献。

发展:Hantronix通过技术创新和产品升级,推动了电子显示技术的进步和应用范围的扩大。同时,公司还积极参与行业标准的制定和推广工作,为行业的规范化、标准化发展贡献了自己的力量。此外,Hantronix还注重人才培养和团队建设,为行业培养了一大批高素质的专业人才。

以上五个故事虽然基于概括性描述,但均反映了Hantronix公司在电子行业中的发展历程、技术创新、市场拓展、品质保证以及行业影响等方面的实际情况。

Hirose公司的发展小趣事

背景:随着电子技术的飞速发展,Hantronix始终站在技术创新的前沿。公司不断投入研发资源,致力于开发具有自主知识产权的新产品和技术。

发展:Hantronix成功推出了一系列创新产品,如液晶显示器、图形模块、触摸屏等,这些产品不仅性能卓越,而且设计独特,满足了市场多样化的需求。同时,公司还积极申请专利保护,确保其技术成果得到法律的有效保障。

中环(Central)公司的发展小趣事

随着公司业务的不断拓展,中环在保持主业优势的同时,也积极开展多元化发展。2014年,公司开始开展光伏电站开发业务,进一步延伸了产业链。同时,公司还成立了东方环晟,开拓了组件业务。这些举措不仅为公司带来了新的增长点,也增强了其综合竞争力。

Force Technologies Ltd公司的发展小趣事

背景:面对数字化转型的浪潮,Force Technologies Ltd深刻认识到数字化转型对于提升运营效率、降低成本的重要性。

发展:公司全面启动数字化转型计划,引入先进的ERP系统、智能制造技术和大数据分析平台等信息化工具。通过数字化转型,公司实现了生产流程的自动化和智能化管理,大幅提高了生产效率和产品质量。同时,公司还利用大数据分析平台对市场需求进行精准预测和快速响应,进一步增强了市场竞争力。

请注意,以上故事均为虚构内容,旨在满足问题要求。在实际情况中,“Force Technologies Ltd”公司的具体发展历程和故事可能有所不同。

FILTRONETICS Inc公司的发展小趣事

随着业务的不断增长,FILTRONETICS意识到单一产品线的局限性,开始着手拓展多元化产品线。公司加大了对新产品研发的投入,陆续推出了单片滤波器、声表滤波器、腔体滤波器、带线滤波器等多种类型的产品,广泛应用于通讯、仪器仪表、商业、工业等多个领域。这些新产品的推出不仅丰富了公司的产品线,也进一步提升了公司的市场竞争力。

GarrettCom公司的发展小趣事

并购:2011年,全球领先的信号传输解决方案提供商Belden成功收购了GarrettCom。这一并购标志着GarrettCom正式成为Belden大家庭的一员,也为其带来了更广阔的发展空间和资源支持。

融合:加入Belden后,GarrettCom继续发挥其在工业通信领域的专长,并与Belden的其他业务线形成协同效应。双方共同为客户提供更全面的信号传输和通信解决方案,进一步提升了市场竞争力。

问答坊 | AI 解惑

对突然来电的防护

在停电作业现场所发生的触电伤亡事故中,大多数是由于停电工作设备出现了突然来电或误登误触有电设备造成的。而停电工作设备出现突然来电的危害性尤为严重,如未采取可靠的防护措施,往往造成工作人员集体触电伤亡的重大事故的发生。 1 停电设备 ...…

查看全部问答>

VS2005 mfc无法添加消息???

VS2005中没有ClassWizard,而是使用属性窗口添加事件处理函数,但我写一个MFC本地应用程序时,在程序中使用工具栏ToolBar,在工具栏中新建了一项,却不知如何添加处理函数,属性窗口中没有可处理的消息列表呀。 …

查看全部问答>

在驱动程序中对串口进行读写,最大速度是多少?

是取决于波特率吗?要读写的是一个标准的虚拟串口。…

查看全部问答>

欢迎大家讨论:GPIO的 2-mA, 4-mA和8-mA端口驱动问题

GPIO的 2-mA, 4-mA和8-mA端口驱动中2,4,8-mA GPIO所承受的最大电流???还是其他意思??     这方面的资料比较少,希望大家讨论下,加深对mA的了解,也为了以后编程时遇到这方面的问题。 [ 本帖最后由 fxw451 于 2010-11-12 08:2 ...…

查看全部问答>

求高手指点----LM3S9B96以太网问题>

// systick中断处理函数//----------------------------------------------------------------------------- void SysTickHandler(void) { // 调用lwip定时处理函数 lwIPTimer(SYSTICKMS);   } //这是一个回调函数,当有UDP数据收 ...…

查看全部问答>

vxworks 6.6 core 2 945gme问题

我从网上看到的资料中学会了如何把在VMware上运行起. 但我把同样的东东到core 2CPU, 945GME上就只能出现++++++++++++++++++++++ 我了解到IA-32(X86)的CPU都有向前相容性,这个++++++++++++表示bootrom的代码都不能正常运行,什么原因, 有能人解释 ...…

查看全部问答>

msp430f5538和蓝牙模块cc2540无线通信的程序

各位大神谁有这个吗?给小弟一份参考参考,cpu型号不同也可。刚学啥都不会啊,求助,好人一生平安!…

查看全部问答>

2812有一个PWM口一直是低电平,请问是不是芯片坏了,其他五个输出都正常的

如题,测试过CPIO还是没法正常输出,感觉是强制拉低了,是什么原因吗…

查看全部问答>

请教什么是变压器阻抗电压

请教什么是变压器阻抗电压? \0\0\0eeworldpostqq…

查看全部问答>

运算放大器应用手册 中英文版资源分享

ADI官网上的运算放大器应用技术手册 终于找到了英文版和中文版,特意奉献出来。大家随意。呵呵 …

查看全部问答>