头文件
#ifndef __LED_H__
#define __LED_H__
#include "stm32mp1xx_gpio.h"
#include "stm32mp1xx_rcc.h"
#include "stm32mp1xx_uart.h"
//引脚编号的封装
#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
//MODER模式寄存器
typedef enum{
INOUT,OUTPUT,ALT,ANLOG
}gpio_moder_t;
//OTYPER输出模式寄存器
typedef enum{
PP,OD
}gpio_otyper_t;
//OSPEEDR输出速率寄存器
typedef enum{
LOW,MED,HIGH,FAST
}gpio_ospeedr_t;
//PUPDR是否需要上下拉电阻寄存器
typedef enum{
NO_PU_PD,PU,PF,RES
}gpio_pupdr_t;
//ODR输出高低电平寄存器
typedef enum{
GPIO_RESET_T,GPIO_SET_T
}gpio_status_t;
typedef struct{
gpio_moder_t moder;//模式寄存器
gpio_otyper_t otyper;//输出类型寄存器
gpio_ospeedr_t ospeedr;//输出速率寄存器
gpio_pupdr_t pupdr;//是否需要上下拉寄存器
}gpio_init_t;
//串口初始化函数
void hal_uatr_4_init();
//GPIO引脚初始化函数 PE10 PF10 PE8
void hal_gpio_init(gpio_t* gpiox, unsigned int pin, gpio_init_t* gpio_init);
//点灯/熄灭
void hal_gpio_write(gpio_t* gpiox, unsigned int pin,gpio_status_t status);
//接收一个字符
char hal_get_char();
//接收一个字符串
char* hal_get_string();
//比较函数
int my_str_cmp(char* string);
typedef struct{
char* cmd_arr;
gpio_t* gpiox;
unsigned int pin;
gpio_status_t status;
}cmd_t;
void delay_ms(int ms);
#endif
函数
#include "led.h"
cmd_t arr[6] = {
[0] = {