init.c
上传用户:xs588588
上传日期:2021-03-30
资源大小:242k
文件大小:4k
源码类别:

DSP编程

开发平台:

C/C++

  1. #include <MSP430X14X.h>
  2. #include "init.h"
  3. void Init_ADC(void)
  4. {
  5.     //设置P6.0为模拟输入通道
  6.     P6SEL = 0X07;                
  7.     //设置ENC为0,从而修改ADC12寄存器的值
  8.     ADC12CTL0 &= ~(ENC);  
  9.     //转换的起始地址为:ADCMEM0       
  10.     ADC12CTL1 |= CSTARTADD_0;  
  11.     //设置参考电压分别为AVSS和AVCC,输入通道为A0
  12.     ADC12MCTL0 = INCH_0;         
  13.     //设置参考电压分别为AVSS和AVCC,输入通道为A1                            
  14.     ADC12MCTL1 = INCH_1;         
  15.     //设置参考电压分别为AVSS和AVCC,输入通道为A2
  16.     ADC12MCTL2 = INCH_2;
  17.     //设置参考电压分别为AVSS和AVCC,输入通道为A3
  18.     ADC12MCTL3 = INCH_3;     
  19.     //设置参考电压分别为AVSS和AVCC,输入通道为A4
  20.     ADC12MCTL4 = INCH_4;         
  21.     //设置参考电压分别为AVSS和AVCC,输入通道为A5
  22.     ADC12MCTL5 = INCH_5;         
  23.     //设置参考电压分别为AVSS和AVCC,输入通道为A6
  24.     ADC12MCTL6 = INCH_6;
  25.     //设置参考电压分别为AVSS和AVCC,输入通道为A7
  26.     ADC12MCTL7 = INCH_7 + EOS;   
  27.          
  28.     ADC12CTL0 |= ADC12ON;
  29.     ADC12CTL0 |= MSC;
  30.     
  31.     //转换模式为:多通道、单次转换
  32.     ADC12CTL1 |= CONSEQ_1;   
  33.     
  34.     //SMCLK,时钟分频为1,采样脉冲由采用定时器产生
  35.     ADC12CTL1 |= ADC12SSEL_1;   
  36.     ADC12CTL1 |= ADC12DIV_0;
  37.     ADC12CTL1 |= (SHP);
  38.     //使能ADC转换            
  39.     ADC12CTL0 |= ENC;   
  40.     return;
  41. }
  42. void Init_TimerA(void)
  43. {
  44.     // 选择SMCLK,清除TAR
  45.     TACTL = TASSEL1 + TACLR;   
  46.     // 1/8 SMCLK   
  47.     TACTL += ID1;
  48.     TACTL += ID0;   
  49.     // CCR0 中断允许              
  50.     CCTL0 = CCIE;
  51.     // 时间间隔为 250Hz           
  52.     CCR0 = 4000;
  53.     // 增记数模式   
  54.     TACTL |= MC0;   
  55.     
  56.     return;
  57. }
  58. void Init_Port(void)
  59. {
  60.     //将P4口和P5口设置为输入方式
  61.     P4DIR = 0;
  62.     P5DIR = 0;
  63.     
  64.     //将P4口和P5口设置为一般I/O口
  65.     P4SEL = 0;
  66.     P5SEL = 0;
  67.     
  68.     // 将P4.0设置为输出方向
  69.     P4DIR |= BIT0;
  70.      
  71.     return;
  72. }
  73. void Init_TimerB(void)
  74. {
  75.     TBCTL = TBSSEL0 + TBCLR;      // 选择ACLK,清除TAR
  76.     TBCCTL0 = CCIE;               // TBCCR0 中断允许
  77.     TBCCR0 = 32768;           // 时间间隔为 1 s
  78.     
  79.     TBCTL |= MC0;                 // 增记数模式
  80. }
  81. void Delay_ms(unsigned long nValue)//毫秒为单位,8MHz为主时钟
  82. {
  83.     unsigned long nCount;
  84.     int i;
  85.     unsigned long j;
  86.     nCount = 2667;
  87.     for(i = nValue;i > 0;i--)
  88.     {
  89.      for(j = nCount;j > 0;j--);
  90.     }
  91.     return;
  92. }
  93. void Delay_us(unsigned long nValue)//微秒为单位,8MHz为主时钟
  94. {
  95.     int nCount;
  96.     int i;
  97.     int j;
  98.     nCount = 3;
  99.     for(i = nValue;i > 0;i--)
  100.     {
  101.      for(j = nCount;j > 0;j--);
  102.     }
  103.     return;
  104. }
  105. void Init_UART1(void)
  106. {
  107.     U1CTL = 0X00;    //将寄存器的内容清零
  108.     U1CTL += CHAR;         //数据位为8bit
  109.     
  110.     U1TCTL = 0X00;    //将寄存器的内容清零
  111.     U1TCTL += SSEL1;    //波特率发生器选择SMCLK
  112.     
  113.     UBR0_1 = 0X45;    //波特率为115200
  114.     UBR1_1 = 0X00;
  115.     UMCTL_1 = 0X00;
  116.     
  117.     ME2 |= UTXE1 + URXE1;  //使能UART1的TXD和RXD
  118.     IE2 |= URXIE1;    //使能UART1的RX中断
  119.     IE2 |= UTXIE1;    //使能UART1的TX中断
  120.     
  121.     P3SEL |= BIT6;    //设置P3.6为UART1的TXD
  122.     P3SEL |= BIT7;    //设置P3.7为UART1的RXD
  123.     
  124.     P3DIR |= BIT6;    //P3.6为输出管脚
  125.     return;
  126. }
  127. void Init_CLK(void)
  128. {
  129.     unsigned int i;
  130.     BCSCTL1 = 0X00; //将寄存器的内容清零
  131. //XT2震荡器开启
  132. //LFTX1工作在低频模式
  133. //ACLK的分频因子为1
  134.     do 
  135.     {
  136. IFG1 &= ~OFIFG;                       // 清除OSCFault标志
  137. for (i = 0x20; i > 0; i--);                
  138.     }
  139.     while ((IFG1 & OFIFG) == OFIFG);      // 如果OSCFault =1   
  140.     BCSCTL1 &= ~(XT2OFF + XTS);//open XT2, LFTX2 select low frequency 
  141.     BCSCTL1 |= RSEL0 + RSEL1 + RSEL2; //DCO Rsel=7(Freq=3200k/25摄氏度)  
  142.     BCSCTL1 |= 0x07;
  143.     BCSCTL2 += SELM1; //MCLK的时钟源为TX2CLK,分频因子为1
  144.     BCSCTL2 += SELS; //SMCLK的时钟源为TX2CLK,分频因子为1
  145.     
  146. }