使用IAR C++来编译STM32

本文介绍了如何使用IAR Embedded Workbench for ARM(EWARM)5.50版本,结合STM32F10x_StdPeriph_Lib_V3.3.0库,成功进行C++编程。关键步骤包括修改源文件扩展名,处理extern "C"声明,确保中断函数正确编译。文章还提及了STM32库的更新,如SystemInit()函数的调用时机,以及SystemCoreClockUpdate等函数的使用。此外,还提供了在汇编中调用C++成员函数的方法。
摘要由CSDN通过智能技术生成

很久以前就想用c++来写嵌入式,特别是有时在写界面的时候.一年多来的不断GOOGLE,网上仍然还是只有那几篇文章,经过不断的尝试后都以失败告终.今天又得写界面了,在写各种绘制函数的过程中,非常想用C++的重载...

所以又开始疯狂的搜索及尝试,终于,经过一天的努力,成功编译通过,并且很完美....很纯的C++

 

步骤:

  1. 将STM32库的源文件中的.c文件全改为.cpp,并去掉对应头文件中的extern "C",注意还有下面的那个"}".(不是必须,只是为了上面说的很纯的c++,:) ).
  2. 打开system_stm32f10x.h头文件(注意是头文件),在void SystemInit(void);前加上extern "C" ,提示编译器按照C的方式来办事.(加这个的原因是因为第一步,如果在第一步中你没有去掉#ifdef __cplusplus  extern "C" { #endif 的话,这一步就不用了),其实主要是因为如果按照C++方式来编译这个函数的话,因为编译后的函数名字原因,会导致启动文件找不到这个函数,而且编译的时候会弹出找不到符号什么的错误导致编译不过.
  3. 你完全可以在这时将上面的文件编译为一个库.(不想麻烦的话跳过这步)
  4. 把stm32f10_it.c改为stm32f10_it.cpp,并且保留stm32f10_it.h头文件中的extern "C".(保留stm32f10_it.h里的extern "C" 的原因:因为启动文件里保存了所有中断函数的入口,如果不按C方式编译的话,程序将找不到中断函数,也就进不了中断了)
  5. OK,现在你的所有工程文件都可以是CPP了,除了system_stm32f10x.h和stm32f10_it.h这两个头文件里有extern "C"外,其它的都是很纯的C++文件了.(注意:前面加了extern "C"只是让编译器按照C方式编译,并不影响我们在其中使用C
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值