wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6790|回復: 1
收起左側(cè)

MSP430定時器筆記

[復制鏈接]
ID:380048 發(fā)表于 2018-7-27 23:02 | 顯示全部樓層 |閱讀模式
1.定時器參數(shù)
1.1 基本定時器
typedef enum
{
  TIMER_A0              ,
  TIMER_A1              ,
  TIMER_A2              ,
  TIMER_B0              ,
  TIMER_NUM             ,
}TIMERn;             //定時器模塊



1.2 定時器通道引腳、時鐘選擇
const GPIO_PIN TIMER_CHANEL_PIN[TIMER_NUM][TIMER_CH_NUM]=
{// CH0    CH1    CH2    CH3    CH4    CH5    CH6
  {{P1,1},{P1,2},{P1,3},{P1,4},{P1,5}},                  //TIMER_A0
  {{P1,7},{P2,0},{P2,1}},                                //TIMER_A1
  {{P2,3},{P2,4},{P2,5}},                                //TIMER_A2
  {{P5,6},{P5,7},{P7,4},{P7,5},{P7,6},{P3,5},{P3,6}}     //TIMER_B0
};//通道引腳
const GPIO_PIN TIMER_CLK_PIN[TIMER_NUM] =
{
  {P1,0},//TIMER_A0----ACLK----
  {P1,6},//TIMER_A1----ACLK----
  {P2,2},//TIMER_A2----SMCLK----
  {P7,7} //TIMER_B0----MCLK----
};//外部時鐘輸入引腳



2.定時器功能
2.1 實現(xiàn)基本定時
extern STATUS   TIMER_Interval_Us   (TIMERn, uint32_t us);  //初始化一個us級的定時中斷
#define         TIMER_Interval_Ms(timer,ms)  TIMER_Interval_Us(timer,(uint32_t)ms*1000)



2.1.1 中斷向量設置傳參
/*******************************************************************************
*  函數(shù)名稱:Set_Vector_Handler(VECTORn vector,__interrupt void pfunc_handler(void))
*  功能說明:設置中斷向量地址
*  參數(shù)說明:
            VECTORn vector  :中斷向量(枚舉變量,見.h文件)
            __interrupt void pfunc_handler(void)  : 中斷服務函數(shù)
*  函數(shù)返回:無
*  使用示例:Set_Vector_Handler(VECTOR_PORT1,GPIO_IRQ_Handler);    //設置PPORT1中斷服務函數(shù)為GPIO_IRQ_Handler,需要先定義中斷服務函數(shù),另外最好先設置中斷向量,再開啟中斷
********************************************************************************/
void Set_Vector_Handler(VECTORn vector, __interrupt void pfunc_handler(void))
{
  if(SYSX->RIVECT == DISABLE)        //如果沒有設置中斷向量表到RAM,則設置
  {
    Set_VectorTable_To_RAM();                       //設置中斷向量表到RAM
  }
  //此處若有警告可忽略
  __VECTOR_RAM[vector] = (ISR_TYPE)pfunc_handler;     //設置該中斷向量地址
}



2.1.2 定時中斷
/*******************************************************************************
*  函數(shù)名稱:TIMER_Interval_Us(TIMERn timer,uint32_t us)
*  功能說明:定時器定時初始化(單位:us)
*  參數(shù)說明:TIMERn timer       :定時器模塊
             uint32_t us          : 定時時間
*  函數(shù)返回:不成功則返回ERROR,成功則返回SUCCESS
*  使用例程:TIMER_Interval_Us(TIMER_B0,2500);  //TB定時間隔2.5ms中斷
********************************************************************************/
STATUS  TIMER_Interval_Us(TIMERn timer,uint32_t us)
{
#ifdef DELAY_TIMER
  ASSERT((timer != DELAY_TIMER),
         "TIMER_Interval_Us",
         "定時器已經(jīng)設置為默認延時功能,不能再作為其他功能使用");       //不允許這種情況下還宏定義該定時器作為延時所用的定時器,請在system.h里修改DELAY_TIMER宏定義
#endif
  TIMERX[timer]->CLR = BIT_SET;//置位
  TIMERX[timer]->SSEL = TIMER_SSEL_SMCLK;
  TIMERX[timer]->ID = 0u;//分頻系數(shù)清零
  //計數(shù)值
  uint32_t Counter_Value = (uint32_t)(us * g_sClock.SMCLK.fMHZ);
  while(Counter_Value > 65536)
  {
     TIMERX[timer]->ID ++;
     Counter_Value >>= 1;  
     if((TIMERX[timer]->ID == 3u) && (Counter_Value > 65536))   //這個時候意味得選擇更低頻率的時鐘了
     {
      if(TIMERX[timer]->SSEL == TIMER_SSEL_ACLK) //如果時鐘已經(jīng)是最低的ACLK了,那么意味著設置的頻率太低了,失敗返回ERROR
      {
        return ERROR;
      }
      //更換為更低的ACLK,從新配置
      TIMERX[timer]->SSEL = TIMER_SSEL_ACLK;
      TIMERX[timer]->ID = 0u;  
      Counter_Value = (uint32_t)(us * g_sClock.ACLK.fMHZ);
      continue;  
     }
  }
  if(Counter_Value <= 1)//出現(xiàn)這種情況,說明頻率不合適
  {
    return ERROR;
  }
  
  TIMERX[timer]->CCR[0] = (uint16_t)(Counter_Value - 1u);//為什么要減一??因為TAR/TBR計數(shù)器從CCR0變化到0還有一個計數(shù)周期
  TIMERX[timer]->CCTL[0].CAPMODE = RESET;//比較模式
  TIMERX[timer]->IE = RESET;             //關(guān)閉溢出中斷
  TIMERX[timer]->CCTL[0].IE = RESET;     //關(guān)閉通道中斷
  TIMERX[timer]->MC = TIMER_MC_UP;      //增計數(shù)模式
  
  return SUCCESS;
}



