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

本文介绍了一个基于寄存器操作实现的UART串口通信程序。通过直接对UART控制器的寄存器进行读写操作来完成串口的初始化配置,并实现了简单的数据接收与发送功能。代码详细展示了如何设置波特率、数据位数等参数。

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

http://www.open-open.com/code/view/14319342653962015.05#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、付费专栏及课程。

余额充值