c
#define GPIO_OUTPUT_IO_0 10
#define GPIO_OUTPUT_PIN_SEL ((1ULL << GPIO_OUTPUT_IO_0))
// 模拟串口0初始化
void iouart0_init(void)
{
gpio_config_t io_conf = {};
// disable interrupt
io_conf.intr_type = GPIO_INTR_DISABLE;
// set as output mode
io_conf.mode = GPIO_MODE_OUTPUT;
// bit mask of the pins that you want to set,e.g.GPIO18/19
io_conf.pin_bit_mask = GPIO_OUTPUT_PIN_SEL;
// disable pull-down mode
io_conf.pull_down_en = 0;
// disable pull-up mode
io_conf.pull_up_en = 0;
// configure GPIO with the given settings
gpio_config(&io_conf);
}
void iouart1_TXD(uint8_t option)
{
if (1 == option) {
gpio_set_level(GPIO_OUTPUT_IO_0, 1);
} else {
gpio_set_level(GPIO_OUTPUT_IO_0, 0);
}
}
/*****************************************
* 函 数 名: iouart1_SendByte
* 功能说明: 模拟串口发送一字节数据
* 形 参:无
* 返 回 值: 无
******************************************/
void iouart1_SendByte(uint8_t datatoSend)
{
uint8_t i, tmp;
// 开始位
iouart1_TXD(0); // 将TXD的引脚的电平置低
esp_rom_delay_us(IO_USART_SENDDELAY_TIME);
for (i = 0; i < 8; i++) {
tmp = (datatoSend >> i) & 0x01;
if (tmp == 0) {
iouart1_TXD(0);
esp_rom_delay_us(IO_USART_SENDDELAY_TIME); // 0
} else {
iouart1_TXD(1);
esp_rom_delay_us(IO_USART_SENDDELAY_TIME); // 1
}
}
// 结束位
iouart1_TXD(1); // 将TXD的引脚的电平置高
esp_rom_delay_us(IO_USART_SENDDELAY_TIME);
}
void USART_Send(uint8_t *buf, uint8_t len)
{
uint8_t t;
for (t = 0; t < len; t++) {
iouart1_SendByte(buf[t]);
}
}
uint8_t esp_gpio_log_vprintf(const char *fmt, va_list vp)
{
static char log_buffer[512];
taskENTER_CRITICAL();
size_t len = vsnprintf(log_buffer, sizeof(log_buffer), fmt, vp);
if (len > sizeof(log_buffer) - 1) {
log_buffer[sizeof(log_buffer) - 1] = 0;
}
USART_Send((uint8_t *)log_buffer, len);
taskEXIT_CRITICAL(); // 退出基本临界区
return len;
}
然后重点来了
结果打印 9600 如下