AC7801 printf
时间: 2023-11-12 19:55:10 浏览: 65
printf
AC7801使用Arm Compiler 6时,printf retarget的做法与Arm Compiler 5相同。具体做法是通过定义fputc和fgetc函数来重定向printf输出到串口。例如,可以使用以下代码:
int fputc(int ch, FILE *f) {
return uartSendChar(ch);
}
int fgetc(FILE *f) {
return uartReceiveChar();
}
对于AC7801使用MicroLIB编译时报错的问题,可以使用以下条件编译来解决:
#if defined(__CC_ARM) || (defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050))
// Arm Compiler
#elif defined __GNUC__
// Normal GCC
#endif
关于printf串口输出的retarget,如果选择了AC5的默认优化等级-O0,可能会导致代码执行效率低下。而AC6编译器在-O0优化等级下,n级条件表达式可能会产生巨大的栈需求。因此,需要调整为-O0以外的优化等级来提高代码执行效率。
阅读全文