PC:Ubuntu 18.04.1,开发板:STM32F103C8T6
使用交叉编译器:gcc-arm-none-eabi
1 | apt-get install gcc-arm-none-eabi |
安装完成后输入arm-none-eabi- 然后按tab键看到很多文件 说明安装成功了
详细可以看我另两篇博文
下载stm32固件库
www.st.com/zh 下载,并解压(~/stm32/codes/stm_project)
1 | root@tiger:~/stm32/codes# ls |
创建目录
libs目录放stm32固件库,src放用户源码,inc放用户头文件
1 | root@tiger:~/stm32/codes/stm_project# ls |
创建Makefile.common
在主目录下创建Makefile.common文件,这个是通用Makefile文件
1 | # include Makefile |
编译固件库
1.首先编译固件库,将固件库编译成静态库,应用程序可以直接使用.
2.下载startup.c,路径:stm_project/libs/STM32F10x_StdPeriph_Lib_V3.5.0/Libraries/
CMSIS/CM3/DeviceSupport/ST/STM32F10x/startup/arm/
3.编写Makefile文件,路径:stm_project/libs/STM32F10x_StdPeriph_Lib_V3.5.0/Libraries/
STM32F10x_StdPeriph_Driver/src
1 | include ../../../../../Makefile.common |
建立ld文件
项目根目录建立linker.ld文件,根据芯片的内存以及flash容量
下面是文件需要修改的地方
1 | MEMORY { |
编译用户文件
将用户应用程序也编译成静态库
~/stm32/codes/stm_project/src/Makefile
1 | include ../Makefile.common |
建立主Makefile
在主目录下,建立主Makefile文件
将固件库和用户应用程序编译成可执行文件
1 | include Makefile.common |
根目录执行make生成二进制文件
1 | root@tiger:~/stm32/codes/stm_project# ls |
loadbin烧写程序OK,输入r复位,g运行程序
1 | J-Link>loadbin /home/hch/stm32/codes/stm_project/main.bin 0x8000000 |