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

📄 app.c

📁 MSP430的适时操作系统的移置代码。欢迎下载
💻 C
字号:

#include "includes.h"


#define  TASK_STK_SIZE                  64       /* 定义任务堆栈大小     */


OS_STK   TaskStartStk[TASK_STK_SIZE];
OS_STK   Task1Stk[TASK_STK_SIZE];
OS_STK   UARTStk[TASK_STK_SIZE];

void   TaskStart(void *data);                    /* 前导声明任务(函数) */
void   Task1(void *data);
void   UART_Task(void *pdata);

//OS_EVENT *TASK1_EVENT;
OS_EVENT *UART_EVENT;
//====================================================================================//
//函数名:InitSys
//功能:时钟初始化函数
//参数:无
//返回值:无
//编写: 
//时间:07.11.22
//修改:
//===================================================================================//
void InitSys(void)
{
  INT8U time;                        //key,temp=0,,i
    //BCSCTL1 |=XTS+XT2OFF;                             //+DIVA_3ACLK使用外部高频时钟,不分频
  BCSCTL1 &= ~XT2OFF;
  BCSCTL2 |= SELM_2+DIVM_0+SELS+DIVS_0;               //MCLK使用LFTX2CLK,1分频 
                                                     //SMCLK使用LFTX2CLK,1分频
  do
  {
   IFG1&=~OFIFG;
   time=0xFF;
   while(time--);                    //OSCFault = 1     time  
  }
  while((IFG1&OFIFG)==OFIFG);         //等待外部时钟稳定
}

void  main (void)
{
    WDTCTL = WDTPW + WDTHOLD;					/* 禁止看门狗              */
    InitSys();
    OSInit();                                              /* 初始化uCOS-II */
    OSTaskCreate(TaskStart, (void *)0, &TaskStartStk[TASK_STK_SIZE - 1], 0);
    OSTaskCreate(Task1, (void *)0,&Task1Stk[TASK_STK_SIZE - 1], 1);
    OSTaskCreate(UART_Task, (void *)0, &UARTStk[TASK_STK_SIZE - 1],2);
    UART_EVENT = OSSemCreate(0);		       //建立信号量
    _EINT();
    OSStart();                                             /* 开始任务调度  */
}



void  TaskStart (void *pdata)
{
    pdata  = pdata;                                        /* 无任何意义,防止编译器报警 */
    INT8U  temp = 0xAA;
    WDTCTL = WDT_MDLY_1;                                  /* 设置时钟节拍间隔为1ms     */
    IE1   |= 0x01;                                         /* 开看门狗定时器中断         */
                                                           //看门狗定时器是延时依据,很重要
    /*************************************
    *       应用程序初始化
    *************************************/
    
    //P1SEL &= ~BIT0; 											
   // P1DIR |= BIT0;
     while (1) 
     {

    	//P1OUT |= BIT0; 	 								    
       OSTimeDly(2000);   /* 延时15个时钟节拍,挂起本任务等待延时结束 2s*/ 
       UART_Send(&temp,1);
    }
}

void   Task1(void *pdata)
{
   pdata  = pdata;
   INT8U  temp = 0x33;
   while(1)
   {
       OSTimeDly(2000);                       //延时2s
       UART_Send(&temp,1);
//         P1OUT &= ~BIT0;
   }
}
void   UART_Task(void *pdata)
{
   pdata  = pdata;
   INT8U  err,temp = 0x55;
   UART_Init();                       //串口初始化
   while(1)
   {
       OSSemPend(UART_EVENT,0,&err);
       UART_Send(&temp,1);
   }
}

⌨️ 快捷键说明

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