|
![](static/image/common/ico_lz.png)
楼主 |
发表于 2018-2-9 09:52:46
|
显示全部楼层
这种方式的话,需要用户自己写个fpuc和fgetc,以我们的板子为例
- /*
- *********************************************************************************************************
- * 函 数 名: fputc
- * 功能说明: 重定义putc函数,这样可以使用printf函数从串口1打印输出
- * 形 参: 无
- * 返 回 值: 无
- *********************************************************************************************************
- */
- int fputc(int ch, FILE *f)
- {
- #if 0 /* 将需要printf的字符通过串口中断FIFO发送出去,printf函数会立即返回 */
- comSendChar(COM1, ch);
- return ch;
- #else /* 采用阻塞方式发送每个字符,等待数据发送完毕 */
- /* 写一个字节到USART1 */
- USART_SendData(USART1, (uint8_t) ch);
- /* 等待发送结束 */
- while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET)
- {}
- return ch;
- #endif
- }
- /*
- *********************************************************************************************************
- * 函 数 名: fgetc
- * 功能说明: 重定义getc函数,这样可以使用getchar函数从串口1输入数据
- * 形 参: 无
- * 返 回 值: 无
- *********************************************************************************************************
- */
- int fgetc(FILE *f)
- {
- #if 1 /* 从串口接收FIFO中取1个数据, 只有取到数据才返回 */
- uint8_t ucData;
- while(comGetChar(COM1, &ucData) == 0);
- return ucData;
- #else
- /* 等待串口1输入数据 */
- while (USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == RESET);
- return (int)USART_ReceiveData(USART1);
- #endif
- }
复制代码
|
|