⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 alarm范例.txt

📁 nios范例(含源代码)
💻 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 + -