【OK6410裸机程序】串口初始化
2016-08-13 12:43
405 查看
S3C6410串口可以中作在三种模式:中断,轮询,DMA;按是否使用FIFO又分为两类。
UART模块使用的IO参见下图,具体的IO配置参考【OK6410裸机程序】点亮LED
使用FIFO时查询UFSTATx寄存器中的收发状态。
不使用FIFO时查询UTRSTATx寄存器中的收发状态。
UART模块使用的IO参见下图,具体的IO配置参考【OK6410裸机程序】点亮LED
1. 轮询模式,使用FIFO
/************UART.c********************************************/ #define ULCON0 (*((volatile unsigned long *)0x7F005000)) #define UCON0 (*((volatile unsigned long *)0x7F005004)) #define UFCON0 (*((volatile unsigned long *)0x7F005008)) #define UMCON0 (*((volatile unsigned long *)0x7F00500C)) #define UTRSTAT0 (*((volatile unsigned long *)0x7F005010)) #define UFSTAT0 (*((volatile unsigned long *)0x7F005018)) #define UTXH0 (*((volatile unsigned char *)0x7F005020)) #define URXH0 (*((volatile unsigned char *)0x7F005024)) #define UBRDIV0 (*((volatile unsigned short *)0x7F005028)) #define UDIVSLOT0 (*((volatile unsigned short *)0x7F00502C)) #define GPACON (*((volatile unsigned long *)0x7F008000)) void init_uart(void) { GPACON &= ~0xff; GPACON |= 0x22; /* ULCON0 */ ULCON0 = 0x3; /* 数据位:8, 无较验, 停止位: 1, 8n1 */ UCON0 = 0x5; /* 使能UART发送、接收 */ UFCON0 = 0x01; /* FIFO ENABLE */ UMCON0 = 0; /* 波特率 */ /* DIV_VAL = (PCLK / (bps x 16 ) ) - 1 * bps = 115200 * DIV_VAL = (50000000 / (115200 x 16 ) ) - 1 * = 26.12673611 */ UBRDIV0 = 26; /* x/16 = 0.12673611 * x = 2 */ UDIVSLOT0 = 0x0808; } char getchar(void) { while ((UFSTAT0 & 0x7f) == 0); /*RX_FIFO EMPTY,等待*/ return URXH0; } void putchar(char c) { while (UFSTAT0 & (1<<14)); /* TX_FIFO_FULL=1,等待*/ UTXH0 = c; } /***********************main.c************************************/ #include "uart.h" int main() { char c; init_uart(); while (1) { c = getchar(); putchar(c+1); } return 0; }配置顺序:1.IO配置;2.数据位/较验/停止位配置(ULCONx);3.波特率配置;4.使能FIFO(UFCONx);5.使能RX/TX并设置轮询模式(UCONx).
使用FIFO时查询UFSTATx寄存器中的收发状态。
不使用FIFO时查询UTRSTATx寄存器中的收发状态。
相关文章推荐
- 【OK6410裸机程序】时钟初始化
- 只用串口和网络裸机开发ARM程序(OK6410开发板)
- 只用串口和网络裸机开发ARM程序(OK6410开发板)纯(转)
- OK6410裸机程序
- OK6410裸机程序---leds
- OK6410烧写裸机程序到nandflash(改)
- 【OK6410裸机程序】点亮LED
- ok6410串口裸机总结
- OK6410 烧写裸机程序到 nand flash
- 木其工作室(专业程序代写服务)[原]ok6410学习笔记(18.linux串口驱动程序设计)
- 关于ok6410的c语言环境初始化,以及点亮led程序
- ok6410 SD卡烧写裸机程序(支持大文件烧写)
- 在没有仿真器的情况下调试ok6410裸机程序
- OK6410裸机程序---hello world
- OK6410裸机程序(二)——系统时钟
- OK6410裸机程序---hello world
- OK6410裸机程序---hello world
- OK6410裸机程序之开始模板(Linux环境)
- OK6410烧写裸机程序到nandflash,不使用jlink,支持大文件烧写
- OK6410用DNW下载led和ds18b20的裸机程序