iar 4.42编译freeRTOS出错

来源:互联网 发布:优化楼梯间出入口标识 编辑:程序博客网 时间:2024/04/26 13:04

image

执行语句 unsigned portSHORT usValue = ( unsigned portSHORT ) 0;时的汇编图,

执行到绿色处时,sp值为0x2000494C

image

该值用于

if( xQueueSend( *( ( xQueueHandle * ) pvParameters ), ( void * ) &usValue, pollqNO_DELAY ) != pdPASS )

 

中时,不能修改其值,即使如上的初始化0都不行.不知为什么是0x496c这个值,本来应该是0的呀。

xQueueSend原型是:

signed portBASE_TYPE xQueueGenericSend( xQueueHandle pxQueue, const void * const pvItemToQueue, portTickType xTicksToWait, portBASE_TYPE xCopyPosition )

即( void * ) &usValue对应于const void * const pvItemToQueue。

 

//------------------

本来以为是类型转换出了问题,但另外用函数测试没有问题,现在看到汇编指令也应该是对的呀。

该例子是freeRTOS的pollQ例子,在vc6.0和iar5.3上尝试都正确的。