问题描述
我正在运行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 (将#修改为@)