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

📄 led.c

📁 《ARM与嵌入式系统基础教程》
💻 C
字号:
//*------------------------------------------------------------------------------------------------
//* 文件名			   : Led.c
//* 功能描述		   : 系统入口函数文件
//* 作者    		   : 焦海波
//* 版本			   : 0.1
//* 建立日期、时间	   : 2007/02/24 11:59
//* 最近修改日期、时间 : 
//* 修改原因		   : 
//*------------------------------------------------------------------------------------------------
//*------------------------------------------ 头文件 -----------------------------------------------
#include	"/at91sam7x256/include/AT91SAM7X256.h"
#include	"/at91sam7x256/include/lib_AT91SAM7X256.h"
//*================================================================================================
//*											函	数	区
//*================================================================================================
//*------------------------------------------------------------------------------------------------
//* 函数名称 : irqvLed
//* 功能描述 : PIT中断处理函数
//* 入口参数 : 无
//* 出口参数 : 无
//*------------------------------------------------------------------------------------------------
__irq void irqvLed(void)
{	
	static unsigned int __unIsTurnOn = 0;

	if(__unIsTurnOn)
	{
		AT91F_PIO_ClearOutput(AT91C_BASE_PIOB, 1 << 19);
		__unIsTurnOn = 0;
	}
	else
	{
		AT91F_PIO_SetOutput(AT91C_BASE_PIOB, 1 << 19);
		__unIsTurnOn = 1;
	}
	
	AT91C_BASE_AIC->AIC_EOICR = AT91C_BASE_PITC->PITC_PIVR;
}
//*------------------------------------------------------------------------------------------------
//* 函数名称 : CMain
//* 功能描述 : 系统入口函数,完成基本的定时器中断设置等工作
//* 入口参数 : 无
//* 出口参数 : 无
//*------------------------------------------------------------------------------------------------
#define		INTERVAL_MS_NUM		50		
int CMain(void)
{
	int i;

	//* 初始化LED1
	AT91F_PMC_EnablePeriphClock(AT91C_BASE_PMC, 1 << AT91C_ID_PIOB);
	AT91F_PIO_CfgOutput(AT91C_BASE_PIOB, AT91C_PIO_PB19 | AT91C_PIO_PB20);
	
	//* 注册中断
	AT91F_AIC_ConfigureIt(AT91C_BASE_AIC, AT91C_ID_SYS, AT91C_AIC_PRIOR_HIGHEST, AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL, irqvLed);
    AT91C_BASE_AIC->AIC_IECR = 0x01 << AT91C_ID_SYS;
    
    AT91C_BASE_PITC->PITC_PIMR = AT91C_PITC_PITEN | AT91C_PITC_PITIEN | ((((48000000/16)/1000)*INTERVAL_MS_NUM) - 1);
	
	while(1)
	{
		AT91F_PIO_ClearOutput(AT91C_BASE_PIOB, 1 << 20);
		for(i=0; i<800000; i++);
		AT91F_PIO_SetOutput(AT91C_BASE_PIOB, 1 << 20);
		for(i=0; i<800000; i++);
	}
	
	return 1;
}

⌨️ 快捷键说明

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