这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » stm32H7S7L中printf不使用微库的实现方法

共6条 1/1 1 跳转至

stm32H7S7L中printf不使用微库的实现方法

助工
2024-08-10 15:03:25     打赏

这几天在调试STM32H7S7L的TouchGFX工程中,需要使用到printf重定向的代码,由于使用是C11以及C++所以不能使用微库,导致卡死在printf中,查找了好久才发现的问题,如果使用C99,则与touchGFX的C++11有冲突,因此需要不能使用微库来实现重定向。

经查找成功解决,代码如下:

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

//#pragma import(__use_no_semihosting)
__asm (".global __use_no_semihosting\n\t");
void _sys_exit(int x) //避免使用半主机模式
{
  x = x;
}
//__use_no_semihosting was requested, but _ttywrch was 
void _ttywrch(int ch)
{
    ch = ch;
}
//struct __FILE
//{
//  int handle;
//};
FILE __stdout;

#endif

#if defined ( __GNUC__ ) && !defined (__clang__) 
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif 
PUTCHAR_PROTOTYPE
{
  /* 实现串口发送一个字节数据的函数 */
  //serial_write(&serial1, (uint8_t)ch); //发送一个自己的数据到串口
	HAL_UART_Transmit(&huart4, (uint8_t *)&ch, 1, 1000);
  return ch;
}

记录一下,一来自己后面好查找,二来,给遇到类似情况的大佬们给予借鉴。




关键词: STM32H7S     TouchGFX     STM32Cu    

工程师
2024-08-10 17:57:16     打赏
2楼

学习了


专家
2024-08-10 21:52:20     打赏
3楼

感谢分享


院士
2024-08-11 00:06:14     打赏
4楼

听上去重定向功能也不怎么好用啊


高工
2024-08-11 08:51:55     打赏
5楼

谢谢分享


专家
2024-08-11 12:43:56     打赏
6楼

感谢分享


共6条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]