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

📄 rccu.lst

📁 STR71x平台下实现ADC(数模转换)编程
💻 LST
📖 第 1 页 / 共 3 页
字号:
   \   000000C4   ........           LDR         R2,??DataTable33   ;; RCCU
   \   000000C8   002092E5           LDR         R2,[R2, #+0]
   \   000000CC   002092E5           LDR         R2,[R2, #+0]
   \   000000D0   0420D2E3           BICS        R2,R2,#+0x4
   \   000000D4   002081E5           STR         R2,[R1, #+0]
     52                                     // 关闭 PLL1
     53                                        RCCU->PLL1CR=((RCCU->PLL1CR & ~RCCU_DX_Mask)\
     54                                        |0x00000003) & ~RCCU_FREEN_Mask;
   \   000000D8   ........           LDR         R1,??DataTable33   ;; RCCU
   \   000000DC   001091E5           LDR         R1,[R1, #+0]
   \   000000E0   ........           LDR         R2,??DataTable33   ;; RCCU
   \   000000E4   002092E5           LDR         R2,[R2, #+0]
   \   000000E8   182092E5           LDR         R2,[R2, #+0x18]
   \   000000EC   8720D2E3           BICS        R2,R2,#+0x87
   \   000000F0   032092E3           ORRS        R2,R2,#+0x3
   \   000000F4   182081E5           STR         R2,[R1, #+0x18]
     55                                        break;}
   \   000000F8   270000EA           B           ??RCCU_RCLKSourceConfig_4
     56              case RCCU_PLL1_Output:{// 置位 CK2_16 位
     57                                        RCCU->CFR = RCCU->CFR | RCCU_CK2_16_Mask;
   \                     ??RCCU_RCLKSourceConfig_0:
   \   000000FC   ........           LDR         R1,??DataTable33   ;; RCCU
   \   00000100   001091E5           LDR         R1,[R1, #+0]
   \   00000104   ........           LDR         R2,??DataTable33   ;; RCCU
   \   00000108   002092E5           LDR         R2,[R2, #+0]
   \   0000010C   082092E5           LDR         R2,[R2, #+0x8]
   \   00000110   082092E3           ORRS        R2,R2,#+0x8
   \   00000114   082081E5           STR         R2,[R1, #+0x8]
     58                                     // 等待 PLL1 锁定
     59                                        if (( RCCU->PLL1CR & 0x0007 ) != 7)
   \   00000118   ........           LDR         R1,??DataTable33   ;; RCCU
   \   0000011C   001091E5           LDR         R1,[R1, #+0]
   \   00000120   181091E5           LDR         R1,[R1, #+0x18]
   \   00000124   071011E2           ANDS        R1,R1,#+0x7
   \   00000128   070051E3           CMP         R1,#+0x7
   \   0000012C   0400000A           BEQ         ??RCCU_RCLKSourceConfig_5
     60                                          while(!(RCCU->CFR & RCCU_LOCK_Mask));
   \                     ??RCCU_RCLKSourceConfig_6:
   \   00000130   ........           LDR         R1,??DataTable33   ;; RCCU
   \   00000134   001091E5           LDR         R1,[R1, #+0]
   \   00000138   081091E5           LDR         R1,[R1, #+0x8]
   \   0000013C   020011E3           TST         R1,#+0x2
   \   00000140   FAFFFF0A           BEQ         ??RCCU_RCLKSourceConfig_6
     61                                     // 反选 CKAF
     62                                        RCCU->CCR  &= ~RCCU_CKAF_SEL_Mask;
   \                     ??RCCU_RCLKSourceConfig_5:
   \   00000144   ........           LDR         R1,??DataTable33   ;; RCCU
   \   00000148   001091E5           LDR         R1,[R1, #+0]
   \   0000014C   ........           LDR         R2,??DataTable33   ;; RCCU
   \   00000150   002092E5           LDR         R2,[R2, #+0]
   \   00000154   002092E5           LDR         R2,[R2, #+0]
   \   00000158   0420D2E3           BICS        R2,R2,#+0x4
   \   0000015C   002081E5           STR         R2,[R1, #+0]
     63                                     // 选中 CSU_CKSEL
     64                                        RCCU->CFR |= RCCU_CSU_CKSEL_Mask;
   \   00000160   ........           LDR         R1,??DataTable33   ;; RCCU
   \   00000164   001091E5           LDR         R1,[R1, #+0]
   \   00000168   ........           LDR         R2,??DataTable33   ;; RCCU
   \   0000016C   002092E5           LDR         R2,[R2, #+0]
   \   00000170   082092E5           LDR         R2,[R2, #+0x8]
   \   00000174   012092E3           ORRS        R2,R2,#+0x1
   \   00000178   082081E5           STR         R2,[R1, #+0x8]
     65                                        break;}
   \   0000017C   060000EA           B           ??RCCU_RCLKSourceConfig_4
     66              case RCCU_RTC_CLOCK  :   {RCCU->CCR |= 0x04;
   \                     ??RCCU_RCLKSourceConfig_3:
   \   00000180   ........           LDR         R1,??DataTable33   ;; RCCU
   \   00000184   001091E5           LDR         R1,[R1, #+0]
   \   00000188   ........           LDR         R2,??DataTable33   ;; RCCU
   \   0000018C   002092E5           LDR         R2,[R2, #+0]
   \   00000190   002092E5           LDR         R2,[R2, #+0]
   \   00000194   042092E3           ORRS        R2,R2,#+0x4
   \   00000198   002081E5           STR         R2,[R1, #+0]
     67                                        break;}
     68            }
     69          }
   \                     ??RCCU_RCLKSourceConfig_4:
   \   0000019C   1EFF2FE1           BX          LR                 ;; return
     70          
     71          /*******************************************************************************
     72          * 说明:RCCU_RCLKClockSource函数,返回当前 RCLK 源时钟
     73          * 参数:无
     74          * 返回值: RCCU_PLL1_Output, RCCU_CLOCK2_16, RCCU_CLOCK2, RCCU_RTC_CLOCK
     75          *******************************************************************************/

   \                                 In segment CODE, align 4, keep-with-next
     76          RCCU_RCLK_Clocks RCCU_RCLKClockSource ( void ) {
     77            if ((RCCU->CCR & 0x04)==0x04)
   \                     RCCU_RCLKClockSource:
   \   00000000   ........           LDR         R0,??DataTable33   ;; RCCU
   \   00000004   000090E5           LDR         R0,[R0, #+0]
   \   00000008   000090E5           LDR         R0,[R0, #+0]
   \   0000000C   040010E3           TST         R0,#+0x4
   \   00000010   0100000A           BEQ         ??RCCU_RCLKClockSource_0
     78              return RCCU_RTC_CLOCK;
   \   00000014   0300A0E3           MOV         R0,#+0x3
   \   00000018   0E0000EA           B           ??RCCU_RCLKClockSource_1
     79            else if ((RCCU->CFR & RCCU_CK2_16_Mask)==0)
   \                     ??RCCU_RCLKClockSource_0:
   \   0000001C   ........           LDR         R0,??DataTable33   ;; RCCU
   \   00000020   000090E5           LDR         R0,[R0, #+0]
   \   00000024   080090E5           LDR         R0,[R0, #+0x8]
   \   00000028   080010E3           TST         R0,#+0x8
   \   0000002C   0100001A           BNE         ??RCCU_RCLKClockSource_2
     80              return RCCU_CLOCK2_16;
   \   00000030   0100A0E3           MOV         R0,#+0x1
   \   00000034   070000EA           B           ??RCCU_RCLKClockSource_1
     81            else if (RCCU->CFR & RCCU_CSU_CKSEL_Mask)
   \                     ??RCCU_RCLKClockSource_2:
   \   00000038   ........           LDR         R0,??DataTable33   ;; RCCU
   \   0000003C   000090E5           LDR         R0,[R0, #+0]
   \   00000040   080090E5           LDR         R0,[R0, #+0x8]
   \   00000044   010010E3           TST         R0,#+0x1
   \   00000048   0100000A           BEQ         ??RCCU_RCLKClockSource_3
     82              return RCCU_PLL1_Output;
   \   0000004C   0000A0E3           MOV         R0,#+0
   \   00000050   000000EA           B           ??RCCU_RCLKClockSource_1
     83            else
     84              return RCCU_CLOCK2;
   \                     ??RCCU_RCLKClockSource_3:
   \   00000054   0200A0E3           MOV         R0,#+0x2
   \                     ??RCCU_RCLKClockSource_1:
   \   00000058   1EFF2FE1           BX          LR                 ;; return
     85          }
     86          
     87          /*******************************************************************************
     88          * 说明: RCCU_USBClockSource函数,获得 RCLK 源时钟
     89          * 参数:无
     90          * 返回值:RCCU_USB_Clocks ( RCCU_PLL2_Output, RCCU_USBCK )
     91          *******************************************************************************/

   \                                 In segment CODE, align 4, keep-with-next
     92          RCCU_USB_Clocks RCCU_USBClockSource ( void ) {
     93            if ((PCU->PLL2CR & RCCU_USBEN_Mask ) >> RCCU_USBEN_Index == 1 )
   \                     RCCU_USBClockSource:
   \   00000000   ........           LDR         R0,??DataTable36   ;; PCU
   \   00000004   000090E5           LDR         R0,[R0, #+0]
   \   00000008   BC00D0E1           LDRH        R0,[R0, #+0xC]
   \   0000000C   400F10E2           ANDS        R0,R0,#+0x100
   \   00000010   4004B0E1           MOVS        R0,R0, ASR #+0x8
   \   00000014   010050E3           CMP         R0,#+0x1
   \   00000018   0100001A           BNE         ??RCCU_USBClockSource_0
     94               return RCCU_PLL2_Output;
   \   0000001C   0100A0E3           MOV         R0,#+0x1
   \   00000020   000000EA           B           ??RCCU_USBClockSource_1
     95            else return RCCU_USBCK;
   \                     ??RCCU_USBClockSource_0:
   \   00000024   0000A0E3           MOV         R0,#+0
   \                     ??RCCU_USBClockSource_1:
   \   00000028   1EFF2FE1           BX          LR                 ;; return
     96          }
     97          
     98          /*******************************************************************************
     99          * 说明:RCCU_FrequencyValue函数,校准并返回由参数传递的任意内部 RCCU 时钟频率
    100          * 参数:RCCU_Clocks ( RCCU_CLK2, RCCU_RCLK, RCCU_MCLK, RCCU_PCLK, RCCU_FCLK )
    101          * 返回值:u32
    102          *******************************************************************************/

   \                                 In segment CODE, align 4, keep-with-next
    103          u32 RCCU_FrequencyValue ( RCCU_Clocks Internal_Clk ) {
   \                     RCCU_FrequencyValue:
   \   00000000   F0412DE9           STMDB       SP!,{R4-R8,LR}     ;; Push
   \   00000004   0040A0E1           MOV         R4,R0
    104            u32 Tmp;
    105            u8 Div = 0;
   \   00000008   0000A0E3           MOV         R0,#+0
   \   0000000C   0050A0E1           MOV         R5,R0
    106            u8 Mul = 0;
   \   00000010   0000A0E3           MOV         R0,#+0
   \   00000014   0060A0E1           MOV         R6,R0
    107            RCCU_RCLK_Clocks CurrentRCLK;
    108            Tmp = ( RCCU_Div2Status() == SET )? RCCU_Main_Osc / 2 :  RCCU_Main_Osc;
   \   00000018   ........           _BLF        RCCU_Div2Status,RCCU_Div2Status??rA
   \   0000001C   010050E3           CMP         R0,#+0x1
   \   00000020   0200001A           BNE         ??RCCU_FrequencyValue_0
   \   00000024   7A89A0E3           MOV         R8,#+0x1E8000
   \   00000028   488E88E3           ORR         R8,R8,#+0x480
   \   0000002C   010000EA           B           ??RCCU_FrequencyValue_1
   \                     ??RCCU_FrequencyValue_0:
   \   00000030   F489A0E3           MOV         R8,#+0x3D0000
   \   00000034   908E88E3           ORR         R8,R8,#+0x900
    109            if ( Internal_Clk == RCCU_CLK2 ) {
   \                     ??RCCU_FrequencyValue_1:
   \   00000038   000054E3           CMP         R4,#+0
   \   0000003C   0400001A           BNE         ??RCCU_FrequencyValue_2
    110             Div = 1;
   \   00000040   0100A0E3           MOV         R0,#+0x1
   \   00000044   0050A0E1           MOV         R5,R0
    111             Mul = 1;
   \   00000048   0100A0E3           MOV         R0,#+0x1
   \   0000004C   0060A0E1           MOV         R6,R0
   \   00000050   3E0000EA           B           ??RCCU_FrequencyValue_3
    112            }
    113            else {
    114              CurrentRCLK = RCCU_RCLKClockSource ();
   \                     ??RCCU_FrequencyValue_2:
   \   00000054   ........           BL          RCCU_RCLKClockSource

⌨️ 快捷键说明

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