; generated by ARM C/C++ Compiler, 4.1 [Build 894]
; commandline ArmCC [--list --split_sections --debug -c --asm --interleave -o.\STM324xG_EVAL\spi_flash.o --asm_dir=.\STM324xG_EVAL\ --list_dir=.\STM324xG_EVAL\ --depend=.\STM324xG_EVAL\spi_flash.d --cpu=Cortex-M4.fp --apcs=interwork -O0 -Otime -I..\ -I..\..\..\Libraries\CMSIS\Device\ST\STM32F4xx\Include -I..\..\..\Libraries\STM32F4xx_StdPeriph_Driver\inc -I..\..\..\Utilities\STM32_EVAL\Common -I..\..\..\Utilities\STM32_EVAL\STM3240_41_G_EVAL -IC:\Keil\ARM\RV31\Inc -IC:\Keil\ARM\CMSIS\Include -IC:\Keil\ARM\Inc\ST\STM32F4xx -D__MICROLIB -DUSE_STM324xG_EVAL -DSTM32F4XX -DUSE_STDPERIPH_DRIVER --omf_browse=.\STM324xG_EVAL\spi_flash.crf ..\spi_flash.c]
                          THUMB

                          AREA ||i.sFLASH_DeInit||, CODE, READONLY, ALIGN=1

                  sFLASH_DeInit PROC
;;;79       */
;;;80     void sFLASH_DeInit(void)
000000  b510              PUSH     {r4,lr}
;;;81     {
;;;82       sFLASH_LowLevel_DeInit();
000002  f7fffffe          BL       sFLASH_LowLevel_DeInit
;;;83     }
000006  bd10              POP      {r4,pc}
;;;84     
                          ENDP


                          AREA ||i.sFLASH_EraseBulk||, CODE, READONLY, ALIGN=2

                  sFLASH_EraseBulk PROC
;;;148      */
;;;149    void sFLASH_EraseBulk(void)
000000  b510              PUSH     {r4,lr}
;;;150    {
;;;151      /*!< Send write enable instruction */
;;;152      sFLASH_WriteEnable();
000002  f7fffffe          BL       sFLASH_WriteEnable
;;;153    
;;;154      /*!< Bulk Erase */
;;;155      /*!< Select the FLASH: Chip Select low */
;;;156      sFLASH_CS_LOW();
000006  2110              MOVS     r1,#0x10
000008  4806              LDR      r0,|L2.36|
00000a  f7fffffe          BL       GPIO_ResetBits
;;;157      /*!< Send Bulk Erase instruction  */
;;;158      sFLASH_SendByte(sFLASH_CMD_BE);
00000e  20c7              MOVS     r0,#0xc7
000010  f7fffffe          BL       sFLASH_SendByte
;;;159      /*!< Deselect the FLASH: Chip Select high */
;;;160      sFLASH_CS_HIGH();
000014  2110              MOVS     r1,#0x10
000016  4803              LDR      r0,|L2.36|
000018  f7fffffe          BL       GPIO_SetBits
;;;161    
;;;162      /*!< Wait the end of Flash writing */
;;;163      sFLASH_WaitForWriteEnd();
00001c  f7fffffe          BL       sFLASH_WaitForWriteEnd
;;;164    }
000020  bd10              POP      {r4,pc}
;;;165    
                          ENDP

000022  0000              DCW      0x0000
                  |L2.36|
                          DCD      0x40020000

                          AREA ||i.sFLASH_EraseSector||, CODE, READONLY, ALIGN=2

                  sFLASH_EraseSector PROC
;;;120      */
;;;121    void sFLASH_EraseSector(uint32_t SectorAddr)
000000  b510              PUSH     {r4,lr}
;;;122    {
000002  4604              MOV      r4,r0
;;;123      /*!< Send write enable instruction */
;;;124      sFLASH_WriteEnable();
000004  f7fffffe          BL       sFLASH_WriteEnable
;;;125    
;;;126      /*!< Sector Erase */
;;;127      /*!< Select the FLASH: Chip Select low */
;;;128      sFLASH_CS_LOW();
000008  2110              MOVS     r1,#0x10
00000a  480c              LDR      r0,|L3.60|
00000c  f7fffffe          BL       GPIO_ResetBits
;;;129      /*!< Send Sector Erase instruction */
;;;130      sFLASH_SendByte(sFLASH_CMD_SE);
000010  20d8              MOVS     r0,#0xd8
000012  f7fffffe          BL       sFLASH_SendByte
;;;131      /*!< Send SectorAddr high nibble address byte */
;;;132      sFLASH_SendByte((SectorAddr & 0xFF0000) >> 16);
000016  f3c44007          UBFX     r0,r4,#16,#8
00001a  f7fffffe          BL       sFLASH_SendByte
;;;133      /*!< Send SectorAddr medium nibble address byte */
;;;134      sFLASH_SendByte((SectorAddr & 0xFF00) >> 8);
00001e  f3c42007          UBFX     r0,r4,#8,#8
000022  f7fffffe          BL       sFLASH_SendByte
;;;135      /*!< Send SectorAddr low nibble address byte */
;;;136      sFLASH_SendByte(SectorAddr & 0xFF);
000026  b2e0              UXTB     r0,r4
000028  f7fffffe          BL       sFLASH_SendByte
;;;137      /*!< Deselect the FLASH: Chip Select high */
;;;138      sFLASH_CS_HIGH();
00002c  2110              MOVS     r1,#0x10
00002e  4803              LDR      r0,|L3.60|
000030  f7fffffe          BL       GPIO_SetBits
;;;139    
;;;140      /*!< Wait the end of Flash writing */
;;;141      sFLASH_WaitForWriteEnd();
000034  f7fffffe          BL       sFLASH_WaitForWriteEnd
;;;142    }
000038  bd10              POP      {r4,pc}
;;;143    
                          ENDP

00003a  0000              DCW      0x0000
                  |L3.60|
                          DCD      0x40020000

                          AREA ||i.sFLASH_Init||, CODE, READONLY, ALIGN=2

                  sFLASH_Init PROC
