|
本帖最后由 QianFan 于 2015-10-25 20:40 编辑 在Ubuntu下开发STM32并不简单。这里说的不简单是上手困难。不太适合新手。对一个刚开始学习STM32的人来说,如果一开始就使用Ubuntu开发,我觉得并不是一个好的注意。对于初学者来说,如果你的代码出现问题,你既要考虑是不是固件库的问题,又要考虑是不是Makefile的问题。还要考虑newlib(arm-none-eabi-gcc使用的库)系统调用的问题。这么多的问题加在一块,足够你想放弃学习了。 因此,对于初学者来说,就不要瞎折腾了。还是老老实实的使用keil mdk,iar等一些IDE,从0开始学习固件库。等你的固件库学习到一定的水平之后,在来折腾一下也是不错的。对于那些老手来说,编译器什么的已经不重要了。可以尝试一下。当你学会了使用Ubuntu开发STM32的时候,你自己做一个包,放到Arduino IDE下面。就可以尽情的使用Arduino来开发STM32了。 若是你一直使用盗版的keil,由于商业使用导致的版权问题,那么也可以考虑一下使用arm-none-eabi-gcc。使用arm-none-eabi-gcc并不要求你的系统是linux,是Ubuntu。而在windows平台下,也有arm-none-eabi-gcc。和Ubuntu下的是同一个公司开发的。一样好用。 固件库准备: 对于ST的固件库来说,大部分是使用C进行编写的。不管是用什么环境开发,都是没有问题的。有问题的是汇编文件。armcc和gcc对于汇编的语法要求不同。因此之前使用mdk的汇编文件在这里就不要使用了。我们应该使用TrueStudio(在固件库的模板文件中)下的汇编文件。这个文件在ST的固件库中有。 除了汇编文件,armgcc还需要一份链接文件(*.ld)。这个文件在固件库中也可以找到。同样,还是需要使用TrueSTUDIO文件夹下的版本。如果你足够熟悉固件库的话。这些文件还是很容易找到的。 如果你找不到或者懒得找的话,也没关系。我会上传一个压缩包。里面会有我们这次使用的所有文件。 这次我们使用Makefile进行集中处理。 源代码结构:
其中,
编写Makefile:
vpath %.c stlib stlib/src vpath %.h stlib stlib/cminc stlib/inc
编写main函数: 我们在main函数中,写点代码来点亮一个led灯。关于_exit会在以后讲到的。
编译,下载:
make all之后可以看到程序的大小:
(这个6372是代码的字节数。点亮一个led灯却占用了6K的代码。如果你和keil mdk相比的话会发现这个数大的多。这并不是说明arm gcc比armcc弱。只是我们没有对代码进行优化。会在下面几篇中讲解如何优化) make burn进行下载:
|
blink.zip
下载390.42 KB, 下载次数: 646
| 楼主挺专研的。 |
![]() ![]() ![]() 不错 |
| 学习了,谢谢分享。 |
| 研究得比较深入,赞 |
赚点金币好过年啊 |
| 很不错的资料,学习了,谢谢楼主。 |
| 楼主技术强 |
| 不错 第一次看到有人在linux下面写stm32 |
| qiangdadelouzhu |
STM32
超强工具——STM32CubeMX 你会用吗?
集结出发! STM32全国研讨会系列之一:ST智能门铃中国首秀
关于STM32启动文件的几个小问题
【银杏科技ARM+FPGA双核心应用】STM32H7系列35——USB_VCP_FS
【银杏科技ARM+FPGA双核心应用】STM32H7系列28——USB_HID
粉丝分享 | 图说CRC原理应用及STM32硬件CRC外设
STM32L151进入低功耗,并由RTC唤醒的故事
[转]stm32控制NFC模块(PN532)源码(P2P,模拟卡,读写卡等
STM32G070RB+LVGL移植
微信公众号
手机版