网站开发维护合同模板电子版,火车头wordpress 5.1,国内设计师个人网站欣赏,网站开发 价格最近在使用Xilinx 7系列FPGA XC7A100T时#xff0c;运行MicroBlaze软核处理器#xff0c;添加了AXI TIMER IP核#xff0c;并使能定时器溢出中断#xff0c;发现定时器触发中断后#xff0c;无法返回主函数的问题#xff0c;最后发现修改编译器优化等级就正常了。
FPGA型…最近在使用Xilinx 7系列FPGA XC7A100T时运行MicroBlaze软核处理器添加了AXI TIMER IP核并使能定时器溢出中断发现定时器触发中断后无法返回主函数的问题最后发现修改编译器优化等级就正常了。
FPGA型号是XC7A100T-FGG484开发环境是Vivado 2018.3。
应用代码大致如下结构 uint32_t cnt_1ms 0;int main(void)
{//1. 定时器初始化//2. 定时器中断初始化1mswhile(1){if(cnt_1ms 500) {cnt_1ms 0;set_led_toggle();}}return 0;
}void mb_timer0_handler(void)
{//1ms溢出cnt_1ms;//xil_printf(cnt_1ms %d\r\n, cnt_1ms);//清除中断XTmrCtr_ClearStats(timer0);return;
}
编译版本选择Debug版本LED正常500ms闪烁一次。 编译版本选择Release版本LED状态无变化中断打印的cnt_1ms变量的值一直在增加没有清零说明定时器溢出中断触发之后没有返回主函数。
最后发现把Release版本的编译器优化等级改为0就正常。 这种情况不是所有的工程都会出现只有在一些特定情况下会出现目前不清楚发生的规律。