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

📄 hardware.c

📁 this the firmware provided freely for the trf7960
💻 C
字号:
#include "hardware.h"
#include "spi.h"

/*
 =======================================================================================================================
 =======================================================================================================================
 */

void delay_ms(unsigned int n_ms) {
    unsigned int ii1, ii0;
    for(ii0=n_ms; ii0>0; ii0--) {
        ii1 = 0x07FF;                    // Delay
        do (ii1--);
        while (ii1 != 0);
    }
}
// end of delay_ms

/*
 =======================================================================================================================
 =======================================================================================================================
 */

void CounterSet(void)
{
	TACTL |= TACLR;
	TACTL &= ~TACLR;			//reset the timerA
	TACTL |= TASSEL0 + ID1 + ID0;		//ACLK, div 8, interrupt enable, timer stoped
	
	TAR = 0x0000;
	TACCTL0 |= CCIE;			//compare interrupt enable
}//CounterSet()

/*
 =======================================================================================================================
 =======================================================================================================================
 */

void OSCsel(unsigned char mode)
{

  	unsigned int ii1;

  	if(mode == 0x00){               //select crystal oscilator
    		BCSCTL1 |= XTS + XT2OFF;                       // ACLK = LFXT1 HF XTAL
    		BCSCTL1 &= ~(RSEL0 + RSEL1 + RSEL2);

		// turn external oscillator on
    		do
    		{
      			IFG1 &= ~OFIFG;                   // Clear OSCFault flag
      			for (ii1 = 0xFF; ii1 > 0; ii1--); // Time delay for flag to set
    		}
    		while ((IFG1 & OFIFG) == OFIFG);    // OSCFault flag still set?
    		BCSCTL2 |= SELM1 + SELM0 + SELS;           // (CPU) MCLK = LFXT1 (safe)

    		return;
    	}

  	else{                           //select DCO for main clock
    		DCOCTL |= DCO0 + DCO1 + DCO2;
    		BCSCTL1 |= XT2OFF + XTS + RSEL0 + RSEL1 + RSEL2;
   		
		// turn external oscillator on
//    		do
//    		{
//      		IFG1 &= ~OFIFG;                   // Clear OSCFault flag
//      		for (ii1 = 0xFF; ii1 > 0; ii1--); // Time delay for flag to set
//    		}
//    		while ((IFG1 & OFIFG) == OFIFG);    // OSCFault flag still set?
    		BCSCTL2 &= ~(SELM1 + SELM0 + SELS + DCOR);

    		return;
    	}
    	//_BIC_SR(OSCOFF);
}

/*
 =======================================================================================================================
 =======================================================================================================================
 */

#pragma vector=TIMERA0_VECTOR
__interrupt void TimerAhandler(void)
{	
	unsigned char Register;

	stopCounter;
	
	Register = IRQStatus;		//IRQ status register address
	irqCLR;				//PORT2 interrupt flag clear
	
	ReadSingle(&Register, 1);	//function call for single address read
					//IRQ status register has to be read

	Register = Register & 0xF7;	//set the parity flag to 0
	
	if(Register == 0x00)
          	//if(RXTXstate > 1)
                //  	i_reg = 0xFF;
        	//else
			i_reg = 0x00;
	else
		i_reg = 0x01;
	
	__low_power_mode_off_on_exit();
	
}//TimerAhandler

⌨️ 快捷键说明

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