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

3 篇文章 0 订阅

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

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

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

 

 

分别在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,这个是用来测试硬件中所有接口的硬件程序,也就是他会把所有接口的例程自动生成在主文件中。

 

 

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

 

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

 

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dayana_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值