X
首页
技术
模拟电子
单片机
半导体
电源管理
嵌入式
传感器
最能打国产芯
应用
汽车电子
工业控制
家用电子
手机便携
安防电子
医疗电子
网络通信
测试测量
物联网
最能打国产芯
大学堂
首页
直播
专题
TI 培训
论坛
汽车电子
国产芯片
电机驱动控制
电源技术
单片机
模拟电子
PCB设计
电子竞赛
DIY/开源
嵌入式系统
医疗电子
颁奖专区
【厂商专区】
【电子技术】
【创意与实践】
【行业应用】
【休息一下】
最能打国产芯
活动中心
直播
发现活动
颁奖区
电子头条
参考设计
下载中心
分类资源
文集
排行榜
电路图
Datasheet
最能打国产芯
单片机
[原创] C++来管理stm32的程序
ywlzh
2016-7-25 13:18
楼主
不知各位有没有尝试过C++对stm32的开发,想我在ARM上,PC上跑QT,也是C++开发的,我就想,能不能在我单片机stm32上跑呢?答案是肯定可以跑的,而且程序我觉得还比C写的更直观一些。
首先,程序不完全是C++写的,底层硬件保持C语言不变,还是用官方V3.5的库,并且库里每个.c都有
#ifdef __cplusplus
extern "C" {
#endif
.......
........
#ifdef __cplusplus
}
#endif
看来官方知道有人会用C++,所以写上了这样一段,来告诉编译器,被包括的函数要用C的编译器来编译,而且MDK是支持的,那就好办了。其次这些硬件控制的程序用C++来管理,也说说在C++的框架下调用C函数,说白了用C++程序来管理C程序,有点多此一举?呵,不尽然。
开始第一步:搭建一个简单的框架
这个框架说来也简单,就三个词:class,
public,private.不用细说,自行百度,谷歌.....
框架:
class xxx{
public:
...........
private:
...........
};
先看看GPIO的类吧
是不是很熟悉!里面就是C代码!再看看具体函数怎么写的?
哎呀,还是C!没错,只是用C++的class来管理,有什么好处?这个说不清,道不明,还是从实际角度出发,有两个甚至多个GPIO做为led灯,看看初始化怎么写(以两个为例,PB0和PB2吧):
_GPIO LED;
_GPIO LED1;
LED.GPIO(GPIOB,GPIO_Pin_0,GPIO_Mode_Out_PP);
LED1.GPIO(GPIOB,GPIO_Pin_2,GPIO_Mode_Out_PP);
要是控制两个的灯引脚一个输出高电平,一个输出低电平:
LED.Set();
LED1.Reset();
就这么简单,可能要有疑问了,中断怎么处理?哈,这个也好办,在要用的中断函数前加上
extern "C"
就是告诉编译器这个函数要用C编译器来编译!
既然GPIO类写好了,那串口也就不远了
好了具体函数也不多细说了, 还不如直接分享一下这个工程!
最后交代一下工程
我用的的MDK5,具体哪个版本我就不知道了,如果要用MDK4来打开的话,试试把工程目录USER下Template.uvprojx中的后缀去掉x,还有.uvoptx也是去掉x
好了,如果你有兴趣也可以玩玩,最好是把SPI,ADC,dma....做好了分享一下。
Template_C _STM32F103.rar
(3.56 MB)
(下载次数: 20, 2016-7-25 13:17 上传)
最初的空的工程是用的正点原子的工程,然后在此基础上改的。已经写好了GPIO和串口。
哦,如果你开始对C++的类感兴趣了,不妨看看这本书
《C++程序设计教程第二版(钱能)》 拥有C语言编程底子的你可以直接从第三部分第8章开始看,在此,祝你能取得收获!
本帖最后由 ywlzh 于 2016-7-25 14:37 编辑
天地庄周马;江湖范蠡船。 个性签名还是放QQ号吧,2060347305,添加说明EEworld好友
点赞
回复评论 (4)
沙发
johnrey
感觉和mbed很像啊,hoho
点赞
2016-7-25 14:10
板凳
hpei123
顶顶顶顶顶顶顶顶顶顶
点赞
2016-7-25 14:19
4楼
Aragorn
原来我连STM8也是用C++写的,后来同事跟不上,改成C了……
点赞
2016-7-25 15:26
5楼
ywlzh
引用:
Aragorn 发表于 2016-7-25 15:26
原来我连STM8也是用C++写的,后来同事跟不上,改成C了……
跟不上,哎呀,哎呀
天地庄周马;江湖范蠡船。 个性签名还是放QQ号吧,2060347305,添加说明EEworld好友
点赞
2016-7-25 17:03
最新活动
报名直播赢【双肩包、京东卡、水杯】| 高可靠性IGBT的新选择——安世半导体650V IGBT
30套RV1106 Linux开发板(带摄像头),邀您动手挑战边缘AI~
安世半导体理想二极管与负载开关,保障物联网应用的稳健高效运行
免费申请 | 上百份MPS MIE模块,免费试用还有礼!
PI 电源小课堂|无 DC-DC 变换实现多路高精度输出反激电源
2024 瑞萨电子MCU/MPU工业技术研讨会——深圳、上海站, 火热报名中
随便看看
超强整理!PCB设计之电流与线宽的关系
高薪招聘嵌入式开发人员!!
基于DSP_C54X窄带中频抽样的理论与实现
能激光制导的剪刀
请问大家以太网怎么在LM3S里加入网页,网页中怎么做配置IP等信息.TI专家也来帮帮
基于 Modbus 协议的无线远程数据采集系统
atmega16 读写SD卡,SPI模式
草长莺飞,春暖花开,成都地区EEer线下活动
Mentor Xpedition PCB 导入3D模型错位,要怎么调整?
【TI荐课】#升压和升降压 DCDC 变换器助力无线充电设计#
msp430f1232的资料及AQ430
PCINT电平变化中断
论坛中毒了吗?
招聘:RF工程师一名,地点:深圳
想提高共模输入电压,这样做会不会有问题?
MSP430F5529定时器使用程序详解
怎么读取(计算)一个分区的偏移量
FLASH 写数据
LED失效分析方法,6种LED失效分析方法浅谈
单片机自带有EEPROM,有必要再外挂一个EEPROM吗?小体积大容量的EEPROM比较贵!
电子工程世界版权所有
京B2-20211791
京ICP备10001474号-1
京公网安备 11010802033920号
回复
写回复
收藏
回复