从新建工程开始使用C++开发单片机(以STM32为例):一、项目介绍

一、项目初衷

大学期间使用单片机开发的项目做过不少,从平时的课程设计,到智能车比赛、电赛等,使用过的单片机包括51、STM32、英飞凌的TC264、沁恒的CH32、TI的430等等,平时自己做些小玩意大部分使用Arduino和ESP32/8266等Arduino平台的单片机。除了Arduino使用C++外,使用C语言比较多一些。而在使用C语言的过程中也遇到一些问题,例如各种标志变量声明满天飞,不同平台单片机之间代码复用性差等,在使用一些较为低级的外设如IO口、串口等还可以应付的了,而在使用一些高级的设备例如OLED、TFT等,基本上每款单片机都需要重新找或者手搓一个库,代码的复用性比较差。而这些外设的底层原理都是像I2C、SPI等,在不同的单片机之间物理层、协议等都是基本上一致的,完全可以封装为统一的接口,在不同平台的单片机之间转换的时候,只需要将外设接口重写,而上层的驱动代码就可以实现复用。我觉得这一点在Arduino上面就做的很好,不同型号的单片机的代码基本上复制粘贴编译下载就能用。而我所使用的许多国产处理器不支持Arduino的框架。当然我这个项目的目的并不是想全盘移植Arduino的框架,Arduino对于底层操作的支持并不是很好(例如定时器编码器通道等),这个项目的目的是为了写一个统一的单片机驱动接口,再使用C++进行封装,并移植部分Arduino的库(例如Arduino的输入输出流、JSON、Adafruit的图形库等),在使用不同平台的单片机是重写驱动接口,实现C++层代码和应用代码的复用。并且,我未来的工作也将是从事C++软件开发,借助这个项目锻炼自己面向对象的编程思想,例如多态、继承等。目前我已经完成了io口驱动、外部中断、串口、SPI、I2C等的驱动接口,并移植了Arduino的输出流、Adafruit的图形库等。并且之前在搜寻资料的过程中,发现使用C++开发单片机的文章少之又少,再加上最近因为西安疫情被困在宿舍,很多硬件资源拿不回来,手头就几块32和几个OLED屏和TFT屏,能写的都写的差不多了(当然和我的计划还差好多),在宿舍也没事干,就跑CSDN来撸博客了hhh

二、项目架构

这个项目代码主要分为三层,最底层为单片机硬件库函数,主要为单片机产商提供,例如STM32的库函数;第二层为外设接口层,主要使用C语言,在不同的单片机之间统一接口函数(函数名、输入输出变量、返回值一致),对底层进行封装;第三层为C++驱动层,以面向对象的思想对第二次进行封装,并引入一些外部的C++库,在此基础上进行外部设备的开发和驱动。应用时既可使用第二层的C语言代码进行开发,也可以使用第三层的C++代码进行开发,在抽象的同时不完全屏蔽底层。
在这里插入图片描述

三、硬件介绍&环境

处理器:STM32F103ZE
开发环境:Keil5
编译器版本:V5.06
在这里插入图片描述
库函数版本:V3.5

该专栏适合有一定STM32基础和C++基础的同学,STM32的小白emmmm我尽量让你们看的了吧。

其他补充

2022-11-11
项目在Gitee上开源了,地址:https://gitee.com/gong_wei_wei/stm32-f10x-c-library
目前正在工作,很少更新

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值