Xilinx K7_Microblaze的Tmrintc定时器中断使用(ISE14.7)

在软核中加入Axi_timer和Axi_intc的IP核,然后完成连线,axi_intc的中断信号要接到软核的中断引脚上。

Xilinx K7_Microblaze的Tmrintc定时器中断使用(ISE14.7)_第1张图片

axi_timer的中断信号要和axi_intc的中断信号相连,这样才能保证定时器中断的触发。

注意,axi_intc的Intr引脚是一个输入类型的信号,代表从外部接收到的中断触发信号,这个信号与Axi_timer的中断输出相连,使得定时器溢出时,触发中断。

 Xilinx K7_Microblaze的Tmrintc定时器中断使用(ISE14.7)_第2张图片

 

分别在XPS中进行Design Rule Check、Generate Netlist、Export to SDK。

在ISE那边也完成系统的综合、实现、导出bitstream

一开始使用了官方给的例程D:\ISE147\14.7\ISE_DS\EDK\sw\XilinxProcessorIPLib\drivers\tmrctr_v2_05_a\examples的xtmrctr_intr_example.c文件,发现直接使用例程之后不进入定时器中断处理函数或者是之进入一次。排查了几天问题后,没找到原因,网上也没搜到较为系统的解释。看了一些贴之后看到Peripheral Tests的例程,于是我打算用以下方式做一下。

然后用了SDK中生成的工程,Peripheral Tests,这个是用来测试硬件中所有接口的硬件程序,也就是他会把所有接口的例程自动生成在主文件中。

Xilinx K7_Microblaze的Tmrintc定时器中断使用(ISE14.7)_第3张图片

 Xilinx K7_Microblaze的Tmrintc定时器中断使用(ISE14.7)_第4张图片

 

在跑通Peripheral Tests程序之后,在Terminal窗口能看到打印信息之后。在定时器中断处理函数中也放入一个打印信息print(”TmrCounterHandler Succeed“),能够判断出程序运行后,有正确执行定时器中断指令。使用串口打印信息的同时,记得要有调用UART的ip核,并且正确设置波特率,然后在SDK中STDIO要勾选上,其次选择你的电脑所连uart的com口,波特率也要设置成与IP一致的,才能保证你的窗口有打印信息打出。

Xilinx K7_Microblaze的Tmrintc定时器中断使用(ISE14.7)_第5张图片 

将例程中的有关定时器中断的函数粘贴在了我自己的工程中

Xilinx K7_Microblaze的Tmrintc定时器中断使用(ISE14.7)_第6张图片

 

后来经过测试,程序正常运行,并且将定时器中断设置为了4ms一次,应该是极限大小,再调小后程序运行不起来,没有再查原因了,因为4ms已经满足了我的系统应用。

你可能感兴趣的:(ISE,FPGA,fpga)