CH573串口UART1学习笔记

该文介绍了基于CH573微控制器的UART1串口配置步骤,包括设置晶振、管脚初始化、串口配置和发送数据。文章详细讨论了波特率计算和寄存器配置,如FIFO控制、线路控制和中断使能等,并提到了库函数与直接寄存器操作的区别。

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

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

主要依据peripheral例程,学习CH573串口UART1工作流程。


一、使用步骤

1.引入库

SetSysClock(CLK_SOURCE_PLL_60MHz);

初始化晶振,这个不多说了:

2.UART1的管脚初始化

GPIOA_SetBits(bTXD1);

单独把PA9拉高了。

GPIOA_ModeCfg(bTXD1, GPIO_ModeOut_PP_5mA);

单独设置了PA9,1:引脚为输出模式;PA 引脚电流驱动能力5mA 级别。

2.UART1的串口配置

UART1_DefInit();

这部分是难点 UART1_BaudRateCfg(115200);这块主要是通过赋值波特率除数锁存器,来达到波特率的设置。
公式:除数 = 串口内部基准时钟 Fuart / 16 / 所需通讯波特率。
先乘10后除10的操作能理解,但除数只除了个8,然后乘10加5再除10就理解不了啦。也许是晶振补偿,能力有限理解不了此处的操作,欢迎有懂的朋友指正。


R8_UART1_FCR : FIFO 控制寄存器
// 接收 FIFO 的中断和硬件流控制的触发点选择:10:4 字节;
//即接收满 4 个字节产生接收数据可用的中断,并在使能硬件流控制时自动
//无效RTS 引脚。

RB_FCR_TX_FIFO_CLR、RB_FCR_RX_FIFO_CLR
//发送、接收 FIFO 数据清空使能位,自动清零

RB_FCR_FIFO_EN //启用 8 字节 FIFO


R8_UART1_LCR : 线路控制寄存器
//RB_LCR_WORD_SZ 串口数据长度 11:8 个数据位


R8_UART1_IER :中断使能寄存器
//RB_IER_TXD_EN 串口 TXD 引脚输出使能位

R8_UART1_DIV : 预分频除数寄存器
//用于计算串口的内部基准时钟,低 7 位有效。
//公式:除数 = Fsys * 2 / 串口内部基准时钟,最大值 127。


3.UART1的发送

PRINT("%s\n", VER_LIB);

这里用了print重定义,#define PRINT(X…) printf(X)
int printf (const char *__restrict, …)
_ATTRIBUTE ((format (printf, 1, 2)));


总结

总的来说还是挺简洁的,跟STM32代码比起来,寄存器的配置都大同小异,不过习惯了库函数可能不太习惯类似51的配置方法,基本知道怎么用就行!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值