如何解决在FreeRTOS上将printf转换为USB-CDC
我正在运行FreeRTOS的STM32 Cortex M4上工作。
我尝试将printf
重定向到USB CDC输出,但是看来我的实现不是线程安全的。 printf('test')
打印循环
ettttt
tttetttttttst
ttetettttttettttttettttttt
ttttttttttttt
t
tttttttttetttttttstttt
tettttttttttttt
t
tttttttetttetttttttett
ttttettttttetettetttt
ttttttttt
ttetetttt
t
ttt
我使用以下putchar
原型
PUTCHAR_PROTOTYPE {
CDC_Transmit_FS((uint8_t*)&ch,1);
return ch;
}
另外,我使用printf-stdarg.c
,至少我以为这样做。但是当我改变
int printf(const char *format,...)
{
va_list args;
va_start( args,format );
return print( 0,format,args );
}
为空的实现
int printf(const char *format,...)
{
return 0;
}
它仍然像以前一样打印到控制台。因此,似乎实际上并未使用printf-stdarg.c
中的实现。
我的想法是在print
调用周围加上互斥锁。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。