Qu artu s ii 11.0 Qsy s 实现定时器实验 该实验的目的是:操作定时器1 来控制4 个LED 灯闪烁,操作定时器2 来控制定时器1 的定时周期。 环境:Qu artu sII 11.0 + Nios II 11.0 + DE0. 建立两个定时器。都选择 Fu ll-featu red,这样可以程序修改定时周期等。 Qsys 完成图: Nios 中代码: /******************************** includes ********************************/ #include "system.h" #include "altera_avalon_pio_regs.h" #include "altera_avalon_timer_regs.h" #include "alt_types.h" #include "sys/alt_irq.h" #include #include #include #include /******************************** variables ********************************/ void init_timer(void); int i = 0, j = 0, flag; alt_u32 timer_prd[4] = {5000000, 10000000, 50000000, 100000000}; // 这四个是定时器的时钟数,定时时间=定时器的时钟数/定时器的时钟周期 // 该实验中系统时钟为50MHz,则上述定时时间为{0.1s,0.2s,1s,2s} /* *================================functions================================ Name: main Description: *========================================================================= */ int main(void) { init_timer(); // 初始化定时器 while(1); return 0; } /* *================================functions================================ Name: ISR_handle_time1 Description: *========================================================================= */ void ISR_handle_timer1(void *context) { // 控制 4 个流水灯闪烁 IOWR_ALTERA_AVALON_PIO_DATA( LED_BASE, 1<