uart串口实现回写
来源:互联网 发布:数据库管理系统 编辑:程序博客网 时间:2024/05/23 00:37
1、打开ads,新建一个工程,命名为:uart
area init,code,readonly
start
ldr sp,=4096
import main
b main
/*UART registers*/
#define ULCON0 (*(volatile unsigned long *)0x50000000) //串口0串行控制寄存器
#define UCON0 (*(volatile unsigned long *)0x50000004) //串口0控制寄存器
#define UFCON0 (*(volatile unsigned long *)0x50000008) //串口0FIFO控制寄存器
#define UMCON0 (*(volatile unsigned long *)0x5000000c) //串口0 MODEM控制寄存器
#define UTRSTAT0 (*(volatile unsigned long *)0x50000010) //串口0发送/接收状态寄存器
#define UTXH0 (*(volatile unsigned char *)0x50000020) //串口0发送缓冲寄存器
#define URXH0 (*(volatile unsigned char *)0x50000024) //串口0接收缓冲寄存器
#define UBRDIV0 (*(volatile unsigned long *)0x50000028) //串口0波特率除数寄存器UBRDIVn = (int)( UART clock / ( buad rate x 16) ) –1
2、在工程中新建一个文件 start.s
/* start.s */
start
ldr sp,=4096
import main
b main
end
3、再新建一个文件用于对串口有关的端口进行初始化,也包括寄存器的初始化。
/* uart.h */
/* GPIO registers */
#define GPHCON (*(volatile unsigned long *)0x56000070) //GPIO端口H配置寄存器
#define GPHDAT (*(volatile unsigned long *)0x56000074) //GPIO端口H数据寄存器
#define GPHUP (*(volatile unsigned long *)0x56000078) //GPIO端口H上拉无效寄存器
#define GPHCON (*(volatile unsigned long *)0x56000070) //GPIO端口H配置寄存器
#define GPHDAT (*(volatile unsigned long *)0x56000074) //GPIO端口H数据寄存器
#define GPHUP (*(volatile unsigned long *)0x56000078) //GPIO端口H上拉无效寄存器
/*UART registers*/
#define ULCON0 (*(volatile unsigned long *)0x50000000) //串口0串行控制寄存器
#define UCON0 (*(volatile unsigned long *)0x50000004) //串口0控制寄存器
#define UFCON0 (*(volatile unsigned long *)0x50000008) //串口0FIFO控制寄存器
#define UMCON0 (*(volatile unsigned long *)0x5000000c) //串口0 MODEM控制寄存器
#define UTRSTAT0 (*(volatile unsigned long *)0x50000010) //串口0发送/接收状态寄存器
#define UTXH0 (*(volatile unsigned char *)0x50000020) //串口0发送缓冲寄存器
#define URXH0 (*(volatile unsigned char *)0x50000024) //串口0接收缓冲寄存器
#define UBRDIV0 (*(volatile unsigned long *)0x50000028) //串口0波特率除数寄存器UBRDIVn = (int)( UART clock / ( buad rate x 16) ) –1
#define PLCK 356864000
#define UART_CLK PLCK //内部系统时钟频率
#define UART_BAUD_RATE 1115200
#define UART_BED ((UART_CLK/(UART_BAUD_RATE * 16))-1)
4、在工程中新建一个main.c的执行源文件;
/*mian.c*/
#include<uart.h>
/*uart串口初始化*/
void init(void)
{
GPHCON |= 0xa0; //GPH2,GPH3 used as TXD0,RXD0
GPHUP = 0x0; //GPH2,GPH3内部上拉
ULCON0 = 0x03; //8N1
UCON0 = 0x05; //查询方式为轮询或中断;时钟选择为PCLK
UFCON0 = 0x00; //不使用FIFO
UMCON0 = 0x00; //不使用流控
}
/*uart串口接受字符 */
void putc(unsigned char c)
{
while(!(UTRSTAT0 & (0x1<<2)))
UTXH0 = C;
}
/*uart串口输出字符*/
unsigned char getc()
{
while(!(UTRSTAT0 & 0x1));
return URXH0;
}
int main()
{
unsigned char a;
init();
while(!(UTRSTAT0 & (1<<2)))
{
a=putc(a);
getc();
}
}
在编译的过程中对发现UBRDIVn 的值等于19时才能正确回显;这一点不知道是为什么?(正在寻找答案)
- uart串口实现回写
- Qt实现UART串口调试功能
- UART串口
- 串口uart
- 串口UART
- 串口UART
- mini2440 UART实现串口接收后转换为整型数据
- S3C2440 Mini 2440 DMA方式实现Uart(串口)通信
- 51 单片机UART 串口通信[ 方式1 ]实现
- Uart串口实验--TQ2440
- linux UART串口驱动
- S3C2440 UART串口驱动
- S3C2440 UART串口驱动
- UART串口通信
- CC2430 串口通信UART
- Uart串口实验问题
- S3C2440 UART串口驱动
- S3C2440 UART串口驱动
- 创建进程
- 整理下android LocalServerSocket LocalSocket的用法
- fork(1)
- C# Winform中的DataGridView中行定位-滚动条定位
- java socket实现的客户端和服务器端,服务器采用多线程实现,为每个客户分配一个线程
- uart串口实现回写
- C++中char *和string的转换
- 硬盘1000TB=? 1000TB=1PB
- jsp生成随机验证码
- Using Ant from Groovy
- jetty使用学习
- fedora 10中的远程桌面功能
- 学习java的经典例题
- 2011年全国高考优秀作文|渴望丰富多彩