GD32F30x gpio 模拟串口

最近在做一个项目时候,发现之前工程师选择的片上资源相对紧张,仅有2个串口,而且已经都被占用了。考虑使用iic通信但又需要对面设备实现模拟IIC从机,相对麻烦。使用spi的话,总线数变多,不考虑。那么问题来了,在片上资源紧张的情况下,我该如何通过拓展已有的资源增加一个通信方式呢?答案:模拟串口。

目前只实现了TXD部分,RXD部分优化中。话不多说,上代码

uart_sw.h

#ifndef SOFTWARE_UART_H
#define SOFTWARE_UART_H

#include "gd32f30x_it.h"
#include "main.h"
#include "systick.h"
#include "gd32f30x.h"
#include "gd32f30x_gpio.h"


#ifdef __cplusplus
 extern "C" {
#endif

#define UART_SEND_MAX_LEN	100

typedef enum __uart_send_status_t{
	UART_SEND_STATUS_STOP = 0,
	UART_SEND_STATUS_START,
	UART_SEND_STATUS_SENDING,
}uart_send_status_t;

typedef enum __uart_recv_status_t{
	UART_RECV_STATUS_STOP = 0,
	UART_RECV_STATUS_START,
	UART_RECV_STATUS_RECVING,
}uart_recv_status_t;

typedef enum __uart_send_step_t{
	UART_SEND_STEP_ZEO = 0,
	UART_SEND_STEP_FST = 1,
	UART_SEND_STEP

你可能感兴趣的:(MCU_32-Advanced,单片机,arm开发)