您的位置 首页 技术

串口试验printf输出是乱码

问题1(与编译软件无关):在程序中加入printf语句实现串口输出,但未写重定向函数fputc,出现编译无任何警号和错误直接下载无法运行,软件

问题1(与编译软件无关):在程序中参加printf句子完成串口输出,但未写重定向函数fputc,呈现编译无任何警号和过错直接下载无法运转,软件仿真可以运转至MAIN函数,硬件仿真在汇编窗口看到停留在“0x0800XXXXBEABBKPT0xAB//进入调试形式”处无法持续运转。

解决办法:编写fputc函数如下:
intfputc(intch,FILE*f)
{
USART_SendData(USART1,(uint8_t)ch);
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET)
{}
returnch;
}

问题2(与编译软件有关):重定向函数fputc编写无误,运用的是MDK4.22-3.40之间的编译环境,未运用微库,即MiclroLIB,因printf()之类的函数,运用了半主机形式。运用微库的话,不会运用半主机形式,所以就没有问题。

解决办法:在optionfortarget->target对话框中,挑选UseMiclroLIB,从头编译程序即可。

问题3:重定向函数fputc编写无误,不必微库,即MiclroLIB,仍然可以运用printf

解决办法:
在程序中参加如下句子:
#pragmaimport(__use_no_semihosting)
_sys_exit(intx)
{
x=x;
}
struct__FILE
{
inthandle;



};

FILE__stdout;

此代码功用用于防止运用semhosting(半主机形式)

问题4:运用的是MDK4.22-3.40之间的编译环境,不想运用微库,也不想参加问题三句子。

解决办法:
替换低版本的MDK,3.4以下吧,自己实验运用mdk3.24不勾选MiclroLIB,也不参加问题三句子,可以正常运用printf,无任何问题。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/jishu/259767.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部