📄 alarm范例.txt
字号:
/*
* 声明:本范例源于书籍‘NiosII软件架构解析’
* 作者:蔡伟纲
* 博客地址: http://NiosII.cublog.cn
*
* 一、功能: Alarm演示代码.
*
* 二、相关说明:
* 由于NiosII IDE的ISS(Instruction Set Simulation)支持JTAG_UART和定时
* 器的仿真功能,所以该源码可以运行在ISS模式下,而无须任何硬件开发板的支持.
*
* 三、运行前提:
* 1. 选择包含JTAG_UART和具有周期中断功能的定时器的NiosII系统(ptf文件);
* 2. 在系统库属性中完成下面的配置:
* (1) 将stdout映射到JTAG_UART;
* (2) 将具有周期中断功能的定时器映射为系统时钟;
*
*/
#include <stdio.h>
#include "sys/alt_alarm.h"
#include "alt_types.h"
//定义my_alarm_callback函数的重复调用周期
//INTEVAL_TICK不能太大,因为ISS对定时器的仿真需要很长的时间,这里取1即可
//在SOPC Builder中对定时器周期的设定也不要太大,1ms即可
#define INTEVAL_TICK 1 //单位:系统时钟周期
/* 欲注册为Alarm的callback函数; */
alt_u32 my_alarm_callback (void* context)
{
static int CallCounter = 0;
CallCounter++;
//建议用户在此处设置断点,然后观测变量CallCounter,
//从而得知my_alarm_callback被调用了几次;
//决定在返回后的多少个系统时钟周期后,my_alarm_callback函数再次被调用;
return INTEVAL_TICK;
}
int main()
{
//在注册alarm之前,必须先定义一个alt_alarm类型的变量(无须初始化),
//并将它作为alarm注册函数alt_alarm_start的输入参数;
static alt_alarm alarm;
//当alt_alarm_start注册成功时返回0,否则返回负数;
if(
alt_alarm_start(&alarm,
INTEVAL_TICK,
my_alarm_callback,
NULL
) < 0
)
{
printf ("No system clock available\n");
}
while (1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -