NXP

keil中printf函数及bin文件生成问题

2019-07-12 12:17发布

以下是这几天遇到的问题及解决方法,希望能帮到大家。 1、我使用的是keil 4,最近在学习数据结构,想把书本中的代码全部运行一遍,因为学习最重要是实践,只是看似乎已经看懂了但是真正使用的时候恐怕还是不会使用。所以想在keil中运行书本中示例代码,代码如下: int main()
{
int i=39;
printf(“%d ”,i);
printf(“%d ”, &i);
}
    将代码敲入keil中,我新建了工程,编译时总是通不过,提示有错误。后来上网查询才了解到其中奥秘。在keil中printf 默认是向串口中发送数据的,所以,如果应用该函数,必须先初始化串口,否则可能引起死机的情况。所以不能向之前学习C语言时使用Turbo C工具,直接敲入代码,点击运行弹出dos窗口。     可以使用VC++、C++ Builder等工具进行代码的调试,我使用的是C++ Builder 6.0,还是比较方便的,就像上学时将代码写入,编译运行即可,也会弹出DOS窗口,方便查看。 2、最近也在编写STM32单片机IAP程序,想实现在应用的更新,程序改动时就不需要每次都使用Debugger烧录了。我现在的方法是参考的STM32官方例程,使用windows的超级终端。使用超级终端进行APP更新时,需要使用bin文件更新。后来在网上搜索的方法:        打开keil->Options for target->user->run #1中输入fromelf.exe --bin -o ./obj/sty11.bin ./obj/sty11.axf
sty11.axf中sty11是自己的工程名字,axf是keil自己生产的文件,fromelf.exe是keil自带的转换软件,使用--bin -o 命令生成./obj/sty11.bin文件。./obj是相对工程路径名称。
       使用以上方法的确能生成bin,但是,如果你使用的破解版的keil,就有可能生成的bin文件不可用,可以用记事本打开查看或者使用 hexwork shop软件打开查看bin文件是否正确。如果bin文件不正确,自然IAP即便将APP写入,也是写入的错误的APP,程序不能正常运行。如果bin文件不正确,可以在网上下载hex转bin的工具,使用工具转换后也要查看是否转换正确