; generated by Component: ARM Compiler 5.06 update 4 (build 422) Tool: ArmCC [4d3604]
; commandline ArmCC [--c99 --list --split_sections --debug -c --asm --interleave -o.\obj\lib_driver_rfspi_pan159.o --asm_dir=.\lst\ --list_dir=.\lst\ --depend=.\obj\lib_driver_rfspi_pan159.d --cpu=Cortex-M0 --apcs=interwork -O3 --diag_suppress=9931 -I..\..\..\Library\CMSIS\Include -I..\..\..\Library\Device\Nuvoton\Mini58Series\Include -I..\..\..\Library\StdDriver\inc -I..\..\Template -I..\..\..\Library\StdDriver\driver -I.\RTE\_Template -ID:\Keil_v5\ARM\PACK\Nuvoton\NuMicro_DFP\1.0.9\Device\Mini58\Include -ID:\Keil_v5\ARM\CMSIS\Include -D__MICROLIB -D__UVISION_VERSION=523 --omf_browse=.\obj\lib_driver_rfspi_pan159.crf ..\..\..\Library\StdDriver\driver\lib_driver_rfspi_pan159.c]
                          THUMB

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

                  rfspi_pan159_init PROC
;;;17      ******************************************************************************/
;;;18     void rfspi_pan159_init(void)
000000  b5f8              PUSH     {r3-r7,lr}
;;;19     {
;;;20     	SYS->P0_MFP |= SYS_MFP_P01_GPIO;	// P01->RF_CSN
000002  2405              MOVS     r4,#5
000004  0724              LSLS     r4,r4,#28
000006  6b20              LDR      r0,[r4,#0x30]
000008  6320              STR      r0,[r4,#0x30]
;;;21         SYS->P0_MFP |= SYS_MFP_P07_SPI0_CLK|SYS_MFP_P05_SPI0_MOSI|SYS_MFP_P06_SPI0_MISO ;
00000a  6b20              LDR      r0,[r4,#0x30]
00000c  2507              MOVS     r5,#7
00000e  036d              LSLS     r5,r5,#13
000010  4328              ORRS     r0,r0,r5
000012  6320              STR      r0,[r4,#0x30]
;;;22         SYS->P5_MFP |= SYS_MFP_P52_GPIO;	                //P20->RF_IRQ
000014  4813              LDR      r0,|L1.100|
000016  6841              LDR      r1,[r0,#4]
000018  6041              STR      r1,[r0,#4]
;;;23         
;;;24         CLK_EnableModuleClock(SPI0_MODULE);//ʹSPIʱ
00001a  4e13              LDR      r6,|L1.104|
00001c  4630              MOV      r0,r6
00001e  f7fffffe          BL       CLK_EnableModuleClock
;;;25     	CLK_SetModuleClock(SPI0_MODULE,CLK_CLKSEL1_SPISEL_PLL,1);//ʱ1Ƶ
000022  2201              MOVS     r2,#1
000024  2120              MOVS     r1,#0x20
000026  4630              MOV      r0,r6
000028  f7fffffe          BL       CLK_SetModuleClock
;;;26         
;;;27      	GPIO_SetMode(P0, BIT1, GPIO_MODE_OUTPUT);     	//RF_CSN
00002c  2201              MOVS     r2,#1
00002e  2102              MOVS     r1,#2
000030  480e              LDR      r0,|L1.108|
000032  f7fffffe          BL       GPIO_SetMode
;;;28      	GPIO_SetMode(P5, BIT2, GPIO_MODE_INPUT);		//RF_IRQ
000036  2200              MOVS     r2,#0
000038  2104              MOVS     r1,#4
00003a  480d              LDR      r0,|L1.112|
00003c  f7fffffe          BL       GPIO_SetMode
;;;29         
;;;30     	SYS->P0_MFP |= SYS_MFP_P05_SPI0_MOSI | SYS_MFP_P06_SPI0_MISO | SYS_MFP_P07_SPI0_CLK;//IOù
000040  6b20              LDR      r0,[r4,#0x30]
000042  4328              ORRS     r0,r0,r5
000044  6320              STR      r0,[r4,#0x30]
;;;31         SPI_Open(SPI0, SPI_MASTER, SPI_MODE_0,8,2000000);//豸ģʽ0,8λȣ2M
000046  480b              LDR      r0,|L1.116|
000048  4c0b              LDR      r4,|L1.120|
00004a  9000              STR      r0,[sp,#0]
00004c  2308              MOVS     r3,#8
00004e  2204              MOVS     r2,#4
000050  2100              MOVS     r1,#0
000052  4620              MOV      r0,r4
000054  f7fffffe          BL       SPI_Open
;;;32     	SPI_DisableAutoSS(SPI0);//ֹӲSS
000058  4620              MOV      r0,r4
00005a  f7fffffe          BL       SPI_DisableAutoSS
;;;33     	SPI_WRITE_TX(SPI0, 0);//SPI
00005e  2000              MOVS     r0,#0
000060  6220              STR      r0,[r4,#0x20]
;;;34     }
000062  bdf8              POP      {r3-r7,pc}
;;;35     
                          ENDP

                  |L1.100|
                          DCD      0x50000040
                  |L1.104|
                          DCD      0xa640000c
                  |L1.108|
                          DCD      0x50004000
                  |L1.112|
                          DCD      0x50004140
                  |L1.116|
                          DCD      0x001e8480
                  |L1.120|
                          DCD      0x40030000

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

                  rfspi_pan159_rwc PROC
;;;41      ******************************************************************************/
;;;42     uint8_t rfspi_pan159_rwc(uint8_t dat)
000000  4906              LDR      r1,|L2.28|
;;;43     {
;;;44         SPI_WRITE_TX(SPI0, dat);
000002  6208              STR      r0,[r1,#0x20]
;;;45         SPI_TRIGGER(SPI0);
000004  6808              LDR      r0,[r1,#0]
000006  2201              MOVS     r2,#1
000008  4310              ORRS     r0,r0,r2
00000a  6008              STR      r0,[r1,#0]
                  |L2.12|
;;;46         while(SPI_IS_BUSY(SPI0));
00000c  6808              LDR      r0,[r1,#0]
00000e  43c0              MVNS     r0,r0
000010  07c0              LSLS     r0,r0,#31
000012  d0fb              BEQ      |L2.12|
;;;47         return SPI0->RX;
000014  6908              LDR      r0,[r1,#0x10]
000016  b2c0              UXTB     r0,r0
;;;48     }
000018  4770              BX       lr
;;;49     
                          ENDP

00001a  0000              DCW      0x0000
                  |L2.28|
                          DCD      0x40030000

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

                  rfspi_pan159_rws PROC
;;;57      ******************************************************************************/
;;;58     uint8_t* rfspi_pan159_rws(uint8_t* p_dat, uint16_t len)
000000  b530              PUSH     {r4,r5,lr}
;;;59     {
;;;60         uint8_t i = 0;
000002  2200              MOVS     r2,#0
;;;61         while(i < len)
;;;62         {
;;;63             SPI_WRITE_TX(SPI0, p_dat[i]);
000004  4b09              LDR      r3,|L3.44|
;;;64             SPI_TRIGGER(SPI0);
000006  2401              MOVS     r4,#1
000008  e00c              B        |L3.36|
                  |L3.10|
00000a  5c85              LDRB     r5,[r0,r2]            ;63
00000c  621d              STR      r5,[r3,#0x20]         ;63
00000e  681d              LDR      r5,[r3,#0]
000010  4325              ORRS     r5,r5,r4
000012  601d              STR      r5,[r3,#0]
                  |L3.20|
;;;65             while(SPI_IS_BUSY(SPI0));
000014  681d              LDR      r5,[r3,#0]
000016  43ed              MVNS     r5,r5
000018  07ed              LSLS     r5,r5,#31
00001a  d0fb              BEQ      |L3.20|
;;;66             p_dat[i] = SPI0->RX;
00001c  691d              LDR      r5,[r3,#0x10]
00001e  5485              STRB     r5,[r0,r2]
000020  1c52              ADDS     r2,r2,#1
;;;67             i++;
000022  b2d2              UXTB     r2,r2
                  |L3.36|
000024  428a              CMP      r2,r1                 ;61
000026  d3f0              BCC      |L3.10|
;;;68         }
;;;69         return p_dat;
;;;70     }
000028  bd30              POP      {r4,r5,pc}
                          ENDP

00002a  0000              DCW      0x0000
                  |L3.44|
                          DCD      0x40030000

;*** Start embedded assembler ***

#line 1 "..\\..\\..\\Library\\StdDriver\\driver\\lib_driver_rfspi_pan159.c"
	AREA ||.rev16_text||, CODE
	THUMB
	EXPORT |__asm___25_lib_driver_rfspi_pan159_c_b0ecd6bb____REV16|
#line 388 "..\\..\\..\\Library\\CMSIS\\Include\\cmsis_armcc.h"
|__asm___25_lib_driver_rfspi_pan159_c_b0ecd6bb____REV16| PROC
#line 389

 rev16 r0, r0
 bx lr
	ENDP
	AREA ||.revsh_text||, CODE
	THUMB
	EXPORT |__asm___25_lib_driver_rfspi_pan159_c_b0ecd6bb____REVSH|
#line 402
|__asm___25_lib_driver_rfspi_pan159_c_b0ecd6bb____REVSH| PROC
#line 403

 revsh r0, r0
 bx lr
	ENDP

;*** End   embedded assembler ***
