day14-UART实验

 数据收发格式

 

 

 设置GPA1CON

 代码部分

在键盘输入2会使LED2熄灭,再输入2会使LED2点亮

#include "exynos_4412.h"

void UART_Init(void){

	//1.将GPA1_0和GPA1_1分别设置为UART2的接受和发送引脚 GPA1CON[7:0]
	//地址为0x11400020
	GPA1.CON = GPA1.CON & (~(0xff))  | (0x22);

	//2.设置UART2的帧格式 ULCON2
	//要求:8位数据位,1位停止位,无检验位,普通模式
	//地址为0x13820000
	UART2.ULCON2 = UART2.ULCON2 & (~(0x7f)) | (0x3);

	//3.设置UART2的接收和发送模式 UCON2
	//要求:轮询模式
	//地址为0x13820004
	UART2.UCON2 = UART2.UCON2 & (~(0xf)) | (0x5);

	//4.设置UART2的波特率为115200 UBRDIV2/UFRACVAL2
	//地址为0x13820028/0x1382002C
	UART2.UBRDIV2 = 53;
	UART2.UFRACVAL2 = 4;
}
void UART_Send(char data){
		//等待发送寄存器为空
		while(!(UART2.UTRSTAT2 & (1<<1)));
		//将要发送的数据写入发送寄存器 UTXH2
		UART2.UTXH2 = data;
}

char UART_Rec_Byte(){
	char data;
	//判断接收寄存器是否接收到了数据
	if(UART2.UTRSTAT2 & 1 ){
		data = UART2.URXH2;
		return data;
	}else{
		return 0;
	}
}

void UART_Send_Str(char * pstr){
	 while(* pstr!='\0'){
	 	UART_Send(*pstr++);
	 }
}

int main()
{
	/*
	char revData;
	UART_Init();
	while(1){
		revData = UART_Rec_Byte();
		if(revData==0){

		}else{
			revData = revData+1;
			UART_Send(revData);
		}
	}
	*/
	GPX2.CON = GPX2.CON & (~(0xf<<28)) | (0x1<<28);
	char revData;
	UART_Init();
	while(1){
		revData = UART_Rec_Byte();
		if(revData=='2'){
			//这里如果想让第7位取反,需要用到异或运算
			GPX2.DAT = GPX2.DAT ^ (1<<7);
		}
	}

	return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值