浅谈STM32CubeIDE
前面文章有写,我上手时采用了IDE,但后来实践中,我再也没打开过STM32CubeIDE,原因比较多吧,
- 启动太臃肿
- 配置复杂
- 电脑配置差
- 用着不爽
- ……
当然后两点纯粹个人原因 哈哈
实际学习中,我基本上是采用的gcc+sublime text
或者gcc+vim
。因为我习惯这么用了,虽然用着谈不上方便,但是顺手。
我的感受
可是,开始上手时,对于源码的不了解,加之GCC
下只有一个HelloWorld
,让我对TencentOS-tiny的探索之旅无所适从。所以,为了后人乘凉,我干脆就把我编写好的Makefile文件和当时修改文件的思路拿出来分享给大家。
修改方法
标准Makefile的样子
首先,我们先看看标准Makefile到底长啥样子,这里,我们打开board/TencentOS_tiny_EVB_MX/GCC/hello_world/Makefile
文件,分析一下里面的结构,就发现其实大部分地方不需要改动,我们只用将我们的examples
需要编译的c文件,以及需要包含的头文件包含进去就可以了。
所以,找到待编译的文件,还有头文件,就是我们的目标。
寻找目标Keil文件
现在转战到KEIL目录下,我们以farm_ai_demo
文件为例,使用文本编辑器打开board/TencentOS_tiny_EVB_MX/KEIL/farm_ai_demo/TencentOS_tiny.uvprojx
文件,就可以看到里面的文件结构,大致浏览一下,发现这就是个xml文件。
头文件
接下来就发现,我们的目标就静静的躺在那里,等待我们的到来:
就在<IncludePath>
标签之中,所有的头文件包含都在这里了。我们把这段复制出来,进行处理一下:
先将Windows下的路径分隔符\
转换为/
,然后使用换行替换掉;
再将../
转换为对应的路径,这样,就可以把这段代码添加到Makefile文件的头文件包含段了。我们对他们再进行一些模块划分,最终头文件包含的效果就是这样:
# C includes
KERNEL_INC = \
-I $(TOP_DIR)/kernel/core/include \
-I $(TOP_DIR)/kernel/pm/include \
-I $(TOP_DIR)/kernel/hal/include \
-I $(TOP_DIR)/arch/arm/arm-v7m/common/include \
-I $(TOP_DIR)/arch/arm/arm-v7m/cortex-m4/gcc
C_INCLUDES += $(KERNEL_INC)
CMSIS_INC = \
-I $(TOP_DIR)/osal/cmsis_os
C_INCLUDE