S3C2440之UART操作(FIFO中断模式)

发布者:Joyful444Life最新更新时间:2016-04-20 来源: eefocus关键字:S3C2440  UART操作  FIFO中断模式 手机看文章 扫描二维码
随时随地手机看文章
关于串口的知识
 
3个独立的串口,每一个都可以利用DMA

和中断方式操作。每个包含2个64字节FIFO,一个接,一个发。
 
非FIFO模式相当于FIFO模式的一个寄存器缓冲模式。
 
每一个UART有7种状态,overrun错误,校验错误,帧错误,断点,接收缓冲区准备好,发送缓冲区为空,发送移位寄存器为空。
 
当接收移位寄存器中的数据传给FIFO的时候,且接收的数据触发了Rx FIFO的阀值,Rx中断产生了。
 
发送器中FIFO的还未发得数据到达Tx FIFO阀值的时候,Tx中断产生了。(我觉得应该理解为:发送器中FIFO发送结束,即为空的时候产生中断。)
 
 
功能:在串口上输入16字节,包括回车,然后会把输入的字符回显在串口终端上。
 
 
程序代码:
 
//函数声明
void Uart_init(void);
void int_init(void);
void __irq Uart0(void);
void Main(void);


//缓存
static unsigned char mywords[100] = {0,0};
static int data_is_ready = 0;  
//初始化uart
void Uart_init(void)
{
//初始化引脚
rGPHCON = 0x00faaa;//把引脚设置为TXD0,和RXD0模式
rGPHUP  = 0x7ff;  //不加上拉电阻
//初始化UART
rULCON0 = 0x03; //每次发送8位数据,一个停止位,无校验,普通模式
rUCON0 = (0x05) | (1<<9);//设置接收和发送都是用中断的方式
rUFCON0 = (0x3<<6) | (0x2<<4) | (0x01<<0); //使能FIFO,发送48字节,接收16字节
rUMCON0 = 0;
//设置时钟频率
rUBRDIV0 = 26;
 }
 //初始化中断
void int_init(void)
{
rINTMOD=0x0;//中断模式寄存器
    pISR_UART0 = (int)Uart0;//设中断服务函数地址
    rINTSUBMSK = ~(0x3);    //打开UART0发送和接收中断屏蔽
rINTMSK = ~(0x1<<28);   //打开UART0中断屏蔽
//rSUBSRCPND=(BIT_SUB_TXD0); 
}




void Main(void)
{
MMU_Init();
int_init();
Uart_init();
while(1);
}


//中断处理函数
void __irq Uart0(void)
{
unsigned char *ps = mywords;
int i;
if(rSUBSRCPND & BIT_SUB_RXD0)  //接收中断
{
rINTSUBMSK |= BIT_SUB_RXD0;  
while(((rUFSTAT0&0x1f)>0)) 

            *ps++ = rURXH0;  
        }  
        data_is_ready = 1;        
        rSUBSRCPND = BIT_SUB_RXD0;  
}
//发送中断
else if(rSUBSRCPND & BIT_SUB_TXD0) 
{
rINTSUBMSK |= BIT_SUB_TXD0;    
          
        while((!(rUFSTAT0&(1<<14))) && (*ps != '\r'))  
        {  
           rUTXH0 = *ps++;          
           for(i=0; i<100;i++);  
        }     
          
  
        data_is_ready = 0;  
  
        rSUBSRCPND = BIT_SUB_TXD0;  
   
    rSRCPND = BIT_UART0;  
    rINTPND = BIT_UART0;  
    if(data_is_ready)  
        rINTSUBMSK &= ~(BIT_SUB_TXD0);     
    else  
        rINTSUBMSK &= ~(BIT_SUB_RXD0); 
        //rINTSUBMSK &= ~(BIT_SUB_TXD0);
}
 
经测试可以完成功能。

 


关键字:S3C2440  UART操作  FIFO中断模式 引用地址:S3C2440之UART操作(FIFO中断模式)

上一篇:arm指令为什么比thumb指令性能好
下一篇:ARM ADS汇编和Gnu汇编的转换

推荐阅读最新更新时间:2024-03-16 14:51

