📄 main.c
字号:
#include "s3c4510b.h"
#include "console.h"
#define MAXHNDLRS 21
void IRQHandler(void);
void ISR_Timer0(void);
void (*InterruptHandlers[MAXHNDLRS])(void);
static void DummyIsr(void){}
void InitIntHandlerTable(void)
{
int i;
for (i=0;i<MAXHNDLRS;i++)
InterruptHandlers[i]=DummyIsr;
}
void SysSetInterrupt(int vector,void (*handler)())
{
INTMSK&=(~(1<<vector));
InterruptHandlers[vector]=handler;
}
void IRQ_Init(void)
{
INTPND=0x1fffff;
INTMOD=0x0;
INTMSK&=(~(1<<INT_GLOBAL));
InitIntHandlerTable();
SysSetInterrupt(INT_TIMER0, ISR_Timer0);
}
void ISR_Timer0(void)
{
puts("In Timer0 ISR\n");
IOPDATA=~IOPDATA;
}
void IRQHandler(void)
{
int num=0;
num=(INTOFFSET>>2);
INTPND=(1<<num);
puts("In IrqHandler\n");
(*InterruptHandlers[num])();
}
void timer_init(void)
{
TDATA0=0x2FAF080; //50000000,fout=fMCLK/(2*TDATA0)
TMOD|=0x07; //触发模式,使能定时器0
}
void port_init(void)
{
IOPMOD=0x0003FFFF; //P0和P1设置为输出
IOPCON=0xC0000000;
IOPDATA=0x0003FFFF;
}
int Main(void)
{
port_init();
timer_init();
IRQ_Init();
console_init();
puts("Starting...\n");
for(;;)
{
int i;
for(i=0;i<10;i++);
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -