STM32 使用printf打印串口信息
一、 uart.c
//使用对应的串口打印信息
#define PRINTF_UART USART2
//加入以下代码,支持printf函数,而不需要选择use MicroLIB
#if 1
#pragma import(__use_no_semihosting)
//标准库需要的支持函数
struct __FILE
{
int handle;
};
FILE __stdout;
//定义_sys_exit()避免使用半主机模式
_sys_exit(int x)
{
x = x;
}
_ttywrch(int ch)
{
ch=ch;
}
int fputc(int Data, FILE *f)
{
while(!USART_GetFlagStatus(PRINTF_UART,USART_FLAG_TXE));//USART_GetFlagStatus 得到发送状态位 //USART_FLAG_TXE: 发送寄存器,1:为空;2:忙状态
USART_SendData(PRINTF_UART,Data);//发送一个字节
return Data;//返回一个值
}
#endif
二、 TASK
__align(8) static CPU_STK MEASURE_Stk[MEASURE_TASK_STK_SIZE]; //字对齐
三、 Options for target
如果有_ttywrch,Use MicroLib则不需要打钩
如果没有_ttywrch,Use MicroLib则需要打钩
STM32 使用printf打印串口信息
一、 uart.c
//使用对应的串口打印信息
#define PRINTF_UART USART2
//加入以下代码,支持printf函数,而不需要选择use MicroLIB
#if 1
#pragma import(__use_no_semihosting)
//标准库需要的支持函数
struct __FILE
{
int handle;
};
FILE __stdout;
//定义_sys_exit()避免使用半主机模式
_sys_exit(int x)
{
x = x;
}
_ttywrch(int ch)
{
ch=ch;
}
int fputc(int Data, FILE *f)
{
while(!USART_GetFlagStatus(PRINTF_UART,USART_FLAG_TXE));//USART_GetFlagStatus 得到发送状态位 //USART_FLAG_TXE: 发送寄存器,1:为空;2:忙状态
USART_SendData(PRINTF_UART,Data);//发送一个字节
return Data;//返回一个值
}
#endif
二、 TASK
__align(8) static CPU_STK MEASURE_Stk[MEASURE_TASK_STK_SIZE]; //字对齐
三、 Options for target
如果有_ttywrch,Use MicroLib则不需要打钩
如果没有_ttywrch,Use MicroLib则需要打钩
举报