Xilinx SDK 2016.1 freeRTOS823_xlinx OS 平台
在我引入一些 freeRTOS 元素之前,我的代码似乎运行良好。我的代码的一般功能如下:
在 Interrupt 子例程中,我为从 Zynq Soc 的 IP 寄存器读取的变量focusPosition 赋值:
// separate file u32 focusPosition=0; static void ISR(void *CallbackRef) { focusPosition = XRb_focus_Get_position_o(CallbackRef); }
然后我在主函数中将值打印到控制台:
// separate file extern u32 focusPosition; main{ ... while(1){ sleep(1); xil_printf("%d\n",focusPosition); } }
代码打印了正确的值,但是,当我尝试在代码中实现一些额外的行时,例如 xTaskCreate() xEventGroupCreate(),有些东西会弄乱所有内存并且打印的值保持不变,这是不正确的。
简单添加与变量无关的代码如何对该变量产生任何影响?据我了解, xTaskCreate() 和 xEventGroupCreate() 是在堆上创建的。我厌倦了四处寻找 Xil_DCacheDisable() 是否有帮助,但没有。有任何想法吗?我的 focusPosition 变量是否正确定义/声明?