关于arduino开发的工程方面的一些探索-Arduino中文社区 - Powered by Discuz! Archiver

cxg 发表于 2021-1-16 23:25

关于arduino开发的工程方面的一些探索

本帖最后由 cxg 于 2021-1-16 23:27 编辑

刚开始用Arduino IDE写代码,连个代码提示都没有,后来发现在vscode上有arduino的插件,有代码提示,开发起来比较不错。再后来在vscode又发现了个更好的开发环境PlatformIO。




刚开始写个demo都写到一个文件中就可以了,随着代码加入的外设越来越多,都写到一个文件中也不太方便。正好 PlatformIO提供了一个好的工程结构。




外部的库放到lib文件下,自己写的放到src下,看到这个结构我这很高兴啊,本来就是开发web前端的,这跟webpack项目很类似啊。
再看个keil的项目结构,页面UI就不提了。



关于项目自己的代码把每个外设拿出来写到每个文件中,就可以大大减小入口文件的体积,上下翻动看代码方便。




每个文件都引用一个共同的头文件config.h,这样就可以把src下所有的文件联系起来。




在config.h中声明每个文件对外的变量及方法,用extern关键字声明全局变量。
以蜂鸣器外设为例,每个文件有一个初始化方法和刷新方法。




每个文件自己的变量用static关键字修饰,这样就不会影响到其他文件了。
避免用delay()来执行阻塞代码,这样程序会变得低效。所以仿照javascript语法我写了一个无阻塞执行代码的库
CxgJsTime。看一下bibi()函数如何实现的无阻塞执行,比起传统的写法稍微有点麻烦。




最后在main.cpp中运行每个外设的init和refresh方法, 开几个线程分配下执行的优先级。



页: [1]
查看完整版本: 关于arduino开发的工程方面的一些探索