【翌创ETEB-6001DPX测评】第二篇 USART打印
<p align="center"><b>串口</b><b>Printf</b><b>测试</b></p><p > </p>
<p ><b>一串口介绍</b></p>
<p >串口是一种应用十分广泛的通讯接口,可以实现两个设备的相互通讯。USART(通用同步异步收发器)是一个串行通信设备,可以灵活地与外部设备进行全双工数据交换。有别于 USART 还有一个UART,它是在 USART 基础上裁剪掉了同步通信功能,只有异步通信</p>
<p > </p>
<p > </p>
<p ><b>二串口硬件</b></p>
<p >ET6000一共有8个UART接口</p>
<p > </p>
<p >这里使用UART1</p>
<p > </p>
<p > </p>
<p ><b> </b> IOC_ConfigStructInit(&Init);</p>
<p > Init.dir = GPIO_DIR_IN_OUT;</p>
<p > </p>
<p > Init.mode = IOC_AF_MODE_1;</p>
<p > IOC_Config(IOC_PIN_GPIO3_5, &Init);//RXD</p>
<p > IOC_Config(IOC_PIN_GPIO3_4, &Init);//TXD</p>
<p > </p>
<p > </p>
<p > </p>
<p ><b>三串口结构体比较</b></p>
<p > </p>
<p > </p>
<p > </p>
<p > </p>
<p > </p>
<p >前面的大体一样,后面的增加了FIFO的门槛值</p>
<p > </p>
<p > </p>
<p ><b>四串口</b><b>PRINTF</b><b>使用方法</b></p>
<p > </p>
<p >第一种方法:常用的方法,使用微库</p>
<p > </p>
<p > </p>
<p >直接增加fput函数</p>
<p >int fputc(int ch, FILE *f)</p>
<p >{</p>
<p > DRV_StatusTypeDef status;</p>
<p > </p>
<p > UART_TransmitFIFO8BIT(UART1, (uint8_t*)&ch, 1, BLOCK_TRANSMIT_FIFO);</p>
<p >//// //wait Tx-FIFO sendout</p>
<p > status = UART_WaitTransmitDone(UART1, WAITDONE_TIMEOUT);</p>
<p > if(status != DRV_OK)</p>
<p > </p>
<p > return ch;</p>
<p >}</p>
<p > </p>
<p >第二种方法,不适用微库</p>
<p > </p>
<p > </p>
<p >增加函数</p>
<p >#if 1</p>
<p >#pragma import(__use_no_semihosting) </p>
<p > </p>
<p >struct __FILE</p>
<p >{</p>
<p > int handle;</p>
<p > </p>
<p >};</p>
<p > </p>
<p >FILE __stdout; </p>
<p >//定义_sys_exit()以避免使用半主机模式 </p>
<p >void _sys_exit(int x)</p>
<p >{</p>
<p > x = x;</p>
<p >}</p>
<p >//重定义fputc函数</p>
<p >int fputc( int ch, FILE *f)</p>
<p >{</p>
<p > DRV_StatusTypeDef status;</p>
<p > </p>
<p > UART_TransmitFIFO8BIT(UART1, (uint8_t*)&ch, 1, BLOCK_TRANSMIT_FIFO);</p>
<p >//// //wait Tx-FIFO sendout</p>
<p > status = UART_WaitTransmitDone(UART1, WAITDONE_TIMEOUT);</p>
<p > if(status != DRV_OK)</p>
<p > </p>
<p > return ch;</p>
<p >}</p>
<p >#endif</p>
<p > </p>
<p > </p>
<p ><b>五测试结果</b></p>
<p > </p>
<p>翌创ETEB-6001串口速率可以达到多少? </p>
秦天qintian0303 发表于 2024-11-2 23:11
翌创ETEB-6001串口速率可以达到多少?
<p>手册里只标注了大于1M 没有测试过最大的</p>
页:
[1]