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

📄 mspper.c

📁 采用C++改写的uCOS-II,目标系统为MSP430系列CPU。
💻 C
字号:
#include "mspper.h"

/*
*******************************************************************************
*                                   MSP OSC                                   *
*******************************************************************************
*/
void CpuOscInit(void)
{
  char i;

  BCSCTL1 &= 0x7f; 
  while(1)
  {
    IFG1 &= 0xfd;
    for(i=0;i<100;i++);
    if((IFG1 & 0x02)==0)
      break;
  }
  for(i=0;i<100;i++);
  BCSCTL2=0x88; /*MCLK and SMCLK select second oscillator*/
}

/*
*******************************************************************************
*                                   MSP PORT                                  *
*******************************************************************************
*/
void CpuGpioInit(void)
{
  /*Initialize IO port*/
  P1SEL = 0x00; /*P1 as IO port*/
  P1DIR = 0x4f; /*P1 as outport*/
  P1OUT = 0xff;/*Initialize P1 Port*/
  
  P2SEL = 0x00; /*P2 as IO port*/
  P2DIR = 0x00; /*P2 inport*/
  
  P3SEL = 0xb0; /*P3.0-3 and p3.6 as IO port,P3.4,p3.5 and P3.7 as function port*/
  P3DIR = 0x0f; /*P3.0-3 as outport,p3.6 as input*/
  P3OUT = 0x00;/*Initialize P1 Port*/
  
  P4SEL = 0x00; /*P4 as IO port*/
  P4DIR = 0xff; /*P4 as outport*/
  P4OUT = 0xff;/*Initialize HDS1=1*/
  
  P5SEL = 0x00; /*P5 as IO port*/
  P5DIR = 0xff; /*P5 as output*/
  
  P6SEL = 0xff; /*P6.0-5 as A/D Port,p6.6-7 as io port*/
  P6DIR = 0x00; /*P6 as inport*/
}

/*
*******************************************************************************
*                                   MSP TIMERA                                *
*******************************************************************************
*/
void CpuTimeraInit(float priod)
{
  unsigned long priodcnt;
  unsigned int taid;
  priodcnt = (MSP_OSC/1000.0)*priod;
  taid = 0;
  while(priodcnt>65535L)
  {
    priodcnt >>= 1;
    taid++;
  }
  if(taid>3)
  {
    taid = 3;
  }
  CCR0 = priodcnt-1;
  CCR1 = priodcnt;
  CCR2 = priodcnt;
  TACTL = 0x0206; /*TA intfreq = SMCLK/priod,clear time*/
  TACTL_bit.TAID = taid;
  TACTL |= 0x0010; /*Enable timer A interrupt*/  
}

⌨️ 快捷键说明

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