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

📄 app.c

📁 ucos-ii 的完整代码
💻 C
📖 第 1 页 / 共 2 页
字号:
           }
           else 
           {
              val = DUTY_CYCLE*MOD/100;
           }
           
           TPM3C4VH = (byte) (val>>8);    // set duty cycle for Channel 4
           TPM3C4VL = (byte) (val);
      break;
        
      case 5:
           TPM3C5SC = 0x24;               // Center-aligned low-true pulses
           if (MOD>100)
           {
              val = DUTY_CYCLE*(MOD/100);
           }
           else 
           {
              val = DUTY_CYCLE*MOD/100;
           }
           
           TPM3C5VH = (byte) (val>>8);    // set duty cycle for Channel 5
           TPM3C5VL = (byte) (val);
      break;
        
      default:
      break;      
    }
    
    TPM3SC   = (byte) (0x28|(CLK_PS&0x07));        // All center-aligned, bus frequency/Prescale, start timer
} //end TPM3Cx_PWM


/*******************************  KBI ISR ***********************************/

interrupt VectorNumber_Vkeyboard void   KBIx_ISR(void) 
{

  some_key_pressed  = yes;
  key_press_debounced = no;
  
  KBI1SC_KBIE  = 0;                       // Disable KBI1 interrupts
  KBI2SC_KBIE  = 0;                       // Disable KBI2 interrupts
  
  KBI1SC_KBACK = 1;                       // Clear KBACK
  KBI2SC_KBACK = 1;                       // Clear KBACK

  RTCSC_RTIF   = 1;                       // Clear RTIF flag
  RTCMOD = 0x01;                          // Set debounce period 10ms
  RTCSC  = 0x1B;                          // Enable RTIE
}

/*******************************  RTC ISR ***********************************/

interrupt VectorNumber_Vrtc void   RTC_ISR(void) 
{
  if (some_key_pressed) 
  {
     RTCMOD = 0x01;                       // set period 10ms
     RTCSC  = 0x0B;                       // Disable RTIE  RTCSC=0x0F  1s   
     key_press_debounced = yes;
  }
  
  
  RTCSC_RTIF = 1;                         // clear flag
}

/*******************************  ADC ISR ***********************************/

interrupt VectorNumber_Vadc void   ADC_ISR(void) {

   word adc_val;
    
  adc_val  = (word) (ADCRH<<8);                     // Read ADC value, clear flag
  adc_val |= (word) (ADCRL);                       // 8-bit, ignore high byte
  
  TPM3Cx_PWM(0,(byte)(((0xFFFF-adc_val)&0x00FF)>>1),666,0x06); 
  TPM3Cx_PWM(5,(byte)((adc_val&0x00FF)>>1),666,0x06);
}
      




byte  LastKeyPressed()               // get the key pressed
{
  byte tempA,tempD;
  tempA = PTAD;                    
  tempD = PTDD;                    
  if ((tempA&0x04)==0x00) 
  {
    return PTA2;
  } 
  if((tempA&0x08)==0x00) 
  {
    return PTA3;
  } 
  if ((tempD&0x04)==0x00) 
  {
    return PTD2;
  } 
  if ((tempD&0x08)==0x00) 
  {
      return PTD3;
  } 
  return no;

}


byte KeyPressed() 
{
  if(some_key_pressed&&key_press_debounced  ) 
  {
    return yes;
  } 
  else 
  {
    return no;
  }
}

void KeyReset() 
{
  some_key_pressed = no;
  key_press_debounced = no;  
  KBI1SC_KBIE = 1;                 // enable KBI1 interrupts
  KBI2SC_KBIE = 1;                 // enable KBI2 interrupts
}    









static  void  MyTask1 (void *p_arg )
{
    
   (void)p_arg; 
   
   for(;;)                                    
     {
    
      LED_On(1); 
      OSTimeDlyHMSM(0,0,2,0);
      LED_Off(1);
      OSTimeDlyHMSM(0,0,2,0);
      LED_On(1);
      OSTimeDlyHMSM(0,0,2,0);
      LED_Off(1);
      OSTimeDlyHMSM(0,0,2,0);
       
     
    
    
   }   //end for loop
} //end task



static  void  MyTask2 (void *p_arg)
{
 
   (void)p_arg;
   for (;;) {
          LED_Off(0);
          LED_On(3);
          LED_On(4);
          OSTimeDlyHMSM(0, 0, 0, 420);
          LED_Off(3);
          LED_Off(4);
          OSTimeDlyHMSM(0, 0, 0, 420);
          LED_On(3);
          LED_On(4);
          OSTimeDlyHMSM(0, 0, 0, 420);
          LED_Off(3);
          LED_Off(4);
          OSTimeDlyHMSM(0, 0, 0, 420);
      
      
  }

}       




static  void  MyTask3 (void *p_arg)
{
  
 (void)p_arg;                      
for (;;) 
 {
     LED_Off(0);
     LED_On(6);
     LED_On(7);
     LED_On(8);
     OSTimeDlyHMSM(0, 0, 0, 420);
           LED_Off(6);
          LED_Off(7);
          LED_Off(8);
          OSTimeDlyHMSM(0, 0, 0, 420);
     LED_On(6);
     LED_On(7);
     LED_On(8);  
     OSTimeDlyHMSM(0, 0, 0, 420);
     
          LED_Off(6);
          LED_Off(7);
          LED_Off(8);
          OSTimeDlyHMSM(0, 0, 0,420);
   
 
 
 }  //for loop end 
 
 
}   //end Task3


/*static  void  MyTask4 (void *p_arg)
{
  byte i,j,t;
  
  byte tempA;
  byte tempD;
                       
for (;;) 
 {
     LED_Off(0);
     
     LED_On(7);
     LED_On(8);
     OSTimeDlyHMSM(0, 0, 0, 220);
           
          LED_Off(7);
          LED_Off(8);
          OSTimeDlyHMSM(0, 0, 0, 220);
     
     LED_On(7);
     LED_On(8);  
     OSTimeDlyHMSM(0, 0, 0,220);
     
          
          LED_Off(7);
          LED_Off(8);
          OSTimeDlyHMSM(0, 0, 0, 220);
   
 
 
 }  //for loop end 
 
 
}   //end Task3    */







 


void  main (void)
{
    

    InitSystems();
    EnablePullups();
    InitKBI();                        
    BSP_Init(); 
    OSInit(); 
                                                              /* Initialize "uC/OS-II, The Real-Time Kernel"              */
   
    
    OSTaskCreate(MyTask1,                                            /* Create  the first task */
                    (void *)0, 
                    (OS_STK *)&MyTask1STK[MyTask1_STK_SIZE - 1], 
                     MyTask1_PRIO);
     OSTaskCreate(     MyTask2,                                       /* Create  the second task */
                    (void *)0, 
                    (OS_STK *)&MyTask2STK[MyTask2_STK_SIZE - 1], 
                     MyTask2_PRIO); 
                    
     OSTaskCreate(  MyTask3,                                          /* Create  the third task */
                    (void *)0, 
                    (OS_STK *)&MyTask3STK[MyTask3_STK_SIZE - 1], 
                     MyTask3_PRIO );
                     
   //OSTaskCreate(  MyTask4,                                          /* Create  the third task */
                    //(void *)0, 
                    //(OS_STK *)&MyTask3STK[MyTask4_STK_SIZE - 1], 
                    //MyTask4_PRIO );  
                    
    OSStart();                                                          /* Start multitasking (i.e. give control to uC/OS-II)       */
}                 

⌨️ 快捷键说明

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