⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wdg.lst

📁 本代码已经经过修改
💻 LST
字号:
##############################################################################
#                                                                            #
# IAR ARM ANSI C/C++ Compiler V4.30A/W32 KICKSTART     14/Dec/2005  14:41:50 #
# Copyright 1999-2005 IAR Systems. All rights reserved.                      #
#                                                                            #
#    Cpu mode        =  interwork                                            #
#    Endian          =  little                                               #
#    Stack alignment =  4                                                    #
#    Source file     =  D:\board\FreeRTOSV3.2.3\FreeRTOS\Demo\ARM7_STR71x_IA #
#                       R\Library\wdg.c                                      #
#    Command line    =  D:\board\FreeRTOSV3.2.3\FreeRTOS\Demo\ARM7_STR71x_IA #
#                       R\Library\wdg.c -D _NDEBUG -D STR71X_IAR -lC         #
#                       D:\board\FreeRTOSV3.2.3\FreeRTOS\Demo\ARM7_STR71x_IA #
#                       R\binary\List\ --diag_suppress pe191,pa082 -o        #
#                       D:\board\FreeRTOSV3.2.3\FreeRTOS\Demo\ARM7_STR71x_IA #
#                       R\binary\Obj\ -s9 --no_clustering --cpu_mode thumb   #
#                       --endian little --cpu ARM7TDMI --stack_align 4       #
#                       --interwork -e --require_prototypes --fpu None       #
#                       --dlib_config "C:\Program Files\IAR                  #
#                       Systems\Embedded Workbench 4.0                       #
#                       Kickstart\arm\LIB\dl4tptinl8n.h" -I                  #
#                       D:\board\FreeRTOSV3.2.3\FreeRTOS\Demo\ARM7_STR71x_IA #
#                       R\ -I D:\board\FreeRTOSV3.2.3\FreeRTOS\Demo\ARM7_STR #
#                       71x_IAR\library\include\ -I                          #
#                       D:\board\FreeRTOSV3.2.3\FreeRTOS\Demo\ARM7_STR71x_IA #
#                       R\..\common\include\ -I D:\board\FreeRTOSV3.2.3\Free #
#                       RTOS\Demo\ARM7_STR71x_IAR\..\..\source\include\ -I   #
#                       "C:\Program Files\IAR Systems\Embedded Workbench     #
#                       4.0 Kickstart\arm\INC\"                              #
#    List file       =  D:\board\FreeRTOSV3.2.3\FreeRTOS\Demo\ARM7_STR71x_IA #
#                       R\binary\List\wdg.lst                                #
#    Object file     =  D:\board\FreeRTOSV3.2.3\FreeRTOS\Demo\ARM7_STR71x_IA #
#                       R\binary\Obj\wdg.r79                                 #
#                                                                            #
#                                                                            #
##############################################################################

