功能:将通过串口接收到的内容再发送出去,在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
上一篇:uboot在s3c2440上的移植(2)
下一篇:Uboot S3C2440 BL1 的流程
推荐阅读最新更新时间:2024-11-16 20:37
设计资源 培训 开发板 精华推荐
- MC33172VDR2G 有源带通滤波器的典型应用
- LTC3892EUH-2 高效率、双路 5V/12V 输出同步降压型 DC/DC 控制器的典型应用电路
- LTC3634HUFD 降压型稳压器的设计示例电路
- NCD57200EVB:NCD57200 评估板
- SC431L 低压可调并联稳压器的典型应用
- 431 至 478、862 至 956MHz 无线射频收发器
- 2021年B题三相 AC-DC 变换电路 一神两坑
- AN431B 大电流并联稳压器的典型应用
- AN54,采用 LTC1149 10-48V、5V/2A 高压降压转换器和大型 P 沟道、N 沟道 MOSFET 的应用电路
- 适用于工业应用的 C8051F530A MCU 的 C8051F530ADK、8051 开发系统