秦皇岛海港区建设局网站,湖北网站建设网址,知名企业愿景,网站开发各小组互评表完成字符串收发函数的封装并且验证现象#xff0c;一个字符串发送接受后会有‘\n’ \r 
src/uart.c 
#includeuart.hvoid uart4_init()
{//设置UART4的RCc时钟使能//RCC_MP_APB1ENSETR[16]-1RCC-MP_APB1ENSETR | (0x116);//设置GPIOB和GPIOG的时钟…完成字符串收发函数的封装并且验证现象一个字符串发送接受后会有‘\n’ \r 
src/uart.c 
#includeuart.hvoid uart4_init()
{//设置UART4的RCc时钟使能//RCC_MP_APB1ENSETR[16]-1RCC-MP_APB1ENSETR | (0x116);//设置GPIOB和GPIOG的时钟使能//RCC_MP_AHB4ENSETR[6]-1//RCC_MP_AHB4ENSETR[1]-1RCC-MP_AHB4ENSETR | (0x11);RCC-MP_AHB4ENSETR | (0X16);//设置PG11和PB2功能复用为UART4功能//PG11//GPIOG_MODER[23:22]-10GPIOG-MODER  (~(0X322));GPIOG-MODER | (0X222);//GPIOG_AFRH[15:12]-0110   GPIOG-AFRH  (~(0xf12));GPIOG-AFRH | (0x612);//PB2//GPIOB_MODER[5:4]-10//GPIOB_AFRL[11:8]-1000GPIOB-MODER  (~(0x34));GPIOB-MODER | (0X24);GPIOB-AFRL  (~(0xF8));GPIOB-AFRL | (0x88);//禁用串口USART4-CR1 (~0x1);//设置数据8个数据位 CR1[28]-0  CR1[12]-》0USART4-CR1  (~(0X128));USART4-CR1  (~(0X112));//设置没有校验位CR1[10]-0USART4-CR1  (~(0X110));//设置1个停止位CR2[13:12]-00USART4-CR2  (~(0x312));//设置16倍采样 CR1[15]-0USART4-CR1  (~(0X115));//设置波特率为115200 BRR0X22BUSART4-BRR | 0X22B;//设置1分频 PRESC[3:0]-0000USART4-PRESC  (~(0XF));//使能发送器 CR1[3]-1USART4-CR1 | (0X13);//使能接收器 CR1[2]-1USART4-CR1 | (0X12);//使能串口 CR1[0]-1USART4-CR1 | (0X1);}
char buffer[50];
//串口发送一个字符
void putchar(char c)
{//判断发送数据寄存器有没有数据没有数据时可以发送while(!(USART4-ISR(0X17)));USART4-TDRc;//将要发送的数据保存在发送寄存器中while(!(USART4-ISR(0X16)));//数据传输完成函数结束
}
//串口接受一个字符
char getchar()
{char c;//判断是否有数据准备好while(!(USART4-ISR(0X15)));//数据传输完成函数结束cUSART4-RDR;return c;}
//串口发送一个字符串
void puts(char *s)
{//就是一个一个字符发while(*s){putchar(*s);}putchar(\n);//换行putchar(\r);//回车
}//串口接收一个字符串
char *gets()
{unsigned int i;for(i0;i49;i){//1.接收一个字符放在buffer缓冲区中buffer[i]  getchar();//2.接收一个字符回显一个字符putchar(buffer[i]);//enter----\rif(buffer[i]  \r)break;}buffer[i]  \0;//字符串以\0结尾putchar(\n);//字符串输入结束后让光标回到下一行return buffer;
} 
main.c 
#include uart.hint main()
{char c;char *s;uart4_init();//串口初始化while(1){//接收字符串sgets();puts(s);//发送字符串}return 0;
} 
include/uart.h 
#ifndef __UART_H__
#define __UART_H__
#includestm32mp1xx_uart.h
#includestm32mp1xx_gpio.h
#includestm32mp1xx_rcc.hvoid uart4_init();
void putchar(char c);
char getchar();
void puts(char *s);
char *gets();
#endif