📄 library.c
字号:
#include "2410addr.h"
#include "2410lib.h"
#include "def.h"
void Wdt_Setting(void)
{
//t_watchdog = 1 / (PCLK / (Prescaler value + 1 ) / Division_factor)
rINTMSK &= ~(BIT_WDT); //Watch dog Interrupt service is available
//If PCLK = 45MHz
rWTCON = (((PCLK/1000000)-1)<<8) | (3<<3) | (1<<2); //Prescaler=(44),Clock division 128,Interrupt enable
rWTDAT = 7812;//Around 1 sec.
rWTCNT = 7812;
rWTCON = rWTCON | (1<<5); //Watch-dog timer enable
}
void __irq IsrWdt(void)
{
U32 temp;
temp=rINTMSK;
rINTMSK=0xffffffff;
rWTCON=0x00;//Disable WDT
// rSRCPND = BIT_WDT; //Clear pending bit
// rINTPND = BIT_WDT;
ClearPending(BIT_WDT);
rINTPND; //Prevent an double interrupt pending
rINTMSK=temp;
rINTMSK |= BIT_WDT; //WDT Interrupt Mask
}
void PWR_StartTimer(void)
{
// Uart_Printf("\nAll 5 timers are running, and clock from PCLK=FCLK/4.");
// Frequency = (PCLK/Prescaler/Divider)/(rTCNTB)
//rTCFG0=0x8080; //Prescaler=128;
rTCFG0=0x00;
//rTCFG1=0x611111; //Divider=1/4;
rTCFG1=0x600000; //Divider=1/2;
//rTCNTB0=0x8000; //(4000+4000), high=4000, low=4000
//rTCMPB0=0x4000; //low=4000
rTCNTB0=0x01;
rTCMPB0=0x00;
rTCNTB1=0x03;
rTCMPB1=0x01;
rTCNTB2=0x05;
rTCMPB2=0x02;
rTCNTB3=0x07;
rTCMPB3=0x03;
rTCNTB4=0x8000;
rTCON=0x6aaa0a; //manual update
rTCON=0x599909; //run
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -