longchamp购物包:STM32程序添加printf函数后无法运行的解决方法(转)
来源:百度文库 编辑:偶看新闻 时间:2024/05/02 08:45:39
标准库函数的默认输出设备是显示器,要实现在串口或LCD输出,必须重定义标准库函数里调用的与输出设备相关的函数.
例如:printf输出到串口,需要将fputc里面的输出指向串口(重定向),方法如下:
#ifdef __GNUC__
/* With GCC/RAISONANCE, small printf (option LDLinker->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
{
/* Place your implementation of fputc here */
/* e.g. write a character to the USART */
USART_SendData(USART1, (uint8_t) ch);
/* Loop until the end of transmission */
while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);
return ch;
}
因printf()之类的函数,使用了半主机模式。使用标准库会导致程序无法运行,以下是解决方法:
方法1.使用微库,因为使用微库的话,不会使用半主机模式.
方法2.仍然使用标准库,在主程序添加下面代码:
#pragma import(__use_no_semihosting)
_sys_exit(int x)
{
x = x;
}
struct __FILE
{
int handle;
/* Whatever you require here. If the only file you are using is */
/* standard output using printf() for debugging, no file handling*/
/* is required. */
};
/* FILE is typedef’ d in stdio.h. */
FILE __stdout;
★安装“cFos”后,无法“添加或删除程序”等!
★安装【cFos】后,无法【添加或删除程序】等!
无法删除添加程序
最近无法增加打开方式中的程序,点了浏览后也无法添加
无法找到函数 getadarinfo 程序无法运行
使用printf()函数输出,下列图形
关于printf函数输出ESC控制字符。
printf()函数名字中的f代表什么?
无法打开“添加和删除程序”
添加删除程序无法打开出错?
windows2000server 双击添加删除程序无法运行
添加或删除程序无法打开
添加/删除程序无法启动!!!!!!!!!!!!
电脑程序无法运行(添加问题)
构造一个类似printf的函数,输出到字符串
每个printf()函数语句执行后都要自动换行。
怎样用printf()函数显示出不同的颜色?
如果printf函数这样写会出现什么结果?
比较printf和putchar函数输出字符的特点
添加删除程序中无法删除某些程序怎么办
添加/删除程序中为什么某些程序无法删除
怎么在添加删除程序时无法删除程序
删除添加或删除程序中无法删除的程序
WIN2000 添加/删除程序中无法删除程序!