IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 一些单片机比赛,开发中的问题解决办法 -> 正文阅读

[嵌入式]一些单片机比赛,开发中的问题解决办法

博客链接:https://hanbaoaaa.xyz/id/1450

从问题出发

  • 单片机种类繁杂,库也各不相同
  • 无意义的学习成本:每学习一个ide可能就要花费大量时间来熟悉操作,快捷键
  • 脱离开版本管理的代码,无法对学习有一个实质性的记录,代码的复用基于文件拷贝,相当低效
  • 宏定义等配置性内容过度耦合在代码中,降低了复用性

=》一种解决思路:构建通用库,使用更现代的vscode进行代码编写

市面上最火的就是arduino,还有国内的rtthread在包环境管理方面都是做的不错的

比较推荐都去了解一下

=》但是有一个新的问题:

? 对于比赛,此类框架都很大型,不适宜自己进行不同平台的适配

=》整个协会,几个人之间,团队内,或者个人,构建自己的通用库

(推荐多人,个人有些浪费时间

大致思路:

  • 关于通用库

    • 基本代码部分分为
      • 适配层
        • 平台(mcu种类),
        • 对应mcu的内置功能(延时,串口,adc,iic,spi…
      • 外设层
        • 显示
          • 屏幕
          • 图形库
        • 传感器
          • 各类传感器
      • 算法
        • 信号处理算法
        • 控制算法
    • 开发的时候。我们调用都使用共同的api,这样在遇到新的平台要求时候,直接进行适配层的编写即可
  • 引入版本管理

    进行模块化git管理,git的submodule功能为我们提供了项目的组合功能,这样便可以将每一个模块作为子仓库引入到项目中。但是submodule也存在一个缺点,不太容易管理,所以我专门在vscode上开发了一个插件

    image-20220107154411519

    这个插件可以直接让你自己设计自己的项目子模块结构,并且根据需要进行加载,只要修改used标签,也可以对仓库进行重命名。

    image-20220107154726389

    然后一键进行子模块仓库的加载

  • 解决宏定义耦合在代码中问题

    • 这个问题需要外部脚本的帮助,因为宏是一种死代码,像cmake这种管理工具就会提供这样的功能,各类ide也会提供,但是宏多起来之后就会混乱,所以我设计了一种层次化描述宏的插件,

      image-20220107160000144

    大概的思路是在每一个库(模块)目录下创建一个描述文件(该文件名可以预先配置 下面我配置的是describe.txt

    image-20220107160245996

    在describe.txt中写上

    然后可以通过插件遍历整个项目结构中相关宏 以及 目标生成的头文件

    header=目标头文件

    宏定义名称|宏定义默认值

    image-20220107160422111

    然后使用插件可以进行遍历项目结构中所有描述文件,并生成配置树

    image-20220107160645898

    以后只要在树里面配置即可进行不同平台的迁移了

这些是我个人在电子类学习和比赛中发现的传统模式中的不足点和想到的较为有效的解决办法,希望可以对大家有所帮助,能让各位将精力更多的放到技术底层原理,拓宽技术的眼界,而不是繁琐冗余的不同工程平台学习中去,学习发现和解决问题本身的能力

ps:一篇文章没法具体的讲清各个细节,欢迎有兴趣,有能力的同学来进行交流

相关的项目以供参考

ActivePeter/paMcuLib: My commonLib for MCUs. 我的mcu通用库 (github.com)

ActivePeter/paRobotArm: 🎨 A robot arm project with esp32 based on paMcuLib, light and easy to adapt to new platforms. 一个可以绘制你想绘制的东西的机械臂项目 (github.com)

ActivePeter/MacroDefineHelper-vscode: Iterate through the macro helper configuration file in the directory and generate a configuration tree. Then generate a series of macros in head files. 遍历目录中的宏助手配置文件并生成配置树,再根据配置树生成一系列宏 (github.com)

ActivePeter/SubmoduleHelper-vscode: I’m going to write a vscode extension available to choose needed submodules and auto load them, just like some package manager. (github.com)

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-01-16 13:13:51  更:2022-01-16 13:15:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 12:31:56-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码