• S3C2440串口通信基本功能的代码(注释+学习)


    功能:将通过串口接收到的内容再发送出去,在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
  • 相关阅读:
    TCP/IP 基础知识
    30 岁的码农人生 ——人生至暗时,你依然能窥见光明
    巨经典论文!推荐系统经典模型Wide & Deep
    带你领略拼多多2020校招笔试题,这样的难度你可以搞定吗?
    做业务、做技术和打杂,你的职场现状是哪种?
    内卷预警,本科生真的很不适合算法岗位吗?
    codeforces 1424J,为了过这题,我把祖传的C++都用上了!
    有了Git这个操作,我再也不怕代码混乱了!
    学会了这一招,距离Git大神不远了!
    好端端的数据结构,为什么叫它SB树呢?
  • 原文地址:https://www.cnblogs.com/wuqi1003/p/2819605.html
Copyright © 2020-2023  润新知