完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
1.安装编译工具介绍
1.gcc-arm-none-eabi arm-none-eabi-gcc -v 2.Cmake make -v 3.st-link 3.单片机:战舰V3 准备文件 1.startup_stm32f10x_hd.s:启动文件 2.stm32_flash.ld:链接文件 3.main.c 代码如下: int main() { *(unsigned int*)(0x40021000+0x18) |= 1<<3; //开启GPIOB时钟 *(unsigned int*)(0x40010c00+0x00) &= 0XFF0FFFFF; //配置PB5为推挽输出 *(unsigned int*)(0x40010c00+0x00) |= 0X00300000; //配置PB5为推挽输出 *(unsigned int*)(0x40010c00+0x0c) |= 0<<5; //PB5输出低电平,点亮LED *(unsigned int*)(0x40021000+0x18) |= 1<<6; //开启GPIOE时钟 *(unsigned int*)(0x40011800+0x00) &= 0XFF0FFFFF; //配置PE5为推挽输出 *(unsigned int*)(0x40011800+0x00) |= 0X00300000; //配置PE5为推挽输出 *(unsigned int*)(0x40011800+0x0c) |= 0<<5; //PB5输出低电平,点亮LED } void SystemInit(void) { } 4.编译 首先需要说明一些编译任何一个文件都需要带上的参数 [tr]参数说明[/tr]
[tr]参数说明[/tr]
[tr]参数说明[/tr]
arm-none-eabi-gcc -c -mthumb -mcpu=cortex-m3 -g -Wa,--warn -o startup_stm32f10x_hd.o startup_stm32f10x_hd.s 编译main.c文件 arm-none-eabi-gcc -c -mthumb -mcpu=cortex-m3 -g -Wall -o main.o main.c 5.链接 让链接器根据stm32_flash.ld文件对startup_stm32f10x_hd.o和main.c这两个文件开始链接,生成包含调试信息的elf文件,同时给链接器传递一下参数 arm-none-eabi-gcc -o test.elf main.o startup_stm32f10x_hd.o -mthumb -mcpu=cortex-m3 -T stm32_flash.ld -specs=nosys.specs -static -Wl,-cref,-u,Reset_Handler -Wl,-Map=test.map -Wl,--gc-sections -Wl,--defsym=malloc_getpagesize_P=0x80 -Wl,--start-group -lc -lm -Wl,--end-group 6.生成bin文件和hex文件 arm-none-eabi-objcopy test.elf test.bin -Obinary arm-none-eabi-objcopy test.elf test.hex -Oihex 7.编写一个makefile雏形 TARGET=test CC=arm-none-eabi-gcc OBJCOPY=arm-none-eabi-objcopy RM=rm -f CORE=3 CPUFLAGS=-mthumb -mcpu=cortex-m$(CORE) LDFLAGS = -T stm32_flash.ld -Wl,-cref,-u,Reset_Handler -Wl,-Map=$(TARGET).map -Wl,--gc-sections -Wl,--defsym=malloc_getpagesize_P=0x80 -Wl,--start-group -lc -lm -Wl,--end-group CFLAGS=-g -o $(TARGET):startup_stm32f10x_hd.o main.o $(CC) $^ $(CPUFLAGS) $(LDFLAGS) $(CFLAGS) $(TARGET).elf startup_stm32f10x_hd.o:startup_stm32f10x_hd.s $(CC) -c $^ $(CPUFLAGS) $(CFLAGS) $@ main.o:main.c $(CC) -c $^ $(CPUFLAGS) $(CFLAGS) $@ bin: $(OBJCOPY) $(TARGET).elf $(TARGET).bin -Obinary hex: $(OBJCOPY) $(TARGET).elf $(TARGET).hex -Oihex clean: $(RM) *.o $(TARGET).* download: $(OBJCOPY) $(TARGET).elf $(TARGET).bin -Obinary st-flash write $(TARGET).bin 0x8000000
|
|
|
|
只有小组成员才能发言,加入小组>>
3329 浏览 9 评论
3007 浏览 16 评论
3503 浏览 1 评论
9085 浏览 16 评论
4099 浏览 18 评论
1209浏览 3评论
620浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
607浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2349浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1913浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-4 07:39 , Processed in 1.157144 second(s), Total 77, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (威廉希尔官方网站 图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号