查看: 487|回复: 0

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

[复制链接]
  • TA的每日心情
    开心
    11 小时前
  • 签到天数: 105 天

    连续签到: 6 天

    [LV.6]常住居民II

    发表于 2024-3-6 22:47:16 | 显示全部楼层 |阅读模式
    分享到:
    使用STM32CubeMAX生成的工程默认是生成AC5版本的,由于AC5版本编译的速度太慢了,我手工切换成AC6版本,这样编辑速度就会快很多。但是printf就需要修改一下,因为官方的示例的代码如下: 前面的printf重定向.png
    如果是这样修改就会一直卡死在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进行重定向打印了:

    回复

    使用道具 举报

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

    本版积分规则

    关闭

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

    手机版|小黑屋|与非网

    GMT+8, 2024-5-4 20:49 , Processed in 0.169158 second(s), 20 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.