[MCU] 【翌创ETEB-6001DPX测评】第二篇 USART打印

常见泽1   2024-11-2 15:10 楼主

串口Printf测试

 

一串口介绍

串口是一种应用十分广泛的通讯接口,可以实现两个设备的相互通讯。USART(通用同步异步收发器)是一个串行通信设备,可以灵活地与外部设备进行全双工数据交换。有别于 USART 还有一个UART,它是在 USART 基础上裁剪掉了同步通信功能,只有异步通信

 

 

二串口硬件

ET6000一共有8个UART接口

image-20241101151106-1.png  

这里使用UART1

image-20241101151106-2.png  

 

    IOC_ConfigStructInit(&Init);

    Init.dir = GPIO_DIR_IN_OUT;

 

    Init.mode = IOC_AF_MODE_1;

    IOC_Config(IOC_PIN_GPIO3_5, &Init);//RXD

    IOC_Config(IOC_PIN_GPIO3_4, &Init);//TXD

 

 

 

三串口结构体比较

 

image-20241101151106-3.png  

 

 

image-20241101151106-4.png  

前面的大体一样,后面的增加了FIFO的门槛值

 

 

四串口PRINTF使用方法

 

第一种方法:常用的方法,使用微库

 

image-20241101151106-5.png  

直接增加fput函数

int fputc(int ch, FILE *f)

{

          DRV_StatusTypeDef status;

        

  UART_TransmitFIFO8BIT(UART1, (uint8_t*)&ch, 1, BLOCK_TRANSMIT_FIFO);

////        //wait Tx-FIFO sendout

   status = UART_WaitTransmitDone(UART1, WAITDONE_TIMEOUT);

    if(status != DRV_OK)

 

    return ch;

}

 

第二种方法,不适用微库

image-20241101151106-6.png  

image-20241101151106-7.png  

增加函数

#if 1

#pragma import(__use_no_semihosting)            

               

struct __FILE

{

         int handle;

 

};

 

FILE __stdout;      

//定义_sys_exit()以避免使用半主机模式   

void _sys_exit(int x)

{

         x = x;

}

//重定义fputc函数

int fputc( int ch, FILE *f)

{

          DRV_StatusTypeDef status;

        

  UART_TransmitFIFO8BIT(UART1, (uint8_t*)&ch, 1, BLOCK_TRANSMIT_FIFO);

////        //wait Tx-FIFO sendout

   status = UART_WaitTransmitDone(UART1, WAITDONE_TIMEOUT);

    if(status != DRV_OK)

 

    return ch;

}

#endif

 

 

五测试结果

image-20241101151106-8.png  

回复评论 (2)

翌创ETEB-6001串口速率可以达到多少?  

在爱好的道路上不断前进,在生活的迷雾中播撒光引
点赞  2024-11-2 23:11
引用: 秦天qintian0303 发表于 2024-11-2 23:11 翌创ETEB-6001串口速率可以达到多少?  

手册里只标注了大于1M 没有测试过最大的

点赞  2024-11-2 23:53
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复