2.1.3 初始化實例
DisableInterrupts();          //禁止總中斷


Set_Vector_Handler(VECTOR_TIMER0_A0,TIMER_TA0_IRQ_Handler);    //設置中斷向量,最好先設置中斷向量,在開啟中斷
  TIMER_Interval_Ms(TIMER_A0,200);//初始化一個200ms的定時中斷
  //TIMER_Interval_Us(TIMER_A0,1000000);                    //初始化一個1000ms的定時中斷,不要寫為1000*1000,否則會提示超出范圍
  TIMER_ITConfig (TIMER_A0,TIMER_CCR0_IRQn,ENABLE);


EnableInterrupts();


__interrupt void TIMER_TA0_IRQ_Handler()
{
  LED_Turn(LED2); //黃燈
  //FLAG_10MS=1;
}



2.2 PWM輸出
2.2.1 PWM計數(shù)模式
#define TIMER_MC_STOP         (0)  /* Timer A mode control: 0 - Stop */
#define TIMER_MC_UP           (1)  /* Timer A mode control: 1 - Up to CCR0 */
#define TIMER_MC_CONTINUOUS   (2)  /* Timer A mode control: 2 - Continuous up */
#define TIMER_MC_CONTINOUS    (2)  /* Legacy define */
#define TIMER_MC_UPDOWN       (3)  /* Timer A mode control: 3 - Up/Down */



2.2.2 PWM輸出模式
typedef enum
{
  TIMER_PWM_OUTMOD0     ,
  TIMER_PWM_OUTMOD1     ,
  TIMER_PWM_OUTMOD2     ,
  TIMER_PWM_OUTMOD3     ,
  TIMER_PWM_OUTMOD4     ,
  TIMER_PWM_OUTMOD5     ,
  TIMER_PWM_OUTMOD6     ,
  TIMER_PWM_OUTMOD7     ,
}TIMER_PWM_OUTMODn;       //PWM波輸出波形



各種計數(shù)情況下pwm輸出模式
1.png



2.3 pwm輸出
2.3.1 pwm初始化
/*******************************************************************************
*  函數(shù)名稱:TIMER_PWM_MultiChannel_Init(TIMERn timer, uint32_t fre, uint8_t ChannelNum,...)
*  功能說明:定時器PWM輸出初始化(可以多個通道同時初始化)
*  參數(shù)說明:TIMERn timer       :定時器模塊
             uint32_t fre         :頻率
             uint8_t ChannelNum   :要初始化的通道數(shù)
             ...                :初始化的通道
*  函數(shù)返回:不成功則返回ERROR,成功則返回SUCCESS
********************************************************************************/
STATUS TIMER_PWM_MultiChannel_Init(TIMERn timer, uint32_t fre, uint8_t ChannelNum,...)
{
#ifdef DELAY_TIMER
  ASSERT((timer != DELAY_TIMER),
         "TIMER_PWM_MultiChannel_Init",
         "定時器已經(jīng)設置為默認延時功能,不能再作為其他功能使用");       //不允許這種情況下還宏定義該定時器作為延時所用的定時器,請在system.h里修改DELAY_TIMER宏定義
#endif
  ASSERT((timer==TIMER_A0&&ChannelNum<=TIMER_CH4)
       ||(timer==TIMER_A1&&ChannelNum<=TIMER_CH2)
       ||(timer==TIMER_A2&&ChannelNum<=TIMER_CH2)
       ||(timer==TIMER_B0&&ChannelNum<=TIMER_CH6),
       "TIMER_PWM_MultiChannel_Init",
       "定時器通道參數(shù)超出范圍!"); //斷言檢測輸入?yún)?shù)*/
  
  va_list ap;
  va_start(ap,ChanelNum);
  for(int i=0;i < ChannelNum;i++)           //根據(jù)初始化的通道數(shù),逐一初始化通道
  {
    TIMER_CHn ch = va_arg(ap, TIMER_CHn);  //讀取要初始化的通道
    if((ch == TIMER_CH0) || (ch >= TIMER_CH_NUM))   //判斷通道值是否合理
    {
      return ERROR;                                 //不合理返回ERROR
    }
    //初始化端口
    GPIO_Init(TIMER_CHANEL_PIN[timer][ch].Port,TIMER_CHANEL_PIN[timer][ch].Pin,GPO|SEL);
    //初始化占空比及輸出波形
    TIMERX[timer]->CCR[ch] = 0u;
    TIMERX[timer]->CCTL[ch].IE = RESET;               //關(guān)閉通道中斷
    TIMERX[timer]->CCTL[ch].OUTMOD = DEFAULT_PWM_OUTMOD;      //輸出波形設置
    TIMERX[timer]->CCTL[ch].CAPMODE = RESET;          //比較模式
  }
  va_end(ap);
  
  return TIMER_PWM_SetFrequency(timer,fre);
}



設置頻率函數(shù)
/*******************************************************************************
*  函數(shù)名稱:TIMER_PWM_SetFrequency(TIMERn timer,uint32_t fre)
*  功能說明:定時器PWM頻率設置(注意這里沒有更改各個通道的占空比,所以修改頻率后占空比變了,需要從新設置占空比)
*  參數(shù)說明:TIMERn timer       :定時器模塊
             uint32_t fre         :頻率
*  函數(shù)返回:不成功則返回ERROR,成功則返回SUCCESS
*  使用例程:TIMER_PWM_SetFrequency(TIMER_B0,1000);       //將定時器B輸出頻率修改為1000Hz
********************************************************************************/
STATUS  TIMER_PWM_SetFrequency(TIMERn timer,uint32_t fre)
{
  if(fre == 0u)
  {
    TIMERX[timer]->MC = TIMER_MC_STOP;              //暫停輸出PWM波
    return SUCCESS;
  }
  
  TIMERX[timer]->CLR = BIT_SET;
  TIMERX[timer]->SSEL = TIMER_SSEL_SMCLK;           //先選擇時鐘源為SMCLK
  TIMERX[timer]->ID = 0u;                           //分頻系數(shù)清零
  //時鐘大小
  uint32_t Counter_Value = g_sClock.SMCLK.nHZ/fre;                 //計算計數(shù)值
  while(Counter_Value > 65536u)        //這里不是0xffff,因為后面會-1,所以是(0xffff+1)=65536
  {  //分頻一次
     TIMERX[timer]->ID ++;         
     Counter_Value >>= 1;         
     
     if((TIMERX[timer]->ID == 3u) && (Counter_Value > 65536))   //這個時候意味得選擇更低頻率的時鐘了
     {
       if(TIMERX[timer]->SSEL == TIMER_SSEL_ACLK)   //如果時鐘已經(jīng)是最低的ACLK了,那么意味著設置的頻率太低了,失敗返回ERROR
       {
         return ERROR;
       }
       //更換為更低的ACLK,從新配置
       TIMERX[timer]->SSEL = TIMER_SSEL_ACLK;
       TIMERX[timer]->ID = 0u;  
       Counter_Value = g_sClock.ACLK.nHZ/fre;
       continue;  
     }
  }
  if(Counter_Value <= 1)//出現(xiàn)這種情況,說明頻率不合適
  {
    return ERROR;
  }


  TIMERX[timer]->CCR[0] = (uint16_t)(Counter_Value - 1u);
//為什么要減一??因為TAR/TBR計數(shù)器從CCR0變化到0還有一個計數(shù)周期
  TIMERX[timer]->IE = RESET;                      //關(guān)閉中斷
  //TIMERX[timer]->MC = TIMER_MC_UP;                //增計數(shù)模式
  TIMERX[timer]->MC = TIMER_MC_UPDOWN;      //增減計數(shù)模式
  
  return SUCCESS;
}



2.3.2 使用例程:
實例一:(使用函數(shù)初始化時需要輸入初始化通道數(shù),初始化通道數(shù)可以為0,如:

TIMER_PWM_MultiChannel_Init(TIMER_A0, 1000, 0);)
TIMER_PWM_MultiChannel_Init(TIMER_A0, 1000, 3, TIMER_CH1, TIMER_CH2, TIMER_CH4);
//定時器TIMER_A0初始化輸出PWM波,頻率為1000Hz,初始化3個通道,分別是:TIMER_CH1,TIMER_CH2,TIMER_CH4

實例二:(使用宏定義初始化時不需要輸入初始化通道數(shù))

TIMER_PWM_Init(TIMER_B0,1000,TIMER_CH1,TIMER_CH2,TIMER_CH3,TIMER_CH4,TIMER_CH5,TIMER_CH6);
//定時器TIMER_B0初始化輸出PWM波,頻率為1000Hz,初始化6個通道:TIMER_CH1,TIMER_CH2,TIMER_CH3,TIMER_CH4,TIMER_CH5,TIMER_CH6



2.3.3 初始化實例
TIMER_PWM_Init(TIMER_A0,66000, TIMER_CH1, TIMER_CH2, TIMER_CH3, TIMER_CH4);


TIMER_PWM_SetChannelDuty(TIMER_A0,TIMER_CH1,200);//設置某一個定時器某一個通道的占空比
TIMER_PWM_SetChannelDuty(TIMER_A0,TIMER_CH2,400);//設置某一個定時器某一個通道的占空比
TIMER_PWM_SetChannelDuty(TIMER_A0,TIMER_CH3,600);//設置某一個定時器某一個通道的占空比
TIMER_PWM_SetChannelDuty  (TIMER_A0,TIMER_CH4,800);//設置某一個定時器某一個通道的占空比


TIMER_PWM_MultiChannel_Init(TIMER_B0, 33000, 1, TIMER_CH5);  
//TIMER_PWM_Init(TIMER_B0, 1, TIMER_CH5);
  
TIMER_PWM_SetChannelDuty  (TIMER_B0,TIMER_CH5,500);     //設置某一個定時器某一個通道的占空比
GPIO_PinRemapConfig(P4,7,GPIO_Remap_TB0CCR5A);        //GPIO端口重映射



2.4 互補pwm波形
//定時器A0,頻率1K,占空比為0,初始化4個通道,分別是:TIMER_CH1(P1.2), TIMER_CH2(P1.3), TIMER_CH3(P1.4), TIMER_CH4(P1.5)
//TIMER_PWM_MultiChannel_Init(TIMER_A0,1000, 4, TIMER_CH1, TIMER_CH2, TIMER_CH3, TIMER_CH4);  
TIMER_PWM_Init(TIMER_A0,66000, TIMER_CH1, TIMER_CH2, TIMER_CH3, TIMER_CH4);     


TIMERX[TIMER_A0]->CCTL[2].OUTMOD = TIMER_PWM_OUTMOD2;
TIMERX[TIMER_A0]->CCTL[3].OUTMOD = TIMER_PWM_OUTMOD6;
TIMERX[TIMER_A0]->MC = TIMER_MC_UP;//增計數(shù)模式


TIMER_PWM_SetChannelDuty(TIMER_A0,TIMER_CH1,200);//設置某一個定時器某一個通道的占空比
TIMER_PWM_SetChannelDuty(TIMER_A0,TIMER_CH2,400);//設置某一個定時器某一個通道的占空比
TIMER_PWM_SetChannelDuty(TIMER_A0,TIMER_CH3,600);//設置某一個定時器某一個通道的占空比
TIMER_PWM_SetChannelDuty(TIMER_A0,TIMER_CH4,800);//設置某一個定時器某一個通道的占空比



2.5 帶死區(qū)的pwm輸出
//定時器A0,頻率1K,占空比為0,初始化4個通道,分別是:TIMER_CH1(P1.2), TIMER_CH2(P1.3), TIMER_CH3(P1.4), TIMER_CH4(P1.5)
//TIMER_PWM_MultiChannel_Init(TIMER_A0,1000, 4, TIMER_CH1, TIMER_CH2, TIMER_CH3, TIMER_CH4);  
TIMER_PWM_Init(TIMER_A0,66000, TIMER_CH1, TIMER_CH2, TIMER_CH3, TIMER_CH4);     
TIMERX[TIMER_A0]->CCTL[2].OUTMOD = TIMER_PWM_OUTMOD2;
TIMERX[TIMER_A0]->CCTL[3].OUTMOD = TIMER_PWM_OUTMOD6;
TIMERX[TIMER_A0]->MC = TIMER_MC_UPDOWN;      //增減計數(shù)模式


TIMER_PWM_SetChannelDuty  (TIMER_A0,TIMER_CH1,200);//設置某一個定時器某一個通道的占空比
TIMER_PWM_SetChannelDuty  (TIMER_A0,TIMER_CH2,400);//設置某一個定時器某一個通道的占空比
TIMER_PWM_SetChannelDuty  (TIMER_A0,TIMER_CH3,600);//設置某一個定時器某一個通道的占空比
TIMER_PWM_SetChannelDuty  (TIMER_A0,TIMER_CH4,800);//設置某一個定時器某一個通道的占空比



3.定時捕獲
3.1 捕獲過程




3.2 計數(shù)初始化
/*******************************************************************************
*  函數(shù)名稱:TIMER_Pluse_Init    (TIMERn timer)
*  功能說明:定時器脈沖計數(shù)初始化
*  參數(shù)說明:TIMERn timer       :定時器模塊
*  函數(shù)返回:不成功則返回ERROR,成功則返回SUCCESS
*  使用例程:TIMER_Pluse_Init    (TIMER_A1);    //定時器TA1初始化為脈沖計數(shù)功能
********************************************************************************/
STATUS  TIMER_Pluse_Init    (TIMERn timer)
{
#ifdef DELAY_TIMER
  ASSERT((timer != DELAY_TIMER),
         "TIMER_Pluse_Init",
         "定時器已經(jīng)設置為默認延時功能,不能再作為其他功能使用");       //不允許這種情況下還宏定義該定時器作為延時所用的定時器,請在system.h里修改DELAY_TIMER宏定義
#endif
  //端口設置為輸入方向//選擇第二功能
  GPIO_Init(TIMER_CLK_PIN[timer].Port,TIMER_CLK_PIN[timer].Pin,GPI|SEL);
  
  TIMERX[timer]->CLR = BIT_SET;                       
  TIMERX[timer]->SSEL = TIMER_SSEL_INCLK;             //時鐘源選擇為外部輸入
  TIMERX[timer]->ID = 0u;                             //不分頻
  TIMERX[timer]->MC = TIMER_MC_CONTINOUS;             //連續(xù)計數(shù)模式
  TIMERX[timer]->IE = RESET;                          //禁止溢出中斷
  
  return SUCCESS;
}



3.3 中斷處理函數(shù)
/*******************************************************************************
*  函數(shù)名稱:TIMER_ITConfig (TIMERn timer,TIMER_IRQn irqn,STATUS ITState)
*  功能說明:設置是否使能TIMER的某一個中斷
*  參數(shù)說明:TIMERn timer       :定時器模塊
             TIMER_IRQn irqn    :中斷事件
             STATUS ITState     :是否使能中斷
*  函數(shù)返回:無
*  使用例程:TIMER_ITConfig (TIMAER_A1,TIMER_CCR0_IRQn,ENABLE); //使能定時器1通道0中斷,即定時中斷
********************************************************************************/
void  TIMER_ITConfig (TIMERn timer,TIMER_IRQn irqn,STATUS ITState)
{
  if(irqn == TIMER_OverFlow_IRQn)
  {
    TIMERX[timer]->IE = ITState;
  }
  else
  {
    TIMERX[timer]->CCTL[irqn].IE = ITState;
  }
}



3.4 計數(shù)值獲取
/*******************************************************************************
*  函數(shù)名稱:TIMER_Pluse_GetValue(TIMERn timer,uint16_t overflowTime)
*  功能說明:定時器脈沖計數(shù)值獲取
*  參數(shù)說明:TIMERn timer       :定時器模塊
             uint16_t overflowTime :計數(shù)器溢出次數(shù)
*  函數(shù)返回:定時器脈沖計數(shù)值
*  使用例程:
             int32 pulse = TIMER_Pluse_GetValue(TIMER_A1,0);    //在沒有發(fā)生溢出的情況下讀取脈沖個數(shù)
             TIMER_Pluse_Clear   (TIMER_A1);                    //讀取后應該要清零
********************************************************************************/
float TIMER_Pluse_GetValue(TIMERn timer,uint16_t overflowTime)
{
  return (TIMERX[timer]->R + (overflowTime*65536u));
}



3.5 初始化實例
//設置中斷向量,最好先設置中斷向量,在開啟中斷

Set_Vector_Handler(VECTOR_TIMER0_A0,TIMER_TA0_IRQ_Handler);
TIMER_Interval_Ms(TIMER_A0,1000); //初始化一個1000ms的定時中斷  1s定時
TIMER_ITConfig (TIMER_A0,TIMER_CCR0_IRQn,ENABLE); //使能TIMER的某一個中斷
__interrupt void TIMER_TA0_IRQ_Handler()
{
   //讀取脈沖數(shù)
   PulseValue = TIMER_Pluse_GetValue(TIMER_A1,overflowTime);
   overflowTime=0;              //清除溢出次數(shù)
   TIMER_Pluse_Clear   (TIMER_A1);
}


//設置中斷向量,最好先設置中斷向量,在開啟中斷
Set_Vector_Handler(VECTOR_TIMER1_A1,TIMER_TA1_IRQ_Handler);   
TIMER_Pluse_Init    (TIMER_A1);  //定時器A1用作脈沖計數(shù),P1.6,默認以開啟溢出中斷
TIMER_ITConfig (TIMER_A1,TIMER_OverFlow_IRQn,ENABLE); //使能TIMER的某一個中斷
__interrupt void TIMER_TA1_IRQ_Handler()
{
   overflowTime++;
}





4.計時功能
    Set_Vector_Handler(VECTOR_TIMER0_B1,TIMER_TB0_IRQ_Handler);    //設置中斷向量,最好先設置中斷向量,在開啟中斷
    TIMER_Timer_Init (TIMER_B0);//計時功能初始化
    TIMER_ITConfig (TIMER_B0,TIMER_OverFlow_IRQn,TRUE);


    TIMER_Timer_Start   (TIMER_B0);//計時功能啟動
    TIMER_Delay_Ms       (TIMER_A0,50);  //延時500MS
    TIMER_Timer_Stop    (TIMER_B0); //計時功能停止,返回計數(shù)值
    time = TIMER_Timer_GetTime_Us(TIMER_B0, overflowTime); //讀取計時時間(單位:US)


__interrupt voidTIMER_TB0_IRQ_Handler()
{
   LED_Turn(LED1);               //指示燈閃爍
   if(TIMER_GetITStatus(TIMER_B0,TIMER_OverFlow_IRQn) == TRUE)//如果溢出
   {
     overflowTime++;          //溢出值加1
     TIMER_ClearITPendingBit(TIMER_B0,TIMER_OverFlow_IRQn);     //清除TIMER的某一個中斷標志
   }
}






3.png

評分

參與人數(shù) 2黑幣 +62 收起 理由
bjergsent + 12 很給力!
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:104472 發(fā)表于 2020-4-8 16:23 | 顯示全部樓層
看起來很高大上,其實不然,只有自己看的懂,沒有開發(fā)要求,開發(fā)的環(huán)境,只是從大程序里面截取了子函數(shù),華而不實。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
日本韩国精品一区二区在线观看| 无码一区二区三区在线| 日韩最新中文字幕| 欧美不卡1区2区3区| 亚洲一区二区日本| 国产人妖伪娘一区91| 国产精品视频中文字幕91| 日本精品免费观看| 欧美最猛性xxxx| 欧美综合国产精品久久丁香| 欧美一区在线直播| 性色av一区二区咪爱| 久久久久久久久久久久av| 欧美久久久精品| 久久久视频在线| 国内揄拍国内精品| 欧美一区二区三区精品电影| 国产成人福利网站| 成人黄色免费网站在线观看| 97人人澡人人爽| 国产亚洲欧美一区二区| 欧美污视频久久久| 国产高清免费在线| 五十路熟女丰满大屁股| 韩国视频一区二区三区| 国产xxx在线观看| 亚洲天堂成人av| 欧美一级片在线视频| 国产一国产二国产三| 黄色网址中文字幕| 亚洲成熟女性毛茸茸| 日本电影中文字幕| 91九色网站| av男人的天堂网| 欧美亚洲日本| 国产极品人妖在线观看| 久久人人视频| 精品深夜福利视频| 91久久久精品国产| 久久先锋影音| 99re成人在线| 亚洲午夜在线视频| 欧美夫妻性生活| 亚洲人成伊人成综合网久久久| 久久精品久久久久久| 日韩美女免费观看| 国产91精品入口17c| 老司机av福利| 国产又黄又猛的视频| 中文字幕在线1| yjizz国产| 深爱五月激情五月| 三级福利视频| 亚洲第一se情网站| 91豆花视频在线播放| 视频一区日韩精品| 综合精品一区| 国产成人亚洲精品狼色在线| 亚洲黄色免费电影| 欧美本精品男人aⅴ天堂| 久久中文字幕在线| 91麻豆国产精品| 国产欧美综合一区| 日韩欧美色视频| a在线视频播放观看免费观看| 国产又粗又猛又黄| 天海翼视频在线观看| 五月天天在线| 精品裸体bbb| 四季av一区二区三区免费观看| 蜜芽一区二区三区| 最新国产の精品合集bt伙计| 欧美一级久久久久久久大片| 国内精品久久久久| 色播亚洲婷婷| 一级黄色片在线免费观看| 欧美成人免费观看视频| 天天综合网在线| 国产一级视频| 亚洲啊v在线| 欧美成人精品一区二区三区在线看| 狠狠狠色丁香婷婷综合激情| 亚洲午夜在线视频| 国产一区二区美女视频| 91午夜理伦私人影院| 五月丁香综合缴情六月小说| 97人妻精品一区二区免费| 国产一区二区在线播放视频| 福利片在线播放| a级网站在线播放| 你微笑时很美电视剧整集高清不卡| 免费美女久久99| 亚洲电影一级黄| 色系列之999| 精品国产一区二区三区日日嗨| 热久久精品免费视频| 久久艹精品视频| 精品偷拍激情视频在线观看| 成人免费黄色网页| 另类ts人妖一区二区三区| 看片的网站亚洲| 欧美性xxxxxxxxx| 欧美激情国产精品| 中文字幕99| 成人国产精品久久久网站| 开心激情综合网| 在线免费看黄色| 久久精品免视看国产成人| 免费视频最近日韩| 色婷婷精品大在线视频| 97免费视频在线播放| 特级西西人体www高清大胆| 久久久久久亚洲中文字幕无码| 亚洲av无码专区在线| 最新中文字幕在线| 中文久久电影小说| 国产乱人伦偷精品视频免下载| 欧美三级中文字| 国产精品电影久久久久电影网| 91视频 -- 69xx| 久久亚洲精品国产| а√最新版天堂中文在线| 国产精品第一| 麻豆91精品视频| 在线91免费看| 亚洲a级在线观看| 国产一级片中文字幕| 国产欧美第一页| 性网站在线看| 精品视频亚洲| 亚洲图片欧美激情| 欧美高清激情视频| 欧美一级在线看| 中文在线a天堂| 在线看片线路1| av在线不卡免费观看| 亚洲日本电影在线| 午夜精品久久17c| 久久综合久久色| 亚洲一区二区人妻| 男同在线观看| 婷婷综合社区| 欧美日韩国产综合新一区 | 国产一区免费电影| 日韩精品一区二区三区中文不卡 | 天堂电影在线| 免费av一区| 中文字幕综合网| 97香蕉超级碰碰久久免费软件| 久久久免费视频网站| 中文字幕乱码人妻二区三区| 香蕉国产在线| 欧美福利专区| 91久久奴性调教| 91九色蝌蚪嫩草| 黄免费在线观看| 黄色免费的网站| 91精品入口| 国产精品久久久久久久久快鸭| 久久久免费精品| 午夜剧场高清版免费观看| 污污的视频网站在线观看| 好看的中文字幕在线播放 | 性欧美xxxx交| 一区二区三区四区毛片| 日本综合一区二区三区| 芒果视频成人app| 丁香六月久久综合狠狠色| 色婷婷综合成人| 女人另类性混交zo| 午夜视频免费在线| 一二区成人影院电影网| 26uuu精品一区二区三区四区在线| 久久综合久久八八| 亚洲图色中文字幕| 亚洲国产aⅴ精品| 日日夜夜精品| 亚洲欧美自拍偷拍色图| 国产日韩欧美日韩大片| 九九热免费在线| www.xxx黄| 在线国产一区二区| 欧美一区二区三区影视| 夜夜爽99久久国产综合精品女不卡 | 久久综合色影院| 亚洲欧美日韩一级| 老师让我她我爽了好久视频| 最新亚洲国产| 亚洲欧美偷拍三级| 99国内精品久久久久久久软件| 日韩av手机在线免费观看| 蜜臀在线观看| 在线视频精品| 日韩精品在线看| 免费国产成人av| 韩国三级电影在线观看婷婷| 成人av综合网| 婷婷成人激情在线网| 日本不卡二区| 一级片免费网站| 久九九久频精品短视频| 国产精品伦一区二区三级视频| 成人黄色短视频在线观看| 欧美色图一区二区| 欧美日韩xx| 国产精品1区2区| 日韩av电影国产| 永久免费看片视频教学| 国产黄色片在线观看| 精品一区二区三区久久久| 高清视频欧美一级| 免费一级黄色录像| 三区在线视频| 国产精品正在播放| 日韩免费在线免费观看| 欧美激情一区二区视频| 91麻豆国产福利在线观看宅福利| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 另类欧美日韩国产在线| 欧美丰满少妇xxxxx| 韩国三级hd中文字幕| 日本电影一区二区在线观看| 国内久久精品视频| 欧美一级免费视频| 国产1区2区3区4区| 精精国产xxxx视频在线中文版| 久久久久久久综合狠狠综合| 亚洲精品欧美一区二区三区| 亚洲午夜无码久久久久| 久久国产三级| 色吊一区二区三区| 免费在线观看亚洲视频| 女生裸体免费视频| 国产精品美女久久久| 欧美日韩爱爱视频| 校园春色 亚洲| 乱馆动漫1~6集在线观看| 亚洲一区在线观看视频| 亚洲精品偷拍视频| 国产乱精品一区二区三区| 中文精品久久| 久久在线免费视频| 熟女av一区二区| 欧美寡妇性猛交xxx免费| 亚洲人一二三区| 中文字幕一区二区三区有限公司 | 国产无遮挡在线观看| 免费黄色在线| 中文字幕一区二区三| 秋霞在线观看一区二区三区| 爱福利一区二区| 99国产**精品****| www国产亚洲精品久久网站| 日韩欧美视频免费观看| 欧美四级在线| 亚洲国产精品久久久男人的天堂| 欧洲精品在线播放| eeuss影院www影院| 狠狠色丁香久久婷婷综合丁香| 亚洲综合av影视| 蜜桃91麻豆精品一二三区| 伦理一区二区三区| 亚洲白虎美女被爆操| 内射中出日韩无国产剧情| 秋霞影院午夜丰满少妇在线视频| 国产精品久久久久久久久免费相片| 伊人久久av导航| 免费尤物视频| 久久99久久精品欧美| 91免费版网站在线观看| 无码国产色欲xxxx视频| 中文字幕日韩欧美精品高清在线| 欧美激情视频网站| 国产视频1区2区| 精品资源在线| 少妇av一区二区三区| 久久久精品91| 欧美精品影院| 国产一区二区美女视频| 国产一级久久久| 欧美第一在线视频| 一区二区在线视频播放| 九热这里只有精品| 日韩在线观看中文字幕| 国产一区二区三区视频免费| 免费在线观看亚洲| 国产一区二区三区国产精品| 亚洲区一区二区| 国产亚洲欧美精品久久久久久| 久久99精品久久久野外观看| 国产一区二区三区视频| av中文在线播放| 亚洲瘦老头同性70tv| 久久久久久噜噜噜久久久精品| 亚洲午夜在线播放| 伊人无码高清| 国产成人啪免费观看软件| 亚洲午夜精品久久| 黑巨人与欧美精品一区| 国产精品激情偷乱一区二区∴| 91av在线免费播放| 欧美69xxxx| 欧美日韩国产成人在线免费| 一区二区黄色片| 亚洲久草在线| 国产亚洲一级高清| 黄色网址中文字幕| 欧美xxx在线观看| 亚洲自拍另类欧美丝袜| 国产极品美女到高潮| 国产69精品久久99不卡| www.在线观看av| 男人的天堂在线| 色噜噜狠狠成人网p站| ass精品国模裸体欣赏pics| av在线不卡精品| 色偷偷偷综合中文字幕;dd| 在线免费观看一级片| 亚洲激情不卡| 久久久久免费网| 色偷偷亚洲第一成人综合网址| 国产精品色呦呦| 在线免费黄色网| 人成在线免费网站| 亚洲天堂影视av| 中文字幕一区二区人妻| 欧美午夜一区二区福利视频| 国产激情美女久久久久久吹潮| 岛国片免费观看| 亚洲乱码国产乱码精品精可以看| 亚洲欧美综合视频| 91成人精品观看| 午夜精品理论片| 日韩黄色成人| 99精品欧美一区二区三区小说| 欧美在线观看www| sm国产在线调教视频| 欧美精品一区二| 中国一级片黄色一级片黄| 国产日韩视频| 爱爱爱视频网站| 懂色av中文在线| 日韩欧美一级在线播放| 成人公开免费视频| 亚洲在线国产日韩欧美| 熟女视频一区二区三区| 95在线视频| 亚洲国产精品va| 96日本xxxxxⅹxxx17| 日日噜噜夜夜狠狠视频欧美人| 成人黄色片免费| 日本孕妇大胆孕交无码| 在线播放亚洲激情| 亚洲 欧美 精品| caoporen国产精品视频| 亚洲精品乱码久久久久久动漫| 香蕉久久一区| 国产成人精品一区二区| 毛片女人与拘交视频| 亚洲国产成人av| 婷婷在线精品视频| 欧美福利网址| 日本精品免费视频| 欧美xxxbbb| 麻豆国产精品va在线观看不卡| 亚洲国产精品久久卡一| 中文字幕在线不卡视频| 亚洲码无人客一区二区三区| 色88久久久久高潮综合影院| 欧美日韩在线不卡一区| 在线视频三区| 国产亚洲精品va在线观看| 影音先锋中文在线播放| 国产精品情趣视频| 国产精品一区二区亚洲| 精品动漫3d一区二区三区免费版 | jizzjizzjizz亚洲| 欧美日韩三级一区二区| 欧美三级网站在线观看| www.综合网.com| 久久久国产精品免费| xxxx性欧美黑人| 亚洲综合免费观看高清完整版在线| 一区二区国产精品精华液| 国模一区二区三区| 国产婷婷一区二区三区| 国产精品videossex撒尿| 国产精品欧美日韩一区二区| 中文字幕理伦片免费看| 日韩av最新在线| 亚洲永久免费网站| 亚洲另类在线制服丝袜| 久久久久久天堂| 蜜桃免费网站一区二区三区| 久久久久久久久久久久久久久国产 | 91国偷自产一区二区使用方法| 欧美日韩综合一区二区三区| 豆国产96在线|亚洲| 白嫩情侣偷拍呻吟刺激| 久久精品青草|