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

📄 tc.c

📁 FLASH烧写程序
💻 C
字号:
#include "AT91RM9200.h"
#include "lib_AT91RM9200.h"
#include "flash.h"
#include "sys.h"
unsigned int TC3Count=0;

void AT91F_TC3_Handler()//TC3_中断服务程序
{
    unsigned int dummy;    
    unsigned int i;	
	volatile unsigned short *ad_data;
	volatile unsigned short *ad_address;
	volatile unsigned short temp_data;
	
	dummy=*AT91C_TC3_SR; 
    
    if(TC3Count==0)
    {
      TC3Count =1;
      AT91F_PIO_SetOutput(AT91C_BASE_PIOC,AT91C_PIO_PC14);
      AT91F_PIO_ClearOutput(AT91C_BASE_PIOC,AT91C_PIO_PC15);
      AT91F_PIO_ClearOutput(AT91C_BASE_PIOA,AT91C_PIO_PA22);
    }
  
    else if(TC3Count==1)
    {
      TC3Count =2;
      AT91F_PIO_SetOutput(AT91C_BASE_PIOC,AT91C_PIO_PC15);
      AT91F_PIO_ClearOutput(AT91C_BASE_PIOC,AT91C_PIO_PC14);
      AT91F_PIO_ClearOutput(AT91C_BASE_PIOA,AT91C_PIO_PA22);
    }
    
    else if(TC3Count==2)
    {
      TC3Count =0;
      AT91F_PIO_SetOutput(AT91C_BASE_PIOA,AT91C_PIO_PA22);
      AT91F_PIO_ClearOutput(AT91C_BASE_PIOC,AT91C_PIO_PC14);
      AT91F_PIO_ClearOutput(AT91C_BASE_PIOC,AT91C_PIO_PA15);
    }
    
    *AT91C_AIC_EOICR = 0x00000000; 
	
}

void TcInterrupt_Init(unsigned short id)//TC中断_初始化
{
    unsigned int dummy;
    
    if(id == 0)
    
    {
    
   
    }
 
    else if(id == 1)
    {
    
   
  
    }

    
    else if(id == 2)
    {
    
    
    }

    else if(id == 3)
    {
     TC3Count=0;
    
     AT91F_TC3_CfgPMC();
   
    *AT91C_TC3_CCR=AT91C_TC_CLKDIS;   //禁止中断
    
    *AT91C_TC3_IDR=0xFFFFFFFF;        //禁止中断
    
    dummy=*AT91C_TC3_SR;              //读TC状态
    //#define AT91C_TC_CPCTRG ((unsigned int) 0x1 << 14) // (TC) RC Compare Trigger Enable
    //CMR(page490),MCK=59.904MHz,TIMER_CLOCK1=MCK/2=29.925MHz,
    //TIMER_CLOCK5=SLOWCLOCK=32768,达到计数值后停止TC
    *AT91C_TC3_CMR=(unsigned int)(0x1<<2)|AT91C_TC_CPCTRG;//TIMER_CLOCK5=SLOWCLOCK=32768Hz,达到计数值后停止TC
    //*AT91C_TC3_CMR=(unsigned int)(0x0<<0)|AT91C_TC_CPCTRG;//TIMER_CLOCK1=MCK/2=29.925MHz,达到计数值后停止TC
    
    *AT91C_TC3_CCR=AT91C_TC_CLKEN;                    //Enable the Clock Counter
    
    *AT91C_TC3_IER=AT91C_TC_CPCS;                    //Validate the RC compare interrupt
    //AIC_IDCR(page249),AIC Interrupt Disable Command Register
    *AT91C_AIC_IDCR=(unsigned int)(1<<AT91C_ID_TC3);  //Disable timer 1 interrupt at AIC level
    

   AT91F_AIC_ConfigureIt (
		AT91C_BASE_AIC,                       
		AT91C_ID_TC3,                         
		AT91C_AIC_PRIOR_HIGHEST,              
		AT91C_AIC_SRCTYPE_INT_LEVEL_SENSITIVE,
		AT91F_ASM_TC3_Handler);
  
    *AT91C_AIC_ICCR=(1<<AT91C_ID_TC3);                //Clear the TC3 interrupt
    
    *AT91C_AIC_IECR=(1<<AT91C_ID_TC3);                //Enable the TC3 interrupt
    
    *AT91C_AIC_IMR=(1<<AT91C_ID_TC3);				//Clear the TC3 interrupt mask
    
    //*AT91C_TC3_RC=12479;                            //period=12479/TIMER_CLOCK1(29.925M)=20ms/48=0.417ms
    //*AT91C_TC3_RC=1638;                             //period=1638/TIMER_CLOCK5=50ms
    *AT91C_TC3_RC=32768;                             //period=32768/TIMER_CLOCK5=1s
    
   
    //CCR(page487),TC Channel Control Register
    *AT91C_TC3_CCR=AT91C_TC_SWTRG;                   //触发
    
    //US1_Printf("TC3(1s) Initialized Compeletly!\r\n\r\n");
    }
  
   else if(id == 4)
    {
    
    
    }

   else if(id == 5)
    {
    
     
    }

}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -