新手上路
- 积分
- 20
- 金钱
- 20
- 注册时间
- 2016-3-15
- 在线时间
- 8 小时
|
8金钱
本帖最后由 kkumeko 于 2016-4-18 21:53 编辑
我将正点原子的例程移植到gcc环境下编译,编译完成后printf不能正常输出。
网查资料,是GCC不支持半主机模式。
根据网络上提供的资料,官方的解法是将printf重定向。
#ifdef __GNUC__
/* With GCC/RAISONANCE, small printf (option LD Linker->Libraries->Small printf
set to 'Yes') calls __io_putchar() */
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif /* __GNUC__ */
PUTCHAR_PROTOTYPE
{
USART_SendData(USART1, (uint8_t) ch);
while(USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET)
{
}
LED1 = 0;
return ch;
}
照例添加后,程序运行时始终不能运行到重定向的__io_putchar()函数中,编译器里各种设置各种尝试啊,整整两天了啊!!!
串口本身是好的,可以接收到串口信息并回送。
附上修改后的工程文件,我用embiz 0.42版本编译的。
用keil的gcc编译也试过,现象一样。
求个高手搭救我。。。。。。
|
|