; generated by Component: ARM Compiler 5.06 update 6 (build 750) Tool: ArmCC [4d3637]
; commandline ArmCC [--c99 --list --split_sections --debug -c --asm --interleave --gnu -o.\objects\app_tp_transfer.o --asm_dir=.\Listings\ --list_dir=.\Listings\ --depend=.\objects\app_tp_transfer.d --cpu=Cortex-M0 --apcs=interwork -O0 --diag_suppress=9931 -I..\..\src -I..\..\src\board -I..\..\src\common -I..\..\src\sdk\include -I..\..\src\sdk\include\M0 -I..\..\src\app -I..\..\src\app\S8 -I..\..\src\app\touch -I..\..\src\app\module_demo -I..\..\src\app\Mi12Lite -I.\RTE\_WL668 -IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.5.1\CMSIS\Core\Include -IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.5.1\Device\ARM\ARMCM0\Include -D__MICROLIB -D__UVISION_VERSION=528 -D_RTE_ -DARMCM0 --omf_browse=.\objects\app_tp_transfer.crf ..\..\src\app\touch\app_tp_transfer.c]
                          THUMB

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

                  app_tp_i2cs_callback PROC
;;;382    #if PHONE_SLAVE_TRANSFER_I2C                //消除warning
;;;383    static void app_tp_i2cs_callback(i2c_index_e index, hal_i2cs_event_e int_status, size_t recieve_num)
000000  b570              PUSH     {r4-r6,lr}
;;;384    {
000002  4606              MOV      r6,r0
000004  460c              MOV      r4,r1
000006  4615              MOV      r5,r2
;;;385        static bool i2cs_transfer = true;       //确保一次通信只解析一次
;;;386        if (i2cs_transfer)
000008  480d              LDR      r0,|L1.64|
00000a  7800              LDRB     r0,[r0,#0]  ; i2cs_transfer
00000c  2800              CMP      r0,#0
00000e  d006              BEQ      |L1.30|
;;;387        {
;;;388            i2cs_transfer = false;
000010  2000              MOVS     r0,#0
000012  490b              LDR      r1,|L1.64|
000014  7008              STRB     r0,[r1,#0]
;;;389            app_tp_transfer_phone(index, recieve_num);
000016  4629              MOV      r1,r5
000018  4630              MOV      r0,r6
00001a  f7fffffe          BL       app_tp_transfer_phone
                  |L1.30|
;;;390        }
;;;391        if (int_status == I2CS_EVENT_READ)
00001e  2c00              CMP      r4,#0
000020  d107              BNE      |L1.50|
;;;392        {
;;;393            app_tp_s_write(index, s_slave_txbuffer, s_slave_txbuffer_size);
000022  4808              LDR      r0,|L1.68|
000024  6802              LDR      r2,[r0,#0]  ; s_slave_txbuffer_size
000026  4808              LDR      r0,|L1.72|
000028  6801              LDR      r1,[r0,#0]  ; s_slave_txbuffer
00002a  4630              MOV      r0,r6
00002c  f7fffffe          BL       app_tp_s_write
000030  e004              B        |L1.60|
                  |L1.50|
;;;394        }
;;;395        else if (int_status == I2CS_EVENT_STOP)
000032  2c02              CMP      r4,#2
000034  d102              BNE      |L1.60|
;;;396        {
;;;397            i2cs_transfer = true;
000036  2001              MOVS     r0,#1
000038  4901              LDR      r1,|L1.64|
00003a  7008              STRB     r0,[r1,#0]
                  |L1.60|
;;;398        }
;;;399    }
00003c  bd70              POP      {r4-r6,pc}
;;;400    #endif
                          ENDP

00003e  0000              DCW      0x0000
                  |L1.64|
                          DCD      i2cs_transfer
                  |L1.68|
                          DCD      s_slave_txbuffer_size
                  |L1.72|
                          DCD      s_slave_txbuffer

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

                  app_tp_init PROC
;;;224    **************************************************************************/
;;;225    void app_tp_init(void)
000000  b510              PUSH     {r4,lr}
;;;226    {
;;;227    #if _DEMO_IPHONE_X_EN
;;;228        app_tp_phone_data_init();
;;;229    #endif
;;;230        app_tp_phone_reset_init();                                        //初始化手机复位的IO口
000002  f7fffffe          BL       app_tp_phone_reset_init
;;;231        app_tp_screen_int_init();                                         //配置screen中断输入引脚
000006  f7fffffe          BL       app_tp_screen_int_init
;;;232        hal_gpio_init_output(g_phone_output_int_pad, IO_LVL_HIGH);        //配置phone报点输出中断IO口
00000a  2101              MOVS     r1,#1
00000c  4812              LDR      r0,|L2.88|
00000e  7800              LDRB     r0,[r0,#0]  ; g_phone_output_int_pad
000010  f7fffffe          BL       hal_gpio_init_output
;;;233    
;;;234    #if SCREEN_MASTER_TRANSFER_I2C
;;;235        screen_i2cm_io_init();
;;;236        hal_i2cm_init(SCREEN_I2CM_INDEX, SCREEN_I2C_ADDRESS, SCREEN_I2C_ADDR_BITS, I2C_MASTER_SPEED);
;;;237    #elif SCREEN_MASTER_TRANSFER_SPI
;;;238        screen_spim_io_init();
000014  f7fffffe          BL       screen_spim_io_init
;;;239        hal_spim_init(SPI_MASTER_SPEED, SCREEN_SPI_CPHA, SCREEN_SPI_CPOL);
000018  2200              MOVS     r2,#0
00001a  4611              MOV      r1,r2
00001c  480f              LDR      r0,|L2.92|
00001e  f7fffffe          BL       hal_spim_init
;;;240    #endif
;;;241    
;;;242    #if PHONE_SLAVE_TRANSFER_I2C
;;;243        phone_i2cs_io_init();
000022  f7fffffe          BL       phone_i2cs_io_init
;;;244        hal_i2cs_init(PHONE_I2CS_INDEX, CHIP_I2C_ADDRESS, CHIP_I2C_ADDR_BITS);
000026  2207              MOVS     r2,#7
000028  2148              MOVS     r1,#0x48
00002a  2000              MOVS     r0,#0
00002c  f7fffffe          BL       hal_i2cs_init
;;;245        hal_i2cs_register_callback(PHONE_I2CS_INDEX, app_tp_i2cs_callback);
000030  490b              LDR      r1,|L2.96|
000032  2000              MOVS     r0,#0
000034  f7fffffe          BL       hal_i2cs_register_callback
;;;246        hal_i2cs_update_rx_buffer(PHONE_I2CS_INDEX, s_phone_read_buffer, BUFFER_SIZE_MAX);
000038  22fa              MOVS     r2,#0xfa
00003a  490a              LDR      r1,|L2.100|
00003c  2000              MOVS     r0,#0
00003e  f7fffffe          BL       hal_i2cs_update_rx_buffer
;;;247        hal_i2cs_update_tx_buffer(PHONE_I2CS_INDEX, phone_reg_const_data[0].write_back, phone_reg_const_data[0].write_back_size, false);
000042  4809              LDR      r0,|L2.104|
000044  6842              LDR      r2,[r0,#4]  ; phone_reg_const_data
000046  2300              MOVS     r3,#0
000048  68c1              LDR      r1,[r0,#0xc]  ; phone_reg_const_data
00004a  4618              MOV      r0,r3
00004c  f7fffffe          BL       hal_i2cs_update_tx_buffer
;;;248        hal_i2cs_start(PHONE_I2CS_INDEX);
000050  2000              MOVS     r0,#0
000052  f7fffffe          BL       hal_i2cs_start
;;;249    #elif PHONE_SLAVE_TRANSFER_SPI
;;;250        phone_spis_io_init();
;;;251        hal_spis_init(PHONE_SPI_CPHA, PHONE_SPI_CPOL);                                   // 初始化spis
;;;252        hal_spis_update_rx_buffer(s_phone_read_buffer, BUFFER_SIZE_MAX);                 // 设置auto   rx buffer
;;;253        hal_spis_update_tx_buffer(phone_reg_const_data[0].write_back, phone_reg_const_data[0].write_back_size, false);   // 配置TX BUFFER
;;;254        hal_spis_register_callback(app_tp_spis_callback, SPIS_EVENT_RCV_FULL | SPIS_EVENT_RCV_CS_RISE, 0);               // 注册回调
;;;255        hal_spis_start();                              // 启动tx自动发送
;;;256    #endif
;;;257    }
000056  bd10              POP      {r4,pc}
;;;258    
                          ENDP

                  |L2.88|
                          DCD      g_phone_output_int_pad
                  |L2.92|
                          DCD      0x007a1200
                  |L2.96|
                          DCD      app_tp_i2cs_callback
                  |L2.100|
                          DCD      s_phone_read_buffer
                  |L2.104|
                          DCD      phone_reg_const_data

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

                  app_tp_m_read PROC
;;;324    **************************************************************************/
;;;325    static void app_tp_m_read(const uint8_t *cmd, size_t cmd_size, uint8_t *data_buffer, size_t data_size)
000000  b5f8              PUSH     {r3-r7,lr}
;;;326    {
000002  4604              MOV      r4,r0
000004  460d              MOV      r5,r1
000006  4616              MOV      r6,r2
000008  461f              MOV      r7,r3
;;;327    #if SCREEN_MASTER_TRANSFER_I2C
;;;328        uint8_t i = 0;
;;;329        uint32_t address = 0;
;;;330    
;;;331        for (i = 0; i < cmd_size; i++)                          //先将要发送的数据整合到 address
;;;332        {
;;;333            address |= (uint32_t)cmd[i] << i * 8;
;;;334        }
;;;335        hal_i2cm_dma_read(SCREEN_I2CM_INDEX, address, cmd_size, data_buffer, data_size);
;;;336    #elif SCREEN_MASTER_TRANSFER_SPI
;;;337        hal_spim_read(cmd, cmd_size, data_buffer, data_size);
00000a  463b              MOV      r3,r7
00000c  4632              MOV      r2,r6
00000e  4629              MOV      r1,r5
000010  4620              MOV      r0,r4
000012  f7fffffe          BL       hal_spim_read
;;;338    #endif
;;;339    }
000016  bdf8              POP      {r3-r7,pc}
;;;340    
                          ENDP


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

                  app_tp_m_transfer_complate PROC
;;;265    **************************************************************************/
;;;266    bool app_tp_m_transfer_complate(void)
000000  b510              PUSH     {r4,lr}
;;;267    {
;;;268    #if SCREEN_MASTER_TRANSFER_I2C
;;;269        return hal_i2cm_get_transfer_complete(SCREEN_I2CM_INDEX);
;;;270    #elif SCREEN_MASTER_TRANSFER_SPI
;;;271        return hal_spim_get_transfer_complete();
000002  f7fffffe          BL       hal_spim_get_transfer_complete
;;;272    #else
;;;273        return true;
;;;274    #endif
;;;275    }
000006  bd10              POP      {r4,pc}
;;;276    
                          ENDP


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

                  app_tp_m_write PROC
;;;304    **************************************************************************/
;;;305    static void app_tp_m_write(const uint8_t *txbuffer, size_t buffer_size)
000000  b570              PUSH     {r4-r6,lr}
;;;306    {
000002  4604              MOV      r4,r0
000004  460d              MOV      r5,r1
;;;307    #if SCREEN_MASTER_TRANSFER_I2C
;;;308        hal_i2cm_dma_write(SCREEN_I2CM_INDEX, txbuffer, buffer_size);
;;;309    #elif SCREEN_MASTER_TRANSFER_SPI
;;;310        hal_spim_write(txbuffer, buffer_size);
000006  4629              MOV      r1,r5
000008  4620              MOV      r0,r4
00000a  f7fffffe          BL       hal_spim_write
;;;311        s_spim_write = true;
00000e  2001              MOVS     r0,#1
000010  4901              LDR      r1,|L5.24|
000012  7008              STRB     r0,[r1,#0]
;;;312    #endif
;;;313    }
000014  bd70              POP      {r4-r6,pc}
;;;314    
                          ENDP

000016  0000              DCW      0x0000
                  |L5.24|
                          DCD      s_spim_write

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

                  app_tp_phone_clear_reset_on PROC
;;;634    **************************************************************************/
;;;635    void app_tp_phone_clear_reset_on(void)
000000  2000              MOVS     r0,#0
;;;636    {
;;;637        s_phone_reset_flag = false;
000002  4901              LDR      r1,|L6.8|
000004  7008              STRB     r0,[r1,#0]
;;;638    }
000006  4770              BX       lr
;;;639    
                          ENDP

                  |L6.8|
                          DCD      s_phone_reset_flag

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

                  app_tp_phone_reset_init PROC
;;;100    **************************************************************************/
;;;101    static void app_tp_phone_reset_init(void)
000000  b510              PUSH     {r4,lr}
;;;102    {
;;;103        /*0.配置为输入*/
;;;104        hal_gpio_init_input(g_phone_input_rst_pad);
000002  480c              LDR      r0,|L7.52|
000004  7800              LDRB     r0,[r0,#0]  ; g_phone_input_rst_pad
000006  f7fffffe          BL       hal_gpio_init_input
;;;105        /*1.关闭中断*/
;;;106        hal_gpio_ctrl_eint(g_phone_input_rst_pad, false);
00000a  2100              MOVS     r1,#0
00000c  4809              LDR      r0,|L7.52|
00000e  7800              LDRB     r0,[r0,#0]  ; g_phone_input_rst_pad
000010  f7fffffe          BL       hal_gpio_ctrl_eint
;;;107        /*2.中断初始化*/
;;;108        hal_gpio_init_eint(g_phone_input_rst_pad, DETECT_RISING_EDGE);
000014  2102              MOVS     r1,#2
000016  4807              LDR      r0,|L7.52|
000018  7800              LDRB     r0,[r0,#0]  ; g_phone_input_rst_pad
00001a  f7fffffe          BL       hal_gpio_init_eint
;;;109        /*3.注册回调*/
;;;110        hal_gpio_reg_eint_cb(g_phone_input_rst_pad, app_tp_reset_callback);
00001e  4906              LDR      r1,|L7.56|
000020  4804              LDR      r0,|L7.52|
000022  7800              LDRB     r0,[r0,#0]  ; g_phone_input_rst_pad
000024  f7fffffe          BL       hal_gpio_reg_eint_cb
;;;111        /*4.使能中断*/
;;;112        hal_gpio_ctrl_eint(g_phone_input_rst_pad, true);
000028  2101              MOVS     r1,#1
00002a  4802              LDR      r0,|L7.52|
00002c  7800              LDRB     r0,[r0,#0]  ; g_phone_input_rst_pad
00002e  f7fffffe          BL       hal_gpio_ctrl_eint
;;;113    }
000032  bd10              POP      {r4,pc}
;;;114    
                          ENDP

                  |L7.52|
                          DCD      g_phone_input_rst_pad
                  |L7.56|
                          DCD      app_tp_reset_callback

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

                  app_tp_phone_reset_on PROC
;;;622    **************************************************************************/
;;;623    bool app_tp_phone_reset_on(void)
000000  4801              LDR      r0,|L8.8|
;;;624    {
;;;625        return s_phone_reset_flag;
000002  7800              LDRB     r0,[r0,#0]  ; s_phone_reset_flag
;;;626    }
000004  4770              BX       lr
;;;627    
                          ENDP

000006  0000              DCW      0x0000
                  |L8.8|
                          DCD      s_phone_reset_flag

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

                  app_tp_reset_callback PROC
;;;439    **************************************************************************/
;;;440    static void app_tp_reset_callback(void *data)
000000  2101              MOVS     r1,#1
;;;441    {
;;;442        s_phone_reset_flag = true;
000002  4a01              LDR      r2,|L9.8|
000004  7011              STRB     r1,[r2,#0]
;;;443        //app_tp_s_write(phone_reg_const_data[0].write_back, phone_reg_const_data[0].write_back_size);    ///////S8 s8p
;;;444    
;;;445    #if PHONE_SLAVE_TRANSFER_SPI
;;;446        hal_gpio_set_output_data(IO_PAD_AP_INT, IO_LVL_LOW);
;;;447    #endif
;;;448        //TAU_LOGD("app_tp_reset_callback\n");
;;;449    }
000006  4770              BX       lr
;;;450    
                          ENDP

                  |L9.8|
                          DCD      s_phone_reset_flag

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

                  app_tp_s_read PROC
;;;367    **************************************************************************/
;;;368    void app_tp_s_read(i2c_index_e index, void *rxBuffer, size_t data_size)
000000  b570              PUSH     {r4-r6,lr}
;;;369    {
000002  4604              MOV      r4,r0
000004  460d              MOV      r5,r1
000006  4616              MOV      r6,r2
;;;370    #if PHONE_SLAVE_TRANSFER_I2C
;;;371        hal_i2cs_update_rx_buffer(index, rxBuffer, data_size);
000008  4632              MOV      r2,r6
00000a  4629              MOV      r1,r5
00000c  4620              MOV      r0,r4
00000e  f7fffffe          BL       hal_i2cs_update_rx_buffer
;;;372    #endif
;;;373    }
000012  bd70              POP      {r4-r6,pc}
;;;374    
                          ENDP


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

                  app_tp_s_write PROC
;;;348    **************************************************************************/
;;;349    void app_tp_s_write(i2c_index_e index, const uint8_t *txbuffer, size_t buffer_size)
000000  b570              PUSH     {r4-r6,lr}
;;;350    {
000002  4604              MOV      r4,r0
000004  460d              MOV      r5,r1
000006  4616              MOV      r6,r2
;;;351    #if PHONE_SLAVE_TRANSFER_I2C
;;;352        hal_i2cs_update_tx_buffer(index, txbuffer, buffer_size, true);
000008  2301              MOVS     r3,#1
00000a  4632              MOV      r2,r6
00000c  4629              MOV      r1,r5
00000e  4620              MOV      r0,r4
000010  f7fffffe          BL       hal_i2cs_update_tx_buffer
;;;353    #elif PHONE_SLAVE_TRANSFER_SPI
;;;354        hal_spis_update_rx_buffer(s_phone_read_buffer, BUFFER_SIZE_MAX);
;;;355        hal_spis_update_tx_buffer(txbuffer, buffer_size, true);
;;;356        app_tp_write_other_operations(txbuffer, buffer_size);
;;;357    #endif
;;;358    }
000014  bd70              POP      {r4-r6,pc}
;;;359    
                          ENDP


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

                  app_tp_screen_init PROC
;;;121    **************************************************************************/
;;;122    void app_tp_screen_init(void)
000000  b510              PUSH     {r4,lr}
;;;123    {
;;;124        hal_gpio_init_output(g_screen_input_rst_pad, IO_LVL_HIGH);
000002  2101              MOVS     r1,#1
000004  480c              LDR      r0,|L12.56|
000006  7800              LDRB     r0,[r0,#0]  ; g_screen_input_rst_pad
000008  f7fffffe          BL       hal_gpio_init_output
;;;125        delayUs(200);
00000c  20c8              MOVS     r0,#0xc8
00000e  f7fffffe          BL       delayUs
;;;126        hal_gpio_set_output_data(g_screen_input_rst_pad, IO_LVL_LOW);
000012  2100              MOVS     r1,#0
000014  4808              LDR      r0,|L12.56|
000016  7800              LDRB     r0,[r0,#0]  ; g_screen_input_rst_pad
000018  f7fffffe          BL       hal_gpio_set_output_data
;;;127        delayUs(200);
00001c  20c8              MOVS     r0,#0xc8
00001e  f7fffffe          BL       delayUs
;;;128        hal_gpio_set_output_data(g_screen_input_rst_pad, IO_LVL_HIGH);
000022  2101              MOVS     r1,#1
000024  4804              LDR      r0,|L12.56|
000026  7800              LDRB     r0,[r0,#0]  ; g_screen_input_rst_pad
000028  f7fffffe          BL       hal_gpio_set_output_data
;;;129        delayUs(400);
00002c  20ff              MOVS     r0,#0xff
00002e  3091              ADDS     r0,r0,#0x91
000030  f7fffffe          BL       delayUs
;;;130    }
000034  bd10              POP      {r4,pc}
;;;131    
                          ENDP

000036  0000              DCW      0x0000
                  |L12.56|
                          DCD      g_screen_input_rst_pad

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

                  app_tp_screen_int_callback PROC
;;;51     **************************************************************************/
;;;52     static void app_tp_screen_int_callback(void *data)
000000  2101              MOVS     r1,#1
;;;53     {
;;;54         s_screen_int_flag = true;
000002  4a01              LDR      r2,|L13.8|
000004  7011              STRB     r1,[r2,#0]
;;;55     }
000006  4770              BX       lr
;;;56     
                          ENDP

                  |L13.8|
                          DCD      s_screen_int_flag

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

                  app_tp_screen_int_init PROC
;;;79     **************************************************************************/
;;;80     static void app_tp_screen_int_init(void)
000000  b510              PUSH     {r4,lr}
;;;81     {
;;;82         hal_gpio_ctrl_eint(g_screen_input_int_pad, false);                      // 1.关闭中断
000002  2100              MOVS     r1,#0
000004  480c              LDR      r0,|L14.56|
000006  7800              LDRB     r0,[r0,#0]  ; g_screen_input_int_pad
000008  f7fffffe          BL       hal_gpio_ctrl_eint
;;;83     #if SCREEN_INT_LOW_DEFAULT
;;;84         hal_gpio_set_pull_state(g_screen_input_int_pad, false, true);         // 2.配置下拉
;;;85         hal_gpio_init_eint(g_screen_input_int_pad, DETECT_RISING_EDGE);           // 3.中断初始化,INT 上升沿触发中断
;;;86     #else
;;;87         hal_gpio_set_pull_state(g_screen_input_int_pad, true, false);         // 2.配置上拉
00000c  2200              MOVS     r2,#0
00000e  2101              MOVS     r1,#1
000010  4809              LDR      r0,|L14.56|
000012  7800              LDRB     r0,[r0,#0]  ; g_screen_input_int_pad
000014  f7fffffe          BL       hal_gpio_set_pull_state
;;;88         hal_gpio_init_eint(g_screen_input_int_pad, DETECT_FALLING_EDGE);          // 3.中断初始化,INT 下降沿触发中断
000018  2103              MOVS     r1,#3
00001a  4807              LDR      r0,|L14.56|
00001c  7800              LDRB     r0,[r0,#0]  ; g_screen_input_int_pad
00001e  f7fffffe          BL       hal_gpio_init_eint
;;;89     #endif
;;;90         hal_gpio_reg_eint_cb(g_screen_input_int_pad, app_tp_screen_int_callback); // 4.注册回调
000022  4906              LDR      r1,|L14.60|
000024  4804              LDR      r0,|L14.56|
000026  7800              LDRB     r0,[r0,#0]  ; g_screen_input_int_pad
000028  f7fffffe          BL       hal_gpio_reg_eint_cb
;;;91         hal_gpio_ctrl_eint(g_screen_input_int_pad, true);                       // 5.使能中断
00002c  2101              MOVS     r1,#1
00002e  4802              LDR      r0,|L14.56|
000030  7800              LDRB     r0,[r0,#0]  ; g_screen_input_int_pad
000032  f7fffffe          BL       hal_gpio_ctrl_eint
;;;92     }
000036  bd10              POP      {r4,pc}
;;;93     
                          ENDP

                  |L14.56|
                          DCD      g_screen_input_int_pad
                  |L14.60|
                          DCD      app_tp_screen_int_callback

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

                  app_tp_screen_int_lvl_low PROC
;;;63     **************************************************************************/
;;;64     static bool app_tp_screen_int_lvl_low(void)
000000  b510              PUSH     {r4,lr}
;;;65     {
;;;66     #if SCREEN_INT_LOW_DEFAULT
;;;67         return hal_gpio_get_input_data(g_screen_input_int_pad);     //INT 为高电平时，说明还有报点数据没读出
;;;68     #else
;;;69         return !hal_gpio_get_input_data(g_screen_input_int_pad);    //INT 为低电平时，说明还有报点数据没读出
000002  4805              LDR      r0,|L15.24|
000004  7800              LDRB     r0,[r0,#0]  ; g_screen_input_int_pad
000006  f7fffffe          BL       hal_gpio_get_input_data
00000a  2800              CMP      r0,#0
00000c  d101              BNE      |L15.18|
00000e  2001              MOVS     r0,#1
                  |L15.16|
;;;70     #endif
;;;71     }
000010  bd10              POP      {r4,pc}
                  |L15.18|
000012  2000              MOVS     r0,#0                 ;69
000014  e7fc              B        |L15.16|
;;;72     
                          ENDP

000016  0000              DCW      0x0000
                  |L15.24|
                          DCD      g_screen_input_int_pad

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

                  app_tp_transfer_phone PROC
;;;604    **************************************************************************/
;;;605    static void app_tp_transfer_phone(i2c_index_e index, size_t recieve_num)
000000  b570              PUSH     {r4-r6,lr}
;;;606    {
000002  4605              MOV      r5,r0
000004  460c              MOV      r4,r1
;;;607        /* 数据解析，判断是否需要答复以及答复的buffer指针 */
;;;608        if (recieve_num > 0)
000006  2c00              CMP      r4,#0
000008  d005              BEQ      |L16.22|
;;;609        {
;;;610            app_tp_phone_analysis_data(s_phone_read_buffer, recieve_num, &s_slave_txbuffer, &s_slave_txbuffer_size);
00000a  4b06              LDR      r3,|L16.36|
00000c  4a06              LDR      r2,|L16.40|
00000e  4621              MOV      r1,r4
000010  4806              LDR      r0,|L16.44|
000012  f7fffffe          BL       app_tp_phone_analysis_data
                  |L16.22|
;;;611        }
;;;612    
;;;613        app_tp_s_read(index, s_phone_read_buffer, BUFFER_SIZE_MAX);
000016  22fa              MOVS     r2,#0xfa
000018  4904              LDR      r1,|L16.44|
00001a  4628              MOV      r0,r5
00001c  f7fffffe          BL       app_tp_s_read
;;;614    }
000020  bd70              POP      {r4-r6,pc}
;;;615    
                          ENDP

000022  0000              DCW      0x0000
                  |L16.36|
                          DCD      s_slave_txbuffer_size
                  |L16.40|
                          DCD      s_slave_txbuffer
                  |L16.44|
                          DCD      s_phone_read_buffer

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

                  app_tp_transfer_screen_const PROC
;;;457    **************************************************************************/
;;;458    static void app_tp_transfer_screen_const(void)
000000  b510              PUSH     {r4,lr}
;;;459    {
;;;460        static bool    screen_const_transfer_buffer_ready = true;            //发送 buffer 是否已准备好
;;;461    
;;;462        /**** 1. 判断当前状态通信已结束, 并且开机初始化流程还未走完****/
;;;463        if (app_tp_m_transfer_complate() && (s_screen_const_transfer_count < screen_reg_start_data_size))
000002  f7fffffe          BL       app_tp_m_transfer_complate
000006  2800              CMP      r0,#0
000008  d06b              BEQ      |L17.226|
00000a  4836              LDR      r0,|L17.228|
00000c  7800              LDRB     r0,[r0,#0]  ; s_screen_const_transfer_count
00000e  4936              LDR      r1,|L17.232|
000010  7809              LDRB     r1,[r1,#0]  ; screen_reg_start_data_size
000012  4288              CMP      r0,r1
000014  da65              BGE      |L17.226|
;;;464        {
;;;465            if (s_spim_write)                                                //SPI 写数据后需要把接收FIFO的数据读出，不然会影响下一次读取
000016  4835              LDR      r0,|L17.236|
000018  7800              LDRB     r0,[r0,#0]  ; s_spim_write
00001a  2800              CMP      r0,#0
00001c  d004              BEQ      |L17.40|
;;;466            {
;;;467                hal_spim_flush();
00001e  f7fffffe          BL       hal_spim_flush
;;;468                s_spim_write = false;
000022  2000              MOVS     r0,#0
000024  4931              LDR      r1,|L17.236|
000026  7008              STRB     r0,[r1,#0]
                  |L17.40|
;;;469            }
;;;470    
;;;471            /**** 2. 发送或读取从机数据 ****/
;;;472            if (screen_const_transfer_buffer_ready)
000028  4831              LDR      r0,|L17.240|
00002a  7800              LDRB     r0,[r0,#0]  ; screen_const_transfer_buffer_ready
00002c  2800              CMP      r0,#0
00002e  d03e              BEQ      |L17.174|
;;;473            {
;;;474                screen_const_transfer_buffer_ready = false;
000030  2000              MOVS     r0,#0
000032  492f              LDR      r1,|L17.240|
000034  7008              STRB     r0,[r1,#0]
;;;475                if (screen_reg_start_data[s_screen_const_transfer_count].buffer)
000036  482b              LDR      r0,|L17.228|
000038  7800              LDRB     r0,[r0,#0]  ; s_screen_const_transfer_count
00003a  2114              MOVS     r1,#0x14
00003c  4348              MULS     r0,r1,r0
00003e  492d              LDR      r1,|L17.244|
000040  1840              ADDS     r0,r0,r1
000042  6840              LDR      r0,[r0,#4]
000044  2800              CMP      r0,#0
000046  d04c              BEQ      |L17.226|
;;;476                {
;;;477                    if (!screen_reg_start_data[s_screen_const_transfer_count].read_flag)     //当前通信不需要读回，直接写
000048  4826              LDR      r0,|L17.228|
00004a  7800              LDRB     r0,[r0,#0]  ; s_screen_const_transfer_count
00004c  2114              MOVS     r1,#0x14
00004e  4348              MULS     r0,r1,r0
000050  4928              LDR      r1,|L17.244|
000052  1840              ADDS     r0,r0,r1
000054  7c00              LDRB     r0,[r0,#0x10]
000056  2800              CMP      r0,#0
000058  d110              BNE      |L17.124|
;;;478                    {
;;;479                        app_tp_m_write(screen_reg_start_data[s_screen_const_transfer_count].buffer, screen_reg_start_data[s_screen_const_transfer_count].txbuffer_size);
00005a  4a22              LDR      r2,|L17.228|
00005c  7812              LDRB     r2,[r2,#0]  ; s_screen_const_transfer_count
00005e  2314              MOVS     r3,#0x14
000060  435a              MULS     r2,r3,r2
000062  460b              MOV      r3,r1
000064  18d2              ADDS     r2,r2,r3
000066  6891              LDR      r1,[r2,#8]
000068  4a1e              LDR      r2,|L17.228|
00006a  7812              LDRB     r2,[r2,#0]  ; s_screen_const_transfer_count
00006c  2314              MOVS     r3,#0x14
00006e  435a              MULS     r2,r3,r2
000070  4b20              LDR      r3,|L17.244|
000072  18d2              ADDS     r2,r2,r3
000074  6850              LDR      r0,[r2,#4]
000076  f7fffffe          BL       app_tp_m_write
00007a  e032              B        |L17.226|
                  |L17.124|
;;;480                    }
;;;481                    else                                                             //当前通信需要读回，先写再读
;;;482                    {
;;;483                        app_tp_m_read(screen_reg_start_data[s_screen_const_transfer_count].buffer, screen_reg_start_data[s_screen_const_transfer_count].txbuffer_size, \
00007c  4a19              LDR      r2,|L17.228|
00007e  7812              LDRB     r2,[r2,#0]  ; s_screen_const_transfer_count
000080  2414              MOVS     r4,#0x14
000082  4362              MULS     r2,r4,r2
000084  4c1b              LDR      r4,|L17.244|
000086  1912              ADDS     r2,r2,r4
000088  68d3              LDR      r3,[r2,#0xc]
00008a  4a16              LDR      r2,|L17.228|
00008c  7812              LDRB     r2,[r2,#0]  ; s_screen_const_transfer_count
00008e  2414              MOVS     r4,#0x14
000090  4362              MULS     r2,r4,r2
000092  4c18              LDR      r4,|L17.244|
000094  1912              ADDS     r2,r2,r4
000096  6891              LDR      r1,[r2,#8]
000098  4a12              LDR      r2,|L17.228|
00009a  7812              LDRB     r2,[r2,#0]  ; s_screen_const_transfer_count
00009c  2414              MOVS     r4,#0x14
00009e  4362              MULS     r2,r4,r2
0000a0  4c14              LDR      r4,|L17.244|
0000a2  1912              ADDS     r2,r2,r4
0000a4  6850              LDR      r0,[r2,#4]
0000a6  4a14              LDR      r2,|L17.248|
0000a8  f7fffffe          BL       app_tp_m_read
0000ac  e019              B        |L17.226|
                  |L17.174|
;;;484                                      s_screen_read_buffer, screen_reg_start_data[s_screen_const_transfer_count].rxbuffer_size);
;;;485                    }
;;;486                }
;;;487            }
;;;488            /**** 3. 解析本次通信数据，并准备下一次通信的buffer ****/
;;;489            else
;;;490            {
;;;491                screen_const_transfer_buffer_ready = true;
0000ae  2001              MOVS     r0,#1
0000b0  490f              LDR      r1,|L17.240|
0000b2  7008              STRB     r0,[r1,#0]
;;;492                s_screen_const_transfer_count = app_tp_screen_analysis_const(s_screen_const_transfer_count, s_screen_read_buffer, \
0000b4  480b              LDR      r0,|L17.228|
0000b6  7800              LDRB     r0,[r0,#0]  ; s_screen_const_transfer_count
0000b8  2114              MOVS     r1,#0x14
0000ba  4348              MULS     r0,r1,r0
0000bc  490d              LDR      r1,|L17.244|
0000be  1840              ADDS     r0,r0,r1
0000c0  490d              LDR      r1,|L17.248|
0000c2  68c2              LDR      r2,[r0,#0xc]
0000c4  4807              LDR      r0,|L17.228|
0000c6  7800              LDRB     r0,[r0,#0]  ; s_screen_const_transfer_count
0000c8  f7fffffe          BL       app_tp_screen_analysis_const
0000cc  4905              LDR      r1,|L17.228|
0000ce  7008              STRB     r0,[r1,#0]
;;;493                                                screen_reg_start_data[s_screen_const_transfer_count].rxbuffer_size);
;;;494    
;;;495                if (s_screen_const_transfer_count >= screen_reg_start_data_size)
0000d0  4608              MOV      r0,r1
0000d2  7800              LDRB     r0,[r0,#0]  ; s_screen_const_transfer_count
0000d4  4904              LDR      r1,|L17.232|
0000d6  7809              LDRB     r1,[r1,#0]  ; screen_reg_start_data_size
0000d8  4288              CMP      r0,r1
0000da  db02              BLT      |L17.226|
;;;496                {
;;;497                    s_screen_init_complate = true;
0000dc  2001              MOVS     r0,#1
0000de  4907              LDR      r1,|L17.252|
0000e0  7008              STRB     r0,[r1,#0]
                  |L17.226|
;;;498                }
;;;499            }
;;;500        }
;;;501    }
0000e2  bd10              POP      {r4,pc}
;;;502    
                          ENDP

                  |L17.228|
                          DCD      s_screen_const_transfer_count
                  |L17.232|
                          DCD      screen_reg_start_data_size
                  |L17.236|
                          DCD      s_spim_write
                  |L17.240|
                          DCD      screen_const_transfer_buffer_ready
                  |L17.244|
                          DCD      screen_reg_start_data
                  |L17.248|
                          DCD      s_screen_read_buffer
                  |L17.252|
                          DCD      s_screen_init_complate

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

                  app_tp_transfer_screen_int PROC
;;;524    **************************************************************************/
;;;525    void app_tp_transfer_screen_int(void)
000000  b538              PUSH     {r3-r5,lr}
;;;526    {
;;;527        bool screen_gpio_int = false;
000002  2400              MOVS     r4,#0
;;;528        static uint8_t screen_int_transfer_count = 0;            //记录当前通信到哪一步
;;;529        static bool    screen_int_transfer_buffer_ready = true;  //发送 buffer 是否已准备好
;;;530        volatile bool init_gpio = false;
000004  2000              MOVS     r0,#0
000006  9000              STR      r0,[sp,#0]
;;;531        static bool Release_all_fingers = false;
;;;532        static volatile uint32_t current_time = 0;
;;;533        static volatile uint32_t back_time = 0;
;;;534        if (!s_screen_init_complate)                             //TP 初始化还未完成，则先进行初始化操作
000008  484d              LDR      r0,|L18.320|
00000a  7800              LDRB     r0,[r0,#0]  ; s_screen_init_complate
00000c  2800              CMP      r0,#0
00000e  d102              BNE      |L18.22|
;;;535        {
;;;536            app_tp_transfer_screen_const();
000010  f7fffffe          BL       app_tp_transfer_screen_const
                  |L18.20|
;;;537            return;
;;;538        }
;;;539    
;;;540        /**** 1. 判断 screen 是否发出中断信号 ****/
;;;541        // s_screen_int_flag:           中断信号标志位
;;;542        // app_tp_screen_int_lvl_low :  SPI 长时间通信时，偶尔会出现cs拉高导致通信异常卡死，该标志位用于解决卡死的问题
;;;543        init_gpio = app_tp_screen_int_lvl_low();
;;;544        screen_gpio_int = (s_screen_int_flag || init_gpio);
;;;545        if (((screen_gpio_int) || (s_screen_int_transfer_status)) && app_tp_m_transfer_complate()) //判断当前不处于通信状态，并且准备通信
;;;546        {
;;;547            s_screen_int_flag = false;
;;;548            if (s_spim_write)                                    //SPI 写数据后需要把接收FIFO的数据读出，不然会影响下一次读取
;;;549            {
;;;550                hal_spim_flush();
;;;551                s_spim_write = false;
;;;552            }
;;;553    
;;;554            /**** 2. 发送或读取从机数据 ****/
;;;555            if (screen_int_transfer_buffer_ready)
;;;556            {
;;;557                screen_int_transfer_buffer_ready = false;
;;;558                s_screen_int_transfer_status = true;
;;;559                if (!screen_reg_int_data[screen_int_transfer_count].read_flag)  //当前通信不需要读回，直接写
;;;560                {
;;;561                    app_tp_m_write(screen_reg_int_data[screen_int_transfer_count].buffer, screen_reg_int_data[screen_int_transfer_count].txbuffer_size);
;;;562                }
;;;563                else                                                            //当前通信需要读回，先写再读
;;;564                {
;;;565                    app_tp_m_read(screen_reg_int_data[screen_int_transfer_count].buffer, screen_reg_int_data[screen_int_transfer_count].txbuffer_size, \
;;;566                                  s_screen_read_buffer, screen_reg_int_data[screen_int_transfer_count].rxbuffer_size);
;;;567                }
;;;568            }
;;;569            /**** 3. 解析本次通信数据，并准备下一次通信的buffer ****/
;;;570            else
;;;571            {
;;;572                screen_int_transfer_buffer_ready = true;
;;;573                screen_int_transfer_count = app_tp_screen_analysis_int(screen_int_transfer_count, s_screen_read_buffer, \
;;;574                                            screen_reg_int_data[screen_int_transfer_count].rxbuffer_size);
;;;575                Release_all_fingers = true;
;;;576                back_time = hal_system_get_tick();
;;;577                if (screen_int_transfer_count >= screen_reg_int_data_size)       //解析需要等最后一次通信结束，最后一次数据解析后，停止通信
;;;578                {
;;;579                    screen_int_transfer_count = 0;
;;;580                    s_screen_int_transfer_status = false;
;;;581                    return;
;;;582                }
;;;583            }
;;;584        }
;;;585    #if _DEMO_S8_EN
;;;586        else
;;;587        {
;;;588            current_time = hal_system_get_tick();
;;;589            if (((current_time - back_time) > 800) && Release_all_fingers)
;;;590            {
;;;591                app_tp_write_other_operations(s_screen_read_buffer, 8);
;;;592                Release_all_fingers = false;
;;;593            }
;;;594        }
;;;595    #endif
;;;596    }
000014  bd38              POP      {r3-r5,pc}
                  |L18.22|
000016  f7fffffe          BL       app_tp_screen_int_lvl_low
00001a  9000              STR      r0,[sp,#0]            ;543
00001c  4849              LDR      r0,|L18.324|
00001e  7800              LDRB     r0,[r0,#0]            ;544  ; s_screen_int_flag
000020  2800              CMP      r0,#0                 ;544
000022  d103              BNE      |L18.44|
000024  4668              MOV      r0,sp                 ;544
000026  7800              LDRB     r0,[r0,#0]            ;544
000028  2800              CMP      r0,#0                 ;544
00002a  d001              BEQ      |L18.48|
                  |L18.44|
00002c  2001              MOVS     r0,#1                 ;544
00002e  e000              B        |L18.50|
                  |L18.48|
000030  2000              MOVS     r0,#0                 ;544
                  |L18.50|
000032  4604              MOV      r4,r0                 ;544
000034  2c00              CMP      r4,#0                 ;545
000036  d103              BNE      |L18.64|
000038  4843              LDR      r0,|L18.328|
00003a  7800              LDRB     r0,[r0,#0]            ;545  ; s_screen_int_transfer_status
00003c  2800              CMP      r0,#0                 ;545
00003e  d064              BEQ      |L18.266|
                  |L18.64|
000040  f7fffffe          BL       app_tp_m_transfer_complate
000044  2800              CMP      r0,#0                 ;545
000046  d060              BEQ      |L18.266|
000048  2000              MOVS     r0,#0                 ;547
00004a  493e              LDR      r1,|L18.324|
00004c  7008              STRB     r0,[r1,#0]            ;547
00004e  483f              LDR      r0,|L18.332|
000050  7800              LDRB     r0,[r0,#0]            ;548  ; s_spim_write
000052  2800              CMP      r0,#0                 ;548
000054  d004              BEQ      |L18.96|
000056  f7fffffe          BL       hal_spim_flush
00005a  2000              MOVS     r0,#0                 ;551
00005c  493b              LDR      r1,|L18.332|
00005e  7008              STRB     r0,[r1,#0]            ;551
                  |L18.96|
000060  483b              LDR      r0,|L18.336|
000062  7800              LDRB     r0,[r0,#0]            ;555  ; screen_int_transfer_buffer_ready
000064  2800              CMP      r0,#0                 ;555
000066  d02d              BEQ      |L18.196|
000068  2000              MOVS     r0,#0                 ;557
00006a  4939              LDR      r1,|L18.336|
00006c  7008              STRB     r0,[r1,#0]            ;557
00006e  2001              MOVS     r0,#1                 ;558
000070  4935              LDR      r1,|L18.328|
000072  7008              STRB     r0,[r1,#0]            ;558
000074  4837              LDR      r0,|L18.340|
000076  7800              LDRB     r0,[r0,#0]            ;559  ; screen_int_transfer_count
000078  0100              LSLS     r0,r0,#4              ;559
00007a  4937              LDR      r1,|L18.344|
00007c  1840              ADDS     r0,r0,r1              ;559
00007e  7b00              LDRB     r0,[r0,#0xc]          ;559
000080  2800              CMP      r0,#0                 ;559
000082  d10c              BNE      |L18.158|
000084  4a33              LDR      r2,|L18.340|
000086  7812              LDRB     r2,[r2,#0]            ;561  ; screen_int_transfer_count
000088  0112              LSLS     r2,r2,#4              ;561
00008a  460b              MOV      r3,r1                 ;561
00008c  18d2              ADDS     r2,r2,r3              ;561
00008e  6851              LDR      r1,[r2,#4]            ;561
000090  4a30              LDR      r2,|L18.340|
000092  7812              LDRB     r2,[r2,#0]            ;561  ; screen_int_transfer_count
000094  0112              LSLS     r2,r2,#4              ;561
000096  5898              LDR      r0,[r3,r2]            ;561
000098  f7fffffe          BL       app_tp_m_write
00009c  e04d              B        |L18.314|
                  |L18.158|
00009e  4a2d              LDR      r2,|L18.340|
0000a0  7812              LDRB     r2,[r2,#0]            ;565  ; screen_int_transfer_count
0000a2  0112              LSLS     r2,r2,#4              ;565
0000a4  4d2c              LDR      r5,|L18.344|
0000a6  1952              ADDS     r2,r2,r5              ;565
0000a8  6893              LDR      r3,[r2,#8]            ;565
0000aa  4a2a              LDR      r2,|L18.340|
0000ac  7812              LDRB     r2,[r2,#0]            ;565  ; screen_int_transfer_count
0000ae  0112              LSLS     r2,r2,#4              ;565
0000b0  1952              ADDS     r2,r2,r5              ;565
0000b2  6851              LDR      r1,[r2,#4]            ;565
0000b4  4a27              LDR      r2,|L18.340|
0000b6  7812              LDRB     r2,[r2,#0]            ;565  ; screen_int_transfer_count
0000b8  0112              LSLS     r2,r2,#4              ;565
0000ba  58a8              LDR      r0,[r5,r2]            ;565
0000bc  4a27              LDR      r2,|L18.348|
0000be  f7fffffe          BL       app_tp_m_read
0000c2  e03a              B        |L18.314|
                  |L18.196|
0000c4  2001              MOVS     r0,#1                 ;572
0000c6  4922              LDR      r1,|L18.336|
0000c8  7008              STRB     r0,[r1,#0]            ;572
0000ca  4822              LDR      r0,|L18.340|
0000cc  7800              LDRB     r0,[r0,#0]            ;573  ; screen_int_transfer_count
0000ce  0100              LSLS     r0,r0,#4              ;573
0000d0  4921              LDR      r1,|L18.344|
0000d2  1840              ADDS     r0,r0,r1              ;573
0000d4  4921              LDR      r1,|L18.348|
0000d6  6882              LDR      r2,[r0,#8]            ;573
0000d8  481e              LDR      r0,|L18.340|
0000da  7800              LDRB     r0,[r0,#0]            ;573  ; screen_int_transfer_count
0000dc  f7fffffe          BL       app_tp_screen_analysis_int
0000e0  491c              LDR      r1,|L18.340|
0000e2  7008              STRB     r0,[r1,#0]            ;573
0000e4  2001              MOVS     r0,#1                 ;575
0000e6  491e              LDR      r1,|L18.352|
0000e8  7008              STRB     r0,[r1,#0]            ;575
0000ea  f7fffffe          BL       hal_system_get_tick
0000ee  491d              LDR      r1,|L18.356|
0000f0  6008              STR      r0,[r1,#0]            ;576  ; back_time
0000f2  4818              LDR      r0,|L18.340|
0000f4  7800              LDRB     r0,[r0,#0]            ;577  ; screen_int_transfer_count
0000f6  491c              LDR      r1,|L18.360|
0000f8  7809              LDRB     r1,[r1,#0]            ;577  ; screen_reg_int_data_size
0000fa  4288              CMP      r0,r1                 ;577
0000fc  db1d              BLT      |L18.314|
0000fe  2000              MOVS     r0,#0                 ;579
000100  4914              LDR      r1,|L18.340|
000102  7008              STRB     r0,[r1,#0]            ;579
000104  4910              LDR      r1,|L18.328|
000106  7008              STRB     r0,[r1,#0]            ;580
000108  e784              B        |L18.20|
                  |L18.266|
00010a  f7fffffe          BL       hal_system_get_tick
00010e  4917              LDR      r1,|L18.364|
000110  6008              STR      r0,[r1,#0]            ;588  ; current_time
000112  4608              MOV      r0,r1                 ;589
000114  6800              LDR      r0,[r0,#0]            ;589  ; current_time
000116  4913              LDR      r1,|L18.356|
000118  6809              LDR      r1,[r1,#0]            ;589  ; back_time
00011a  1a40              SUBS     r0,r0,r1              ;589
00011c  2119              MOVS     r1,#0x19              ;589
00011e  0149              LSLS     r1,r1,#5              ;589
000120  4288              CMP      r0,r1                 ;589
000122  d90a              BLS      |L18.314|
000124  480e              LDR      r0,|L18.352|
000126  7800              LDRB     r0,[r0,#0]            ;589  ; Release_all_fingers
000128  2800              CMP      r0,#0                 ;589
00012a  d006              BEQ      |L18.314|
00012c  2108              MOVS     r1,#8                 ;591
00012e  480b              LDR      r0,|L18.348|
000130  f7fffffe          BL       app_tp_write_other_operations
000134  2000              MOVS     r0,#0                 ;592
000136  490a              LDR      r1,|L18.352|
000138  7008              STRB     r0,[r1,#0]            ;592
                  |L18.314|
00013a  bf00              NOP      
00013c  e76a              B        |L18.20|
;;;597    
                          ENDP

00013e  0000              DCW      0x0000
                  |L18.320|
                          DCD      s_screen_init_complate
                  |L18.324|
                          DCD      s_screen_int_flag
                  |L18.328|
                          DCD      s_screen_int_transfer_status
                  |L18.332|
                          DCD      s_spim_write
                  |L18.336|
                          DCD      screen_int_transfer_buffer_ready
                  |L18.340|
                          DCD      screen_int_transfer_count
                  |L18.344|
                          DCD      screen_reg_int_data
                  |L18.348|
                          DCD      s_screen_read_buffer
                  |L18.352|
                          DCD      Release_all_fingers
                  |L18.356|
                          DCD      back_time
                  |L18.360|
                          DCD      screen_reg_int_data_size
                  |L18.364|
                          DCD      current_time

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

                  app_tp_transfer_screen_start PROC
;;;509    **************************************************************************/
;;;510    void app_tp_transfer_screen_start(void)
000000  b510              PUSH     {r4,lr}
;;;511    {
;;;512        s_screen_init_complate = false;
000002  2000              MOVS     r0,#0
000004  4904              LDR      r1,|L19.24|
000006  7008              STRB     r0,[r1,#0]
;;;513        s_screen_const_transfer_count = 0;
000008  4904              LDR      r1,|L19.28|
00000a  7008              STRB     r0,[r1,#0]
;;;514        app_tp_screen_init();
00000c  f7fffffe          BL       app_tp_screen_init
;;;515        app_tp_transfer_screen_const();
000010  f7fffffe          BL       app_tp_transfer_screen_const
;;;516    }
000014  bd10              POP      {r4,pc}
;;;517    
                          ENDP

000016  0000              DCW      0x0000
                  |L19.24|
                          DCD      s_screen_init_complate
                  |L19.28|
                          DCD      s_screen_const_transfer_count

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

                  phone_i2cs_io_init PROC
;;;159    **************************************************************************/
;;;160    static void phone_i2cs_io_init(void)
000000  b51c              PUSH     {r2-r4,lr}
;;;161    {
;;;162        io_pad_attr_t attrs[] =
000002  4905              LDR      r1,|L20.24|
000004  c903              LDM      r1,{r0,r1}
000006  9101              STR      r1,[sp,#4]
000008  9000              STR      r0,[sp,#0]
;;;163        {
;;;164            {IO_PAD_AP_SPIS_CLK, PIN32_MODE_I2C02_SCL, IO_IOE_NONE, IO_LVL_HIGH},
;;;165            {IO_PAD_AP_SPIS_CSN, PIN31_MODE_I2C02_SDA, IO_IOE_NONE, IO_LVL_HIGH}
;;;166        };
;;;167        uint8_t size = sizeof(attrs) / sizeof(io_pad_attr_t);
00000a  2402              MOVS     r4,#2
;;;168        hal_gpio_config_pad(attrs, size);
00000c  4621              MOV      r1,r4
00000e  4668              MOV      r0,sp
000010  f7fffffe          BL       hal_gpio_config_pad
;;;169    }
000014  bd1c              POP      {r2-r4,pc}
;;;170    #endif
                          ENDP

000016  0000              DCW      0x0000
                  |L20.24|
                          DCD      ||.constdata||

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

                  screen_spim_io_init PROC
;;;180    **************************************************************************/
;;;181    static void screen_spim_io_init(void)
000000  b51f              PUSH     {r0-r4,lr}
;;;182    {
;;;183        io_pad_attr_t attrs[] =
000002  4b05              LDR      r3,|L21.24|
000004  cb0f              LDM      r3,{r0-r3}
000006  466c              MOV      r4,sp
000008  c40f              STM      r4!,{r0-r3}
;;;184        {
;;;185            {IO_PAD_TD_SPIM_CLK, PIN5_MODE_SPIM_SCLK, IO_IOE_NONE, IO_LVL_HIGH},
;;;186            {IO_PAD_TD_SPIM_CSN, PIN6_MODE_SPIM_CSN, IO_IOE_NONE, IO_LVL_HIGH},
;;;187            {IO_PAD_TD_SPIM_MISO, PIN7_MODE_SPIM_MISO, IO_IOE_NONE, IO_LVL_HIGH},
;;;188            {IO_PAD_TD_SPIM_MOSI, PIN4_MODE_SPIM_MOSI, IO_IOE_NONE, IO_LVL_HIGH}
;;;189        };
;;;190        uint8_t size = sizeof(attrs) / sizeof(io_pad_attr_t);
00000a  2404              MOVS     r4,#4
;;;191        hal_gpio_config_pad(attrs, size);
00000c  4621              MOV      r1,r4
00000e  4668              MOV      r0,sp
000010  f7fffffe          BL       hal_gpio_config_pad
;;;192    }
000014  bd1f              POP      {r0-r4,pc}
;;;193    #endif
                          ENDP

000016  0000              DCW      0x0000
                  |L21.24|
                          DCD      ||.constdata||+0x8

                          AREA ||.bss||, DATA, NOINIT, ALIGN=0

                  s_screen_read_buffer
                          %        250
                  s_phone_read_buffer
                          %        250

                          AREA ||.constdata||, DATA, READONLY, ALIGN=2

000000  09030201          DCB      0x09,0x03,0x02,0x01
000004  0a030201          DCB      0x0a,0x03,0x02,0x01
000008  13000201          DCB      0x13,0x00,0x02,0x01
00000c  14000201          DCB      0x14,0x00,0x02,0x01
000010  05000201          DCB      0x05,0x00,0x02,0x01
000014  06000201          DCB      0x06,0x00,0x02,0x01

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

                  s_slave_txbuffer
                          DCD      0x00000000
                  s_slave_txbuffer_size
                          DCD      0x00000000
                  s_spim_write
000008  00                DCB      0x00
                  s_screen_int_flag
000009  00                DCB      0x00
                  s_phone_reset_flag
00000a  00                DCB      0x00
                  s_screen_int_transfer_status
00000b  00                DCB      0x00
                  s_screen_init_complate
00000c  01                DCB      0x01
                  s_screen_const_transfer_count
00000d  ff                DCB      0xff
                  i2cs_transfer
00000e  01                DCB      0x01
                  screen_const_transfer_buffer_ready
00000f  01                DCB      0x01
                  screen_int_transfer_count
000010  00                DCB      0x00
                  screen_int_transfer_buffer_ready
000011  01                DCB      0x01
                  Release_all_fingers
000012  0000              DCB      0x00,0x00
                  current_time
                          DCD      0x00000000
                  back_time
                          DCD      0x00000000

;*** Start embedded assembler ***

#line 1 "..\\..\\src\\app\\touch\\app_tp_transfer.c"
	AREA ||.rev16_text||, CODE
	THUMB
	EXPORT |__asm___17_app_tp_transfer_c_a4d4ce89____REV16|
#line 467 "C:\\Keil_v5\\ARM\\PACK\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\cmsis_armcc.h"
|__asm___17_app_tp_transfer_c_a4d4ce89____REV16| PROC
#line 468

 rev16 r0, r0
 bx lr
	ENDP
	AREA ||.revsh_text||, CODE
	THUMB
	EXPORT |__asm___17_app_tp_transfer_c_a4d4ce89____REVSH|
#line 482
|__asm___17_app_tp_transfer_c_a4d4ce89____REVSH| PROC
#line 483

 revsh r0, r0
 bx lr
	ENDP

;*** End   embedded assembler ***
