楼主

[嵌入式] 【分享帖】用C++11开发STM32程序

[复制链接]
顾问wmd
2018-3-17 10:48:08 显示全部楼层
最近也在探索STM32用C++开发的方法,看了楼主的方法 感觉受益良多呀
这类教程和探索比较少 感觉大家都有自己的方法
在这里我可以分享一下我对应的各类处理方法和一些坑过我的地方:
像那个__weak其实可以不用全局替换 考虑到尽量不去碰库里面的文件,
因为cube重新生成的话这些没有在User code范围内的修改都会被覆盖,
所以对于这个情况我的方法是在main.h里面加一个宏定义:#define __weak __attribute__((weak))
这样即可以搞定所有的__weak,因为这些库都include了main.h
另外,如果stm32开发要用到中断的话一定要在stm32f4xx_it.c的开头与结尾加上extern "C" 和大括号扩住(这个文件的开头和结尾都有user code段) 因为中断的跳转向量表是写在汇编的startup里面的 然后C++因为要考虑重载函数 所以函数的链接符号会和C的不一样 为了能正确的进入中断必须保持这些中断函数按照C的方式引出

还有其他一些比较稀少的外部情况问题都可以按照main.h加修补宏定义的方式来解决

我这边偶尔也会有探索C++编译时解决不了的问题,如果楼主还在弄的话不如加个好友交流一下?
沙发

[嵌入式] 【分享帖】用C++11开发STM32程序

[复制链接]
顾问wmd
2018-3-17 10:59:35 显示全部楼层
再补充一些 我为了保持和Cube的高度相关,当时是直接把main.c设置为C++源文件了 这样就算cube重新生成的时候也不需要修改很多其他的东西.不过偶尔加第三方库的时候main.c直接当成c++文件用还是有一点问题的 这个感谢楼主的经验 我到时候再移植一波 然后刚刚说的stm32f4xx_it.c要加extern "C"的时候也要先把这个文件在keil里面直接设置成C++文件.这样中断就可以使用C++特性了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

触屏版 | 电脑版

Copyright © 2024 RoboMasters 版权所有 备案号 粤ICP备2022092332号

快速回复 返回顶部 返回列表