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還在繼續並返回正確的值到變量? –