你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

stm32cubeide 关于printf的输出都是1024为单位输出的

[复制链接]
qq1 提问时间:2024-1-21 19:29 / 未解决

使能以下代码重定向prinft为什么,串口软件都是1024个字节为单位接收的,在

/ Infinite loop /

/ USER CODE BEGIN WHILE /

while (1)

{

/ USER CODE END WHILE / printf("1");

HAL_Delay(50);

/ USER CODE BEGIN 3 / }

/ USER CODE END 3 /

}

这里需要循环1024次串口才能接收到,(从串口软件这边看每次数据都是1024递增的)

/***** 重新编写printf函数 **/

ifdef GNUC

define PUTCHAR_PROTOTYPE int __io_putchar(int ch)

define GETCHAR_PROTOTYPE int __io_getchar(FILE *f)

else

define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)

define GETCHAR_PROTOTYPE int fgetc(FILE *f)

endif / GNUC /

PUTCHAR_PROTOTYPE

{

HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF);

return ch; }

GETCHAR_PROTOTYPE

{

uint8_t ch = 0;

HAL_UART_Receive(&huart1,(uint8_t *)&ch, 1, 0xFFFF);

if (ch == '\r')

{

__io_putchar('\r');

ch = '\n';

}

return __io_putchar(ch); }

/*****/

收藏 评论1 发布时间:2024-1-21 19:29

举报

1个回答
xmshao 回答时间:2024-1-22 10:36:01
在STM32CubeIDE用户手册UM2609的2.2.2.1章节专门介绍了Printf的实现过程,你参考下。那里谈到了多种方式。如果基于UART输出的话,其实完全不必理会那些C库函数,生成字符或字符串后直接通过UART发送即可,我平常就是这样的操作。
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版