打印

keil 4.20中 stm32f10x_it.c 改为stm32f10x_it.cpp

[复制链接]
3478|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhaoyk1981|  楼主 | 2011-10-17 13:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
stm32F 库V3.5.0中 提供的中断函数为stm32f10x_it.c; 但是我想在中断里面调用类对象,我能否重写stm32f10x_it.c为Mystm32f10x_it.cpp;  可以吗?
我改写为Mystm32f10x_it.cpp之后,里面定义的USART1_IRQHandler()处理函数根本不执行;  这是为什么? 我该怎么用? 谢谢大侠!
沙发
lxyppc| | 2011-10-17 14:04 | 只看该作者
对于cpp文件中的函数你想在汇编或C中使用,要在前面加上extern "C"

使用特权

评论回复
板凳
上官金虹| | 2011-10-17 15:19 | 只看该作者
本帖最后由 上官金虹 于 2011-10-17 15:24 编辑

用extern "C"声明吧。

还可以直接在汇编向量表里面引入C++中断函数符号,
或者不用汇编,直接用C++写中断向量表。

使用特权

评论回复
地板
zhaoyk1981|  楼主 | 2011-10-17 15:58 | 只看该作者
本帖最后由 zhaoyk1981 于 2011-10-17 16:28 编辑

我cpp文件中的函数,定义是用extern "C“修饰了, C中调用可以了;怎么其他cpp文件里的函数调用又出问题了?  难道extern "C" 修饰后 只能在C文件中的函数调用??我即想在C文件中 也想在C++文件中调用怎么办?
加上extern "C++" 编译不过去呢?
extern "C++" void  Init_BSP(void)
{
    NVIC_Configuration();
}

使用特权

评论回复
5
上官金虹| | 2011-10-17 16:03 | 只看该作者
extern "C" void  Init_BSP(void);  //放到头文件里面

void  Init_BSP(void)
{
    NVIC_Configuration();
}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

28

帖子

1

粉丝