定时器实验用到的程序.doc
文本预览下载声明
/********************************************************************
定时器系统时钟驱动实验
* 文 件 名: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_
显示全部