文档详情

定时器实验用到的程序.doc

发布:2016-08-08约9.77千字共8页下载文档
文本预览下载声明
/******************************************************************** 定时器系统时钟驱动实验 * 文 件 名:SysTimer_test.c * 功 能:利用系统时钟服务产生1s的周期性事件,并借此控制LED闪烁,在做实验时首先在System Library设置页中,在System clock timer下拉列表框中选择一个系统时钟.* * 说 明:观察LED闪烁效果。 *******************************************************************#include stdio.h #include system.h //包含基本的硬件描述信息 #include altera_avalon_pio_regs.h //包含基本的IO寄存器信息 #include alt_types.h //Altera定义的数据类型 #include sys/alt_alarm.h //系统时钟服务头文件 /****************************************************************** * 与硬件相关的宏定义,用户根据实际情况修改 ******************************************************************/ /* 用户添加并命名的外设基地址,在SYSTEM中定义,用户需要根据不同的命名来修改此处 #ifndef LED_PIO_BASE //这是LED_PIO核的基地址 #define LED_PIO_BASE 0//users definition here #endif #if LED_PIO_BASE == 0//#error No definition of LED_PIO core...\n #endif #define LEDCON 0xff static alt_alarm alarm; //按调用API函数规定定义的变量 static unsigned char led = 0xff; /******************************************************************** * 名 称:my_alarm_callback * 功 能:按调用规定系统时钟回调函数,在该函数中实现用户功能 * 入口参数:context,系统传给回调函数的参数 * 出口参数:返回下一次的系统时钟服务的周期值 ********************************************************************alt_u32 my_alarm_callback (void* context) { if(led == 0xff){ led = 0x00; }else{ led = 0xff; } IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE,led); //操作IO口 return alt_ticks_per_second(); } ******************************************************************* * 名 称:InitPIO() * 功 能:初始化LED_PIO为输出,其余输入,屏蔽中断,清边沿捕获寄存器 * 入口参数:无 * 出口参数:无 ******************************************************************** void InitPIO(void) { LED_PIO为输出,其余输入 IOWR_ALTERA_AVALON_PIO_DIRECTION(LED_PIO_BASE, LEDCON); 禁止所有PIO中断 IOWR_ALTERA_AVALON_PIO_IRQ_MASK(LED_PIO_BASE, 0x00); 清清边沿捕获寄存器 IOWR_ALTERA_AVALON_PIO_EDGE_CAP(LED_PIO_BASE, 0x00); } int main() { InitPIO(); IOWR_
显示全部
相似文档