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

📄 system.c

📁 MSP4250单芯片电子称,采样数据无线发送给主机,编译环境IAR for MSP430
💻 C
字号:
/*
*********************************************************************************************************
*                                          IOPORT functions
*
*
* File    : IOPORT.C
* Data	  : April 12, 2007
*********************************************************************************************************
*/

#include "hal.h"

/*
*********************************************************************************************************
*                                         IOPORT_INIT
*
* Description      :
* Arguments        : none
* Returned Values  : none
* Note(s)/Warnings :
*********************************************************************************************************
*/
inline void Init_Port(void)
{

		// PORT1  Peripheral       SEL DIR OUT  IE IES  User
          // P17    A2+       		1	0	0	0	0	A2+
          // P16    A2-       		1	0	0	0	0	A2-
          // P15    TACLK/ACLK/A3+  1	0	0	0	0	A3+
          // P14    A3-/DAC0       	1	0   0	0	0	A3-
          // P13    TA2/A4+       	1	0   0	0	0	A4+
          // P12    TA1/A4-       	1	0   0	0	0	A4-
          // P11    TA0/MCLK       	0	0   0	1	0	TXD	/ KEY2
	  	  // P10    TA0       		0	0   0	1	0	RXD / CHARGE
		P1SEL = B1111_1100;
		P1DIR = B0000_0011;
		P1OUT = B0000_0000;
		P1IE  = B0000_0011;
		P1IES = B0000_0000;
		//P1IFG
		//P1IN
			
		// PORT2  Peripheral       SEL DIR OUT  IE IES  User
          // P27    S6       		0	0	0	1	0	PLATE4
          // P26    S7       		0	0	0	1	0	PLATE3
          // P25    S8  			0	0	0	1	0	PLATE2
          // P24    S9       		0	0   0	1	0	PLATE1
          // P23    S10       		0	0   0	1	0	PLATE0
          // P22    S11       		0	0   0	1	0	KEY1
          // P21    S12       		0	1   1	0	0	CSN
	  	  // P20    S13       		0	0   0	1	1	GDO2
		P2SEL = B0000_0000;
		P2DIR = B0000_0010;
		P2OUT = B0000_0010;
		P2IE  = B1111_1101;
		P2IES = B0000_0001;
		//P2IFG
		//P2IN
		
		// PORT5  Peripheral       SEL DIR OUT			User
          // P57    S4       		0   1   0			OUT /EO
          // P56    S3       		0   1   1			SCL
          // P55    S2  			0   1   1			SDA
          // P54    COM3       		0   1   0			MOSI
          // P53    COM2       		0   1   0			SCK
          // P52    COM1       		0   0   0			MISO
          // P51    S0      		0   1   1			SCH4
	  	  // P50    S1       		0   1   1			SCH3
		P5SEL = B0000_0000;
		P5DIR = B1111_1011;
		P5OUT = B0110_0011;
		//P5IN
		
		// PORT6  Peripheral       SEL DIR OUT			User
          // P67    -       		0   1   1			SCH2
          // P66    -       		0   1   1			SCH1
          // P65    -  				0   1   1			SCH0
          // P64    -       		0   1   1			SCHREF
          // P63    A1-       		1   0   0			A1-
          // P62    A1+       		1   0   0			A1+
          // P61    A0-      		1   0   0			A0-
	  	  // P60    A0+       		1   0   0			A0+
		P6SEL = B0000_1111;
		P6DIR = B1111_0000;
		P6OUT = B1111_0000;
		//P6IN
}

/*
*********************************************************************************************************
*                                         INIT_SYS
*
* Description      : Hardware Abstract Layer initializtion,call this routine to initialize all peripherals
* Arguments        : none
* Returned Values  : none
* Note(s)/Warnings :
*********************************************************************************************************
*/
void Init_Sys(void)
{
	
	//--------------------------------------------------------------------------
	//Watchdog
	//--------------------------------------------------------------------------
  		WDTCTL = WDTPW + WDTHOLD;                     // Stop WDT
		
	//--------------------------------------------------------------------------
	#ifdef USE_TIMER_A3
	//--------------------------------------------------------------------------
		//CLK = TACLK  DIV = 8 MODE = UP INT = CCIFG0
			//4096 = 1S
		//TACTL = TASSEL_1 + ID_3 + MC_0 + TACLR;		
		TACCTL0 = CCIE ;
		//TACCR0 = 0;
		//TACCTL1 = 0;
		//TACCR1 = 0;
		//TACCTL2 = 0;
		//TACCR2 = 0;
		//TAR ; 			read only
	#endif
		
	//--------------------------------------------------------------------------
	//Flash
	//--------------------------------------------------------------------------
		//FCTL3 = 0;
		//FCTL2 = 0;
		//FCTL1 = 0;
		
	//--------------------------------------------------------------------------
	#ifdef USE_DAC12
	//--------------------------------------------------------------------------
		//DAC12_0DAT = 0;
		//DAC12_0CTL = 0;
    #endif		
		
	//--------------------------------------------------------------------------
	#ifdef USE_SD16_A
	//--------------------------------------------------------------------------
		SD16CCTL0 =  SD16OSR_256 + SD16DF + SD16IE ;               // Continuous conv., 2s compl.
		
  		SD16INCTL0 = SD16GAIN_32 + SD16INCH_0;        				// 32x gain, channel pair A0
		SD16AE = SD16AE0 ;//|SD16AE1 |SD16AE2 |SD16AE3 |SD16AE4 ;
		//SD16IV ;
		//SD16MEM0 ;
		
		#ifdef SYSCLOCK_2M
		SD16CTL = SD16DIV_1;			//when	SYSCLOCK_2M
		#endif		
		#ifdef SYSCLOCK_4M
		SD16CTL = SD16DIV_2;			//when	SYSCLOCK_4M
		#endif	

	#endif
		
	//--------------------------------------------------------------------------
	#ifdef USE_LCD_A
	//--------------------------------------------------------------------------
	{
		int i;
		char *pLCD = (char *)&LCDM1; 				//LCDM20..LCDM1
		for (i = 0; i < 20; i++)                    // Clear LCD memory
    		*pLCD++ = 0;
		
		LCDAVCTL1 = 0;
		LCDAVCTL0 = 0;
		LCDAPCTL1 = 0;
		LCDAPCTL0 = 0;
		LCDACTL = 0;
	}
    #endif
	
	//--------------------------------------------------------------------------
	//FLL+clock
	//--------------------------------------------------------------------------
		//FLL_CTL1 = 0;
#ifdef SYSCLOCK_512K
		SCFQCTL = SCFQ_512K;
#endif
#ifdef SYSCLOCK_1M
		SCFQCTL = SCFQ_1M;
#endif
#ifdef SYSCLOCK_2M
		SCFQCTL = SCFQ_2M;
#endif
#ifdef SYSCLOCK_4M
		SCFQCTL = SCFQ_4M;
#endif
		//SCFI1 = 0;
		SCFI0 = FLLD_1;
  		FLL_CTL0 |= XCAP18PF + DCOPLUS;                         // Set load capacitance for xtal
		
	//--------------------------------------------------------------------------
	#ifdef USE_BT	//basic timer
	//--------------------------------------------------------------------------
		//ACLK = 32768		/256=128 (/256..2)
		BTCTL = BTDIV + BT_fCLK2_DIV32;				//0.5S
		//BTCNT1 = 0;   //for LCD
		//BTCNT2 = 0;
	#endif
		
	//--------------------------------------------------------------------------
	//Port
	//--------------------------------------------------------------------------
		Init_Port();
		
	//--------------------------------------------------------------------------
	//Special functions
	//--------------------------------------------------------------------------
		//IFG2 = 0;
		//IFG1 = 0;
		IE2 |= BTIE;
		IE1 |= 0;
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------

⌨️ 快捷键说明

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