📄 main.c
字号:
/********************************************************************************************************
** File Name: main.c
** Description: MagicARM2410实验箱的基础实验---外部中断实验。
** 使用外部中断EINT4进行LED1的控制,每当有一次中断,就把LED1控制口输出信号取反一次。
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#include "config.h"
#define BEEP (1<<5) /* GPE5,高电平时蜂鸣 */
#define BEEP_MASK (~BEEP)
/*********************************************************************************************************
** Function name: DelayNS
** Descriptions: 长软件延时。
** 延时时间与系统时钟有关。
** Input: dly 延时参数,值越大,延时越久
** Output: 无
********************************************************************************************************/
void DelayNS(uint32 dly)
{
uint32 i;
for(; dly>0; dly--)
for(i=0; i<50000; i++);
}
/*********************************************************************************************************
** Function name: SpiInit()
** Descriptions:
** Input: 无
** Output: 无
********************************************************************************************************/
void SpiInit(void)
{
rSPPRE0 = 0xF9; //f(SPI)=100KHZ
rSPCON0 = 0x18; //主发送,CPOL=0,CPHA=0
}
/*********************************************************************************************************
** Function name: EINT_init
** Descriptions: 外部中断初始化。设置GPF4引脚为外部中断EINT4功能,下降沿触发模式,并使能中断允许。
** Input: 无
** Output: 无
********************************************************************************************************/
void MSendData(uint8 data)
{
rGPGDAT = rGPGDAT&(0<<2);
while((rSPSTA0&0x01)==1)
rSPTDAT0 = data;
DelayNS(20);
rGPGDAT = rGPGDAT|(1<<2);
//return(rSPTDAT0);
}
uint8 const DISP_TAB[16]={0x5a,0xa5,0x5a,0xa5,0x5a,0xa5,0x5a,0xa5,0x5a,0xa5,
0x55,0xaa,0x55,0xaa,0x55,0xaa};
/*********************************************************************************************************
** Function name: main
** Descriptions: 初始化外部中断EINT4,然后循环等待中断。
** Input: 无
** Output: 系统返回值0
********************************************************************************************************/
int main(void)
{
uint8 i;
rGPECON = rGPECON&(0xF03FFFFF)|(0x02<<26)|(0x02<<24)|(0x02<<22);
rGPGCON = rGPGCON&(0xFFFFFFCF)|(0x01<<4);
rGPGDAT = rGPGDAT|(1<<2);
SpiInit();
while(1)
{
for(i=0;i<16;i++)
{
MSendData(~DISP_TAB[i]);
DelayNS(50);
}
}
return(0);
}
/*********************************************************************************************************
** End Of File
********************************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -