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

📄 library.c

📁 基于arm9的,usb设备(u盘)的读写操作实现.
💻 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 + -