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);
    }
}
相关推荐
陌上花开缓缓归以17 小时前
系统启动失败纪要
arm开发
我是场18 小时前
我的NPI项目之-Touch的EE特性
android·arm开发
陌上花开缓缓归以1 天前
arm linux ddr 内存布局
linux·arm开发
女神下凡1 天前
芯参谋(43):DDR4_电路设计指南
arm开发·单片机·嵌入式硬件·设计规范
晚枫歌F2 天前
DPDK原理以及解析tcp/udp协议包
arm开发
szxinmai主板定制专家2 天前
基于 ARM+FPGA 雕刻机控制系统的设计
arm开发·人工智能·fpga开发·rk3576·半导体设备
女神下凡3 天前
芯参谋(41):DDR2_电路设计指南
arm开发·单片机·嵌入式硬件·设计规范
女神下凡3 天前
芯参谋(40):UFS 电路设计指南
arm开发·单片机·嵌入式硬件·设计规范
一条破秋裤3 天前
Jetson 内核模块编译与板端验证记录
arm开发
aixingkong9213 天前
Agentic AI时代的处理器算力需求和Nvidia、ARM、AMD等大厂的回答
arm开发·人工智能