UART学习

uart.c

cpp 复制代码
#include "stm32mp1xx_gpio.h"
#include "stm32mp1xx_uart.h"
// UART4_TX : PG11  AF6
// UART4_RX : PB2   AF8
void __uart_init()
{
   	// GPIOB2 设置为复用功能
   	GPIOB->MODER &= (~(0x3 << 4));
   	GPIOB->MODER |= (0x2 << 4);
	GPIOB->AFRL &= (~(0xF << 8));
	GPIOB->AFRL |= (0x8 << 8);
	// GPIOG11 设置为复用功能 
	GPIOG->MODER &= (~(0x3 << 22));
	GPIOG->MODER |= (0x2 << 4);
	GPIOG->AFRH &= (~(0xF << 12));
	GPIOG->AFRH |= (0x6 << 12);
	// 设置数据长度为8位   USART_CR1  
	USART4->CR1 &= (~(0x1 << 28));
	USART4->CR1 &= (~(0x1 << 12));
	// 采样率为16位 
	USART4->CR1 &= (~(0x1 << 15));
	// 设置波特率为115200bps 
	USART4->PRESC &= (~(0xF << 0));
	USART4->BRR = 0xD0;
	// 停止位1位
	USART4->CR2 &= (~(0x3 << 12));
	// 使能USART串口 
	USART4->CR1 |= (0x1 << 0);
	// 使能USART的发送或者接收功能 
	USART4->CR1 |= (0x1 << 3);
	USART4->CR1 |= (0x1 << 2);

}

void __uart_putc(const char data)
{
	while (!(USART4->ISR & (0x1 << 7)));
	USART4->TDR = data;
	if (data == '\n')
		__uart_putc('\r');
}
void __uart_puts(const  char  *pstr)
{
	while(*pstr != '\0')
		__uart_putc(*pstr++);
}

char __uart_getc(void)
{
	char ch;
	while(!(USART4->ISR & (0x1 << 5)));
	ch = (char)USART4->RDR;
	return ch;
}

uart.h

cpp 复制代码
#ifndef __UART_H__
#define __UART_H__

void __uart_init();

void __uart_putc(const char data);

void __uart_puts(const  char  *pstr);

char __uart_getc(void);

#endif

mian,c

cpp 复制代码
main()
{
    //1.串口的初始化
    __uart_init();
    char r,t;

    while(1)
    {
    //2.接收一个字节数据
    r = __uart_getc();
    printf("%c\n",r);
    //3/发送一个字节数据
    printf("请输入:\n");
    scanf("%c",&t);
    __uart_putc(t);
    }
}
相关推荐
振南的单片机世界10 小时前
启动流程:上电先取栈顶和复位向量,再进main
arm开发·stm32·嵌入式硬件
振南的单片机世界2 天前
HAL_Delay(1000)真准吗?SysTick的1ms基准从哪来
arm开发·stm32·单片机·嵌入式硬件
带土12 天前
3. ARM寄存器组织
arm开发
xiangw@GZ3 天前
ARM TCM 紧耦合内存与 Cache 架构区别
arm开发·架构
XINVRY-FPGA3 天前
XCKU035-2FBVA676I AMD Xilinx Kintex UltraScale FPGA
arm开发·嵌入式硬件·网络安全·fpga开发·硬件工程·信号处理·fpga
少年、潜行4 天前
IAR FOR ARM 历史版本安装包、安装、注册流程【百度网盘资源】
arm开发·iar·iar历史版本·iar安装
Aaron15884 天前
无人机反制中AOA+TDOA联合定位技术与雷达探测定位技术的应用对比分析
arm开发·嵌入式硬件·fpga开发·硬件工程·无人机·信息与通信·信号处理
m0_747124534 天前
ARM架构基础知识扫盲
arm开发·架构
海绵宝宝de派小星4 天前
MCP与A2A协议深度解析:Agent时代的“TCP/IP“如何诞生
arm开发·网络协议·tcp/ip·ai
Zephyrus_20234 天前
LSM6DSV16X驱动移植+调试
c语言·arm开发