A7核:
创建一个uart.h文件
将要引用的头文件
stm32mp1xx_gpio.h
stm32mp1xx_rcc.h
stm32mp1xx_uart.h写入
写入要用到的函数
初始化函数uart_init()
发送一个字符put_char()
接受一个字符get_char()
发送一个字符串put_string()
接受一个字符串get_string()
创建一个uart.h
在uart_init()中
将RCC寄存器使能,给GPIOB,GPIOG,UART4使能
给PB2和PG11引脚设置为复用功能UART4_Rx/Tx
因为后续会出现吃字符的问题,所以要调用一个延时函数
设置USART的参数
设置8位的数据位
设置16倍采样率
无奇偶校验位
将发送和接受寄存器使能
串口使能
在put_char()中
形参得加入一个你要输入的字符串 char str
验证发送寄存器有无数据
while(!(USART4->ISR & (0x1<<7)));
无数据循环,有数据往下运行
发送数据(把数据填入到TDR寄存器中)
判断数据是否发送完成
未完成等待,完成结束函数
在get_char()中
验证接收寄存器有无数据
while(!(USART4->ISR &(0x1<<5)));
无数据等待,有数据往下运行
读数据(把RDR寄存器中的值赋给创建的变量)
将变量返回
在put_string()中
形参得加入一个你要输入的字符串 char *str
判断是否为'\0',是的话结束发送,不是就运行循环内容
验证发送寄存器有无数据
while(!(USART4->ISR & (0x1<<7)));
无数据循环,有数据往下运行
发送数据(把数据填入到TDR寄存器中)
判断数据是否发送完成
未完成等待,完成结束函数
在get_string()中
因为最多收纳50个字符
循环49次,49次内有回车就结束,把创建的buf返回,没有则在49位加入一个'\0'并结束接收
验证接收寄存器有无数据
while(!(USART4->ISR &(0x1<<5)));
无数据等待,有数据往下运行
读数据(把RDR寄存器中的值赋给创建的变量)
将变量返回
在main.c函数中将函数填入
M4核: