程序开发过程中调试必不可少,一种简单直接的调试方式是使用串口发送数据,并使用串口助手进行观测。以前使用MSP430做项目时也同样使用printf打印数据,所以现在想在stm32 上实现。
通常串口发送单字节库函数:USART_SendData(USART1, (uint8_t) ch);对显示小数等数据比较复杂,如果能够直接使用C语言 stdio.h中的printf直接输出就可以省去大部分格式输出转化时间。下面将介绍如何调用printf打印串口数据。
建立USART.C和USART.H两个文件,分别编写串口设置程序与头文件
USART.C中需要添加如下代码:
int fputc(int ch, FILE *f)
{
/* e.g.给USART写一个字符 */
USART_SendData(USART1, (uint8_t) ch);
/* 循环直到发送完成 */
while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);
return ch;
}
对printf进行重定向;
USART.H中需要添加如下代码:
添加stdio.h头文件,其次,声明int fputc(int ch, FILE *f);
最后一步,在设置中勾选Use MicroLIB选项;
完成以上步骤后,便可在程序中直接调用printf打印串口数据。
程序开发过程中调试必不可少,一种简单直接的调试方式是使用串口发送数据,并使用串口助手进行观测。以前使用MSP430做项目时也同样使用printf打印数据,所以现在想在stm32 上实现。
通常串口发送单字节库函数:USART_SendData(USART1, (uint8_t) ch);对显示小数等数据比较复杂,如果能够直接使用C语言 stdio.h中的printf直接输出就可以省去大部分格式输出转化时间。下面将介绍如何调用printf打印串口数据。
建立USART.C和USART.H两个文件,分别编写串口设置程序与头文件
USART.C中需要添加如下代码:
int fputc(int ch, FILE *f)
{
/* e.g.给USART写一个字符 */
USART_SendData(USART1, (uint8_t) ch);
/* 循环直到发送完成 */
while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);
return ch;
}
对printf进行重定向;
USART.H中需要添加如下代码:
添加stdio.h头文件,其次,声明int fputc(int ch, FILE *f);
最后一步,在设置中勾选Use MicroLIB选项;
完成以上步骤后,便可在程序中直接调用printf打印串口数据。
举报