c语言串口测试,C语言串口测试程序代码

本文介绍了一个基于UART0的串口通信程序实现,包括UART控制器寄存器的初始化配置及串口数据的接收与发送过程。通过设置不同的寄存器值来完成波特率配置、数据位长度等,并利用延时函数控制数据传输速率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include

unsigned int UART0_ADDR = 0x20080000;

unsigned int retu=0;

int i=0;

void delay_x(unsigned short cycles)

{

unsigned short t;

t = cycles;

while ( --t != 0 );

}

int main()

{

///////////初始化部分////////////////////////////////////////////////////

retu = *(unsigned int *)(UART0_ADDR + 0X30);//uart_cr

*(unsigned int *)(UART0_ADDR + 0X30) = 0x300;

// retu = *(unsigned int *)(UART0_ADDR + 0X24);//ibrd

// retu = *(unsigned int *)(UART0_ADDR + 0X28);//fbrd

*(unsigned int *)(UART0_ADDR + 0X24) = 1;

*(unsigned int *)(UART0_ADDR + 0X28) = 40;

*(unsigned int *)(UART0_ADDR + 0X30) = 0x300;

*(unsigned int *)(UART0_ADDR + 0X2c) = 0x60;//UART_LCR_H

*(unsigned int *)(UART0_ADDR + 0X34) = 0x12; //UART_IFLS

*(unsigned int *)(UART0_ADDR + 0X38) = 0x0;//UART_IMSC

retu = *(unsigned int *)(UART0_ADDR + 0X30);//uart_cr

*(unsigned int *)(UART0_ADDR + 0X30) = retu | 0x01;//使能串口

//////////////////////////////////////////////////////////

while(1)

{

// retu = *(unsigned int *)(UART0_ADDR + 0X18);

// retu = retu&0x40;

if(((*(unsigned int *)(UART0_ADDR + 0X18))&0x40)==0x40)

{

retu = *(unsigned int *)(UART0_ADDR + 0X00);

retu = retu&0xff;

*(unsigned int *)(UART0_ADDR + 0X00) = retu;

}

retu = 0;

delay_x(0X7000);

}

return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值