0
赛灵思SDK 2016.1 freeRTOS823_xlinx OS平台变量不正确更新
我的代码似乎直到我介绍了一些FreeRTOS的元素,做工精细。我的代码的一般功能如下:
在中断子程序,我的值分配给变量focusPosition对从ZYNQ SOC的IP寄存器读:
// separate file u32 focusPosition=0; static void ISR(void *CallbackRef) { focusPosition = XRb_focus_Get_position_o(CallbackRef); }
然后我的printf在主函数值到控制台:
// separate file extern u32 focusPosition; main{ ... while(1){ sleep(1); xil_printf("%d\n",focusPosition); } }
然而,当我尝试在代码中实现一些额外的行时(如xTaskCreate()xEventGroupCreate()),代码会打印出所有内存,并且打印值保持不变,这是不正确的。
简单的补充,它无关变量的代码如何才能对变量是否有影响?据我所知,xTaskCreate()和xEventGroupCreate()是在堆上创建的。我厌倦了,看看Xil_DCacheDisable()是否会有所帮助,但没有。有任何想法吗?我的focusPosition变量是否已正确定义/声明?
声明变量为volatile并没有帮助( – Nazar
你是否声明它在extern声明中也是不稳定的?即使这样也无济于事你也应该这么做 –
你也确定ISR还在继续并返回正确的值到变量? –