s3c6410 uart 裸机 轮询 非fifo

发布者:王大雷最新更新时间:2020-03-09 来源: eefocus关键字:s3c6410  uart  裸机  轮询  非fifo 手机看文章 扫描二维码
随时随地手机看文章

/* uart 非中断模式R,轮询,不用fifo

*/

 

#include

#include "uart.h"

#include "gpio.h"

#include "sysc.h"

 

#define UART0 ( ( volatile UART_REGS * ) (UART_BASE))

 

u32 Inp32(u32 xx)

{

return  xx;

}

 

 

 

void GpioInit()

{

// 设置gpio ,使用uart0

u32 TEMP;

TEMP = GPIO->rGPIOACON;

TEMP &= ~(0XFF);

TEMP |= 0X22;

GPIO->rGPIOACON = TEMP;

}

 

 

// SEND 8byte,1 stop bit, no parity

void UartInit()

{

u32 TEMP;

 TEMP = Inp32(UART0->rULCON);

 TEMP |= 0X03;

 UART0->rULCON=TEMP;

 

 // SET RT MODE ,polling mode 

 TEMP = Inp32(UART0->rUCON);

 TEMP &=~(0xf);

 TEMP |= 0X5;

 UART0->rUCON=  TEMP;

 }

 char Getchar()

 {

 u8 TEMP;

while(!(UART0->rUTRSTAT &0X1));

TEMP = UART0->rURXH;

return TEMP;

 }

 

 void Sendchar(char x)

 {

while(!(UART0->rUTRSTAT & 0X4));

UART0->rUTXH = x;

 }

 

 void BaudInit(u32 Baudrate)

 {

 //设置波特率  ,公式给出,参照datasheet

u32 TEMP,temp;

SYSC_GetClkInform();

TEMP = (g_PCLK /(Baudrate*16))-1;

temp = TEMP;

TEMP = (int)TEMP;

UART0->rUBRDIV = TEMP;

temp -= TEMP;

temp = (int)(temp*16);

switch(temp){

case 0: TEMP = 0X0000; break;

case 1: TEMP = 0X0080; break;

case 2: TEMP = 0X0808; break;

case 3: TEMP = 0X0888; break;

case 4: TEMP = 0X2222; break;

case 5: TEMP = 0X4924; break;

case 6: TEMP = 0X4a52; break;

case 7: TEMP = 0X54aa; break;

case 8: TEMP = 0X5555; break;

case 9: TEMP = 0Xd555; break;

case 10: TEMP = 0Xd5d5; break;

case 11: TEMP = 0Xddd5; break;

case 12: TEMP = 0Xdddd; break;

case 13: TEMP = 0Xdfdd; break;

case 14: TEMP = 0Xdfdf; break;

case 15: TEMP = 0Xffdf; break;

}

UART0->rUDIVSLOT = TEMP;

 }

 

 

 int main()

 {

u8 ch;

UartInit();

BaudInit(9600);

 

while(1)

{

Sendchar('x');

ch= Getchar();

if(ch == 'x')

Sendchar('y');

}

}

 

 

可以参照datasheet,要大胆尝试,试一试就出来了


关键字:s3c6410  uart  裸机  轮询  非fifo 引用地址:s3c6410 uart 裸机 轮询 非fifo

上一篇:6410 ad 中断读取数据
下一篇:tiny6410 linux混杂设备 led驱动

推荐阅读最新更新时间:2024-11-06 16:36

