实验1、在键盘输入一个字符,字符进行加1,并且回显到串口工具

文章描述了一个基于STM32MP1xx微控制器的UART4接口的初始化过程,包括GPIO配置和USART寄存器设置。此外,还定义了发送字符和字符串以及接收字符的函数。在主函数中,实现了接收到字符后加1并回传的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

uart.h

#ifndef __UART_H__
#define __UART_H__ 
#include "stm32mp1xx_uart.h"
#include "stm32mp1xx_gpio.h"
#include "stm32mp1xx_rcc.h"


void hal_uart4_init();


void put_char(const char str);

void put_string(const char* string);

char get_char();

char get_string();


#endif

uart.c

#include "uart.h"

void hal_uart4_init()
{
	MP_AHB4ENSETR=MP_AHB4ENSETR|(0x1<<1);
	MP_AHB1ENSETR=MP_AHB1ENSETR|(0x1<<16);
	GPIOB->MODER=GPIOB->MODER&(~(0x3<<4));
	GPIOB->MODER=GPIOB->MODER|(0x1<<5);
	GPIOB->AFRL=GPIOB->AFRL&(~(0xf << 8));
	GPIOB->AFRL=GPIOB->AFRL|(0x1<<11);



	MP_AHB4ENSETR=MP_AHB4ENSETR|(0x1<<6);
	GPIOG->MODER=GPIOG->MODER&(~(0x3<<22));
	GPIOG->MODER=GPIOG->MODER|(0x1<<23);
	GPIOG->AFRH=GPIOG->AFRH&(~(0xf<<12));
	GPIOG->AFRH=GPIOG->AFRH|(0x3<<13);



	USART4->CR1=USART4->CR1&(0x0<<28);
	USART4->CR1=USART4->CR1&(0x0<<12);
	USART4->CR1=USART4->CR1&(0x0<<15);
	USART4->CR1=USART4->CR1&(0x0<<10);
	USART4->CR1=USART4->CR1|(0x0<<3);
	USART4->CR1=USART4->CR1|(0x0<<2);
	USART4->CR1=USART4->CR1|(0x0<<0);
	USART4->CR2=USART4->CR2&(~(0x3<<12));
	USART4->BRR=USART4->BRR&(~(0xffff<<0));
	USART4->BRR=USART4->BRR|(0x225<<0);
	USART4->PRESC=USART4->PRESC&(~(0xf<<0));


}

void put_char(const char str)
{
	while(!(USART4->ISR & (0x1 << 7)));

	USART4->TDR=str;
	while(!(USART4->ISR & (0x1 << 6)))
}

void put_string(const char* string)
{
	
}

char get_char()
{
	
}

char get_string()
{
	char sav;
	while(!(USART4->ISR & (0x1 << 5)));
	sav=USART4->RDR;


	return sav;
}

main.c

#include "led.h"
extern void printf(const char *fmt, ...);
void delay_ms(int ms)
{
	int i,j;
	for(i = 0; i < ms;i++)
		for (j = 0; j < 1800; j++);
}


int main()
{
	hal_uart4_init();
	while(1)
	{
		put_char(get_char()+1);	
	}
	return 0;
}

 剩下没时间写了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值