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

📄 stm32f10x_rcc.lst

📁 编译环境是 iar EWARM ,STM32 下的UCOSII
💻 LST
📖 第 1 页 / 共 5 页
字号:
    613          {
    614            /* Check the parameters */
    615            assert_param(IS_FUNCTIONAL_STATE(NewState));
    616          
    617            *(vu32 *) CSR_LSION_BB = (u32)NewState;
   \                     RCC_LSICmd:
   \   00000000   0149               LDR.N    R1,??RCC_LSICmd_0  ;; 0x42420480
   \   00000002   0860               STR      R0,[R1, #+0]
    618          }
   \   00000004   7047               BX       LR               ;; return
   \   00000006   00BF               Nop      
   \                     ??RCC_LSICmd_0:
   \   00000008   80044242           DC32     0x42420480
    619          
    620          /*******************************************************************************
    621          * Function Name  : RCC_RTCCLKConfig
    622          * Description    : Configures the RTC clock (RTCCLK).
    623          *                  Once the RTC clock is selected it can抰 be changed unless the
    624          *                  Backup domain is reset.
    625          * Input          : - RCC_RTCCLKSource: specifies the RTC clock source.
    626          *                    This parameter can be one of the following values:
    627          *                       - RCC_RTCCLKSource_LSE: LSE selected as RTC clock
    628          *                       - RCC_RTCCLKSource_LSI: LSI selected as RTC clock
    629          *                       - RCC_RTCCLKSource_HSE_Div128: HSE clock divided by 128
    630          *                         selected as RTC clock
    631          * Output         : None
    632          * Return         : None
    633          *******************************************************************************/

   \                                 In segment CODE, align 4, keep-with-next
    634          void RCC_RTCCLKConfig(u32 RCC_RTCCLKSource)
    635          {
    636            /* Check the parameters */
    637            assert_param(IS_RCC_RTCCLK_SOURCE(RCC_RTCCLKSource));
    638          
    639            /* Select the RTC clock source */
    640            RCC->BDCR |= RCC_RTCCLKSource;
   \                     RCC_RTCCLKConfig:
   \   00000000   ....               LDR.N    R1,??DataTable16  ;; 0x40021020
   \   00000002   0A68               LDR      R2,[R1, #+0]
   \   00000004   1043               ORRS     R0,R0,R2
   \   00000006   0860               STR      R0,[R1, #+0]
    641          }
   \   00000008   7047               BX       LR               ;; return
    642          
    643          /*******************************************************************************
    644          * Function Name  : RCC_RTCCLKCmd
    645          * Description    : Enables or disables the RTC clock.
    646          *                  This function must be used only after the RTC clock was
    647          *                  selected using the RCC_RTCCLKConfig function.
    648          * Input          : - NewState: new state of the RTC clock.
    649          *                    This parameter can be: ENABLE or DISABLE.
    650          * Output         : None
    651          * Return         : None
    652          *******************************************************************************/

   \                                 In segment CODE, align 4, keep-with-next
    653          void RCC_RTCCLKCmd(FunctionalState NewState)
    654          {
    655            /* Check the parameters */
    656            assert_param(IS_FUNCTIONAL_STATE(NewState));
    657          
    658            *(vu32 *) BDCR_RTCEN_BB = (u32)NewState;
   \                     RCC_RTCCLKCmd:
   \   00000000   0149               LDR.N    R1,??RCC_RTCCLKCmd_0  ;; 0x4242043c
   \   00000002   0860               STR      R0,[R1, #+0]
    659          }
   \   00000004   7047               BX       LR               ;; return
   \   00000006   00BF               Nop      
   \                     ??RCC_RTCCLKCmd_0:
   \   00000008   3C044242           DC32     0x4242043c
    660          
    661          /*******************************************************************************
    662          * Function Name  : RCC_GetClocksFreq
    663          * Description    : Returns the frequencies of different on chip clocks.
    664          * Input          : - RCC_Clocks: pointer to a RCC_ClocksTypeDef structure which
    665          *                    will hold the clocks frequencies.
    666          * Output         : None
    667          * Return         : None
    668          *******************************************************************************/

   \                                 In segment CODE, align 4, keep-with-next
    669          void RCC_GetClocksFreq(RCC_ClocksTypeDef* RCC_Clocks)
    670          {
   \                     RCC_GetClocksFreq:
   \   00000000   30B5               PUSH     {R4,R5,LR}
    671            u32 tmp = 0, pllmull = 0, pllsource = 0, presc = 0;
    672          
    673            /* Get SYSCLK source -------------------------------------------------------*/
    674            tmp = RCC->CFGR & CFGR_SWS_Mask;
   \   00000002   ....               LDR.N    R1,??DataTable14  ;; 0x40021004
   \   00000004   0A68               LDR      R2,[R1, #+0]
   \   00000006   12F00C03           ANDS     R3,R2,#0xC
    675          
    676            switch (tmp)
   \   0000000A   204A               LDR.N    R2,??RCC_GetClocksFreq_0  ;; 0x7a1200
   \   0000000C   082B               CMP      R3,#+8
   \   0000000E   01D0               BEQ.N    ??RCC_GetClocksFreq_1
    677            {
    678              case 0x00:  /* HSI used as system clock */
    679                RCC_Clocks->SYSCLK_Frequency = HSI_Value;
   \   00000010   0260               STR      R2,[R0, #+0]
   \   00000012   16E0               B.N      ??RCC_GetClocksFreq_2
    680                break;
    681          
    682              case 0x04:  /* HSE used as system clock */
    683                RCC_Clocks->SYSCLK_Frequency = HSE_Value;
    684                break;
    685          
    686              case 0x08:  /* PLL used as system clock */
    687                /* Get PLL clock source and multiplication factor ----------------------*/
    688                pllmull = RCC->CFGR & CFGR_PLLMull_Mask;
   \                     ??RCC_GetClocksFreq_1:
   \   00000014   0B68               LDR      R3,[R1, #+0]
   \   00000016   13F47013           ANDS     R3,R3,#0x3C0000
    689                pllmull = ( pllmull >> 18) + 2;
   \   0000001A   9B0C               LSRS     R3,R3,#+18
   \   0000001C   9B1C               ADDS     R3,R3,#+2
    690          
    691                pllsource = RCC->CFGR & CFGR_PLLSRC_Mask;
   \   0000001E   0D68               LDR      R5,[R1, #+0]
   \   00000020   5FF48034           MOVS     R4,#+65536
   \   00000024   2C40               ANDS     R4,R4,R5
    692          
    693                if (pllsource == 0x00)
   \   00000026   03D1               BNE.N    ??RCC_GetClocksFreq_3
    694                {/* HSI oscillator clock divided by 2 selected as PLL clock entry */
    695                  RCC_Clocks->SYSCLK_Frequency = (HSI_Value >> 1) * pllmull;
   \   00000028   5208               LSRS     R2,R2,#+1
   \   0000002A   5343               MULS     R3,R2,R3
   \   0000002C   0360               STR      R3,[R0, #+0]
   \   0000002E   08E0               B.N      ??RCC_GetClocksFreq_2
    696                }
    697                else
    698                {/* HSE selected as PLL clock entry */
    699          
    700                  if ((RCC->CFGR & CFGR_PLLXTPRE_Mask) != (u32)RESET)
   \                     ??RCC_GetClocksFreq_3:
   \   00000030   0C68               LDR      R4,[R1, #+0]
   \   00000032   A403               LSLS     R4,R4,#+14
   \   00000034   03D5               BPL.N    ??RCC_GetClocksFreq_4
    701                  {/* HSE oscillator clock divided by 2 */
    702          
    703                    RCC_Clocks->SYSCLK_Frequency = (HSE_Value >> 1) * pllmull;
   \   00000036   5208               LSRS     R2,R2,#+1
   \   00000038   5343               MULS     R3,R2,R3
   \   0000003A   0360               STR      R3,[R0, #+0]
   \   0000003C   01E0               B.N      ??RCC_GetClocksFreq_2
    704                  }
    705                  else
    706                  {
    707                    RCC_Clocks->SYSCLK_Frequency = HSE_Value * pllmull;
   \                     ??RCC_GetClocksFreq_4:
   \   0000003E   5343               MULS     R3,R2,R3
   \   00000040   0360               STR      R3,[R0, #+0]
    708                  }
    709                }
    710                break;
    711          
    712              default:
    713                RCC_Clocks->SYSCLK_Frequency = HSI_Value;
    714                break;
    715            }
    716          
    717            /* Compute HCLK, PCLK1, PCLK2 and ADCCLK clocks frequencies ----------------*/
    718            /* Get HCLK prescaler */
    719            tmp = RCC->CFGR & CFGR_HPRE_Set_Mask;
   \                     ??RCC_GetClocksFreq_2:
   \   00000042   0A68               LDR      R2,[R1, #+0]
   \   00000044   12F0F003           ANDS     R3,R2,#0xF0
    720            tmp = tmp >> 4;
    721            presc = APBAHBPrescTable[tmp];
    722          
    723            /* HCLK clock frequency */
    724            RCC_Clocks->HCLK_Frequency = RCC_Clocks->SYSCLK_Frequency >> presc;
   \   00000048   114A               LDR.N    R2,??RCC_GetClocksFreq_0+0x4  ;; APBAHBPrescTable
   \   0000004A   0468               LDR      R4,[R0, #+0]
   \   0000004C   1B09               LSRS     R3,R3,#+4
   \   0000004E   D35C               LDRB     R3,[R2, R3]
   \   00000050   DC40               LSRS     R4,R4,R3
   \   00000052   4460               STR      R4,[R0, #+4]
    725          
    726            /* Get PCLK1 prescaler */
    727            tmp = RCC->CFGR & CFGR_PPRE1_Set_Mask;
   \   00000054   0B68               LDR      R3,[R1, #+0]
   \   00000056   13F4E063           ANDS     R3,R3,#0x700
    728            tmp = tmp >> 8;
    729            presc = APBAHBPrescTable[tmp];
    730          
    731            /* PCLK1 clock frequency */
    732            RCC_Clocks->PCLK1_Frequency = RCC_Clocks->HCLK_Frequency >> presc;
   \   0000005A   4468               LDR      R4,[R0, #+4]
   \   0000005C   1B0A               LSRS     R3,R3,#+8
   \   0000005E   D35C               LDRB     R3,[R2, R3]
   \   00000060   DC40               LSRS     R4,R4,R3
   \   00000062   8460               STR      R4,[R0, #+8]
    733          
    734            /* Get PCLK2 prescaler */
    735            tmp = RCC->CFGR & CFGR_PPRE2_Set_Mask;
   \   00000064   0B68               LDR      R3,[R1, #+0]
   \   00000066   13F46053           ANDS     R3,R3,#0x3800
    736            tmp = tmp >> 11;
    737            presc = APBAHBPrescTable[tmp];
    738          
    739            /* PCLK2 clock frequency */
    740            RCC_Clocks->PCLK2_Frequency = RCC_Clocks->HCLK_Frequency >> presc;
   \   0000006A   4468               LDR      R4,[R0, #+4]
   \   0000006C   DB0A               LSRS     R3,R3,#+11
   \   0000006E   D35C               LDRB     R3,[R2, R3]
   \   00000070   DC40               LSRS     R4,R4,R3
   \   00000072   C460               STR      R4,[R0, #+12]
    741          
    742            /* Get ADCCLK prescaler */
    743            tmp = RCC->CFGR & CFGR_ADCPRE_Set_Mask;
   \   00000074   0968               LDR      R1,[R1, #+0]
   \   00000076   11F44041           ANDS     R1,R1,#0xC000
    744            tmp = tmp >> 14;
    745            presc = ADCPrescTable[tmp];
    746          
    747            /* ADCCLK clock frequency */
    748            RCC_Clocks->ADCCLK_Frequency = RCC_Clocks->PCLK2_Frequency / presc;
   \   0000007A   C368               LDR      R3,[R0, #+12]
   \   0000007C   12EB9131           ADDS     R1,R2,R1, LSR #+14
   \   00000080   097C               LDRB     R1,[R1, #+16]
   \   00000082   B3FBF1F1           UDIV     R1,R3,R1
   \   00000086   0161               STR      R1,[R0, #+16]
    749          }
   \  

⌨️ 快捷键说明

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