你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

keil 用c++编译含有rtos模块时的错误

[复制链接]
Tony_Duan 提问时间:2016-8-9 22:12 /
近期看到一个哥们用c++写嵌入式,感觉蛮有趣,如果当初我的程序要是能用类就轻松多了,所以也想尝试一下。虽然不会c++但是还是多少会用简单的class,这个c#上用了不少。我的工程包括usb和 rtos,设置使用cpp编译,c99通过的程序编译错误一大堆,主要在usb和cmsis_os里,这里随便粘贴其中一条错误C:/Users/ME/STM32Cube/Repository/STM32Cube_FW_F1_V1.4.0/Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS/cmsis_os.c(791): error:  #513: a value of type "void *" cannot be assigned to an entity of type "osPoolId",程序代码如下thePool = pvPortMalloc(sizeof(os_pool_cb_t));由于不懂c++,查阅资料得知c99编译器是允许暗含转换的,但是c++不允许,因此出现错误。我的程序是用cubemx生成的,难道我要在错误的地方全部加上强制转换吗?比如thePool = (osPoolId)pvPortMalloc(sizeof(os_pool_cb_t)),改写之后此条语句cpp编译正确。大家有其他方法吗?我不想动第三方库。谢谢
收藏 评论6 发布时间:2016-8-9 22:12

举报

6个回答
moyanming2013 回答时间:2016-8-10 10:04:50
C++比C有更加严格的类型转换,你的error显然至少是一个类型转换问题,再就是看看osPoolId是否是个指针类型?或者可以由void*转换而来?
Tony_Duan 回答时间:2016-8-10 18:17:35
moyanming2013 发表于 2016-8-10 10:04
C++比C有更加严格的类型转换,你的error显然至少是一个类型转换问题,再就是看看osPoolId是否是个指针类型 ...

谢谢。关键cmsis_os 是系统自带的,我不想改,有其他办法吗
moyanming2013 回答时间:2016-8-11 09:50:17
Tony_Duan 发表于 2016-8-10 18:17
谢谢。关键cmsis_os 是系统自带的,我不想改,有其他办法吗

CMSIS已是兼容c和c++的,你的代码可能ST在移植freertos时不兼容c++所致(这种可能性很小,你需要核实下自己的修改部分)。
既然你用了CMSIS-RTOS那么底层试试rtx也是一样的。
Tony_Duan 回答时间:2016-8-11 11:29:16
moyanming2013 发表于 2016-8-11 09:50
CMSIS已是兼容c和c++的,你的代码可能ST在移植freertos时不兼容c++所致(这种可能性很小,你需要核实下自 ...

大师,我水平不咋滴,就是爱玩,玩这个直接做板实验的,所以基础知识很差。我的程序是用stm32cubemx直接生成的,使用了RTOS,用c99编译没问题,程序在板子上跑的也正常。但是用cpp编译就出现了问题,其实我什么都没改动。为了测试,我用stm32cubemx生成不同的程序,但是只要程序包含有rtos或者usb(我看是第三方),用c++编译就是出错。我曾经对这几个块设置用c99编译而其他用c++编译,没有错误但是连接是有个函数找不到而出错。我也看了说明,CMSIS-RTOS是兼容c++的。但是那些错误的代码都是没有强制数据类型转换,能在哪里设置让c++忽略这些错误吗?或者有其他办法吗,再次谢谢
moyanming2013 回答时间:2016-8-11 12:16:52
Tony_Duan 发表于 2016-8-11 11:29
大师,我水平不咋滴,就是爱玩,玩这个直接做板实验的,所以基础知识很差。我的程序是用stm32cubemx直接 ...

可能是pvPortMalloc对C++和C的兼容性做的不好,比如至返回void*类型的,这个只能强制转换下你真实的指针了。
nashchen17 回答时间:2016-8-11 13:02:09
這部分我還不是很了解,感謝分享文章與經驗

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版