Linux驱动:s3c2440 lcd 驱动分析
一,前言 s3c2440 lcd 驱动分析,涉及到的内容有,LCD图像显示原理、s3c2440的LCD控制器的操作、LCD驱动使用平台总线-设备-驱动模型的实例、LCD相关参数的设置、fb字符设备驱动实例、framebuffer的注册和管理、以及一次LCD显示的完整过程分析。 二,LCD原理和硬件分析 2.1 LCD原理解析 SDRAM:在SDRAM中申请了一块连续的内存作为LCD显示数据的存储,叫做显存(framebuffer)。 LCD控制器:LCD控制器通过硬件电路和LCD屏连接。 LCD屏:作为一个外设通过硬件电路和MCU(引脚配置为LCD引脚)连接。 图像在LCD屏上显示,可以看成是LCD控制器先从显存中取出一帧
[单片机]
S3C2440—6.串口的printf实现
一.框架 在之前STM32的学习中,我在串口输出调试信息的时候,经常采用printf()函数作为串口输出函数,这样不仅方便调试而且代码易读。 在S3C2440的学习中,对于UART同样需要对串口输出信息进行调试,那么在这里可不可以使用printf函数呢? 当然是可以的,不过相比于STM32中简单的配置,S3C2440中对printf的使用要深入到printf函数的原理,将printf函数进行彻头彻尾的刨析,然后结合底层的UART输出,使用printf打印调试信息,其实现的前提是: UART底层的putchar函数 了解printf函数中,固定参数和可变参数 会利用固定参数以及格式字符推出可变参数 根据不同的格式字符输出
[单片机]
<font color='red'>S3C2440</font>—6.串口的printf实现
GNU ARM汇编--(十)s3c2440的RTC
RTC 概述 在系统电源关掉时RTC可以在备份电池的支持下来工作.RTC可以使用STRB/LDRB指令传输8bit的BCD值到CPU.数据包括秒,分,时,日期,天,月和年.RTC工作在外部32.768KHz的晶振下,而且有报警功能. 属性 BCD:秒,分,时,日期,天,月和年 闰年产生器 报警功能:报警中断 从power-off模式唤醒 独立的电源管脚(RTCVDD) 为RTOS kernel time tick支持毫秒级的tick. 闰年产生器 闰年产生器通过BCDDATA,BCDMON和BCDYEAR来决定每个月最后一天的日期.一个8bit的计数器只能表示两个BCD码,所以无法决定'
[单片机]
ARM-Linux s3c2440 之中断分析(二)
软件篇: 上一篇文章回顾了s3c2440的中断控制器原理的相关硬件知识,有了这个基础再来分析Linux中的软件分析方式,心里就有底了。面对浩瀚如海的Linux源代码,s3c2440的中断到底是怎样呢,如何处理,如何实现的呢?一步一步来揭开它神秘的面纱吧,当然需要从Linux内核源码入手! 在Linux中start_kernel()时会进行体系结构的初始化:init_IRQ(), 故名思议,其源代码如下: view plain copy void __init init_IRQ(void) { intirq; for(irq = 0; irq NR_IRQS; i
[单片机]
S3C2440的中断的那些事儿(一) 汇编的讲解
1. ARM的中断模式有7种: 1. 用户模式: 用于平时的程序运行 2. 快速中断模式: 用于高速数据传输或者通道处理, 此模式的优先级最高 最容易被触发 32个中断只能有一个快速中断触发 3. 中断模式:用于普通的中断模式 4. 管理模式:操作系统使用的保护模式 5. 数据访问终止模式: 当数据或指令与读取终止时候进入此模式 6. 系统模式: 运行具有特权的操作系统任务
[单片机]
<font color='red'>S3C2440</font>的中断的那些事儿(一) 汇编的讲解
S3C2440原理图导读
声卡 可以看到左边的I2S线 2440中有I2S控制器,可以通过I2S控制器,将声音信息传给中间的芯片 然后芯片驱动右边的喇叭发声 途中标错了,下面的是喇叭,上面是耳机接口 这块是麦克风,可以通过I2S接口将存储的音频读出来,就是录音的效果 网卡 如何访问? 看片选引脚,再在2440的手册中找到内存控制器 查看内存映射图 再配置相应地址即可 其他的地址 这个DM9000比较奇怪,只有一个地址引脚CMD 引脚为1,可以访问命令寄存器 引脚为0,可以访问数字寄存器 通过这个引脚,可以操作整个DM9000读写数据 如何访问 基地址为0x2000,0000 为了配置CMD引脚 CMD为0,地址为0x
[单片机]
<font color='red'>S3C2440</font>原理图导读
S3C2440时钟体系分析
FCLK 时钟用于CPU HCLK时钟用于AHB bus 外设 PCLK 时钟用于 APB bus 外设 S3C2440 有两个锁相环(PLLs), 一个用于FCLK,HCLK,PCLK 另一个专门用于USB 模块 时钟控制逻辑可以在没有PLL的情况下制作慢速时钟,并通过软件将时钟连接/断开与每个外围模块的连接,从而降低了功耗。 通过在片内集成的2个锁相环:MPLL和UPLL,可对输入的Fin=12MHz的晶振频率进行倍频。S3C2440使用了三个倍频因子MDIV、PDIV和SDIV来设置倍频,通过寄存器MPLLCON和UPLLCON可设置倍频因子。其中MPLLCON寄存器用于设置处理器内核时钟主频FCLK,其输入输
[单片机]
<font color='red'>S3C2440</font>时钟体系分析
基于LabVIEW8.6和S3C2440的手持数字波形表的界面设计
    将LabVIEW设计的虚拟仪器程序移植到运行WindowsCE的便携式手持设备上。可以极大地提高嵌入式系统软件开发效率。具体提出一种有效解决数据波形交替显示的界面设计,阐述了如何使用LabVIEW的触摸屏toueh panel模块开发的数字波形表用于Windows CE 5.0设备的测试项目的案例。 1 开发平台简介 1.1 基础平台     本文设计的数字波形表采用高性能、低功耗、高集成度的S3C2440A微处理器。触摸屏配合采用S3C2440A的高速处理器驱动,具有更好的视频显示效果。 1.2 软件平台    LabVIEW是美国国家仪器公司推出的一种虚拟仪器开发平台。LabVIEW包含有很多的
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
更多每日新闻
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved