• 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
  • 相关阅读:
    DHCP和NAT
    Mongos WoW
    是否能在构造函数,析构函数中抛出异常?
    Lua Getter/Setter
    xLua
    基于模板特化的Lua自动绑定系统
    为什么有人说富坚义博有着殿堂级的画功?他的画功体现在哪儿呢? 关注者 10205 被浏览 2701670
    在Windows和MacOS下编译Lua
    解决warning MSB8012:问题
    setjmp和longjmp
  • 原文地址:https://www.cnblogs.com/wuqi1003/p/2819605.html
Copyright © 2020-2023  润新知