; generated by Component: ARM Compiler 5.04 update 1 (build 49) Tool: ArmCC [5040049]
; commandline ArmCC [--list --debug -c --asm --interleave -o.\output\usart1.o --asm_dir=.\List\ --list_dir=.\List\ --depend=.\output\usart1.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\usart1.crf src\usart1.c]
                          THUMB

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

                  Usart_init PROC
;;;7      
;;;8      void Usart_init (void) 
000000  b510              PUSH     {r4,lr}
;;;9          {
;;;10            RCC->APB2ENR |= RCC_APB2ENR_USART1EN;  //USART clock
000002  483a              LDR      r0,|L1.236|
000004  6800              LDR      r0,[r0,#0]
000006  f0400010          ORR      r0,r0,#0x10
00000a  4938              LDR      r1,|L1.236|
00000c  6008              STR      r0,[r1,#0]
;;;11     		   RCC->AHB1ENR |=RCC_AHB1ENR_GPIOBEN;    //GPIOB clock
00000e  4837              LDR      r0,|L1.236|
000010  3814              SUBS     r0,r0,#0x14
000012  6800              LDR      r0,[r0,#0]
000014  f0400002          ORR      r0,r0,#2
000018  4934              LDR      r1,|L1.236|
00001a  3914              SUBS     r1,r1,#0x14
00001c  6008              STR      r0,[r1,#0]
;;;12           
;;;13          
;;;14     	  	                               ; 
;;;15     		GPIOB->AFR[0] |= (7<<28)|(7<<24); // AF7 for  PB6 & PB7 
00001e  4834              LDR      r0,|L1.240|
000020  6800              LDR      r0,[r0,#0]
000022  f04040ee          ORR      r0,r0,#0x77000000
000026  4932              LDR      r1,|L1.240|
000028  6008              STR      r0,[r1,#0]
;;;16     		
;;;17     		GPIOB->MODER &=~
00002a  4831              LDR      r0,|L1.240|
00002c  3820              SUBS     r0,r0,#0x20
00002e  6800              LDR      r0,[r0,#0]
000030  f4205040          BIC      r0,r0,#0x3000
000034  492e              LDR      r1,|L1.240|
000036  3920              SUBS     r1,r1,#0x20
000038  6008              STR      r0,[r1,#0]
;;;18     		            
;;;19                     GPIO_MODER_MODER6 |
;;;20                     GPIO_MODER_MODER7 
;;;21     		                             ;
;;;22     		GPIOB->MODER|= 
00003a  4608              MOV      r0,r1
00003c  6800              LDR      r0,[r0,#0]
00003e  f4404020          ORR      r0,r0,#0xa000
000042  6008              STR      r0,[r1,#0]
;;;23     		        
;;;24     		        GPIO_MODER_MODER6_1|
;;;25     		        GPIO_MODER_MODER7_1
;;;26     		                           ;
;;;27                 		
;;;28     		
;;;29     		GPIOB->OSPEEDR|=
000044  482a              LDR      r0,|L1.240|
000046  3818              SUBS     r0,r0,#0x18
000048  6800              LDR      r0,[r0,#0]
00004a  f4404070          ORR      r0,r0,#0xf000
00004e  4928              LDR      r1,|L1.240|
000050  3918              SUBS     r1,r1,#0x18
000052  6008              STR      r0,[r1,#0]
;;;30     		         
;;;31     		         GPIO_OSPEEDER_OSPEEDR6|
;;;32     		         GPIO_OSPEEDER_OSPEEDR7
;;;33     	                                 ;
;;;34     																	 
;;;35     			 // set baudrate(APBclk+baudrate/2)/baudrate;
;;;36             USART1->BRR =(APB2CLK+BAUDRATE/2)/BAUDRATE;
000054  f24020d9          MOV      r0,#0x2d9
000058  4926              LDR      r1,|L1.244|
00005a  8108              STRH     r0,[r1,#8]
;;;37            
;;;38             // Transmitter & Receiver-Enable, 8 Data Bits, 1 Stop Bit
;;;39             USART1->CR1 = USART_CR1_TE | USART_CR1_RE| USART_CR1_RXNEIE;
00005c  202c              MOVS     r0,#0x2c
00005e  8188              STRH     r0,[r1,#0xc]
;;;40             USART1->CR2 = 0;
000060  2000              MOVS     r0,#0
000062  8208              STRH     r0,[r1,#0x10]
;;;41             USART1->CR3 = 0;
000064  8288              STRH     r0,[r1,#0x14]
;;;42            
;;;43             USART1->CR1 |= USART_CR1_UE;            // Uart Enable														 
000066  4608              MOV      r0,r1
000068  8980              LDRH     r0,[r0,#0xc]
00006a  f4405000          ORR      r0,r0,#0x2000
00006e  8188              STRH     r0,[r1,#0xc]
;;;44      													 
;;;45     																	 
;;;46     
;;;47         
;;;48     			
;;;49           NVIC_SetPriority(USART1_IRQn, 0); 
000070  2025              MOVS     r0,#0x25
000072  2100              MOVS     r1,#0
000074  2800              CMP      r0,#0
000076  da07              BGE      |L1.136|
000078  070a              LSLS     r2,r1,#28
00007a  0e14              LSRS     r4,r2,#24
00007c  4a1e              LDR      r2,|L1.248|
00007e  f000030f          AND      r3,r0,#0xf
000082  1f1b              SUBS     r3,r3,#4
000084  54d4              STRB     r4,[r2,r3]
000086  e003              B        |L1.144|
                  |L1.136|
000088  070a              LSLS     r2,r1,#28
00008a  0e13              LSRS     r3,r2,#24
00008c  4a1b              LDR      r2,|L1.252|
00008e  5413              STRB     r3,[r2,r0]
                  |L1.144|
000090  bf00              NOP      
;;;50           NVIC_EnableIRQ(USART1_IRQn); 
000092  2025              MOVS     r0,#0x25
000094  f000021f          AND      r2,r0,#0x1f
000098  2101              MOVS     r1,#1
00009a  4091              LSLS     r1,r1,r2
00009c  0942              LSRS     r2,r0,#5
00009e  0092              LSLS     r2,r2,#2
0000a0  f10222e0          ADD      r2,r2,#0xe000e000
0000a4  f8c21100          STR      r1,[r2,#0x100]
0000a8  bf00              NOP      
;;;51               
;;;52         }
0000aa  bd10              POP      {r4,pc}
;;;53         
                          ENDP

                  Usart_Transmit PROC
;;;54      void Usart_Transmit(uint8_t Data)
0000ac  bf00              NOP      
                  |L1.174|
;;;55     {
;;;56       while(!(USART1->SR & USART_SR_TXE));
0000ae  4911              LDR      r1,|L1.244|
0000b0  8809              LDRH     r1,[r1,#0]
0000b2  f0010180          AND      r1,r1,#0x80
0000b6  2900              CMP      r1,#0
0000b8  d0f9              BEQ      |L1.174|
;;;57       USART1->DR = Data;
0000ba  490e              LDR      r1,|L1.244|
0000bc  8088              STRH     r0,[r1,#4]
;;;58     }
0000be  4770              BX       lr
;;;59     
                          ENDP

                  USART1_IRQHandler PROC
;;;60     void USART1_IRQHandler(void)
0000c0  480c              LDR      r0,|L1.244|
;;;61     {
;;;62     	
;;;63     	if(USART1->SR & USART_SR_RXNE)
0000c2  8800              LDRH     r0,[r0,#0]
0000c4  f0000020          AND      r0,r0,#0x20
0000c8  b118              CBZ      r0,|L1.210|
;;;64     	{
;;;65     
;;;66         rx_buff= (uint8_t)(USART1->DR); // Receive data, clear flag 
0000ca  480a              LDR      r0,|L1.244|
0000cc  8880              LDRH     r0,[r0,#4]
0000ce  490c              LDR      r1,|L1.256|
0000d0  7008              STRB     r0,[r1,#0]
                  |L1.210|
;;;67      
;;;68        
;;;69     		 
;;;70     	}
;;;71     }
0000d2  4770              BX       lr
;;;72     
                          ENDP

                  USART1_str PROC
;;;73     
;;;74     void USART1_str (const char * data)
0000d4  b500              PUSH     {lr}
;;;75     {
0000d6  4602              MOV      r2,r0
;;;76     	char c;
;;;77     	while((c=*data ++)){ Usart_Transmit (c);}
0000d8  e002              B        |L1.224|
                  |L1.218|
0000da  4618              MOV      r0,r3
0000dc  f7fffffe          BL       Usart_Transmit
                  |L1.224|
0000e0  f8123b01          LDRB     r3,[r2],#1
0000e4  2b00              CMP      r3,#0
0000e6  d1f8              BNE      |L1.218|
;;;78     	
;;;79     }
0000e8  bd00              POP      {pc}
;;;80     
                          ENDP

0000ea  0000              DCW      0x0000
                  |L1.236|
                          DCD      0x40023844
                  |L1.240|
                          DCD      0x40020420
                  |L1.244|
                          DCD      0x40011000
                  |L1.248|
                          DCD      0xe000ed18
                  |L1.252|
                          DCD      0xe000e400
                  |L1.256|
                          DCD      rx_buff

;*** Start embedded assembler ***

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

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

 revsh r0, r0
 bx lr
	ENDP

;*** End   embedded assembler ***
