关于PlatformIO平台+Clion编写51单片机程序消除引脚波浪线报错的方法(多图预警)

最近在尝试换一个平台编写51单片机(毕竟Keil的手感,用过的人都懂)然后就发现了PlatformIO,这里就不介绍如何在Clion上安装PlatformIO,有需要的童鞋可以参考下面的博客

https://blog.csdn.net/qq_26700087/article/details/121444631

这位博主写的很详细了哈~

但是!

新建完我就发现了很令人头秃的现象:有一堆波浪线(虽然此时是可以编译通过产生.hex文件的)这换哪个程序员看的不难受~最最关键的是没法自动补全了,太难受了。

于是!

就有了这篇文章

大家可以先看看自己项目的文件结构

有一个CMakeLists.txt文件,虽然PlatformIO依赖的sdcc工具链不需要依靠CMake,但是Clion是高度依赖CMake进行项目管理的,所以这个自动生成的CMakeLists.txt干了件坏事:没把依赖库的路径写全从而让Clion找不到依赖的文件。但是编译器不是通过CMakeLists.txt找文件的,所以能定位到依赖文件并成功编译产生十六进制文件。

找到了问题就好办了~既然自动生成的CMakeLists.txt里面没有路径,那我们就手动加上就ok啦

我们先来看看CMakeLists.txt中的内容,发现他还include了一个外部文件:

 经过阅读后可以知道这个CMakeListsPrivate.txt里面正好包含了参考的路径

 可以发现,51单片机用的<8051.h>或者<8052.h>的路径(

C:\Users\(用户名)\.platformio\packages\toolchain-sdcc\include\mcs51

C:\Users\(用户名)\.platformio\packages\toolchain-sdcc\include")并没有包含进去

那就手动添加下面下面这俩行就ok啦(注意路径中斜线方向)

    include_directories("${ENV_HOME_PATH}/.platformio/packages/toolchain-sdcc/non-free")
    include_directories("${ENV_HOME_PATH}/.platformio/packages/toolchain-sdcc/include/mcs51")

添加完成后点Reload Changes重载一下,可以看到头文件已经不报错了:

 

下面来解决GPIO的警告:

我们在<8052.h>上点一下,然后按Ctrl+b转到这个头文件:

哇,一片红

这里错误主要是由于__sbit和__at这俩家伙又让Clion找不到了, 这两个家伙藏在<lint.h>中,我们在<8051.h>中手动include即可:

 最后,我们再往下看8051.h文件:

发现是报识别不了bool这个标识符,这好办,相信很多人都知道了,再在<lint.h>里include一个<stdbool.h>就ok啦 :(正常的话自动补全已经出现了哦)

 最后再回到main.c,可以看到没有任何报错,且可以自动补全引脚,魔改成功!

 一些特殊寄存器也可以成功自动补全:

 

 最后再说几嘴:

1.这里gcc还是会报错,没事,不用管他,我们最后用的不是这条工具链:

2.这样魔改不会增加最终编译文件的大小:(对比第一张图可知)

 

 喜欢就收藏一下吧~

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值