数据收发格式
设置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;
}