STM32开发踩坑——CubeMX+Gcc编译开发环境配置

成立这个专栏的目的是,记录自己嵌入式开发遇到的问题,与成功的解决方法,方便自己回顾。

描述一下这个坑是怎么(发现)踩到的:

之前我的开发方法是CubeMX生成CubeIDE工程,再通过VScode中的EIDE插件开发的。在EIDE中操作步骤为:导入项目-->Eclipse工程。然而这个方法在裸机开发的时候是没有任何问题的,但是到了实时操作系统层面,貌似就有了一点“小”问题;

现象描述:

在FreeRTOS使用中,一旦涉及到信号量的操作,上述办法就行不通,主要表现为系统卡死,DEBUG发现,系统进断言,然后关闭了系统的中断,跑空循环;

然而在CubeIDE中,同样的.c文件,编译之后确实可以使用信号量的,后期查看CubeIDE的工具链选项与EIDE的工具链选项,发现有较大的不同;

这个还需要有关大佬解答下,是否真是这个原因,愿意提供相关工程文件

解决办法:

由于VScode开发属实太香了,感觉可以薄纱keil,所以方法描述还是在VScode中进行开发

1.在CubeMX生成选项修改为Makefile选项

2.在EIDE中选择新建项目->空项目->Cortex-M项目

注意事项:项目名称最好跟你在CubeMX中设置的一致+存放路径设置在MX生成的上一级,这样可以合并,方便在VScode中操作MX生成的文件

3.将.s汇编文件拖入到core文件夹中(注意此步非常重要!!!!)

否则会链接过程中找不到入口,编译下载失败!!!!

4.根据makefile文件设置EIDE

cpu

-mcpu=cortex-m3

全局宏定义

C_DEFS =  \

-DUSE_HAL_DRIVER \

-DSTM32F103xB

包含路径

C_INCLUDES =  \

-ICore/Inc \

-IDrivers/STM32F1xx_HAL_Driver/Inc \

-IDrivers/STM32F1xx_HAL_Driver/Inc/Legacy \

-IDrivers/CMSIS/Device/ST/STM32F1xx/Include \

-IDrivers/CMSIS/Include

 然后就是项目资源和gcc配置的修改,就可以开开心心的开发了,实测添加了实时操作系统也不会卡死了

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值