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

📄 systeminit.c

📁 很有用的关于msp430单片机的很多很好的源程序
💻 C
字号:
//******************************************************************************
//                     MSP-FET430P140 Demo -  
//
//  Description:  
//   
//   
//  
//                         MSP430F135
//
//
//
//
//        | | | | | | | | | | | | | | | | | | |
//         ----------------------------------------
//  RST --|58                                      |--
//  XIN --|8  32.768khz                            |-- 
// XOUT --|9                                       |--          
//        |                                        |--
//        |                                        |-- 
//        |                                        |--          
//        |                                        |--              
//        |                                        |--       
//        |                                        |--
//        |                                        |--  
//        |                                        |--
//        |                                        |--
//        |                                        |--P4.2/TB2|-> CCR2 25% PWM
//        |                                        |--P4.1/TB1|-> CCR1 75% PWM
//        |                                        |--P4.0/TB0
//        |                                        |--      
//        |                                        |--
//        |                                        |--P3.5|<------9600 - 8N1     
//        |                                        |--P3.4|------> 
//         ---------------------------------------- 
//              | | | | | | | | | | | | | | | | | | |
//
//
//
//   
//  may 2008
//  Built with IAR Embedded Workbench Version: 3.41A
//******************************************************************************

#include  <msp430x13x.h>

void systeminit(void)
{
  //================================ 
  //  systemclockinit 
  //================================
  
  DCOCTL = DCO0 + DCO1 + DCO2;              // Max DCO
  BCSCTL1 = RSEL0 + RSEL1 + RSEL2;          // XT2on, max RSEL 
  BCSCTL2 |= SELS;                          // SMCLK = XT2
   
  //================================
  //   systemclockinit 
  //================================
  /*
  BCSCTL1 |= XTS;                           // ACLK = LFXT1 = HF XTAL
  do
  {
  IFG1 &= ~OFIFG;                           // Clear OSCFault flag
  for (i = 0xFF; i > 0; i--);               // Time for flag to set
  }
  while ((IFG1 & OFIFG));                   // OSCFault flag still set?
  */
  //================================
  //     Watchdog  Init
  //     Watchdog mode 
  // WDT is clocked by fSMCLK (assumed 1MHz) 
  //================================
   /*
   WDT_MRST_32;                              //32ms interval (default)
   */
  //================================ 
  //      Watchdog  Init
  //    WDT-interval times way
  // WDT is clocked by fSMCLK (assumed 1MHz)
  //================================
    
   WDTCTL = WDT_MDLY_8;                      // Set Watchdog Timer interval to 8ms
   IE1 |= WDTIE;                             // Enable WDT interrupt 
   
  //================================
  //  UART Init
  //================================
  P3SEL |= 0x30;                            // P3.4,5 = USART0 TXD/RXD
  P3DIR |=BIT4;                             // P3.4=TXD
  P3DIR &=~BIT5;                            // P3.5=RXD
  
  ME1 |= UTXE0 + URXE0;                     // Enabled USART0 TXD/RXD
  UCTL0 |= CHAR;                            // 8-bit character, SWRST = 1
  UTCTL0 |= SSEL1 + SSEL0 + URXSE;          // UCLK = SMCLK, start edge detect
  UBR00 = 0xD0;                             // 9600 from 2Mhz
  UBR10 = 0x00;
  UMCTL0 = 0x00;                            // No modulation
  UCTL0 &= ~SWRST;                          // Initialize USART state machine
  IE1 |= URXIE0;  
 //===============================
 //  time   TAInit
 //=============================== 
   CCTL0 = CCIE;                           // CCR0 interrupt enabled
   CCR0 = 50000;
   TACTL = TASSEL_2 + MC_2;                    // SMCLK, contmode
 //================================
 //   time   TBInit
 //================================
  
 //================================
 //  
 //================================
 
 //================================
 //  
 //================================
  
  
 //================================
 //   ADC12 Init 
 //================================ 
  
 //================================
 //   P1Init
 //================================
  /*
  P1DIR=
  P1OUT=
  P1IFG=
  P1IES=
  P1IE =
  P1SEL=
  */
 //================================
 //   P2Init
 //  P2  output  
 //================================
  P2DIR |=0xff;
  P2OUT &=0x00;
  /* 
  P2IFG=
  P2IES=
  P2IE =
  P2SEL=
  */
 //================================
 //   P3Init
 //   1*8key p3.0-p3.7 uptovdd
 //================================
  P3DIR=0x00;
  /*
  P3OUT=
  P3SEL=
  */  
 //================================
 //   P4Init
 //================================
  /*
  P4DIR=
  P4OUT=
  P4SEL=
  */
 //================================
 //   P5Init
 //================================
  /*
  P5DIR=
  P5OUT=
  P5SEL=
  */
 //================================
 //   P6Init
 //================================
  /*
  P6DIR=
  P6OUT=
  P6SEL=
  */
 //================================ 
 //  open intInit
 //================================
  // _EINT();
 //================================ 
}
void ADC12Init(void)
{
  P6SEL = 0x0F;                             // Enable A/D channel inputs
  ADC12CTL0 = ADC12ON+MSC+SHT0_8;           // Turn on ADC12, extend sampling time
                                            // to avoid overflow of results
  ADC12CTL1 = SHP+CONSEQ_3;                 // Use sampling timer, repeated sequence
  ADC12MCTL0 = INCH_0;                      // ref+=AVcc, channel = A0
  ADC12MCTL1 = INCH_1;                      // ref+=AVcc, channel = A1
  ADC12MCTL2 = INCH_2;                      // ref+=AVcc, channel = A2
  ADC12MCTL3 = INCH_3+EOS;                  // ref+=AVcc, channel = A3, end seq.
  ADC12IE = 0x08;                           // Enable ADC12IFG.3
  ADC12CTL0 |= ENC;                         // Enable conversions
  ADC12CTL0 |= ADC12SC;                     // Start conversion
}
void TAInit(void)
{
  CCTL0 = CCIE;                             // CCR0 interrupt enabled
  CCR0 = 5000;
  TACTL = TASSEL_2 + MC_2;                  // SMCLK, contmode
}
void TBInit(void)
{

}
void UARTInit(void)
{
  P3SEL |= 0x30;                            // P3.4,5 = USART0 TXD/RXD
  P3DIR |=BIT4;                             // P3.4=TXD
  P3DIR &=~BIT5;                            // P3.5=RXD
  
  ME1 |= UTXE0 + URXE0;                     // Enabled USART0 TXD/RXD
  UCTL0 |= CHAR;                            // 8-bit character, SWRST = 1
  UTCTL0 |= SSEL1 + SSEL0 + URXSE;          // UCLK = SMCLK, start edge detect
  UBR00 = 0xD0;                             // 9600 from 2Mhz
  UBR10 = 0x00;
  UMCTL0 = 0x00;                            // No modulation
  UCTL0 &= ~SWRST;                          // Initialize USART state machine
  IE1 |= URXIE0; 
}
void WatchdogInit(void)
{
   WDTCTL = WDT_MDLY_0_5;                   // Set Watchdog Timer interval to 0.5ms
   IE1 |= WDTIE;  
}
void SystemclockInit(void)
{
   DCOCTL = DCO0 + DCO1 + DCO2;             // Max DCO
   BCSCTL1 = RSEL0 + RSEL1 + RSEL2;         // XT2on, max RSEL 
   BCSCTL2 |= SELS;  
}
/*eof*/

⌨️ 快捷键说明

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