zynq ucos axitimer编程

2015-06-18 20:49 阅读 478 次 评论 0 条

在上一日志中完成了Vivado SDK下基于µC/OS "Hello World"工程,这里接着教程的内容,继续试验。

Axitimer0采用ucos_axitimer驱动。

1、 创建一个新任务和信号量

声明一个任务函数,包含任务TCB(Task Control Block)结构和堆栈空间,将这些变量可以定义到app.c文件中。同时需要一个信号量命令为Timer0Semaphore。

ucos所需的信号量等变量与函数定义与声明

在ucosiii中一个最小的任务就是一个函数。注意:任务函数都是死循环形式,不希望任务退出。这其中还加入了一些调试信息

timer0Task任务的函数形式

修改MainTask任务,在其中创建Timer0的信号量与timer0的任务。

在mainTask中创建timer0的信号量与任务

将定时器的初始化配置,timer0的中断函数都放到了任务中。

将axitimer0配置为倒数计数模式,自动load计数值,计数到0产生中断。

timer0的中断处理函数

Timer0的中断函数中就是发送Timer0Semaphore信号量,从而启动timer0Task任务。

下图为程序运行的效果。Timerotask任务中延时2s,所以在每个10s的延时中会产生5个timer0的延时。

添加AxiTimer0后的app.c的运行结果

附上修改后的app.c文件,在vivado2015.1的sdk中测试通过http://yunpan.cn/cFVpsbSe2MLTf (提取码:46a4)

版权声明:本文著作权归原作者所有,欢迎分享本文,谢谢支持!
转载请注明:zynq ucos axitimer编程 | 起点博客
分类:应用笔记 标签:, , , , , ,

发表评论


表情