📄 main.c
字号:
#include "44b0x.h"
#include "console.h"
#include "ctrl_set.h"
#include "irqsrc.h"
extern U32 MCLK;
U32 pIrqStart, pIrqFinish, pIrqHandler;
TIME_STRUC SysTime;
U16 SERIAL_BAUD = 57600;
char table_begin[] = "/***************************************************************/\n";
/*********************************************************/
void ShowSysClock(int argc, char *argv[])
{
printf("System is running @%dHz\n", MCLK);
}
/*********************************************************/
void InitOSTimer(U8 Freq)
{
#define MaxOSTimerFreq 200
#define MinOSTimerFreq 10
if(Freq>MaxOSTimerFreq)
Freq = 100;
if(Freq<MinOSTimerFreq)
Freq = 100;
InitSysTimer(Freq);
}
extern PrVoid *IrqHandlerTab;
void IrqHandler(int num)
{
if(IrqHandlerTab[num])
(IrqHandlerTab[num])();
}
#define MAX_TIMER_CNT 100
U32 TimerDly[MAX_TIMER_CNT];
U32 TimerRld[MAX_TIMER_CNT];
U32 TimerCnt = 0;
int SetTimer(U32 dly)
{
if(TimerCnt>=MAX_TIMER_CNT)
return -1;
TimerRld[TimerCnt] = dly;
TimerDly[TimerCnt] = dly;
TimerCnt++;
return TimerCnt-1;
}
void ISR_Timer5(void)
{
U32 i;
for(i=0;i<TimerCnt;i++)
{
TimerDly[i]--;
if(!TimerDly[i])
TimerDly[i] = TimerRld[i];
}
}
void ISR_Uart0Rx(void)
{
U8 ch;
ch = RdURXH0(); //必须读出后下次接收才能产生中断
WrUTXH0('@');
}
void ARMEnableInt(void);
void ARMDisableInt(void);
/*********************************************************/
int main(void)
{
U16 BeepFreq = 1000;
ChangePllValue(88, 6, 1); //修改系统主频为6倍频
PortInit();
console_init(SERIAL_BAUD);
next_line();
puts(table_begin);
ShowSysClock(0, NULL);
printf("Serial Baud rate is %d\n", SERIAL_BAUD);
puts("Build date:");
puts(__DATE__);
putch('-');
puts(__TIME__);
next_line();
puts(table_begin);
SysTime.year = 3;
SysTime.month = 7;
SysTime.day = 2;
SysTime.weekday = 3;
SysTime.hour = 0x17;
SysTime.min = 0x09;
SysTime.sec = 0;
RtcSetDay(&SysTime);
RtcSetTime(&SysTime);
pIrqHandler = (U32)IrqHandler;
IrqHandlerTab[INT_TIMER5] = ISR_Timer5;
rINTCON = 0x5; // non vector mode, enable IRQ, disable FIQ
rINTMOD = 0x0; // all interrupts are IRQ mode
// InitOSTimer(0);
// EnableIrq(INT_TIMER5);
// EnableIrq(INT_GLOBAL);
// ARMEnableInt();
puts("System Initialized.\n");
puts("press '+' to add freq, '-' to dec freq\n");
while(1)
{
U8 key;
key = getch();
putch(key);
if(key=='+')
if(BeepFreq<20000)
BeepFreq += 100;
if(key=='-')
if(BeepFreq>100)
BeepFreq -=100;
SetBeepPwm(BeepFreq, 50);
printf("Now beep frequence is %d\n", BeepFreq);
Delay(2000000);
StopBeepPwm();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -