回答

收藏

[评测分享] 【STM32H735-DK 测评】串口重定向的设置

#板卡评测 #板卡评测 2272 人阅读 | 0 人回复 | 2024-03-06

使用STM32CubeMAX生成的工程默认是生成AC5版本的,由于AC5版本编译的速度太慢了,我手工切换成AC6版本,这样编辑速度就会快很多。但是printf就需要修改一下,因为官方的示例的代码如下:

如果是这样修改就会一直卡死在printf这里,经查资料,正确的代码如下:
  1. /* USER CODE BEGIN 1 */

  2. /* ------------------通过重定向将printf函数映射到串口1上-------------------*/
  3. #if !defined(__MICROLIB)

  4. //#pragma import(__use_no_semihosting)
  5. __asm (".global __use_no_semihosting\n\t");
  6. void _sys_exit(int x) //避免使用半主机模式
  7. {
  8.   x = x;
  9. }
  10. //__use_no_semihosting was requested, but _ttywrch was
  11. void _ttywrch(int ch)
  12. {
  13.     ch = ch;
  14. }
  15. //struct __FILE
  16. //{
  17. //  int handle;
  18. //};
  19. FILE __stdout;

  20. #endif

  21. #if defined ( __GNUC__ ) && !defined (__clang__)
  22. #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
  23. #else
  24. #include <stdio.h>
  25. #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
  26. #endif
  27. PUTCHAR_PROTOTYPE
  28. {
  29.   /* 实现串口发送一个字节数据的函数 */
  30.   //serial_write(&serial1, (uint8_t)ch); //发送一个自己的数据到串口
  31.         HAL_UART_Transmit(&huart3, (uint8_t *)&ch, 1, 1000);
  32.   return ch;
  33. }


  34. /* USER CODE END 1 */
复制代码
然后就可以使用printf进行重定向打印了:

分享到:
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条