uart4.h
#ifndef __UART4_H__
#define __UART4_H__
#include "stm32mp1xx_rcc.h"
#include "stm32mp1xx_gpio.h"
#include "stm32mp1xx_uart.h"
//uart4初始化
void hal_uart4_init();
//发送一个字符
void put_char(const char str);
//发送一个字符串
void put_string(const char* string);
//接收一个字符
char get_char();
//接收一个字符串
char* get_string();
#endif
gpio.h
#ifndef __GPIO_H__
#define __GPIO_H__
//寄存器封装
typedef struct{
volatile unsigned int MODER;
volatile unsigned int OTYPER;
volatile unsigned int OSPEEDR;
volatile unsigned int PUPDR;
volatile unsigned int IDR;
volatile unsigned int ODR;
}gpio_t1;
#define GPIOE1 ((gpio_t1*)0x50006000)
#define GPIOF1 ((gpio_t1*)0x50007000)
#define RCC_AHB4_ENSETR (*(volatile unsigned int*)0x50000A28)
//封装引脚
#define GPIO_PIN_0 0
#define GPIO_PIN_1 1
#define GPIO_PIN_2 2
#define GPIO_PIN_3 3
#define GPIO_PIN_4 4
#define GPIO_PIN_5 5
#define GPIO_PIN_6 6
#define GPIO_PIN_7 7
#define GPIO_PIN_8 8
#define GPIO_PIN_9 9
#define GPIO_PIN_10 10
#define GPIO_PIN_11 11
#define GPIO_PIN_12 12
#define GPIO_PIN_13 13
#define GPIO_PIN_14 14
#define GPIO_PIN_15 15
//模式寄存器封装
typedef enum{
INPUT,
OUTPUT,
ALT,
ANALOG
}gpio_moder_t;
//输出类型寄存器封装
typedef enum{
PP,
OD
}gpio_otyper_t;
//输出速率寄存器封装
typedef enum{
LOW,
MED,
HIGH,
VERY_HIGH
}gpio_ospeedr_t;
//是否需要上下拉电阻封装
typedef enum{
NO_PUPD,
PU,
PD
}gpio_pupdr_t;
//输出高低电平寄存器封装
typedef enum{
GPIO_RESET,
GPIO_SET
}gpio_status_t;
//封装初始化结构体