;;;89       */
;;;90     void sFLASH_Init(void)
000000  b500              PUSH     {lr}
;;;91     {
000002  b085              SUB      sp,sp,#0x14
;;;92       SPI_InitTypeDef  SPI_InitStructure;
;;;93     
;;;94       sFLASH_LowLevel_Init();
000004  f7fffffe          BL       sFLASH_LowLevel_Init
;;;95         
;;;96       /*!< Deselect the FLASH: Chip Select high */
;;;97       sFLASH_CS_HIGH();
000008  2110              MOVS     r1,#0x10
00000a  4814              LDR      r0,|L4.92|
00000c  f7fffffe          BL       GPIO_SetBits
;;;98     
;;;99       /*!< SPI configuration */
;;;100      SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
000010  2000              MOVS     r0,#0
000012  f8ad0000          STRH     r0,[sp,#0]
;;;101      SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
000016  f44f7082          MOV      r0,#0x104
00001a  f8ad0002          STRH     r0,[sp,#2]
;;;102      SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
00001e  2000              MOVS     r0,#0
000020  f8ad0004          STRH     r0,[sp,#4]
;;;103      SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;
000024  f8ad0006          STRH     r0,[sp,#6]
;;;104      SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;
000028  f8ad0008          STRH     r0,[sp,#8]
;;;105      SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
00002c  f44f7000          MOV      r0,#0x200
000030  f8ad000a          STRH     r0,[sp,#0xa]
;;;106      SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_16;
000034  2018              MOVS     r0,#0x18
000036  f8ad000c          STRH     r0,[sp,#0xc]
;;;107    
;;;108      SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
00003a  2000              MOVS     r0,#0
00003c  f8ad000e          STRH     r0,[sp,#0xe]
;;;109      SPI_InitStructure.SPI_CRCPolynomial = 7;
000040  2007              MOVS     r0,#7
000042  f8ad0010          STRH     r0,[sp,#0x10]
;;;110      SPI_Init(sFLASH_SPI, &SPI_InitStructure);
000046  4669              MOV      r1,sp
000048  4805              LDR      r0,|L4.96|
00004a  f7fffffe          BL       SPI_Init
;;;111    
;;;112      /*!< Enable the sFLASH_SPI  */
;;;113      SPI_Cmd(sFLASH_SPI, ENABLE);
00004e  2101              MOVS     r1,#1
000050  4803              LDR      r0,|L4.96|
000052  f7fffffe          BL       SPI_Cmd
;;;114    }
000056  b005              ADD      sp,sp,#0x14
000058  bd00              POP      {pc}
;;;115    
                          ENDP

00005a  0000              DCW      0x0000
                  |L4.92|
                          DCD      0x40020000
                  |L4.96|
                          DCD      0x40013000

                          AREA ||i.sFLASH_LowLevel_DeInit||, CODE, READONLY, ALIGN=2

                  sFLASH_LowLevel_DeInit PROC
;;;547      */
;;;548    void sFLASH_LowLevel_DeInit(void)
000000  b51c              PUSH     {r2-r4,lr}
;;;549    {
;;;550      GPIO_InitTypeDef GPIO_InitStructure;
;;;551    
;;;552      /*!< Disable the sFLASH_SPI  ************************************************/
;;;553      SPI_Cmd(sFLASH_SPI, DISABLE);
000002  2100              MOVS     r1,#0
000004  4814              LDR      r0,|L5.88|
000006  f7fffffe          BL       SPI_Cmd
;;;554      
;;;555      /*!< DeInitializes the sFLASH_SPI *******************************************/
;;;556      SPI_I2S_DeInit(sFLASH_SPI);
00000a  4813              LDR      r0,|L5.88|
00000c  f7fffffe          BL       SPI_I2S_DeInit
;;;557      
;;;558      /*!< sFLASH_SPI Periph clock disable ****************************************/
;;;559      sFLASH_SPI_CLK_INIT(sFLASH_SPI_CLK, DISABLE);
000010  2100              MOVS     r1,#0
000012  f44f5080          MOV      r0,#0x1000
000016  f7fffffe          BL       RCC_APB2PeriphClockCmd
;;;560          
;;;561      /*!< Configure all pins used by the SPI as input floating *******************/
;;;562      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
00001a  2000              MOVS     r0,#0
00001c  f88d0004          STRB     r0,[sp,#4]
;;;563      GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
000020  f88d0007          STRB     r0,[sp,#7]
;;;564    
;;;565      GPIO_InitStructure.GPIO_Pin = sFLASH_SPI_SCK_PIN;
000024  2020              MOVS     r0,#0x20
000026  9000              STR      r0,[sp,#0]
;;;566      GPIO_Init(sFLASH_SPI_SCK_GPIO_PORT, &GPIO_InitStructure);
000028  4669              MOV      r1,sp
00002a  480c              LDR      r0,|L5.92|
00002c  f7fffffe          BL       GPIO_Init
;;;567    
;;;568      GPIO_InitStructure.GPIO_Pin = sFLASH_SPI_MISO_PIN;
000030  2040              MOVS     r0,#0x40
000032  9000              STR      r0,[sp,#0]
;;;569      GPIO_Init(sFLASH_SPI_MISO_GPIO_PORT, &GPIO_InitStructure);
000034  4669              MOV      r1,sp
000036  4809              LDR      r0,|L5.92|
000038  f7fffffe          BL       GPIO_Init
;;;570    
;;;571      GPIO_InitStructure.GPIO_Pin = sFLASH_SPI_MOSI_PIN;
00003c  2080              MOVS     r0,#0x80
00003e  9000              STR      r0,[sp,#0]
;;;572      GPIO_Init(sFLASH_SPI_MOSI_GPIO_PORT, &GPIO_InitStructure);
000040  4669              MOV      r1,sp
000042  4806              LDR      r0,|L5.92|
000044  f7fffffe          BL       GPIO_Init
;;;573    
;;;574      GPIO_InitStructure.GPIO_Pin = sFLASH_CS_PIN;
000048  2010              MOVS     r0,#0x10
00004a  9000              STR      r0,[sp,#0]
;;;575      GPIO_Init(sFLASH_CS_GPIO_PORT, &GPIO_InitStructure);
00004c  4669              MOV      r1,sp
00004e  4803              LDR      r0,|L5.92|
000050  f7fffffe          BL       GPIO_Init
;;;576    }
000054  bd1c              POP      {r2-r4,pc}
;;;577    
                          ENDP

000056  0000              DCW      0x0000
                  |L5.88|
                          DCD      0x40013000
                  |L5.92|
                          DCD      0x40020000

                          AREA ||i.sFLASH_LowLevel_Init||, CODE, READONLY, ALIGN=2

                  sFLASH_LowLevel_Init PROC
;;;483      */
;;;484    void sFLASH_LowLevel_Init(void)
000000  b51c              PUSH     {r2-r4,lr}
;;;485    {
;;;486      GPIO_InitTypeDef GPIO_InitStructure;
;;;487    
;;;488      /*!< Enable the SPI clock */
;;;489      sFLASH_SPI_CLK_INIT(sFLASH_SPI_CLK, ENABLE);
000002  2101              MOVS     r1,#1
000004  0308              LSLS     r0,r1,#12
000006  f7fffffe          BL       RCC_APB2PeriphClockCmd
;;;490    
;;;491      /*!< Enable GPIO clocks */
;;;492      RCC_AHB1PeriphClockCmd(sFLASH_SPI_SCK_GPIO_CLK | sFLASH_SPI_MISO_GPIO_CLK | 
00000a  2101              MOVS     r1,#1
00000c  4608              MOV      r0,r1
00000e  f7fffffe          BL       RCC_AHB1PeriphClockCmd
;;;493                             sFLASH_SPI_MOSI_GPIO_CLK | sFLASH_CS_GPIO_CLK | 
;;;494    						 sFLASH_HOLD_GPIO_CLK | sFLASH_W_GPIO_CLK, ENABLE);
;;;495      
;;;496      /*!< SPI pins configuration *************************************************/
;;;497    
;;;498      /*!< Connect SPI pins to AF5 */  
;;;499      GPIO_PinAFConfig(sFLASH_SPI_SCK_GPIO_PORT, sFLASH_SPI_SCK_SOURCE, sFLASH_SPI_SCK_AF);
000012  2205              MOVS     r2,#5
000014  4611              MOV      r1,r2
000016  4830              LDR      r0,|L6.216|
000018  f7fffffe          BL       GPIO_PinAFConfig
;;;500      GPIO_PinAFConfig(sFLASH_SPI_MISO_GPIO_PORT, sFLASH_SPI_MISO_SOURCE, sFLASH_SPI_MISO_AF);
00001c  2205              MOVS     r2,#5
00001e  2106              MOVS     r1,#6
000020  482d              LDR      r0,|L6.216|
000022  f7fffffe          BL       GPIO_PinAFConfig
;;;501      GPIO_PinAFConfig(sFLASH_SPI_MOSI_GPIO_PORT, sFLASH_SPI_MOSI_SOURCE, sFLASH_SPI_MOSI_AF);
000026  2205              MOVS     r2,#5
000028  2107              MOVS     r1,#7
00002a  482b              LDR      r0,|L6.216|
00002c  f7fffffe          BL       GPIO_PinAFConfig
;;;502    
;;;503      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
000030  2002              MOVS     r0,#2
000032  f88d0004          STRB     r0,[sp,#4]
;;;504      GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
000036  f88d0005          STRB     r0,[sp,#5]
;;;505      GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
00003a  2000              MOVS     r0,#0
00003c  f88d0006          STRB     r0,[sp,#6]
;;;506      GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_DOWN;
000040  2002              MOVS     r0,#2
000042  f88d0007          STRB     r0,[sp,#7]
;;;507            
;;;508      /*!< SPI SCK pin configuration */
;;;509      GPIO_InitStructure.GPIO_Pin = sFLASH_SPI_SCK_PIN;
000046  2020              MOVS     r0,#0x20
000048  9000              STR      r0,[sp,#0]
;;;510      GPIO_Init(sFLASH_SPI_SCK_GPIO_PORT, &GPIO_InitStructure);
00004a  4669              MOV      r1,sp
00004c  4822              LDR      r0,|L6.216|
00004e  f7fffffe          BL       GPIO_Init
;;;511    
;;;512      /*!< SPI MOSI pin configuration */
;;;513      GPIO_InitStructure.GPIO_Pin =  sFLASH_SPI_MOSI_PIN;
000052  2080              MOVS     r0,#0x80
000054  9000              STR      r0,[sp,#0]
;;;514      GPIO_Init(sFLASH_SPI_MOSI_GPIO_PORT, &GPIO_InitStructure);
000056  4669              MOV      r1,sp
000058  481f              LDR      r0,|L6.216|
00005a  f7fffffe          BL       GPIO_Init
;;;515    
;;;516      /*!< SPI MISO pin configuration */
;;;517      GPIO_InitStructure.GPIO_Pin =  sFLASH_SPI_MISO_PIN;
00005e  2040              MOVS     r0,#0x40
000060  9000              STR      r0,[sp,#0]
;;;518      GPIO_Init(sFLASH_SPI_MISO_GPIO_PORT, &GPIO_InitStructure);
000062  4669              MOV      r1,sp
000064  481c              LDR      r0,|L6.216|
000066  f7fffffe          BL       GPIO_Init
;;;519    
;;;520      /*!< Configure sFLASH Card CS pin in output pushpull mode ********************/
;;;521      GPIO_InitStructure.GPIO_Pin = sFLASH_CS_PIN;
00006a  2010              MOVS     r0,#0x10
00006c  9000              STR      r0,[sp,#0]
;;;522      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
00006e  2001              MOVS     r0,#1
000070  f88d0004          STRB     r0,[sp,#4]
;;;523      GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
000074  2000              MOVS     r0,#0
000076  f88d0006          STRB     r0,[sp,#6]
;;;524      GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
00007a  2002              MOVS     r0,#2
00007c  f88d0005          STRB     r0,[sp,#5]
;;;525      GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
000080  2000              MOVS     r0,#0
000082  f88d0007          STRB     r0,[sp,#7]
;;;526      GPIO_Init(sFLASH_CS_GPIO_PORT, &GPIO_InitStructure);
000086  4669              MOV      r1,sp
000088  4813              LDR      r0,|L6.216|
00008a  f7fffffe          BL       GPIO_Init
;;;527    
;;;528      GPIO_InitStructure.GPIO_Pin = sFLASH_W_PIN;
00008e  2008              MOVS     r0,#8
000090  9000              STR      r0,[sp,#0]
;;;529      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
000092  2001              MOVS     r0,#1
000094  f88d0004          STRB     r0,[sp,#4]
;;;530      GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
000098  2000              MOVS     r0,#0
00009a  f88d0006          STRB     r0,[sp,#6]
;;;531      GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
00009e  2002              MOVS     r0,#2
0000a0  f88d0005          STRB     r0,[sp,#5]
;;;532      GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
0000a4  2000              MOVS     r0,#0
0000a6  f88d0007          STRB     r0,[sp,#7]
;;;533      GPIO_Init(sFLASH_CS_GPIO_PORT, &GPIO_InitStructure);
0000aa  4669              MOV      r1,sp
0000ac  480a              LDR      r0,|L6.216|
0000ae  f7fffffe          BL       GPIO_Init
;;;534    
;;;535      GPIO_InitStructure.GPIO_Pin = sFLASH_HOLD_PIN;
0000b2  2004              MOVS     r0,#4
0000b4  9000              STR      r0,[sp,#0]
;;;536      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
0000b6  2001              MOVS     r0,#1
0000b8  f88d0004          STRB     r0,[sp,#4]
;;;537      GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
0000bc  2000              MOVS     r0,#0
0000be  f88d0006          STRB     r0,[sp,#6]
;;;538      GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
0000c2  2002              MOVS     r0,#2
0000c4  f88d0005          STRB     r0,[sp,#5]
;;;539      GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
0000c8  2000              MOVS     r0,#0
0000ca  f88d0007          STRB     r0,[sp,#7]
;;;540      GPIO_Init(sFLASH_CS_GPIO_PORT, &GPIO_InitStructure);
0000ce  4669              MOV      r1,sp
0000d0  4801              LDR      r0,|L6.216|
0000d2  f7fffffe          BL       GPIO_Init
;;;541    }
0000d6  bd1c              POP      {r2-r4,pc}
;;;542    
                          ENDP

                  |L6.216|
                          DCD      0x40020000

                          AREA ||i.sFLASH_ReadBuffer||, CODE, READONLY, ALIGN=2

                  sFLASH_ReadBuffer PROC
;;;295      */
;;;296    void sFLASH_ReadBuffer(uint8_t* pBuffer, uint32_t ReadAddr, uint16_t NumByteToRead)
000000  b570              PUSH     {r4-r6,lr}
;;;297    {
000002  4605              MOV      r5,r0
000004  460c              MOV      r4,r1
000006  4616              MOV      r6,r2
;;;298      /*!< Select the FLASH: Chip Select low */
;;;299      sFLASH_CS_LOW();
000008  2110              MOVS     r1,#0x10
00000a  4810              LDR      r0,|L7.76|
00000c  f7fffffe          BL       GPIO_ResetBits
;;;300    
;;;301      /*!< Send "Read from Memory " instruction */
;;;302      sFLASH_SendByte(sFLASH_CMD_READ);
000010  2003              MOVS     r0,#3
000012  f7fffffe          BL       sFLASH_SendByte
;;;303    
;;;304      /*!< Send ReadAddr high nibble address byte to read from */
;;;305      sFLASH_SendByte((ReadAddr & 0xFF0000) >> 16);
000016  f3c44007          UBFX     r0,r4,#16,#8
00001a  f7fffffe          BL       sFLASH_SendByte
;;;306      /*!< Send ReadAddr medium nibble address byte to read from */
;;;307      sFLASH_SendByte((ReadAddr& 0xFF00) >> 8);
00001e  f3c42007          UBFX     r0,r4,#8,#8
000022  f7fffffe          BL       sFLASH_SendByte
;;;308      /*!< Send ReadAddr low nibble address byte to read from */
;;;309      sFLASH_SendByte(ReadAddr & 0xFF);
000026  b2e0              UXTB     r0,r4
000028  f7fffffe          BL       sFLASH_SendByte
;;;310    
;;;311      while (NumByteToRead--) /*!< while there is data to be read */
00002c  e004              B        |L7.56|
                  |L7.46|
;;;312      {
;;;313        /*!< Read a byte from the FLASH */
;;;314        *pBuffer = sFLASH_SendByte(sFLASH_DUMMY_BYTE);
00002e  20a5              MOVS     r0,#0xa5
000030  f7fffffe          BL       sFLASH_SendByte
000034  7028              STRB     r0,[r5,#0]
;;;315        /*!< Point to the next location where the byte read will be saved */
;;;316        pBuffer++;
000036  1c6d              ADDS     r5,r5,#1
                  |L7.56|
000038  0030              MOVS     r0,r6                 ;311
00003a  f1a60101          SUB      r1,r6,#1              ;311
00003e  b28e              UXTH     r6,r1                 ;311
000040  d1f5              BNE      |L7.46|
;;;317      }
;;;318    
;;;319      /*!< Deselect the FLASH: Chip Select high */
;;;320      sFLASH_CS_HIGH();
000042  2110              MOVS     r1,#0x10
000044  4801              LDR      r0,|L7.76|
000046  f7fffffe          BL       GPIO_SetBits
;;;321    }
00004a  bd70              POP      {r4-r6,pc}
;;;322    
                          ENDP

                  |L7.76|
                          DCD      0x40020000

                          AREA ||i.sFLASH_ReadByte||, CODE, READONLY, ALIGN=1

                  sFLASH_ReadByte PROC
;;;387      */
;;;388    uint8_t sFLASH_ReadByte(void)
000000  b510              PUSH     {r4,lr}
;;;389    {
;;;390      return (sFLASH_SendByte(sFLASH_DUMMY_BYTE));
000002  20a5              MOVS     r0,#0xa5
000004  f7fffffe          BL       sFLASH_SendByte
;;;391    }
000008  bd10              POP      {r4,pc}
;;;392    
                          ENDP


                          AREA ||i.sFLASH_ReadID||, CODE, READONLY, ALIGN=2

                  sFLASH_ReadID PROC
;;;327      */
;;;328    uint32_t sFLASH_ReadID(void)
000000  e92d41f0          PUSH     {r4-r8,lr}
;;;329    {
;;;330      uint32_t Temp = 0, Temp0 = 0, Temp1 = 0, Temp2 = 0;
000004  2700              MOVS     r7,#0
000006  2400              MOVS     r4,#0
000008  2500              MOVS     r5,#0
00000a  2600              MOVS     r6,#0
;;;331    
;;;332      /*!< Select the FLASH: Chip Select low */
;;;333      sFLASH_CS_LOW();
00000c  2110              MOVS     r1,#0x10
00000e  480f              LDR      r0,|L9.76|
000010  f7fffffe          BL       GPIO_ResetBits
;;;334    
;;;335      /*!< Send "RDID " instruction */
;;;336      sFLASH_SendByte(0x9F);
000014  209f              MOVS     r0,#0x9f
000016  f7fffffe          BL       sFLASH_SendByte
;;;337    
;;;338      /*!< Read a byte from the FLASH */
;;;339      Temp0 = sFLASH_SendByte(sFLASH_DUMMY_BYTE);
00001a  20a5              MOVS     r0,#0xa5
00001c  f7fffffe          BL       sFLASH_SendByte
000020  4604              MOV      r4,r0
;;;340    
;;;341      /*!< Read a byte from the FLASH */
;;;342      Temp1 = sFLASH_SendByte(sFLASH_DUMMY_BYTE);
000022  20a5              MOVS     r0,#0xa5
000024  f7fffffe          BL       sFLASH_SendByte
000028  4605              MOV      r5,r0
;;;343    
;;;344      /*!< Read a byte from the FLASH */
;;;345      Temp2 = sFLASH_SendByte(sFLASH_DUMMY_BYTE);
00002a  20a5              MOVS     r0,#0xa5
00002c  f7fffffe          BL       sFLASH_SendByte
000030  4606              MOV      r6,r0
;;;346    
;;;347      /*!< Deselect the FLASH: Chip Select high */
;;;348      sFLASH_CS_HIGH();
000032  2110              MOVS     r1,#0x10
000034  4805              LDR      r0,|L9.76|
000036  f7fffffe          BL       GPIO_SetBits
;;;349    
;;;350      Temp = (Temp0 << 16) | (Temp1 << 8) | Temp2;
00003a  0420              LSLS     r0,r4,#16
00003c  ea402005          ORR      r0,r0,r5,LSL #8
000040  ea400706          ORR      r7,r0,r6
;;;351    
;;;352      return Temp;
000044  4638              MOV      r0,r7
;;;353    }
000046  e8bd81f0          POP      {r4-r8,pc}
;;;354    
                          ENDP

00004a  0000              DCW      0x0000
                  |L9.76|
                          DCD      0x40020000

                          AREA ||i.sFLASH_SendByte||, CODE, READONLY, ALIGN=2

                  sFLASH_SendByte PROC
;;;398      */
;;;399    uint8_t sFLASH_SendByte(uint8_t byte)
000000  b510              PUSH     {r4,lr}
;;;400    {
000002  4604              MOV      r4,r0
;;;401      /*!< Loop while DR register in not emplty */
;;;402       while (SPI_I2S_GetFlagStatus(sFLASH_SPI, SPI_I2S_FLAG_TXE) == RESET);
000004  bf00              NOP      
                  |L10.6|
000006  2102              MOVS     r1,#2
000008  480a              LDR      r0,|L10.52|
00000a  f7fffffe          BL       SPI_I2S_GetFlagStatus
00000e  2800              CMP      r0,#0
000010  d0f9              BEQ      |L10.6|
;;;403    
;;;404      /*!< Send byte through the SPI1 peripheral */
;;;405      SPI_I2S_SendData(sFLASH_SPI, byte);
000012  4621              MOV      r1,r4
000014  4807              LDR      r0,|L10.52|
000016  f7fffffe          BL       SPI_I2S_SendData
;;;406     
;;;407      /*!< Wait to receive a byte */
;;;408      while (SPI_I2S_GetFlagStatus(sFLASH_SPI, SPI_I2S_FLAG_RXNE) == RESET);
00001a  bf00              NOP      
                  |L10.28|
00001c  2101              MOVS     r1,#1
00001e  4805              LDR      r0,|L10.52|
000020  f7fffffe          BL       SPI_I2S_GetFlagStatus
000024  2800              CMP      r0,#0
000026  d0f9              BEQ      |L10.28|
;;;409    
;;;410      /*!< Return the byte read from the SPI bus */
;;;411      return SPI_I2S_ReceiveData(sFLASH_SPI);
000028  4802              LDR      r0,|L10.52|
00002a  f7fffffe          BL       SPI_I2S_ReceiveData
00002e  b2c0              UXTB     r0,r0
;;;412    }
000030  bd10              POP      {r4,pc}
;;;413    
                          ENDP

000032  0000              DCW      0x0000
                  |L10.52|
                          DCD      0x40013000

                          AREA ||i.sFLASH_SendHalfWord||, CODE, READONLY, ALIGN=2

                  sFLASH_SendHalfWord PROC
;;;419      */
;;;420    uint16_t sFLASH_SendHalfWord(uint16_t HalfWord)
000000  b510              PUSH     {r4,lr}
;;;421    {
000002  4604              MOV      r4,r0
;;;422      /*!< Loop while DR register in not emplty */
;;;423      while (SPI_I2S_GetFlagStatus(sFLASH_SPI, SPI_I2S_FLAG_TXE) == RESET);
000004  bf00              NOP      
                  |L11.6|
000006  2102              MOVS     r1,#2
000008  4809              LDR      r0,|L11.48|
00000a  f7fffffe          BL       SPI_I2S_GetFlagStatus
00000e  2800              CMP      r0,#0
000010  d0f9              BEQ      |L11.6|
;;;424    
;;;425      /*!< Send Half Word through the sFLASH peripheral */
;;;426      SPI_I2S_SendData(sFLASH_SPI, HalfWord);
000012  4621              MOV      r1,r4
000014  4806              LDR      r0,|L11.48|
000016  f7fffffe          BL       SPI_I2S_SendData
;;;427    
;;;428      /*!< Wait to receive a Half Word */
;;;429      while (SPI_I2S_GetFlagStatus(sFLASH_SPI, SPI_I2S_FLAG_RXNE) == RESET);
00001a  bf00              NOP      
                  |L11.28|
00001c  2101              MOVS     r1,#1
00001e  4804              LDR      r0,|L11.48|
000020  f7fffffe          BL       SPI_I2S_GetFlagStatus
000024  2800              CMP      r0,#0
000026  d0f9              BEQ      |L11.28|
;;;430    
;;;431      /*!< Return the Half Word read from the SPI bus */
;;;432      return SPI_I2S_ReceiveData(sFLASH_SPI);
000028  4801              LDR      r0,|L11.48|
00002a  f7fffffe          BL       SPI_I2S_ReceiveData
;;;433    }
00002e  bd10              POP      {r4,pc}
;;;434    
                          ENDP

                  |L11.48|
                          DCD      0x40013000

                          AREA ||i.sFLASH_StartReadSequence||, CODE, READONLY, ALIGN=2

                  sFLASH_StartReadSequence PROC
;;;363      */
;;;364    void sFLASH_StartReadSequence(uint32_t ReadAddr)
000000  b510              PUSH     {r4,lr}
;;;365    {
000002  4604              MOV      r4,r0
;;;366      /*!< Select the FLASH: Chip Select low */
;;;367      sFLASH_CS_LOW();
000004  2110              MOVS     r1,#0x10
000006  4809              LDR      r0,|L12.44|
000008  f7fffffe          BL       GPIO_ResetBits
;;;368    
;;;369      /*!< Send "Read from Memory " instruction */
;;;370      sFLASH_SendByte(sFLASH_CMD_READ);
00000c  2003              MOVS     r0,#3
00000e  f7fffffe          BL       sFLASH_SendByte
;;;371    
;;;372      /*!< Send the 24-bit address of the address to read from -------------------*/
;;;373      /*!< Send ReadAddr high nibble address byte */
;;;374      sFLASH_SendByte((ReadAddr & 0xFF0000) >> 16);
000012  f3c44007          UBFX     r0,r4,#16,#8
000016  f7fffffe          BL       sFLASH_SendByte
;;;375      /*!< Send ReadAddr medium nibble address byte */
;;;376      sFLASH_SendByte((ReadAddr& 0xFF00) >> 8);
00001a  f3c42007          UBFX     r0,r4,#8,#8
00001e  f7fffffe          BL       sFLASH_SendByte
;;;377      /*!< Send ReadAddr low nibble address byte */
;;;378      sFLASH_SendByte(ReadAddr & 0xFF);
000022  b2e0              UXTB     r0,r4
000024  f7fffffe          BL       sFLASH_SendByte
;;;379    }
000028  bd10              POP      {r4,pc}
;;;380    
                          ENDP

00002a  0000              DCW      0x0000
                  |L12.44|
                          DCD      0x40020000

                          AREA ||i.sFLASH_WaitForWriteEnd||, CODE, READONLY, ALIGN=1

                  sFLASH_WaitForWriteEnd PROC
;;;458      
;;;459    void sFLASH_WaitForWriteEnd(void)
000000  4770              BX       lr
;;;460    {  /*
;;;461      uint8_t flashstatus = 0;
;;;462    
;;;463      sFLASH_CS_LOW();
;;;464    
;;;465       sFLASH_SendByte(sFLASH_CMD_RDSR);
;;;466    
;;;467      do
;;;468      {
;;;469        
;;;470        flashstatus = sFLASH_SendByte(sFLASH_DUMMY_BYTE);
;;;471    
;;;472      }
;;;473      while ((flashstatus & sFLASH_WIP_FLAG) == SET); /
;;;474    
;;;475      sFLASH_CS_HIGH()
;;;476      */   ;
;;;477    }	 
;;;478    
                          ENDP


                          AREA ||i.sFLASH_WriteBuffer||, CODE, READONLY, ALIGN=1

                  sFLASH_WriteBuffer PROC
;;;217      */
;;;218    void sFLASH_WriteBuffer(uint8_t* pBuffer, uint32_t WriteAddr, uint16_t NumByteToWrite)
000000  e92d5ff0          PUSH     {r4-r12,lr}
;;;219    {
000004  4607              MOV      r7,r0
000006  460d              MOV      r5,r1
000008  4616              MOV      r6,r2
;;;220      uint8_t NumOfPage = 0, NumOfSingle = 0, Addr = 0, count = 0, temp = 0;
00000a  bf00              NOP      
00000c  bf00              NOP      
00000e  bf00              NOP      
000010  bf00              NOP      
000012  f04f0b00          MOV      r11,#0
;;;221    
;;;222      Addr = WriteAddr % sFLASH_SPI_PAGESIZE;
000016  f44f70a0          MOV      r0,#0x140
00001a  fbb5f1f0          UDIV     r1,r5,r0
00001e  fb005011          MLS      r0,r0,r1,r5
000022  ebc01000          RSB      r0,r0,r0,LSL #4
000026  0700              LSLS     r0,r0,#28
000028  ea4f6a10          LSR      r10,r0,#24
;;;223      count = sFLASH_SPI_PAGESIZE - Addr;
00002c  f1ca0000          RSB      r0,r10,#0
000030  b2c4              UXTB     r4,r0
;;;224      NumOfPage =  NumByteToWrite / sFLASH_SPI_PAGESIZE;
000032  f44f70a0          MOV      r0,#0x140
000036  fb96f0f0          SDIV     r0,r6,r0
00003a  ebc01000          RSB      r0,r0,r0,LSL #4
00003e  0700              LSLS     r0,r0,#28
000040  ea4f6810          LSR      r8,r0,#24
;;;225      NumOfSingle = NumByteToWrite % sFLASH_SPI_PAGESIZE;
000044  f44f70a0          MOV      r0,#0x140
000048  fb96f1f0          SDIV     r1,r6,r0
00004c  fb006011          MLS      r0,r0,r1,r6
000050  ebc01000          RSB      r0,r0,r0,LSL #4
000054  0700              LSLS     r0,r0,#28
000056  ea4f6910          LSR      r9,r0,#24
;;;226    
;;;227      if (Addr == 0) /*!< WriteAddr is sFLASH_PAGESIZE aligned  */
00005a  f1ba0f00          CMP      r10,#0
00005e  d120              BNE      |L14.162|
;;;228      {
;;;229        if (NumOfPage == 0) /*!< NumByteToWrite < sFLASH_PAGESIZE */
000060  f1b80f00          CMP      r8,#0
000064  d105              BNE      |L14.114|
;;;230        {
;;;231          sFLASH_WritePage(pBuffer, WriteAddr, NumByteToWrite);
000066  4632              MOV      r2,r6
000068  4629              MOV      r1,r5
00006a  4638              MOV      r0,r7
00006c  f7fffffe          BL       sFLASH_WritePage
000070  e06a              B        |L14.328|
                  |L14.114|
;;;232        }
;;;233        else /*!< NumByteToWrite > sFLASH_PAGESIZE */
;;;234        {
;;;235          while (NumOfPage--)
000072  e009              B        |L14.136|
                  |L14.116|
;;;236          {
;;;237            sFLASH_WritePage(pBuffer, WriteAddr, sFLASH_SPI_PAGESIZE);
000074  f44f5230          MOV      r2,#0x2c00
000078  4629              MOV      r1,r5
00007a  4638              MOV      r0,r7
00007c  f7fffffe          BL       sFLASH_WritePage
;;;238            WriteAddr +=  sFLASH_SPI_PAGESIZE;
000080  f5053596          ADD      r5,r5,#0x12c00
;;;239            pBuffer += sFLASH_SPI_PAGESIZE;
000084  f5073796          ADD      r7,r7,#0x12c00
                  |L14.136|
000088  ea5f0008          MOVS     r0,r8                 ;235
00008c  f1a80101          SUB      r1,r8,#1              ;235
000090  f00108ff          AND      r8,r1,#0xff           ;235
000094  d1ee              BNE      |L14.116|
;;;240          }
;;;241    
;;;242          sFLASH_WritePage(pBuffer, WriteAddr, NumOfSingle);
000096  464a              MOV      r2,r9
000098  4629              MOV      r1,r5
00009a  4638              MOV      r0,r7
00009c  f7fffffe          BL       sFLASH_WritePage
0000a0  e052              B        |L14.328|
                  |L14.162|
;;;243        }
;;;244      }
;;;245      else /*!< WriteAddr is not sFLASH_PAGESIZE aligned  */
;;;246      {
;;;247        if (NumOfPage == 0) /*!< NumByteToWrite < sFLASH_PAGESIZE */
0000a2  f1b80f00          CMP      r8,#0
0000a6  d118              BNE      |L14.218|
;;;248        {
;;;249          if (NumOfSingle > count) /*!< (NumByteToWrite + WriteAddr) > sFLASH_PAGESIZE */
0000a8  45a1              CMP      r9,r4
0000aa  dd10              BLE      |L14.206|
;;;250          {
;;;251            temp = NumOfSingle - count;
0000ac  eba90004          SUB      r0,r9,r4
0000b0  f0000bff          AND      r11,r0,#0xff
;;;252    
;;;253            sFLASH_WritePage(pBuffer, WriteAddr, count);
0000b4  4622              MOV      r2,r4
0000b6  4629              MOV      r1,r5
0000b8  4638              MOV      r0,r7
0000ba  f7fffffe          BL       sFLASH_WritePage
;;;254            WriteAddr +=  count;
0000be  4425              ADD      r5,r5,r4
;;;255            pBuffer += count;
0000c0  4427              ADD      r7,r7,r4
;;;256    
;;;257            sFLASH_WritePage(pBuffer, WriteAddr, temp);
0000c2  465a              MOV      r2,r11
0000c4  4629              MOV      r1,r5
0000c6  4638              MOV      r0,r7
0000c8  f7fffffe          BL       sFLASH_WritePage
0000cc  e03c              B        |L14.328|
                  |L14.206|
;;;258          }
;;;259          else
;;;260          {
;;;261            sFLASH_WritePage(pBuffer, WriteAddr, NumByteToWrite);
0000ce  4632              MOV      r2,r6
0000d0  4629              MOV      r1,r5
0000d2  4638              MOV      r0,r7
0000d4  f7fffffe          BL       sFLASH_WritePage
0000d8  e036              B        |L14.328|
                  |L14.218|
;;;262          }
;;;263        }
;;;264        else /*!< NumByteToWrite > sFLASH_PAGESIZE */
;;;265        {
;;;266          NumByteToWrite -= count;
0000da  1b30              SUBS     r0,r6,r4
0000dc  b286              UXTH     r6,r0
;;;267          NumOfPage =  NumByteToWrite / sFLASH_SPI_PAGESIZE;
0000de  f44f70a0          MOV      r0,#0x140
0000e2  fb96f0f0          SDIV     r0,r6,r0
0000e6  ebc01000          RSB      r0,r0,r0,LSL #4
0000ea  0700              LSLS     r0,r0,#28
0000ec  ea4f6810          LSR      r8,r0,#24
;;;268          NumOfSingle = NumByteToWrite % sFLASH_SPI_PAGESIZE;
0000f0  f44f70a0          MOV      r0,#0x140
0000f4  fb96f1f0          SDIV     r1,r6,r0
0000f8  fb006011          MLS      r0,r0,r1,r6
0000fc  ebc01000          RSB      r0,r0,r0,LSL #4
000100  0700              LSLS     r0,r0,#28
000102  ea4f6910          LSR      r9,r0,#24
;;;269    
;;;270          sFLASH_WritePage(pBuffer, WriteAddr, count);
000106  4622              MOV      r2,r4
000108  4629              MOV      r1,r5
00010a  4638              MOV      r0,r7
00010c  f7fffffe          BL       sFLASH_WritePage
;;;271          WriteAddr +=  count;
000110  4425              ADD      r5,r5,r4
;;;272          pBuffer += count;
000112  4427              ADD      r7,r7,r4
;;;273    
;;;274          while (NumOfPage--)
000114  e009              B        |L14.298|
                  |L14.278|
;;;275          {
;;;276            sFLASH_WritePage(pBuffer, WriteAddr, sFLASH_SPI_PAGESIZE);
000116  f44f5230          MOV      r2,#0x2c00
00011a  4629              MOV      r1,r5
00011c  4638              MOV      r0,r7
00011e  f7fffffe          BL       sFLASH_WritePage
;;;277            WriteAddr +=  sFLASH_SPI_PAGESIZE;
000122  f5053596          ADD      r5,r5,#0x12c00
;;;278            pBuffer += sFLASH_SPI_PAGESIZE;
000126  f5073796          ADD      r7,r7,#0x12c00
                  |L14.298|
00012a  ea5f0008          MOVS     r0,r8                 ;274
00012e  f1a80101          SUB      r1,r8,#1              ;274
000132  f00108ff          AND      r8,r1,#0xff           ;274
000136  d1ee              BNE      |L14.278|
;;;279          }
;;;280    
;;;281          if (NumOfSingle != 0)
000138  f1b90f00          CMP      r9,#0
00013c  d004              BEQ      |L14.328|
;;;282          {
;;;283            sFLASH_WritePage(pBuffer, WriteAddr, NumOfSingle);
00013e  464a              MOV      r2,r9
000140  4629              MOV      r1,r5
000142  4638              MOV      r0,r7
000144  f7fffffe          BL       sFLASH_WritePage
                  |L14.328|
;;;284          }
;;;285        }
;;;286      }
;;;287    }
000148  e8bd9ff0          POP      {r4-r12,pc}
;;;288    
                          ENDP


                          AREA ||i.sFLASH_WriteEnable||, CODE, READONLY, ALIGN=2

                  sFLASH_WriteEnable PROC
;;;439      */
;;;440    void sFLASH_WriteEnable(void)
000000  b510              PUSH     {r4,lr}
;;;441    {
;;;442      /*!< Select the FLASH: Chip Select low */
;;;443      sFLASH_CS_LOW();
000002  2110              MOVS     r1,#0x10
000004  4805              LDR      r0,|L15.28|
000006  f7fffffe          BL       GPIO_ResetBits
;;;444    
;;;445      /*!< Send "Write Enable" instruction */
;;;446      sFLASH_SendByte(sFLASH_CMD_WREN);
00000a  2006              MOVS     r0,#6
00000c  f7fffffe          BL       sFLASH_SendByte
;;;447    
;;;448      /*!< Deselect the FLASH: Chip Select high */
;;;449      sFLASH_CS_HIGH();
000010  2110              MOVS     r1,#0x10
000012  4802              LDR      r0,|L15.28|
000014  f7fffffe          BL       GPIO_SetBits
;;;450    }
000018  bd10              POP      {r4,pc}
;;;451    
                          ENDP

00001a  0000              DCW      0x0000
                  |L15.28|
                          DCD      0x40020000

                          AREA ||i.sFLASH_WritePage||, CODE, READONLY, ALIGN=2

                  sFLASH_WritePage PROC
;;;176      */
;;;177    void sFLASH_WritePage(uint8_t* pBuffer, uint32_t WriteAddr, uint16_t NumByteToWrite)
000000  b570              PUSH     {r4-r6,lr}
;;;178    {
000002  4605              MOV      r5,r0
000004  460c              MOV      r4,r1
000006  4616              MOV      r6,r2
;;;179      /*!< Enable the write access to the FLASH */
;;;180      sFLASH_WriteEnable();
000008  f7fffffe          BL       sFLASH_WriteEnable
;;;181    
;;;182      /*!< Select the FLASH: Chip Select low */
;;;183      sFLASH_CS_LOW();
00000c  2110              MOVS     r1,#0x10
00000e  4811              LDR      r0,|L16.84|
000010  f7fffffe          BL       GPIO_ResetBits
;;;184      /*!< Send "Write to Memory " instruction */
;;;185      sFLASH_SendByte(sFLASH_CMD_WRITE);
000014  2002              MOVS     r0,#2
000016  f7fffffe          BL       sFLASH_SendByte
;;;186      /*!< Send WriteAddr high nibble address byte to write to */
;;;187      sFLASH_SendByte((WriteAddr & 0xFF0000) >> 16);
00001a  f3c44007          UBFX     r0,r4,#16,#8
00001e  f7fffffe          BL       sFLASH_SendByte
;;;188      /*!< Send WriteAddr medium nibble address byte to write to */
;;;189      sFLASH_SendByte((WriteAddr & 0xFF00) >> 8);
000022  f3c42007          UBFX     r0,r4,#8,#8
000026  f7fffffe          BL       sFLASH_SendByte
;;;190      /*!< Send WriteAddr low nibble address byte to write to */
;;;191      sFLASH_SendByte(WriteAddr & 0xFF);
00002a  b2e0              UXTB     r0,r4
00002c  f7fffffe          BL       sFLASH_SendByte
;;;192    
;;;193      /*!< while there is data to be written on the FLASH */
;;;194      while (NumByteToWrite--)
000030  e003              B        |L16.58|
                  |L16.50|
;;;195      {
;;;196        /*!< Send the current byte */
;;;197        sFLASH_SendByte(*pBuffer);
000032  7828              LDRB     r0,[r5,#0]
000034  f7fffffe          BL       sFLASH_SendByte
;;;198        /*!< Point on the next byte to be written */
;;;199        pBuffer++;
000038  1c6d              ADDS     r5,r5,#1
                  |L16.58|
00003a  0030              MOVS     r0,r6                 ;194
00003c  f1a60101          SUB      r1,r6,#1              ;194
000040  b28e              UXTH     r6,r1                 ;194
000042  d1f6              BNE      |L16.50|
;;;200      }
;;;201    
;;;202      /*!< Deselect the FLASH: Chip Select high */
;;;203      sFLASH_CS_HIGH();
000044  2110              MOVS     r1,#0x10
000046  4803              LDR      r0,|L16.84|
000048  f7fffffe          BL       GPIO_SetBits
;;;204    
;;;205      /*!< Wait the end of Flash writing */
;;;206      sFLASH_WaitForWriteEnd();
00004c  f7fffffe          BL       sFLASH_WaitForWriteEnd
;;;207    }
000050  bd70              POP      {r4-r6,pc}
;;;208    
                          ENDP

000052  0000              DCW      0x0000
                  |L16.84|
                          DCD      0x40020000

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

                  TimingDelay
                          DCD      0x00000000

;*** Start embedded assembler ***

#line 1 "..\\spi_flash.c"
	AREA ||.rev16_text||, CODE, READONLY
	THUMB
	EXPORT |__asm___11_spi_flash_c_9c1dbaca____REV16|
#line 114 "C:\\Keil\\ARM\\CMSIS\\Include\\core_cmInstr.h"
|__asm___11_spi_flash_c_9c1dbaca____REV16| PROC
#line 115

 rev16 r0, r0
 bx lr
	ENDP
	AREA ||.revsh_text||, CODE, READONLY
	THUMB
	EXPORT |__asm___11_spi_flash_c_9c1dbaca____REVSH|
#line 128
|__asm___11_spi_flash_c_9c1dbaca____REVSH| PROC
#line 129

 revsh r0, r0
 bx lr
	ENDP

;*** End   embedded assembler ***
