<object id="k0taz"><form id="k0taz"></form></object>
<pre id="k0taz"></pre>
      1. <table id="k0taz"></table>
        <bdo id="k0taz"><center id="k0taz"></center></bdo>
        <table id="k0taz"><option id="k0taz"></option></table><track id="k0taz"><ruby id="k0taz"></ruby></track>
        專注電子技術學習與研究
        當前位置:單片機教程網 >> STM32 >> 瀏覽文章

        stm32使用內部RC晶振

        作者:佚名   來源:本站原創   點擊數:  更新時間:2014年03月28日   【字體:


        ///////////////////////////////////////////////////* Version            : V2.0////////////////////////////////////////////////////////

        #define RCC_SYSCLKSource_HSI             ((u32)0x00000000)
        /* AHB clock source */
        #define RCC_SYSCLK_Div1                  ((u32)0x00000000) // AHB 時鐘 = 系統時鐘 ;
        #define RCC_SYSCLK_Div2                  ((u32)0x00000080) // AHB 時鐘 = 系統時鐘/2 ;
        #define RCC_SYSCLK_Div4                  ((u32)0x00000090) // AHB 時鐘 = 系統時鐘/4 ;

        #define RCC_HCLK_Div4                    ((u32)0x00000500) // APBx 時鐘 = HCLK/4 ;

         
        /*******************************************************************************
        * Function Name  : RCC_Configuration
        * Description    : Configures the different system clocks.
        * Input          : None
        * Output         : None
        * Return         : None
        *******************************************************************************/
        void RCC_Configuration(void)

               RCC_HSICmd(ENABLE);//使能內部高速晶振 ;
          RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI);//選擇內部高速時鐘作為系統時鐘SYSCLOCK=8MHZ 
        RCC_HCLKConfig(RCC_SYSCLK_Div1);//選擇HCLK時鐘源為系統時鐘SYYSCLOCK
          RCC_PCLK1Config(RCC_HCLK_Div4);//APB1時鐘為2M
          RCC_PCLK2Config(RCC_HCLK_Div4);//APB2時鐘為2M
          RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB , ENABLE);//使能APB2外設GPIOB時鐘
        }

         


        /*******************************************************************************
        * Function Name  : RCC_HSICmd
        * Description    : Enables or disables the Internal High Speed oscillator (HSI).
        *                  HSI can not be stopped if it is used directly or through the
        *                  PLL as system clock.
        * Input          : - NewState: new state of the HSI.
        *                    This parameter can be: ENABLE or DISABLE.
        * Output         : None
        * Return         : None
        * 功能           : 使能或者失能內部高速晶振(HSI)
        *******************************************************************************/
        void RCC_HSICmd(FunctionalState NewState)
        {
          /* Check the parameters */
          assert_param(IS_FUNCTIONAL_STATE(NewState));

          *(vu32 *) CR_HSION_BB = (u32)NewState;
        }

        /*******************************************************************************
        * Function Name  : RCC_SYSCLKConfig
        * Description    : Configures the system clock (SYSCLK).
        * Input          : - RCC_SYSCLKSource: specifies the clock source used as system
        *                    clock. This parameter can be one of the following values:
        *                       - RCC_SYSCLKSource_HSI: HSI selected as system clock
        *                       - RCC_SYSCLKSource_HSE: HSE selected as system clock
        *                       - RCC_SYSCLKSource_PLLCLK: PLL selected as system clock
        * Output         : None
        * Return         : None
        * 功能           : 設置系統時鐘(SYSCLK);
        *******************************************************************************/
        void RCC_SYSCLKConfig(u32 RCC_SYSCLKSource)
        {
          u32 tmpreg = 0;

          /* Check the parameters */
          assert_param(IS_RCC_SYSCLK_SOURCE(RCC_SYSCLKSource));

          tmpreg = RCC->CFGR;

          /* Clear SW[1:0] bits */
          tmpreg &= CFGR_SW_Mask;

          /* Set SW[1:0] bits according to RCC_SYSCLKSource value */
          tmpreg |= RCC_SYSCLKSource;

          /* Store the new value */
          RCC->CFGR = tmpreg;
        }

        /*******************************************************************************
        * Function Name  : RCC_HCLKConfig
        * Description    : Configures the AHB clock (HCLK).
        * Input          : - RCC_SYSCLK: defines the AHB clock divider. This clock is
        *                    derived from the system clock (SYSCLK).
        *                    This parameter can be one of the following values:
        *                       - RCC_SYSCLK_Div1: AHB clock = SYSCLK
        *                       - RCC_SYSCLK_Div2: AHB clock = SYSCLK/2
        *                       - RCC_SYSCLK_Div4: AHB clock = SYSCLK/4
        *                       - RCC_SYSCLK_Div8: AHB clock = SYSCLK/8
        *                       - RCC_SYSCLK_Div16: AHB clock = SYSCLK/16
        *                       - RCC_SYSCLK_Div64: AHB clock = SYSCLK/64
        *                       - RCC_SYSCLK_Div128: AHB clock = SYSCLK/128
        *                       - RCC_SYSCLK_Div256: AHB clock = SYSCLK/256
        *                       - RCC_SYSCLK_Div512: AHB clock = SYSCLK/512
        * Output         : None
        * Return         : None
        * 功能           : 設置AHB時鐘(HCLK);
        *******************************************************************************/
        void RCC_HCLKConfig(u32 RCC_SYSCLK)
        {
          u32 tmpreg = 0;

          /* Check the parameters */
          assert_param(IS_RCC_HCLK(RCC_SYSCLK));

          tmpreg = RCC->CFGR;

          /* Clear HPRE[3:0] bits */
          tmpreg &= CFGR_HPRE_Reset_Mask;

          /* Set HPRE[3:0] bits according to RCC_SYSCLK value */
          tmpreg |= RCC_SYSCLK;

          /* Store the new value */
          RCC->CFGR = tmpreg;
        }
        /*******************************************************************************
        * Function Name  : RCC_PCLK1Config
        * Description    : Configures the Low Speed APB clock (PCLK1).
        * Input          : - RCC_HCLK: defines the APB1 clock divider. This clock is
        *                    derived from the AHB clock (HCLK).
        *                    This parameter can be one of the following values:
        *                       - RCC_HCLK_Div1: APB1 clock = HCLK
        *                       - RCC_HCLK_Div2: APB1 clock = HCLK/2
        *                       - RCC_HCLK_Div4: APB1 clock = HCLK/4
        *                       - RCC_HCLK_Div8: APB1 clock = HCLK/8
        *                       - RCC_HCLK_Div16: APB1 clock = HCLK/16
        * Output         : None
        * Return         : None
        * 功能           : 設置低速AHB時鐘(PCLK1) ;
        *******************************************************************************/
        void RCC_PCLK1Config(u32 RCC_HCLK)
        {
          u32 tmpreg = 0;

          /* Check the parameters */
          assert_param(IS_RCC_PCLK(RCC_HCLK));

          tmpreg = RCC->CFGR;

          /* Clear PPRE1[2:0] bits */
          tmpreg &= CFGR_PPRE1_Reset_Mask;

          /* Set PPRE1[2:0] bits according to RCC_HCLK value */
          tmpreg |= RCC_HCLK;

          /* Store the new value */
          RCC->CFGR = tmpreg;
        }

        /*******************************************************************************
        * Function Name  : RCC_PCLK2Config
        * Description    : Configures the High Speed APB clock (PCLK2).
        * Input          : - RCC_HCLK: defines the APB2 clock divider. This clock is
        *                    derived from the AHB clock (HCLK).
        *                    This parameter can be one of the following values:
        *                       - RCC_HCLK_Div1: APB2 clock = HCLK
        *                       - RCC_HCLK_Div2: APB2 clock = HCLK/2
        *                       - RCC_HCLK_Div4: APB2 clock = HCLK/4
        *                       - RCC_HCLK_Div8: APB2 clock = HCLK/8
        *                       - RCC_HCLK_Div16: APB2 clock = HCLK/16
        * Output         : None
        * Return         : None
        * 功能           : 設置高速AHB時鐘(PCLK2);
        *******************************************************************************/
        void RCC_PCLK2Config(u32 RCC_HCLK)
        {
          u32 tmpreg = 0;

          /* Check the parameters */
          assert_param(IS_RCC_PCLK(RCC_HCLK));

          tmpreg = RCC->CFGR;

          /* Clear PPRE2[2:0] bits */
          tmpreg &= CFGR_PPRE2_Reset_Mask;

          /* Set PPRE2[2:0] bits according to RCC_HCLK value */
          tmpreg |= RCC_HCLK << 3;

          /* Store the new value */
          RCC->CFGR = tmpreg;
        }
         /*******************************************************************************
        * Function Name  : RCC_APB2PeriphClockCmd
        * Description    : Enables or disables the High Speed APB (APB2) peripheral clock.
        * Input          : - RCC_APB2Periph: specifies the APB2 peripheral to gates its
        *                    clock.
        *                    This parameter can be any combination of the following values:
        *                       - RCC_APB2Periph_AFIO, RCC_APB2Periph_GPIOA, RCC_APB2Periph_GPIOB,
        *                         RCC_APB2Periph_GPIOC, RCC_APB2Periph_GPIOD, RCC_APB2Periph_GPIOE,
        *                         RCC_APB2Periph_GPIOF, RCC_APB2Periph_GPIOG, RCC_APB2Periph_ADC1,
        *                         RCC_APB2Periph_ADC2, RCC_APB2Periph_TIM1, RCC_APB2Periph_SPI1,
        *                         RCC_APB2Periph_TIM8, RCC_APB2Periph_USART1, RCC_APB2Periph_ADC3,
        *                         RCC_APB2Periph_ALL
        *                  - NewState: new state of the specified peripheral clock.
        *                    This parameter can be: ENABLE or DISABLE.
        * Output         : None
        * Return         : None
        * 功能           : 使能或者失能APB2外設時鐘 ;
        *******************************************************************************/
        void RCC_APB2PeriphClockCmd(u32 RCC_APB2Periph, FunctionalState NewState)
        {
          /* Check the parameters */
          assert_param(IS_RCC_APB2_PERIPH(RCC_APB2Periph));
          assert_param(IS_FUNCTIONAL_STATE(NewState));

          if (NewState != DISABLE)
          {
            RCC->APB2ENR |= RCC_APB2Periph;
          }
          else
          {
            RCC->APB2ENR &= ~RCC_APB2Periph;
          }
        }
         

        關閉窗口

        相關文章

        欧美国产伦久久久久_亚洲爽爽一区二区三区_一色屋精品视频在线观看免费_久久伊人成色777综合网
        <object id="k0taz"><form id="k0taz"></form></object>
        <pre id="k0taz"></pre>
          1. <table id="k0taz"></table>
            <bdo id="k0taz"><center id="k0taz"></center></bdo>
            <table id="k0taz"><option id="k0taz"></option></table><track id="k0taz"><ruby id="k0taz"></ruby></track>