D:\board\FreeRTOSV3.2.3\FreeRTOS\Demo\ARM7_STR71x_IAR\Library\wdg.c
      1          /******************** (C) COPYRIGHT 2003 STMicroelectronics ********************
      2          * File Name          : WDG.c
      3          * Author             : MCD Application Team
      4          * Date First Issued  : 10/24/2003
      5          * Description        : This file provides all the WDG software functions
      6          ********************************************************************************
      7          * History:
      8          *  30/11/2004 : V2.0
      9          *  14/07/2004 : V1.3
     10          *  01/01/2004 : V1.2
     11          *******************************************************************************
     12           THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH
     13           CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.
     14           AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT
     15           OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
     16           OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION
     17           CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
     18          *******************************************************************************/
     19          
     20          #include "wdg.h"
     21          
     22          #ifndef abs
     23          	#define abs(x) ((x)>0 ? (x) : -(x))
     24          #endif
     25          
     26          /*******************************************************************************
     27          * Function Name  : FindFactors
     28          * Description    : Search for the best (a,b) values that fit n = a*b
     29          *                  with the following constraints: 1<=a<=256, 1<=b<=65536
     30          * Input 1        : n: the number to decompose
     31          * Input/Output 2 : a: a pointer to the first factor
     32          * Input/Output 3 : b: a pointer to the second factor
     33          * Return         : None
     34          *******************************************************************************/

   \                                 In segment CODE, align 4, keep-with-next
     35          static void FindFactors(unsigned long n, unsigned int *a, unsigned long *b)
     36          {
   \                     ??FindFactors:
   \   00000000   F0B5               PUSH        {R4-R7,LR}
   \   00000002   83B0               SUB         SP,#+0xC
   \   00000004   031C               MOV         R3,R0
   \   00000006   0C1C               MOV         R4,R1
   \   00000008   151C               MOV         R5,R2
     37          	unsigned long b0;
     38          	unsigned int a0;
     39          	long err, err_min=n;
   \   0000000A   0090               STR         R0,[SP, #+0]
     40          
     41          	*a = a0 = ((n-1)/65536ul) + 1;
   \   0000000C   401E               SUB         R0,R0,#+0x1
   \   0000000E   020C               LSR         R2,R0,#+0x10
   \   00000010   521C               ADD         R2,R2,#+0x1
   \   00000012   0192               STR         R2,[SP, #+0x4]
   \   00000014   0A60               STR         R2,[R1, #+0]
     42          	*b = b0 = n / *a;
   \   00000016   181C               MOV         R0,R3
   \   00000018   111C               MOV         R1,R2
   \   0000001A   ........           _BLF        ??divu32_t,??rT??divu32_t
   \   0000001E   0291               STR         R1,[SP, #+0x8]
   \   00000020   FF20               MOV         R0,#+0xFF
   \   00000022   801C               ADD         R0,R0,#+0x2        ;; #+0x101
   \   00000024   8242               CMP         R2,R0
   \   00000026   29D2               BCS         ??FindFactors_1
     43          
     44          	for (; *a <= 256; (*a)++)
     45          	{
     46          		*b = n / *a;
   \                     ??FindFactors_2:
   \   00000028   2268               LDR         R2,[R4, #+0]
   \   0000002A   181C               MOV         R0,R3
   \   0000002C   111C               MOV         R1,R2
   \   0000002E   ........           _BLF        ??divu32_t,??rT??divu32_t
     47          		err = (long)*a * (long)*b - (long)n;
   \   00000032   101C               MOV         R0,R2
   \   00000034   4843               MUL         R0,R1
   \   00000036   C01A               SUB         R0,R0,R3
     48          		if (abs(err) > (*a / 2))
   \   00000038   0128               CMP         R0,#+0x1
   \   0000003A   01DB               BLT         ??FindFactors_3
   \   0000003C   061C               MOV         R6,R0
   \   0000003E   00E0               B           ??FindFactors_4
   \                     ??FindFactors_3:
   \   00000040   4642               NEG         R6,R0
   \                     ??FindFactors_4:
   \   00000042   5708               LSR         R7,R2,#+0x1
   \   00000044   B742               CMP         R7,R6
   \   00000046   03D2               BCS         ??FindFactors_5
     49          		{
     50          			(*b)++;
   \   00000048   491C               ADD         R1,R1,#+0x1
     51          			err = (long)*a * (long)*b - (long)n;
   \   0000004A   101C               MOV         R0,R2
   \   0000004C   4843               MUL         R0,R1
   \   0000004E   C01A               SUB         R0,R0,R3
   \                     ??FindFactors_5:
   \   00000050   2960               STR         R1,[R5, #+0]
     52          		}
     53          		if (abs(err) < abs(err_min))
   \   00000052   011C               MOV         R1,R0
   \   00000054   00D5               BPL         ??FindFactors_6
   \   00000056   4942               NEG         R1,R1
   \                     ??FindFactors_6:
   \   00000058   009E               LDR         R6,[SP, #+0]
   \   0000005A   002E               CMP         R6,#+0
   \   0000005C   00D5               BPL         ??FindFactors_7
   \   0000005E   7642               NEG         R6,R6
   \                     ??FindFactors_7:
   \   00000060   B142               CMP         R1,R6
   \   00000062   05DA               BGE         ??FindFactors_8
     54          		{
     55          			err_min = err;
   \   00000064   0090               STR         R0,[SP, #+0]
     56          			a0 = *a;
   \   00000066   0192               STR         R2,[SP, #+0x4]
     57          			b0 = *b;
   \   00000068   2968               LDR         R1,[R5, #+0]
   \   0000006A   0291               STR         R1,[SP, #+0x8]
     58          			if (err == 0) break;
   \   0000006C   0028               CMP         R0,#+0
   \   0000006E   05D0               BEQ         ??FindFactors_1
     59          		}
     60          	}
   \                     ??FindFactors_8:
   \   00000070   521C               ADD         R2,R2,#+0x1
   \   00000072   2260               STR         R2,[R4, #+0]
   \   00000074   FF20               MOV         R0,#+0xFF
   \   00000076   801C               ADD         R0,R0,#+0x2        ;; #+0x101
   \   00000078   8242               CMP         R2,R0
   \   0000007A   D5D3               BCC         ??FindFactors_2
     61          
     62          	*a = a0;
   \                     ??FindFactors_1:
   \   0000007C   0198               LDR         R0,[SP, #+0x4]
   \   0000007E   2060               STR         R0,[R4, #+0]
     63          	*b = b0;
   \   00000080   0298               LDR         R0,[SP, #+0x8]
   \   00000082   2860               STR         R0,[R5, #+0]
     64          }
   \   00000084   03B0               ADD         SP,#+0xC
   \   00000086   F0BC               POP         {R4-R7}
   \   00000088   01BC               POP         {R0}
   \   0000008A   0047               BX          R0                 ;; return
     65          
     66          /*******************************************************************************
     67          * Function Name  : WDG_PeriodValueConfig
     68          * Description    : Set the prescaler and counter reload value
     69          * Input          : Amount of time (us) needed
     70          * Return         : None
     71          *******************************************************************************/

   \                                 In segment CODE, align 4, keep-with-next
     72          void WDG_PeriodValueConfig ( u32 Time )
     73          {
   \                     WDG_PeriodValueConfig:
   \   00000000   10B5               PUSH        {R4,LR}
   \   00000002   82B0               SUB         SP,#+0x8
     74          	unsigned int a;
     75          	unsigned long n, b;
     76          
     77          	n = Time * (RCCU_FrequencyValue(RCCU_PCLK) / 1000000);
   \   00000004   041C               MOV         R4,R0
   \   00000006   0320               MOV         R0,#+0x3
   \   00000008   ........           _BLF        RCCU_FrequencyValue,RCCU_FrequencyValue??rT
   \   0000000C   0A49               LDR         R1,??WDG_PeriodValueConfig_0  ;; 0xf4240
   \   0000000E   ........           _BLF        ??divu32_t,??rT??divu32_t
   \   00000012   201C               MOV         R0,R4
   \   00000014   4843               MUL         R0,R1
     78          	FindFactors(n, &a, &b);
   \   00000016   01AA               ADD         R2,SP,#+0x4
   \   00000018   6946               MOV         R1,SP
   \   0000001A   ........           BL          ??FindFactors
     79              WDG->PR = a - 1;
   \   0000001E   0748               LDR         R0,??WDG_PeriodValueConfig_0+0x4  ;; 0xffff
   \   00000020   0749               LDR         R1,??WDG_PeriodValueConfig_0+0x8  ;; 0xe000e004
   \   00000022   009A               LDR         R2,[SP, #+0]
   \   00000024   1218               ADD         R2,R2,R0
   \   00000026   0A80               STRH        R2,[R1, #+0]
     80              WDG->VR = b - 1;
   \   00000028   0649               LDR         R1,??WDG_PeriodValueConfig_0+0xC  ;; 0xe000e008
   \   0000002A   019A               LDR         R2,[SP, #+0x4]
   \   0000002C   1018               ADD         R0,R2,R0
   \   0000002E   0880               STRH        R0,[R1, #+0]
     81          }
   \   00000030   02B0               ADD         SP,#+0x8
   \   00000032   10BC               POP         {R4}
   \   00000034   01BC               POP         {R0}
   \   00000036   0047               BX          R0                 ;; return
   \                     ??WDG_PeriodValueConfig_0:
   \   00000038   40420F00           DC32        0xf4240
   \   0000003C   FFFF0000           DC32        0xffff
   \   00000040   04E000E0           DC32        0xe000e004
   \   00000044   08E000E0           DC32        0xe000e008
     82          
     83          /******************* (C) COPYRIGHT 2003 STMicroelectronics *****END OF FILE****/

   Maximum stack usage in bytes:

     Function              CSTACK
     --------              ------
     FindFactors              32
     WDG_PeriodValueConfig    16


   Segment part sizes:

     Function/Label        Bytes
     --------------        -----
     FindFactors            140
     WDG_PeriodValueConfig   72
      Others                 40

 
 252 bytes in segment CODE
 
 212 bytes of CODE memory (+ 40 bytes shared)

Errors: none
Warnings: none

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -