实验要求:串口输入语句控制LED灯亮灭
port.h
#ifndef __PORT_H__
#define __PORT_H__
#include "stm32mp1xx_uart.h"
#include "stm32mp1xx_gpio.h"
#include "stm32mp1xx_rcc.h"
extern void printf(const char *fmt, ...);
//LED灯
typedef enum{
LED1 = 1,
LED2,
LED3,
}led_t;
//LED灯状态
typedef enum{
LED_ON,
LED_OFF,
}status_t;
//声明一个结构体
typedef struct{
char* cmd_arr; //字符串
led_t led; //哪盏LED灯
status_t status; //LED灯状态
void (*led_status_t)(led_t led,status_t status); //函数指针
}cmd_t;
//LED等初始化
void hal_led_init();
//uart初始化
void hal_uart4_init();
//函数实现
void led_status(led_t led,status_t status);
//字符串比较函数
int my_strcmp(const char* src,const char* dest);
//查找命令字符串
cmd_t* find_command(const char* str);
//发送一个字符
void put_char(const char str);
//发送一个字符串
void put_string(const char* string);
//接收一个字符
char get_char();
//接收一个字符串
char* get_string();
#endif
port.c
#include "port.h"
extern void delay_ms(int ms);
//结构体初始化
cmd_t cmd_arr[6] = {
[0] = {
.cmd_arr = "led1on",
.led = LED1,
.status = LED_ON,
.led_status_t = led_status,
},
[1] = {
.cmd_arr = "led1off",
.led = LED1,
.status = LED_OFF,
.led_status_t = led_status,
},
[2] =