【OK6410裸机程序】串口初始化
来源:互联网 发布:淘宝商品页面设计 编辑:程序博客网 时间:2024/04/29 07:49
S3C6410串口可以中作在三种模式:中断,轮询,DMA;按是否使用FIFO又分为两类。
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寄存器中的收发状态。
0 0
- 【OK6410裸机程序】串口初始化
- 【OK6410裸机程序】时钟初始化
- OK6410裸机程序(四)——DDR初始化
- OK6410裸机程序
- OK6410裸机程序---leds
- OK6410裸机程序
- OK6410裸机程序---leds
- OK6410裸机程序 ----led
- OK6410裸机程序---hello world
- OK6410裸机程序---hello world
- OK6410裸机程序---hello world
- 【OK6410裸机程序】点亮LED
- 【OK6410裸机程序】DDR始化
- 【OK6410裸机程序】NAND Flash
- 【OK6410裸机程序】异常处理
- 【OK6410裸机程序】按键中断
- 【OK6410裸机程序】LCD驱动
- 只用串口和网络裸机开发ARM程序(OK6410开发板)纯(转)
- Java中对象的初始化和回收
- 校园的一角
- 一步一步解析java排序算法---堆排序(最大堆)
- Android -- Wifi的forget()操作
- 结构体的内存空间分配原理
- 【OK6410裸机程序】串口初始化
- 写好用户故事的10个提示
- String 如何处理 + 优化
- Codeforces Round #367 (Div. 2) D. Vasiliy's Multiset (01trie树)
- 【数据结构】C语言线性表操作
- window系统安装mysql服务
- 输入输出(入门经典)
- Lowest Common Ancestor of a Binary Search Tree
- 关于实习和读研的感悟