入手stm32L053R8 nucleo开发板接近一个多月了,用ST的库测试了板子的性能,感觉这板子还可以(当初39元团购的,现在听说要90+),上个月ST研讨会送了好多nucleo板子,可惜运气不好一块都没拿到.......最近在网上找到了mbed的源码,也闲来无事移植了一下mbed,直接KEIL离线编译(可以调试哦!)。移植过程如下:
1使用mbed在线编译器导出一个mbed工程到keil,mbed在线编译器网址:
http://developer.mbed.org/,注册一个账号,然后选择你的板子型号
2.由于我自己的板子是L053的就选择这一块,然后点击右上角
mbed的在线编译器如下图所示
3.点击左上角的NEW,会出现下图所示的列表,这是编译器自带的几个例子,随便选择一个就够了,比如我选择了一个“display a message on pc using uart”,然后输入工程名字xxx,最后点确定。
4.在左上角工程出点右键会出下图列表,选择“导出工程”,会出现一个对话框,目前支持keil编译器的离线导出
到此mbed的离线工程 的导出完毕(这个keil工程可以编译下载调试,但是看不到一些底层代码),现在要加如mbed的源代码使其能查看底层代码即F12的功能
5.先下载附件中的mbed的源代码,移植时需要用。然后将上一步导出的工程解压出来会出现如下图所示的几个文件及文件夹,可以删除.hg文件夹 .hgignre和mbed.bld文件,然后新建USER文件夹(根据个人而定,我喜欢将工程文件及main文件放到USER下,不喜欢太乱了......),然后将几个剩余文件剪切到USER中
主目录下只剩下两个文件夹,等下编译后会自动生成一个build文件夹,删除mbed文件夹下所有文件
6.解压mbed源码文件,拷贝xxx\mbed-master\libraries\mbed目录下的api、common、hal、targets 文件夹到之前工程中的mbed目录。targets目录里有两个文件夹cmsis和hal,这两个文件夹里面的内容有选择的保留,比如说我的板子是L053的只保留cmsis\TARGET_STM\TARGET_NUCLEO_L053R8和hal\TARGET_STM\TARGET_NUCLEO_L053R8,还有保留cmsis文件夹下的与内核相关的文件,删除下图中红色框框内的文件夹
cmsis目录下删除文件夹 cmsis\TARGET_STM目录下删除文件夹
hal目录下删除文件夹 hal\TARGET_STM目录下删除文件夹
6.打开keil目录下的工程文件在添加4个group,然后向每个group中添加相应文件夹下的.c和.cpp文件,注意core组下的两个文件是在mbed\targets\cmsis\TARGET_STM\TARGET_NUCLEO_L053R8\TOOLCHAIN_ARM_MICRO目录下的sys.cpp和startup_stm32l053xx.s,添加文件完成后点确定
7.在include path下添加.h文件所在的目录,删除之前的路径,添加好后如图所示
8.将Linker下的Scatter file链接到mbed\targets\cmsis\TARGET_STM\TARGET_NUCLEO_L053R8\TOOLCHAIN_ARM_MICRO下的stm32l053r8.sct文件然后删除
Misc controls里面的所有链接,配置和如图所示
9.最后就可以执行编译了(编译的过程有点长),一个完整的离线mbed工程就完成了,可以执行调试、下载等功能,最简便的是可以直接复制一个build文件夹下的xxx.bin文件到虚拟出的磁盘,程序就可以在开发板上运行了!!!
这个工程先比官方的mbed工程优点是可以查看底层代码,缺点是编译速度太慢,如果有人能优化一下,可以告诉我!!
mbed源码https://bbs.eeworld.com.cn/forum.php?mod=attachment&aid=MTc0ODIxfDQzYjdmOGM2YTY1ZWU0YjRhYTY2ZmJmZjczNGRjMzgyfDE3NDA0NzM2NDk%3D&request=yes&_f=.zip
keil工程https://bbs.eeworld.com.cn/forum.php?mod=attachment&aid=MTc0ODIyfDM2MzBjYmQ3MjMxMzM2NjZlZjJlMzM2NTM0Y2I3OWUxfDE3NDA0NzM2NDk%3D&request=yes&_f=.zip