最近也在探索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++编译时解决不了的问题,如果楼主还在弄的话不如加个好友交流一下? |