S3C2416裸机开发系列二一_Yaffs的移植
Nand作为市面上最主要的非易失性闪存技术之一,应用在各种固态大容量存储解决方案中。由于Nand flash自身的特点,Nand存储器往往需要一款专用的Nand文件系统进行管理。开源的Yaffs文件系统由于其优异的性能,在Nand flash中受到广泛的应用,笔者此处就Yaffs的移植作一个简单的介绍。 1. Yaffs概述 Yaffs是由Aleph One公司所发展出来的Nand flash文件系统,专门为Nand flash存储器设计,适用于大容量的存储设备。在GPL协议下发布,可在其官网上免费获得源码。 Yaffs是基于日志的文件系统,提供了坏块管理、磨损平衡和掉电恢复的健壮性,保证数据在系统对文件系统修改的过程中发生意外
[单片机]
MSP430单片机uart
USART模块分别由波特率部分:波特率发生器,串行通讯接收/发送控制寄存器。接收部分,发送部分,端口IO部分。 利用串口调试软件,向串口发送一个字符,MSP430单片机接收到后从低功耗中唤醒.并将收接缓冲区的字符再发送到软件中.单片机发送完后又进入低功耗状态. #include void main(void) { WDTCTL = WDTPW + WDTHOLD; // 停止WDT UCTL0 = CHAR; // 设串口控制寄存器,设为8位字符格式 UTCTL0 = SSEL0; // 设串口控制寄存器所使用的时钟,选择UCLK = ACLK UBR00 = 0x0D; // 波特率设置32k/2400 - 13.65 UBR1
[单片机]
OK6410裸机之DDR片外内存访问
start.S源码: .globl _start _start: // 硬件相关的设置 // Peri port setup ldr r0, =0x70000000 orr r0, r0, #0x13 mcr p15,0,r0,c15,c2,4 @ 256M(0x70000000-0x7fffffff) // 关看门狗 // 往WTCON(0x7E004000)写0 ldr r0, =0x7E004000 // 伪指令 mov r1, #0 str r1, bl clock_init // 为调用C函数准备环境 ldr sp, =8*1024 bl
[单片机]
mini2440简单的裸机led流水灯代码
MINI2440简单的裸机led流水灯代码 ADS配置target setting的post-liner为ARM formELF language setting的ARM Assembler和ARM C Compile的Target中的Architecture or processor设置为arm920T linker中的ARM linker中output--simple image--RO base设置为0x30000000;options--Image entry point设置为0x30000000;layout--object/symbol设置为Init.o(就是汇编的名字改了后缀.o文件名称) 汇编代码:Init
[单片机]
Stm32使用Usart代码例子轮询、中断、DMA
/* 转载请注明出处:tedeum.iteye.com / 首先是不使用中断的方法使用usart1,管脚pa9,pa10,此方法已在f3discovery上验证通过,来源:https://my.st.com/public/STe2ecommunities/mcu/Lists/cortex_mx_stm32/Flat.aspx?RootFolder=%2Fpublic%2FSTe2ecommunities%2Fmcu%2FLists%2Fcortex_mx_stm32%2Fusart%20code&FolderCTID=0x01200200770978C69A1141439FE559EB459D7580009C4E1
[单片机]
Stm32使用Usart代码例子<font color='red'>轮询</font>、中断、DMA
逻辑分析仪的使用(UART、SPI)
首先上一张接线示意图 上方是UART的接线方式,下方则是SPI的 事实上,这样接就能收到信号了 如果是SPI,要设定自己为主机,UART则没有这个问题 下面来说明逻辑分析仪的界面设定 设定介绍完了 下面首先是UART的界面 如果曾经写过UART传输,应该对这些设定不陌生吧? 波特率、几位数据传输、停止位、奇偶校验。。。 最后的三个选项,应该选Standart(标准)、None就可以了吧 不太清楚是指哪部分,不过,我实测是有波形出来的 UART的部分就结束了,下面是SPI的 上方的4个通道,应该不陌生,就是SPI的通讯方式 接下来的4个,设定高位在前,或是低位在前,然后是几位数据 CPOL和CPHA,如果
[测试测量]
逻辑分析仪的使用(<font color='red'>UART</font>、SPI)
s3c6410的RTC在linux中的驱动(5)
在上一篇中我们在中分析了RTC驱动的注册和注销,重点讲了平台设备驱动的probe函数,最后引出了这篇我们要讲解的内容,那就是下面这个结构体中的一些函数。 static const struct rtc_class_ops s3c_rtcops = { .open= s3c_rtc_open, .release = s3c_rtc_release, .ioctl = s3c_rtc_ioctl, .read_time = s3c_rtc_gettime, .set_time = s3c_rtc_settime, .read_alarm = s3c_rtc_getalarm, .set_alarm = s3c_rtc_seta
[单片机]
<font color='red'>s3c6410</font>的RTC在linux中的驱动(5)
Maxim推出集成振荡器的微型SPI/I²C UART
Maxim推出业内功耗最低、速度最快、尺寸最小的SPI™/I²C接口通信的串行UART。MAX3107的功耗极低,可有效延长便携式设备的电池使用寿命。器件较高的数据速率(24Mbps)和较大空间的FIFO (128字)能够提供额外的缓冲,从而减轻系统微控制器的负担。MAX3107采用节省空间的24引脚(3.5mm x 3.5mm) TQFN封装,比目前市场上的其它串行UART小24%。MAX3107还是业内首款集成振荡器的UART,可使BOM成本平均降低20%。MAX3107非常适合需要高速PROFIBUS DP通信协议的工业现场总线以及低功耗手持式消费类MID (移动网络设备)应用。 移动设备的高速需求
[手机便携]
Maxim推出集成振荡器的微型SPI/I²C <font color='red'>UART</font>
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved