亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 75x_tim.c

?? freertosV4.40 是一種small的嵌入式系統。利于嵌入式開好者入門學習嵌入式操作系統。通過對于源碼的學習可以很好的掌握freertos的運行機制。
?? C
?? 第 1 頁 / 共 4 頁
字號:
/******************** (C) COPYRIGHT 2006 STMicroelectronics ********************
* File Name          : 75x_tim.c
* Author             : MCD Application Team
* Date First Issued  : 03/10/2006
* Description        : This file provides all the TIM software functions.
********************************************************************************
* History:
* 07/17/2006 : V1.0
* 03/10/2006 : V0.1
********************************************************************************
* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.
* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,
* INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE
* CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING
* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
*******************************************************************************/

/* Includes ------------------------------------------------------------------*/
#include "75x_tim.h" 
#include "75x_mrcc.h"

/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
/* TIM interrupt masks */
#define TIM_IT_Clear_Mask   0x7FFF
#define TIM_IT_Enable_Mask  0x7FFF

/* TIM Input Capture Selection Set/Reset */
#define TIM_IC1S_Set    0x0001
#define TIM_IC1S_Reset  0x003E

/* TIM Input Capture Selection Set/Reset */
#define TIM_IC2S_Set    0x0002
#define TIM_IC2S_Reset  0x003D

/* TIM_SCR Masks bit */
#define TIM_Encoder_Mask                   0x731C
#define TIM_SlaveModeSelection_Mask        0x7307
#define TIM_TriggerSelection_Mask          0x701F
#define TIM_InternalTriggerSelection_Mask  0x031F

/* TIM Encoder mode Set value */
#define TIM_Encoder1_Set  0x0001
#define TIM_Encoder2_Set  0x0002
#define TIM_Encoder3_Set  0x0003

/* TIM Slave Mode Enable Set/Reset value */
#define TIM_SME_Reset  0x731B
#define TIM_SME_Set    0x0004

/* TIM Internal Trigger Selection value */
#define TIM_ITS_TIM0  0x1000
#define TIM_ITS_TIM1  0x2000
#define TIM_ITS_TIM2  0x3000
#define TIM_ITS_PWM   0x4000

/* TIM Trigger Selection value */
#define TIM_TS_IC1_Set  0x0200
#define TIM_TS_IC2_Set  0x0300

/* TIM Slave Mode selction external clock Set value */
#define TIM_SMS_EXTCLK_Set    0x0008
#define TIM_SMS_RESETCLK_Set  0x0000

/* TIM_CR Masks bit */
#define TIM_DBASE_Mask                0x077F
#define TIM_MasterModeSelection_Mask  0xFC7F
#define TIM_CounterMode_Mask          0xFF8F

/* TIM Update flag selection Set/Reset value */
#define TIM_UFS_Reset  0xFFFE
#define TIM_UFS_Set    0x0001

/* TIM Counter value */
#define TIM_COUNTER_Reset  0x0002
#define TIM_COUNTER_Start  0x0004
#define TIM_COUNTER_Stop   0xFFFB

/* TIM One pulse Mode set value */
#define TIM_OPM_Set    0x0008
#define TIM_OPM_Reset  0xFFF7

/* TIM Debug Mode Set/Reset value */
#define TIM_DBGC_Set    0x0400
#define TIM_DBGC_Reset  0xFB7F

/* TIM Input Capture Enable/Disable value */
#define TIM_IC1_Enable  0x0004
#define TIM_IC2_Enable  0x0010

/* TIM Input Capture Polarity Set/Reset value */
#define TIM_IC1P_Set    0x0008
#define TIM_IC2P_Set    0x0020
#define TIM_IC1P_Reset  0x0037
#define TIM_IC2P_Reset  0x001F

/* TIM Output Compare Polarity Set/Reset value */
#define TIM_OC1P_Set    0x0020
#define TIM_OC2P_Set    0x2000
#define TIM_OC1P_Reset  0x3F1F
#define TIM_OC2P_Reset  0x1F3F

/* TIM Output Compare control mode constant */
#define TIM_OCControl_PWM         0x000C
#define TIM_OCControl_OCToggle    0x0006
#define TIM_OCControl_OCInactive  0x0004
#define TIM_OCControl_OCActive    0x0002
#define TIM_OCControl_OCTiming    0x0000

/* TIM Output Compare mode Enable value */
#define TIM_OC1_Enable  0x0010
#define TIM_OC2_Enable  0x1000

/* TIM Output Compare mode Mask value */
#define TIM_OC1C_Mask  0x3F31
#define TIM_OC2C_Mask  0x313F

/* TIM Preload bit Set/Reset value */
#define TIM_PLD1_Set    0x0001
#define TIM_PLD1_Reset  0xFFFE

#define TIM_PLD2_Set    0x0100
#define TIM_PLD2_Reset  0xFEFF

/* TIM OCRM Set/Reset value */
#define TIM_OCRM_Set    0x0080
#define TIM_OCRM_Reset  0x030D

/* Reset Register Masks */
#define TIM_Pulse2_Reset_Mask     0x0000
#define TIM_Prescaler_Reset_Mask  0x0000
#define TIM_Pulse1_Reset_Mask     0x0000
#define TIM_Period_Reset_Mask     0xFFFF
#define TIM_Counter_Reset         0x0002

/* Private function prototypes -----------------------------------------------*/
static void ICAP_ModuleConfig(TIM_TypeDef* TIMx, TIM_InitTypeDef* TIM_InitStruct);
static void Encoder_ModeConfig(TIM_TypeDef* TIMx, TIM_InitTypeDef* TIM_InitStruct);
static void OCM_ModuleConfig(TIM_TypeDef* TIMx, TIM_InitTypeDef* TIM_InitStruct);

/* Private functions ---------------------------------------------------------*/

/******************************************************************************
* Function Name  : TIM_DeInit
* Description    : Deinitializes TIM peripheral registers to their default reset
*                  values.
* Input          : TIMx: where x can be 0, 1 or 2 to select the TIM peripheral.
* Output         : None
* Return         : None
*******************************************************************************/
void TIM_DeInit(TIM_TypeDef *TIMx)
{ 
  if(TIMx == TIM0)
  {
    MRCC_PeripheralSWResetConfig(MRCC_Peripheral_TIM0,ENABLE);
    MRCC_PeripheralSWResetConfig(MRCC_Peripheral_TIM0,DISABLE);
  }
  else if(TIMx == TIM1)
  {
    MRCC_PeripheralSWResetConfig(MRCC_Peripheral_TIM1,ENABLE);
    MRCC_PeripheralSWResetConfig(MRCC_Peripheral_TIM1,DISABLE);
  }
  else if(TIMx == TIM2)
  {
    MRCC_PeripheralSWResetConfig(MRCC_Peripheral_TIM2,ENABLE);
    MRCC_PeripheralSWResetConfig(MRCC_Peripheral_TIM2,DISABLE);
  }
}

/*******************************************************************************
* Function Name  : TIM_Init
* Description    : Initializes the TIMx peripheral according to the specified
*                  parameters in the TIM_InitStruct .
* Input          : - TIMx: where x can be 0, 1 or 2 to select the TIM peripheral.
*                  - TIM_InitStruct: pointer to a TIM_InitTypeDef structure that
*                    contains the configuration information for the specified TIM
*                    peripheral.
* Output         : None
* Return         : None
*******************************************************************************/
void TIM_Init(TIM_TypeDef* TIMx, TIM_InitTypeDef* TIM_InitStruct)
{
  /* Set the prescaler value */
  TIMx->PSC = TIM_InitStruct->TIM_Prescaler;

  /* Select the clock source */
  TIM_ClockSourceConfig(TIMx, TIM_InitStruct->TIM_ClockSource,
                           TIM_InitStruct->TIM_ExtCLKEdge);

  /* Select the counter mode */
  TIMx->CR &= TIM_CounterMode_Mask;
  TIMx->CR |= TIM_InitStruct->TIM_CounterMode;

  /* Set the period value */
  TIMx->ARR = TIM_InitStruct->TIM_Period;

  switch(TIM_InitStruct->TIM_Mode)
  {
    case TIM_Mode_OCTiming: case TIM_Mode_OCActive: case TIM_Mode_OCInactive:
    case TIM_Mode_OCToggle: case TIM_Mode_PWM:
      OCM_ModuleConfig(TIMx, TIM_InitStruct);
    break;

    case TIM_Mode_PWMI: case TIM_Mode_IC:
      ICAP_ModuleConfig(TIMx, TIM_InitStruct);
    break;

    case TIM_Mode_Encoder1: case TIM_Mode_Encoder2: case TIM_Mode_Encoder3:
      Encoder_ModeConfig(TIMx, TIM_InitStruct);
    break;

    case TIM_Mode_OPM_PWM: case TIM_Mode_OPM_Toggle: case TIM_Mode_OPM_Active:

      /* Output module configuration */
      OCM_ModuleConfig(TIMx, TIM_InitStruct);

      /* Input module configuration */
      ICAP_ModuleConfig(TIMx, TIM_InitStruct);
      
      /* Set the slave mode to trigger Mode */
      TIMx->SCR |= TIM_SynchroMode_Trigger;

      /* Repetitive pulse state selection */
      if(TIM_InitStruct->TIM_RepetitivePulse == TIM_RepetitivePulse_Disable)
      {
        TIMx->CR |= TIM_OPM_Set;
      }
      else
      {
        TIMx->CR &= TIM_OPM_Reset;
      }
    break;

    default:
    break;
  }
}

/*******************************************************************************
* Function Name  : TIM_StructInit
* Description    : Fills each TIM_InitStruct member with its default value.
* Input          : TIM_InitStruct : pointer to a TIM_InitTypeDef structure
*                  which will be initialized.
* Output         : None                        
* Return         : None.
*******************************************************************************/
void TIM_StructInit(TIM_InitTypeDef *TIM_InitStruct)
{
  /* Set the default configuration */
  TIM_InitStruct->TIM_Mode = TIM_Mode_OCTiming;
  TIM_InitStruct->TIM_Prescaler = TIM_Prescaler_Reset_Mask;
  TIM_InitStruct->TIM_ClockSource = TIM_ClockSource_Internal;
  TIM_InitStruct->TIM_ExtCLKEdge = TIM_ExtCLKEdge_Rising;
  TIM_InitStruct->TIM_CounterMode = TIM_CounterMode_Up;
  TIM_InitStruct->TIM_Period = TIM_Period_Reset_Mask;
  TIM_InitStruct->TIM_Channel = TIM_Channel_ALL;
  TIM_InitStruct->TIM_Pulse1 = TIM_Pulse1_Reset_Mask;
  TIM_InitStruct->TIM_Pulse2 = TIM_Pulse2_Reset_Mask;
  TIM_InitStruct->TIM_RepetitivePulse = TIM_RepetitivePulse_Disable;
  TIM_InitStruct->TIM_Polarity1 = TIM_Polarity1_Low;
  TIM_InitStruct->TIM_Polarity2 = TIM_Polarity2_Low;
  TIM_InitStruct->TIM_IC1Selection = TIM_IC1Selection_TI1;
  TIM_InitStruct->TIM_IC2Selection = TIM_IC2Selection_TI1;
  TIM_InitStruct->TIM_IC1Polarity = TIM_IC1Polarity_Rising;
  TIM_InitStruct->TIM_IC2Polarity = TIM_IC2Polarity_Rising;
  TIM_InitStruct->TIM_PWMI_ICSelection = TIM_PWMI_ICSelection_TI1;
  TIM_InitStruct->TIM_PWMI_ICPolarity = TIM_PWMI_ICPolarity_Rising;
}

/*******************************************************************************
* Function Name  : TIM_Cmd
* Description    : Enables or disables the specified TIM peripheral.
* Input          : - TIMx: where x can be 0, 1 or 2 to select the TIM peripheral.
*                  - Newstate: new state of the TIMx peripheral.
*                    This parameter can be: ENABLE or DISABLE.
* Output         : None
* Return         : None
*******************************************************************************/
void TIM_Cmd(TIM_TypeDef *TIMx, FunctionalState Newstate)
{
 if(Newstate == ENABLE)
  { 
    TIMx->CR |= TIM_COUNTER_Start;
  }
  else
  {
    TIMx->CR &= TIM_COUNTER_Stop;
  }
}

/*******************************************************************************
* Function Name  : TIM_ITConfig
* Description    : Enables or disables the TIM interrupts.
* Input          : - TIMx: where x can be 0, 1 or 2 to select the TIM peripheral.
*                  - TIM_IT: specifies the TIM interrupts sources to be enabled
*                    or disabled.
*                    This parameter can be any combination of the following values:
*                         - TIM_IT_IC1: Input Capture 1 Interrupt 
*                         - TIM_IT_OC1: Output Compare 1 Interrupt 
*                         - TIM_IT_Update: Timer update Interrupt 
*                         - TIM_IT_GlobalUpdate: Timer global update Interrupt 
*                         - TIM_IT_IC2: Input Capture 2 Interrupt 
*                         - TIM_IT_OC2: Output Compare 2 Interrupt 
*                  - Newstate: new state of the specified TIMx interrupts. 
*                    This parameter can be: ENABLE or DISABLE.
* Output         : None
* Return         : None
*******************************************************************************/
void TIM_ITConfig(TIM_TypeDef *TIMx, u16 TIM_IT, FunctionalState Newstate)
{ 
  u16 TIM_IT_Enable = 0;

  TIM_IT_Enable = TIM_IT & TIM_IT_Enable_Mask;

  if(Newstate == ENABLE)
  {
    /* Update interrupt global source: overflow/undeflow, counter reset operation
    or slave mode controller in reset mode */
    if((TIM_IT & TIM_IT_GlobalUpdate) == TIM_IT_GlobalUpdate)
    {
      TIMx->CR &= TIM_UFS_Reset;
    }
    /* Update interrupt source: counter overflow/underflow */
    else if((TIM_IT & TIM_IT_Update) == TIM_IT_Update)
    {
      TIMx->CR |= TIM_UFS_Set;
    }
    /* Select and enable the interrupts requests */
    TIMx->RSR |= TIM_IT_Enable;
    TIMx->RER |= TIM_IT_Enable;
  }
  /* Disable the interrupts requests */
  else
  {
    TIMx->RSR &= ~TIM_IT_Enable;
    TIMx->RER &= ~TIM_IT_Enable;
  }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产在线日韩欧美| 成人av在线影院| 国产精品久久久久久久第一福利| 在线精品观看国产| 国产精品911| 日本视频一区二区三区| **性色生活片久久毛片| 精品国产一区二区三区四区四| www.在线欧美| 国产福利一区二区三区视频在线| 午夜精品久久久| 亚洲视频一二区| 国产色产综合产在线视频| 欧美日韩夫妻久久| 一本高清dvd不卡在线观看| 国产激情一区二区三区| 蜜臀av在线播放一区二区三区| 亚洲日本丝袜连裤袜办公室| 欧美激情一区二区在线| 精品国一区二区三区| 在线观看91精品国产麻豆| 91蜜桃免费观看视频| 国产成人一区二区精品非洲| 另类人妖一区二区av| 首页综合国产亚洲丝袜| 亚洲综合丝袜美腿| 亚洲精品国产无套在线观| 国产精品免费久久| 久久综合999| 91精品中文字幕一区二区三区| 99久久国产免费看| 国精产品一区一区三区mba桃花| 婷婷国产v国产偷v亚洲高清| 亚洲丝袜自拍清纯另类| 国产精品伦理一区二区| 久久在线免费观看| 久久久久国产一区二区三区四区 | 欧美视频精品在线观看| 成人综合日日夜夜| 视频一区中文字幕国产| 亚洲美女少妇撒尿| 26uuu亚洲| 日韩欧美在线123| 精品成人私密视频| 欧美日本高清视频在线观看| 欧美日韩一区视频| 欧美性高清videossexo| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 成人美女视频在线观看| 99精品欧美一区二区蜜桃免费 | 91黄色免费看| 欧美性猛交xxxx乱大交退制版| 欧美一级在线观看| 日韩欧美中文字幕制服| 欧美一区二区在线不卡| 日韩精品一区二区在线| 欧美成人r级一区二区三区| 精品成人佐山爱一区二区| 精品奇米国产一区二区三区| 久久色在线观看| 久久久久久久国产精品影院| 亚洲国产成人私人影院tom| 日本一区二区三区久久久久久久久不 | 欧美电视剧免费观看| 久久影院午夜论| 国产欧美日韩久久| 一区二区三区在线免费观看| 一区二区三区精品视频| 视频一区中文字幕| 久久97超碰色| 蓝色福利精品导航| yourporn久久国产精品| 在线观看视频一区| 欧美三级日韩三级| 欧洲视频一区二区| 91麻豆精品国产无毒不卡在线观看| 欧美电影免费观看高清完整版在线观看 | 日韩精品久久久久久| 日产国产高清一区二区三区| 久久99精品国产麻豆婷婷| 国产乱码精品1区2区3区| 色综合久久综合网欧美综合网| 欧美视频一二三区| 久久麻豆一区二区| 亚洲蜜臀av乱码久久精品蜜桃| 亚洲第一电影网| 狠狠色丁香婷婷综合久久片| 成人av电影在线| 欧美亚洲综合网| 日本一区二区三区免费乱视频| 一区二区三区国产豹纹内裤在线| 久久国产福利国产秒拍| 99国内精品久久| 91麻豆蜜桃一区二区三区| 正在播放一区二区| 亚洲国产精品成人综合| 亚洲午夜精品网| 国产精品一二三四五| 精品视频资源站| 久久一二三国产| 日韩在线一二三区| 国产一区久久久| 91久久奴性调教| 欧美精品一区二区三区蜜桃| 中文字幕一区二区三中文字幕| 亚洲综合久久久久| 国产成a人亚洲| 欧美日韩在线播放| 国产精品污网站| 亚洲精品五月天| 26uuu亚洲婷婷狠狠天堂| 亚洲成年人网站在线观看| 亚洲图片自拍偷拍| 国产精品一区在线| 欧美视频一二三区| 中文字幕在线观看一区二区| 亚洲欧美另类久久久精品| 久久成人麻豆午夜电影| 日本精品视频一区二区| 久久色在线观看| 亚洲欧美另类久久久精品2019| 黄色日韩三级电影| 一区二区三区波多野结衣在线观看| 日韩国产在线一| 欧美性猛片xxxx免费看久爱| 亚洲狼人国产精品| 成人毛片老司机大片| 久久奇米777| 国产成人av网站| 国产欧美日韩不卡| 国产成人精品影视| 国产欧美日韩视频在线观看| 91福利精品视频| 欧美一区欧美二区| 麻豆视频一区二区| 在线不卡欧美精品一区二区三区| 亚洲欧洲日产国产综合网| 国产69精品一区二区亚洲孕妇 | 欧美人体做爰大胆视频| 一区二区三区在线影院| 亚洲精品一区二区精华| 成人不卡免费av| 成人app软件下载大全免费| 亚洲成国产人片在线观看| 午夜激情久久久| 青青草原综合久久大伊人精品| 久久亚洲捆绑美女| 午夜精品免费在线观看| 欧美日韩欧美一区二区| 99久久久精品免费观看国产蜜| 日本福利一区二区| 欧美一三区三区四区免费在线看| 九九国产精品视频| 69堂成人精品免费视频| 天天色天天操综合| 欧美日韩国产片| 亚洲一区在线观看视频| 欧美一区日韩一区| 九一九一国产精品| 久久精品免视看| 成人国产免费视频| 亚洲欧洲成人自拍| 欧美xxxxx裸体时装秀| 日本一区二区成人| 欧美日韩成人综合天天影院 | 99re8在线精品视频免费播放| 中文字幕一区二区三区乱码在线| 成人一区二区在线观看| 日日骚欧美日韩| 亚洲第一av色| 中文字幕色av一区二区三区| 精品欧美一区二区久久| 欧美欧美欧美欧美| 国产女同互慰高潮91漫画| 麻豆精品国产91久久久久久| 欧美日韩免费观看一区二区三区| 国产精品色眯眯| 色婷婷精品久久二区二区蜜臀av| 亚洲激情五月婷婷| 日韩一级片网址| 亚洲香肠在线观看| 9191成人精品久久| 国产成人精品综合在线观看| 亚洲三级免费观看| 91麻豆精品国产91久久久使用方法 | 亚洲国产精品久久久久婷婷884 | 亚洲国产成人高清精品| 日韩精品一区二区三区在线观看 | 亚洲v精品v日韩v欧美v专区 | 欧美精品v国产精品v日韩精品 | 国产精品拍天天在线| av毛片久久久久**hd| 午夜视频在线观看一区二区| 精品久久人人做人人爰| 色哟哟日韩精品| 日韩精品一卡二卡三卡四卡无卡| 久久久99精品久久| av在线一区二区| 青青草精品视频| 中文字幕电影一区|