在工程文件中包含标准输入输出头文件
#include "stdio.h"
直接用printf打印,则会卡死。究其原因,是工程中没有fputc函数供printf使用。
参考stm32cubef4.zip 解压后STM32Cube_FW_F4_V1.11.0\Projects\STM324xG_EVAL\Examples\UART\UART_Printf 中的 MDK 工程。该工程给出了 printf()函数的实现方法。
其实很简单,就是实现一个串口输出一个字符的函数即可。该函数名已经在标准输入输出库头文件 stdio.h 中定义,原型为 int fputc(int ch, FILE *f)。
下面是需要添加的代码
int fputc(int ch,FILE *f)
{
HAL_UART_Transmit(&huart1,(uint8_t *)&ch,1,0xFFFF);//hurat1为串口号,根据自己情况进行选择
return ch;
}
然后下面是主程序,用来测试
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
times++;
printf("%d times enter there\n",times);
HAL_Delay(1000);
}
/* USER CODE END 3 */
输出结果