; generated by ARM C/C++ Compiler, 5.03 [Build 76]
; commandline ArmCC [--list --debug -c --asm --interleave -o.\obj\misc.o --asm_dir=.\ --list_dir=.\ --depend=.\obj\misc.d --cpu=Cortex-M3 --apcs=interwork -O0 -I.\FWlib\inc -I.\user -ID:\Circuits\Keil\ARM\RV31\INC -ID:\Circuits\Keil\ARM\PACK\ARM\CMSIS\3.20.3\CMSIS\Include -ID:\Circuits\Keil\ARM\PACK\Keil\STM32F1xx_DFP\1.0.2\Device\Include -ID:\Circuits\Keil\ARM\Inc\?ST\STM32F10x -D__MICROLIB -DSTM32F10X_HD -DUSE_STDPERIPH_DRIVER -DSTM32F10X_HD --omf_browse=.\obj\misc.crf FWlib\SRC\misc.c]
                          THUMB

                          AREA ||.text||, CODE, READONLY, ALIGN=2

                  NVIC_PriorityGroupConfig PROC
;;;94       */
;;;95     void NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup)
000000  4931              LDR      r1,|L1.200|
;;;96     {
;;;97       /* Check the parameters */
;;;98       assert_param(IS_NVIC_PRIORITY_GROUP(NVIC_PriorityGroup));
;;;99       
;;;100      /* Set the PRIGROUP[10:8] bits according to NVIC_PriorityGroup value */
;;;101      SCB->AIRCR = AIRCR_VECTKEY_MASK | NVIC_PriorityGroup;
000002  4301              ORRS     r1,r1,r0
000004  4a31              LDR      r2,|L1.204|
000006  6011              STR      r1,[r2,#0]
;;;102    }
000008  4770              BX       lr
;;;103    
                          ENDP

                  NVIC_Init PROC
;;;111      */
;;;112    void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct)
00000a  b570              PUSH     {r4-r6,lr}
;;;113    {
;;;114      uint32_t tmppriority = 0x00, tmppre = 0x00, tmpsub = 0x0F;
00000c  2100              MOVS     r1,#0
00000e  2300              MOVS     r3,#0
000010  220f              MOVS     r2,#0xf
;;;115      
;;;116      /* Check the parameters */
;;;117      assert_param(IS_FUNCTIONAL_STATE(NVIC_InitStruct->NVIC_IRQChannelCmd));
;;;118      assert_param(IS_NVIC_PREEMPTION_PRIORITY(NVIC_InitStruct->NVIC_IRQChannelPreemptionPriority));  
;;;119      assert_param(IS_NVIC_SUB_PRIORITY(NVIC_InitStruct->NVIC_IRQChannelSubPriority));
;;;120        
;;;121      if (NVIC_InitStruct->NVIC_IRQChannelCmd != DISABLE)
000012  78c4              LDRB     r4,[r0,#3]
000014  b30c              CBZ      r4,|L1.90|
;;;122      {
;;;123        /* Compute the Corresponding IRQ Priority --------------------------------*/    
;;;124        tmppriority = (0x700 - ((SCB->AIRCR) & (uint32_t)0x700))>> 0x08;
000016  4c2d              LDR      r4,|L1.204|
000018  6824              LDR      r4,[r4,#0]
00001a  f40464e0          AND      r4,r4,#0x700
00001e  f5c464e0          RSB      r4,r4,#0x700
000022  0a21              LSRS     r1,r4,#8
;;;125        tmppre = (0x4 - tmppriority);
000024  f1c10304          RSB      r3,r1,#4
;;;126        tmpsub = tmpsub >> tmppriority;
000028  40ca              LSRS     r2,r2,r1
;;;127    
;;;128        tmppriority = (uint32_t)NVIC_InitStruct->NVIC_IRQChannelPreemptionPriority << tmppre;
00002a  7844              LDRB     r4,[r0,#1]
00002c  fa04f103          LSL      r1,r4,r3
;;;129        tmppriority |=  NVIC_InitStruct->NVIC_IRQChannelSubPriority & tmpsub;
000030  7884              LDRB     r4,[r0,#2]
000032  4014              ANDS     r4,r4,r2
000034  4321              ORRS     r1,r1,r4
;;;130        tmppriority = tmppriority << 0x04;
000036  0109              LSLS     r1,r1,#4
;;;131            
;;;132        NVIC->IP[NVIC_InitStruct->NVIC_IRQChannel] = tmppriority;
000038  4c25              LDR      r4,|L1.208|
00003a  7806              LDRB     r6,[r0,#0]
00003c  55a1              STRB     r1,[r4,r6]
;;;133        
;;;134        /* Enable the Selected IRQ Channels --------------------------------------*/
;;;135        NVIC->ISER[NVIC_InitStruct->NVIC_IRQChannel >> 0x05] =
00003e  7804              LDRB     r4,[r0,#0]
000040  f004051f          AND      r5,r4,#0x1f
000044  2401              MOVS     r4,#1
000046  40ac              LSLS     r4,r4,r5
000048  7805              LDRB     r5,[r0,#0]
00004a  116d              ASRS     r5,r5,#5
00004c  f04f26e0          MOV      r6,#0xe000e000
000050  eb060585          ADD      r5,r6,r5,LSL #2
000054  f8c54100          STR      r4,[r5,#0x100]
000058  e009              B        |L1.110|
                  |L1.90|
;;;136          (uint32_t)0x01 << (NVIC_InitStruct->NVIC_IRQChannel & (uint8_t)0x1F);
;;;137      }
;;;138      else
;;;139      {
;;;140        /* Disable the Selected IRQ Channels -------------------------------------*/
;;;141        NVIC->ICER[NVIC_InitStruct->NVIC_IRQChannel >> 0x05] =
00005a  7804              LDRB     r4,[r0,#0]
00005c  f004051f          AND      r5,r4,#0x1f
000060  2401              MOVS     r4,#1
000062  40ac              LSLS     r4,r4,r5
000064  4d1b              LDR      r5,|L1.212|
000066  7806              LDRB     r6,[r0,#0]
000068  1176              ASRS     r6,r6,#5
00006a  f8454026          STR      r4,[r5,r6,LSL #2]
                  |L1.110|
;;;142          (uint32_t)0x01 << (NVIC_InitStruct->NVIC_IRQChannel & (uint8_t)0x1F);
;;;143      }
;;;144    }
00006e  bd70              POP      {r4-r6,pc}
;;;145    
                          ENDP

                  NVIC_SetVectorTable PROC
;;;156      */
;;;157    void NVIC_SetVectorTable(uint32_t NVIC_VectTab, uint32_t Offset)
000070  4a19              LDR      r2,|L1.216|
;;;158    { 
;;;159      /* Check the parameters */
;;;160      assert_param(IS_NVIC_VECTTAB(NVIC_VectTab));
;;;161      assert_param(IS_NVIC_OFFSET(Offset));  
;;;162       
;;;163      SCB->VTOR = NVIC_VectTab | (Offset & (uint32_t)0x1FFFFF80);
000072  400a              ANDS     r2,r2,r1
000074  4302              ORRS     r2,r2,r0
000076  4b15              LDR      r3,|L1.204|
000078  1f1b              SUBS     r3,r3,#4
00007a  601a              STR      r2,[r3,#0]
;;;164    }
00007c  4770              BX       lr
;;;165    
                          ENDP

                  NVIC_SystemLPConfig PROC
;;;177      */
;;;178    void NVIC_SystemLPConfig(uint8_t LowPowerMode, FunctionalState NewState)
00007e  b139              CBZ      r1,|L1.144|
;;;179    {
;;;180      /* Check the parameters */
;;;181      assert_param(IS_NVIC_LP(LowPowerMode));
;;;182      assert_param(IS_FUNCTIONAL_STATE(NewState));  
;;;183      
;;;184      if (NewState != DISABLE)
;;;185      {
;;;186        SCB->SCR |= LowPowerMode;
000080  4a12              LDR      r2,|L1.204|
000082  1d12              ADDS     r2,r2,#4
000084  6812              LDR      r2,[r2,#0]
000086  4302              ORRS     r2,r2,r0
000088  4b10              LDR      r3,|L1.204|
00008a  1d1b              ADDS     r3,r3,#4
00008c  601a              STR      r2,[r3,#0]
00008e  e006              B        |L1.158|
                  |L1.144|
;;;187      }
;;;188      else
;;;189      {
;;;190        SCB->SCR &= (uint32_t)(~(uint32_t)LowPowerMode);
000090  4a0e              LDR      r2,|L1.204|
000092  1d12              ADDS     r2,r2,#4
000094  6812              LDR      r2,[r2,#0]
000096  4382              BICS     r2,r2,r0
000098  4b0c              LDR      r3,|L1.204|
00009a  1d1b              ADDS     r3,r3,#4
00009c  601a              STR      r2,[r3,#0]
                  |L1.158|
;;;191      }
;;;192    }
00009e  4770              BX       lr
;;;193    
                          ENDP

                  SysTick_CLKSourceConfig PROC
;;;203      */
;;;204    void SysTick_CLKSourceConfig(uint32_t SysTick_CLKSource)
0000a0  2804              CMP      r0,#4
;;;205    {
;;;206      /* Check the parameters */
;;;207      assert_param(IS_SYSTICK_CLK_SOURCE(SysTick_CLKSource));
;;;208      if (SysTick_CLKSource == SysTick_CLKSource_HCLK)
0000a2  d108              BNE      |L1.182|
;;;209      {
;;;210        SysTick->CTRL |= SysTick_CLKSource_HCLK;
0000a4  f04f21e0          MOV      r1,#0xe000e000
0000a8  6909              LDR      r1,[r1,#0x10]
0000aa  f0410104          ORR      r1,r1,#4
0000ae  f04f22e0          MOV      r2,#0xe000e000
0000b2  6111              STR      r1,[r2,#0x10]
0000b4  e007              B        |L1.198|
                  |L1.182|
;;;211      }
;;;212      else
;;;213      {
;;;214        SysTick->CTRL &= SysTick_CLKSource_HCLK_Div8;
0000b6  f04f21e0          MOV      r1,#0xe000e000
0000ba  6909              LDR      r1,[r1,#0x10]
0000bc  f0210104          BIC      r1,r1,#4
0000c0  f04f22e0          MOV      r2,#0xe000e000
0000c4  6111              STR      r1,[r2,#0x10]
                  |L1.198|
;;;215      }
;;;216    }
0000c6  4770              BX       lr
;;;217    
                          ENDP

                  |L1.200|
                          DCD      0x05fa0000
                  |L1.204|
                          DCD      0xe000ed0c
                  |L1.208|
                          DCD      0xe000e400
                  |L1.212|
                          DCD      0xe000e180
                  |L1.216|
                          DCD      0x1fffff80
