执行语句 unsigned portSHORT usValue = ( unsigned portSHORT ) 0;时的汇编图,
执行到绿色处时,sp值为0x2000494C
该值用于
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上尝试都正确的。