前言
写文章的目的是想通过记录自己的学习过程,以便以后使用到相关的知识点可以回顾和参考。
实现流程
1、复用IO引脚:通过板子原理图找到对应的UART引脚,然后通过GPIOXALTFN0或者GPIOXALTFN1把引脚复用为UART功能,引脚的电气特性暂时用不上,设置默认。
2、设置uart时钟:通过UARTCLKGEN0L寄存器选择任意一个PLLx作为时钟源,然后设置分频得到最终的Uart_Clk串口时钟,最后通过UARTCLKENB使能串口时钟
3、初始化uart:通过ULCON设置数据模式为:8数据位,1停止位,无校验位,正常模式,然后通过UBRDIV和UFRACVAL设置串口波特率,前者是整数部分,后者是小数部分,最后通过UCON使能接收和发送,同时设置为接收发送轮询模式。
4、实现接收函数getc,发送函数putc,puts。
具体实现过程及部分代码
1、复用IO引脚
void uart_io_init()
{
/*GPIOD的19引脚复用为TXD1,ALT1的[7:6]bit=01,GPIOD的引脚15复用为RXD1,ALT0的[31:30]bit=01*/
GPIOD->GPIO_ALTFN1 &= (~(0x3<<6));
GPIOD->GPIO_ALTFN1 |= (0x1<<6);
GPIOD->GPIO_ALTFN0 &= (~(0x3<<30));
GPIOD->GPIO_ALTFN0 |= (0x1<<30);
}
2、设置uart时钟
void uartclk_init(UartClk_Type *Base)
{
Base->UARTCLKENB &= ~(1<<2); /*关闭uartclk*/
Base->UARTCLKGEN0L &= (~(

最低0.47元/天 解锁文章
1453

被折叠的 条评论
为什么被折叠?



