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

📄 timer1.c

📁 altera 中基于NIOS软核系统的定时器应用程序
💻 C
字号:
/* 
需要修改的地方:
1 PIO_BASE  改为您自己的PIO名称即XXXX_BASE
2 TIMER_IRQ 改为您自己的TIMER名称即XXXX_IRQ
3 TIMER_BASE改为您自己的TIMER名称即XXXX_BASE

*/



#include "system.h"
#include "altera_avalon_pio_regs.h"
#include "alt_types.h"
#include "altera_avalon_timer_regs.h"
#include "altera_avalon_timer.h"
#include "sys/alt_irq.h"
#include "sys/alt_sys_init.h"

unsigned int  Timer0_counter;
unsigned char Led0_Flag;

static void Timer0_Interrupts(void *context,alt_u32 id)
{
    /* clear Int Flag*/
    if(Timer0_counter >= 50) /* 1S */
    {
        Timer0_counter = 0;
        if(Led0_Flag == 0)
        {
            Led0_Flag = 1;
            IOWR_ALTERA_AVALON_PIO_DATA(PIO_BASE, 0x00);    //led on        
        }
        else
        {
            Led0_Flag = 0;
            IOWR_ALTERA_AVALON_PIO_DATA(PIO_BASE, 0x01);    //led off        
        }
    }
    else
    {
        Timer0_counter++;
    }
    IOWR_ALTERA_AVALON_TIMER_STATUS(TIMER_BASE, 0x00);//clear TO
}
static void Init_Timer0(void)
{
  alt_irq_register(TIMER_IRQ,NULL,Timer0_Interrupts);
  IOWR_ALTERA_AVALON_TIMER_CONTROL(TIMER_BASE, 0x07);
  IOWR_ALTERA_AVALON_PIO_DATA(PIO_BASE, 0x01);
} 
int main (void)
{
  volatile int i;

  Timer0_counter = 0;
  Led0_Flag = 0;
  alt_irq_init (ALT_IRQ_BASE);//irq must use
  alt_sys_init(); 
  Init_Timer0(); 
  
  while(1)
  {
      while (i<200000)
          i++;
      i = 0;
  }
  return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -