tiny6410串口驱动程序设计
2017-04-27 16:18
218 查看
建立文件uart.c。
#define GPACON (*((volatile unsigned short *)0x7F008000))
#define ULCON0 (*((volatile unsigned long *)0x7F005000))
#define UCON0 (*((volatile unsigned long *)0x7F005004))
#define UTRSTAT0 (*((volatile unsigned long *)0x7F005010))
#define UBRDIV0 (*((volatile unsigned short *)0x7F005028))
#define UTXH0 (*((volatile unsigned char *)0x7F005020))
#define URXH0 (*((volatile unsigned char *)0x7F005024))
#define UDIVSLOT0 (*((volatile unsigned short *)0x7F00502C))
#define PCLK 66500000
#define BAUD 115200
void uart_init()
{
//1.配置引脚功能
GPACON &= ~0xff;
GPACON |= 0x22;
//2.1 设置数据格式
ULCON0 = 0b11;
//2.2 设置工作模式
UCON0 = 0b0101;
//3. 设置波特率
UBRDIV0 =(int)(PCLK/(BAUD*16)-1); //UBRDIV0保存该公式计算后的整数部分
UDIVSLOT0 = 0x0; //UDISLOT0=保存该公式计算后的小数部分*16
}
//输出一个字符
void puta(unsigned char ch)
{
//如果TX_FIFO空,等待
while (!(UTRSTAT0 & (1<<2)));
//取数据
UTXH0 = ch;
}
//接收一个字符
unsigned char geta()
{
unsigned char ret;
//如果RX_FIFO满,等待
while (!(UTRSTAT0 & (1<<0)));
// 取数据
ret = URXH0;
if ( (ret == 0x0d) || (ret == 0x0a) )
{
puta(0x0d);
puta(0x0a);
}
else
puta(ret);
return ret;
}
在main函数中添加调用
uart_init();
get();
#define GPACON (*((volatile unsigned short *)0x7F008000))
#define ULCON0 (*((volatile unsigned long *)0x7F005000))
#define UCON0 (*((volatile unsigned long *)0x7F005004))
#define UTRSTAT0 (*((volatile unsigned long *)0x7F005010))
#define UBRDIV0 (*((volatile unsigned short *)0x7F005028))
#define UTXH0 (*((volatile unsigned char *)0x7F005020))
#define URXH0 (*((volatile unsigned char *)0x7F005024))
#define UDIVSLOT0 (*((volatile unsigned short *)0x7F00502C))
#define PCLK 66500000
#define BAUD 115200
void uart_init()
{
//1.配置引脚功能
GPACON &= ~0xff;
GPACON |= 0x22;
//2.1 设置数据格式
ULCON0 = 0b11;
//2.2 设置工作模式
UCON0 = 0b0101;
//3. 设置波特率
UBRDIV0 =(int)(PCLK/(BAUD*16)-1); //UBRDIV0保存该公式计算后的整数部分
UDIVSLOT0 = 0x0; //UDISLOT0=保存该公式计算后的小数部分*16
}
//输出一个字符
void puta(unsigned char ch)
{
//如果TX_FIFO空,等待
while (!(UTRSTAT0 & (1<<2)));
//取数据
UTXH0 = ch;
}
//接收一个字符
unsigned char geta()
{
unsigned char ret;
//如果RX_FIFO满,等待
while (!(UTRSTAT0 & (1<<0)));
// 取数据
ret = URXH0;
if ( (ret == 0x0d) || (ret == 0x0a) )
{
puta(0x0d);
puta(0x0a);
}
else
puta(ret);
return ret;
}
在main函数中添加调用
uart_init();
get();
相关文章推荐
- 串口驱动程序设计
- Linux串口(serial、uart)驱动程序设计
- 串口驱动程序设计详解---串口打开、发送、接收(下)
- [国嵌攻略][056][串口驱动程序设计]
- VxWorks 环境下串口驱动程序设计
- Linux串口(serial、uart)驱动程序设计
- Linux串口(serial、uart)驱动程序设计
- Linux串口(serial、uart)驱动程序设计
- tty串口驱动程序设计
- Linux串口(serial、uart)驱动程序设计
- S3C2440串口驱动程序设计
- ok6410学习笔记(18.linux串口驱动程序设计)
- 串口驱动程序设计详解---串口初始化(上)
- 串口驱动程序设计
- Linux串口(serial、uart)驱动程序设计
- Linux串口(serial、uart)驱动程序设计
- 串口驱动程序设计
- 木其工作室(专业程序代写服务)[原]ok6410学习笔记(18.linux串口驱动程序设计)
- Linux串口(serial、uart)驱动程序设计
- 串口驱动程序设计详解---串口初始化(上)