; generated by Component: ARM Compiler 5.04 update 1 (build 49) Tool: ArmCC [5040049]
; commandline ArmCC [--list --debug -c --asm --interleave -o.\output\main.o --asm_dir=.\List\ --list_dir=.\List\ --depend=.\output\main.d --cpu=Cortex-M4.fp --apcs=interwork -O0 -I.\inc -I.\STM -I"C:\Program Files (x86)\Micro\Keil\ARM\RV31\INC" -I"C:\Program Files (x86)\Micro\Keil\ARM\PACK\ARM\CMSIS\3.20.4\CMSIS\Include" -I"C:\Program Files (x86)\Micro\Keil\ARM\PACK\Keil\STM32F4xx_DFP\1.0.6\Device\Include" -DSTM32F40_41xxx -DSTM32F40XX --omf_browse=.\output\main.crf App\main.c]
                          THUMB

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

                  SysTick_Handler PROC
;;;20     /* Delay & timers */
;;;21     		void SysTick_Handler(void) {
000000  484b              LDR      r0,|L1.304|
;;;22     			if (TimingDelay) {
000002  6800              LDR      r0,[r0,#0]  ; TimingDelay
000004  b120              CBZ      r0,|L1.16|
;;;23     				TimingDelay--;
000006  484a              LDR      r0,|L1.304|
000008  6800              LDR      r0,[r0,#0]  ; TimingDelay
00000a  1e40              SUBS     r0,r0,#1
00000c  4948              LDR      r1,|L1.304|
00000e  6008              STR      r0,[r1,#0]  ; TimingDelay
                  |L1.16|
;;;24     			}
;;;25     			if (TimerCntDN) {
000010  4848              LDR      r0,|L1.308|
000012  6800              LDR      r0,[r0,#0]  ; TimerCntDN
000014  b120              CBZ      r0,|L1.32|
;;;26     				TimerCntDN--;
000016  4847              LDR      r0,|L1.308|
000018  6800              LDR      r0,[r0,#0]  ; TimerCntDN
00001a  1e40              SUBS     r0,r0,#1
00001c  4945              LDR      r1,|L1.308|
00001e  6008              STR      r0,[r1,#0]  ; TimerCntDN
                  |L1.32|
;;;27     			}
;;;28     			if (TimeOut) {
000020  4845              LDR      r0,|L1.312|
000022  6800              LDR      r0,[r0,#0]  ; TimeOut
000024  b120              CBZ      r0,|L1.48|
;;;29     				TimeOut--;
000026  4844              LDR      r0,|L1.312|
000028  6800              LDR      r0,[r0,#0]  ; TimeOut
00002a  1e40              SUBS     r0,r0,#1
00002c  4942              LDR      r1,|L1.312|
00002e  6008              STR      r0,[r1,#0]  ; TimeOut
                  |L1.48|
;;;30     			}
;;;31     			
;;;32     		}
000030  4770              BX       lr
;;;33     
                          ENDP

                  Delay_mS PROC
;;;34     		
;;;35     		void Delay_mS(uint32_t nTime) {
000032  493f              LDR      r1,|L1.304|
;;;36     			TimingDelay = nTime;
000034  6008              STR      r0,[r1,#0]  ; TimingDelay
;;;37     
;;;38     			while (TimingDelay);
000036  bf00              NOP      
                  |L1.56|
000038  493d              LDR      r1,|L1.304|
00003a  6809              LDR      r1,[r1,#0]  ; TimingDelay
00003c  2900              CMP      r1,#0
00003e  d1fb              BNE      |L1.56|
;;;39     		}
000040  4770              BX       lr
;;;40     
                          ENDP

                  Led_init PROC
;;;41        void Led_init(void)
000042  483e              LDR      r0,|L1.316|
;;;42     	 {
;;;43     		 
;;;44     		       RCC ->AHB1ENR |= RCC_AHB1ENR_GPIODEN ;
000044  6800              LDR      r0,[r0,#0]
000046  f0400008          ORR      r0,r0,#8
00004a  493c              LDR      r1,|L1.316|
00004c  6008              STR      r0,[r1,#0]
;;;45     
;;;46     
;;;47               GPIOD ->MODER|= 
00004e  483c              LDR      r0,|L1.320|
000050  6800              LDR      r0,[r0,#0]
000052  f04060a0          ORR      r0,r0,#0x5000000
000056  493a              LDR      r1,|L1.320|
000058  6008              STR      r0,[r1,#0]
;;;48               GPIO_MODER_MODER12_0 |
;;;49               GPIO_MODER_MODER13_0          
;;;50               ;    //
;;;51          
;;;52               GPIOD->OSPEEDR |=
00005a  4839              LDR      r0,|L1.320|
00005c  3008              ADDS     r0,r0,#8
00005e  6800              LDR      r0,[r0,#0]
000060  f0406020          ORR      r0,r0,#0xa000000
000064  4936              LDR      r1,|L1.320|
000066  3108              ADDS     r1,r1,#8
000068  6008              STR      r0,[r1,#0]
;;;53               GPIO_OSPEEDER_OSPEEDR12_1 |
;;;54               GPIO_OSPEEDER_OSPEEDR13_1 
;;;55               ;    
;;;56         		 
;;;57     	 }
00006a  4770              BX       lr
;;;58     
                          ENDP

                  main PROC
;;;60     
;;;61     int main (void)
00006c  4835              LDR      r0,|L1.324|
;;;62     {
;;;63     	SysTick_Config(SystemCoreClock /1000);
00006e  6800              LDR      r0,[r0,#0]  ; SystemCoreClock
000070  f44f727a          MOV      r2,#0x3e8
000074  fbb0f1f2          UDIV     r1,r0,r2
000078  1e48              SUBS     r0,r1,#1
00007a  f1b07f80          CMP      r0,#0x1000000
00007e  d300              BCC      |L1.130|
000080  e01b              B        |L1.186|
                  |L1.130|
000082  1e48              SUBS     r0,r1,#1
000084  f04f22e0          MOV      r2,#0xe000e000
000088  6150              STR      r0,[r2,#0x14]
00008a  1750              ASRS     r0,r2,#29
00008c  220f              MOVS     r2,#0xf
00008e  2800              CMP      r0,#0
000090  da07              BGE      |L1.162|
000092  0713              LSLS     r3,r2,#28
000094  0e1d              LSRS     r5,r3,#24
000096  4b2c              LDR      r3,|L1.328|
000098  f000040f          AND      r4,r0,#0xf
00009c  1f24              SUBS     r4,r4,#4
00009e  551d              STRB     r5,[r3,r4]
0000a0  e003              B        |L1.170|
                  |L1.162|
0000a2  0713              LSLS     r3,r2,#28
0000a4  0e1c              LSRS     r4,r3,#24
0000a6  4b29              LDR      r3,|L1.332|
0000a8  541c              STRB     r4,[r3,r0]
                  |L1.170|
0000aa  bf00              NOP      
0000ac  2000              MOVS     r0,#0
0000ae  f04f22e0          MOV      r2,#0xe000e000
0000b2  6190              STR      r0,[r2,#0x18]
0000b4  2007              MOVS     r0,#7
0000b6  6110              STR      r0,[r2,#0x10]
0000b8  bf00              NOP      
                  |L1.186|
;;;64     	Delay_mS(100);
0000ba  2064              MOVS     r0,#0x64
0000bc  f7fffffe          BL       Delay_mS
;;;65     	Usart_init();
0000c0  f7fffffe          BL       Usart_init
;;;66     	Led_init();
0000c4  f7fffffe          BL       Led_init
;;;67     	USART1_str("Hello world\n\r");
0000c8  a021              ADR      r0,|L1.336|
0000ca  f7fffffe          BL       USART1_str
;;;68       USART1_str("Ready >");		
0000ce  a024              ADR      r0,|L1.352|
0000d0  f7fffffe          BL       USART1_str
;;;69     	USART1_str("\n\r ");
0000d4  a024              ADR      r0,|L1.360|
0000d6  f7fffffe          BL       USART1_str
;;;70     	while(1)
0000da  e028              B        |L1.302|
                  |L1.220|
;;;71     	{
;;;72     	 if(rx_buff)
0000dc  4823              LDR      r0,|L1.364|
0000de  7800              LDRB     r0,[r0,#0]  ; rx_buff
0000e0  b328              CBZ      r0,|L1.302|
;;;73     	 {
;;;74     		switch(rx_buff)		
0000e2  4822              LDR      r0,|L1.364|
0000e4  7800              LDRB     r0,[r0,#0]  ; rx_buff
0000e6  2831              CMP      r0,#0x31
0000e8  d002              BEQ      |L1.240|
0000ea  2832              CMP      r0,#0x32
0000ec  d116              BNE      |L1.284|
0000ee  e00a              B        |L1.262|
                  |L1.240|
;;;75     		{
;;;76     			
;;;77     			case '1':	
;;;78     		
;;;79     				Led_Red_On ;
0000f0  f44f5000          MOV      r0,#0x2000
0000f4  4912              LDR      r1,|L1.320|
0000f6  3118              ADDS     r1,r1,#0x18
0000f8  6008              STR      r0,[r1,#0]
;;;80     				Led_Green_Off ;
0000fa  03c0              LSLS     r0,r0,#15
0000fc  6008              STR      r0,[r1,#0]
;;;81     				USART1_str("RED led on\n\r ");
0000fe  a01c              ADR      r0,|L1.368|
000100  f7fffffe          BL       USART1_str
;;;82     			  break;
000104  e00f              B        |L1.294|
                  |L1.262|
;;;83     			
;;;84     			case '2':
;;;85     			
;;;86     		    Led_Red_Off ;
000106  f04f5000          MOV      r0,#0x20000000
00010a  490d              LDR      r1,|L1.320|
00010c  3118              ADDS     r1,r1,#0x18
00010e  6008              STR      r0,[r1,#0]
;;;87     				Led_Green_On  ;
000110  1440              ASRS     r0,r0,#17
000112  6008              STR      r0,[r1,#0]
;;;88     				USART1_str("GREEN led on\n\r ");
000114  a01a              ADR      r0,|L1.384|
000116  f7fffffe          BL       USART1_str
;;;89     			  break;
00011a  e004              B        |L1.294|
                  |L1.284|
;;;90     			
;;;91     			default: Usart_Transmit(rx_buff);break;
00011c  4813              LDR      r0,|L1.364|
00011e  7800              LDRB     r0,[r0,#0]  ; rx_buff
000120  f7fffffe          BL       Usart_Transmit
000124  bf00              NOP      
                  |L1.294|
000126  bf00              NOP                            ;82
;;;92     		}
;;;93     		 rx_buff=0;
000128  2000              MOVS     r0,#0
00012a  4910              LDR      r1,|L1.364|
00012c  7008              STRB     r0,[r1,#0]
                  |L1.302|
00012e  e7d5              B        |L1.220|
;;;94     			
;;;95     		}
;;;96     	}
;;;97     }
                          ENDP

                  |L1.304|
                          DCD      TimingDelay
                  |L1.308|
                          DCD      TimerCntDN
                  |L1.312|
                          DCD      TimeOut
                  |L1.316|
                          DCD      0x40023830
                  |L1.320|
                          DCD      0x40020c00
                  |L1.324|
                          DCD      SystemCoreClock
                  |L1.328|
                          DCD      0xe000ed18
                  |L1.332|
                          DCD      0xe000e400
                  |L1.336|
000150  48656c6c          DCB      "Hello world\n\r",0
000154  6f20776f
000158  726c640a
00015c  0d00    
00015e  00                DCB      0
00015f  00                DCB      0
                  |L1.352|
000160  52656164          DCB      "Ready >",0
000164  79203e00
                  |L1.360|
000168  0a0d2000          DCB      "\n\r ",0
                  |L1.364|
                          DCD      rx_buff
                  |L1.368|
000170  52454420          DCB      "RED led on\n\r ",0
000174  6c656420
000178  6f6e0a0d
00017c  2000    
00017e  00                DCB      0
00017f  00                DCB      0
                  |L1.384|
000180  47524545          DCB      "GREEN led on\n\r ",0
000184  4e206c65
000188  64206f6e
00018c  0a0d2000

                          AREA ||.data||, DATA, ALIGN=2

                  TimingDelay
                          DCD      0x00000000
                  TimerCntDN
                          DCD      0x00000000
                  TimeOut
                          DCD      0x00000000
                  rx_buff
00000c  00                DCB      0x00

;*** Start embedded assembler ***

#line 1 "App\\main.c"
	AREA ||.rev16_text||, CODE
	THUMB
	EXPORT |__asm___6_main_c_b672aa62____REV16|
#line 129 "C:\\Program Files (x86)\\Micro\\Keil\\ARM\\PACK\\ARM\\CMSIS\\3.20.4\\CMSIS\\Include\\core_cmInstr.h"
|__asm___6_main_c_b672aa62____REV16| PROC
#line 130

 rev16 r0, r0
 bx lr
	ENDP
	AREA ||.revsh_text||, CODE
	THUMB
	EXPORT |__asm___6_main_c_b672aa62____REVSH|
#line 144
|__asm___6_main_c_b672aa62____REVSH| PROC
#line 145

 revsh r0, r0
 bx lr
	ENDP

;*** End   embedded assembler ***

                  __ARM_use_no_argv EQU 0
