如果在项目中使用LwIP的话,默认是使用microLIB的,如果不勾选microLIB选项,则程序不能够正常运行,其主要原因在于LwIP使用了microLIB提供的标准输入和输出函数。但是,非常遗憾的是microLIB不支持C++,如果在应用程序中希望使用C++进行程序设计,则不能勾选microLIB,否则在链接的时候会出现问题,本文提供解决这一问题的方法。
不勾选microLIB,keil将使用标准C库函数进行链接,这就需要我们提供相应的低层支持才可以。ARM公司提供了相应的模版,我们可以通过http://infocenter.arm.com/help/topic/com.arm.doc.faqs/attached/3844/retarget.c找到该文件。然后将其加入到keil项目中,仔细分析这个文件可以看出,其只需要我们完成2个函数即可,程序如下。我在这里将其映射到了UART1。
/*
* UART prototype functions
*/
char UART_read(void)
{
return 0;
}
void UART_write(char ch)
{
HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 10);
}
|