ARM GAS  /tmp/cc1lb8fq.s 			page 1


   1              		.cpu cortex-m0
   2              		.arch armv6s-m
   3              		.fpu softvfp
   4              		.eabi_attribute 23, 1
   5              		.eabi_attribute 24, 1
   6              		.eabi_attribute 25, 1
   7              		.eabi_attribute 26, 1
   8              		.eabi_attribute 30, 2
   9              		.eabi_attribute 34, 0
  10              		.eabi_attribute 18, 4
  11              		.file	"lcm32f06x_crc.c"
  12              		.text
  13              	.Ltext0:
  14              		.cfi_sections	.debug_frame
  15              		.file 1 "Library/src/lcm32f06x_crc.c"
  16              		.section	.text.Crc_initial_config_8,"ax",%progbits
  17              		.align	1
  18              		.p2align 2,,3
  19              		.global	Crc_initial_config_8
  20              		.syntax unified
  21              		.code	16
  22              		.thumb_func
  24              	Crc_initial_config_8:
  25              	.LVL0:
  26              	.LFB45:
   1:Library/src/lcm32f06x_crc.c **** /**
   2:Library/src/lcm32f06x_crc.c ****   ******************************************************************************
   3:Library/src/lcm32f06x_crc.c ****   * @file    lcm32f06x_crc.c
   4:Library/src/lcm32f06x_crc.c ****   * @author  System R&D Team
   5:Library/src/lcm32f06x_crc.c ****   * @version V2.0.2
   6:Library/src/lcm32f06x_crc.c ****   * @date    10-April-2025
   7:Library/src/lcm32f06x_crc.c ****   * @brief   This file provides all the crc firmware functions.
   8:Library/src/lcm32f06x_crc.c ****   ******************************************************************************
   9:Library/src/lcm32f06x_crc.c ****   * @attention
  10:Library/src/lcm32f06x_crc.c ****   *
  11:Library/src/lcm32f06x_crc.c ****   * Copyright (c) Hangzhou Lingxin Microelectronics Co.
  12:Library/src/lcm32f06x_crc.c ****   * All rights reserved.
  13:Library/src/lcm32f06x_crc.c ****   *
  14:Library/src/lcm32f06x_crc.c ****   * This software is licensed under terms that can be found in the LICENSE file
  15:Library/src/lcm32f06x_crc.c ****   * in the root directory of this software component.
  16:Library/src/lcm32f06x_crc.c ****   * If no LICENSE file comes with this software, it is provided AS-IS.
  17:Library/src/lcm32f06x_crc.c ****   *
  18:Library/src/lcm32f06x_crc.c ****   ******************************************************************************
  19:Library/src/lcm32f06x_crc.c ****   */
  20:Library/src/lcm32f06x_crc.c **** /* Includes ------------------------------------------------------------------*/
  21:Library/src/lcm32f06x_crc.c **** #include "lcm32f06x_crc.h"
  22:Library/src/lcm32f06x_crc.c **** 
  23:Library/src/lcm32f06x_crc.c **** /**
  24:Library/src/lcm32f06x_crc.c ****   * @name   Crc_initial_config_8
  25:Library/src/lcm32f06x_crc.c ****   * @brief  EN: CRC-8 polynomial 0x07 initialization configuration.
  26:Library/src/lcm32f06x_crc.c ****   *         CN: CRC-8 多项式 0x07 初始化配置。
  27:Library/src/lcm32f06x_crc.c ****   * @param  CRCx: 
  28:Library/src/lcm32f06x_crc.c ****   *         EN: There is only one CRCx: CRC0.
  29:Library/src/lcm32f06x_crc.c ****   *         CN: 仅有一个CRCx: CRC0 。
  30:Library/src/lcm32f06x_crc.c ****   * @param  CrcMode: 
  31:Library/src/lcm32f06x_crc.c ****   *         EN: CRC-8 polynomial 0x07 mode.
  32:Library/src/lcm32f06x_crc.c ****   *         CN: CRC-8 多项式 0x07 模式。
ARM GAS  /tmp/cc1lb8fq.s 			page 2


  33:Library/src/lcm32f06x_crc.c ****   *             @arg CRC_8
  34:Library/src/lcm32f06x_crc.c ****   *             @arg CRC_8_ITU
  35:Library/src/lcm32f06x_crc.c ****   *             @arg CRC_8_ROHC
  36:Library/src/lcm32f06x_crc.c ****   * @retval None
  37:Library/src/lcm32f06x_crc.c ****   */
  38:Library/src/lcm32f06x_crc.c **** void Crc_initial_config_8(CRC_TypeDef *CRCx, CRC_8_MODE_TypeDef CrcMode)
  39:Library/src/lcm32f06x_crc.c **** {
  27              		.loc 1 39 1 view -0
  28              		.cfi_startproc
  29              		@ args = 0, pretend = 0, frame = 0
  30              		@ frame_needed = 0, uses_anonymous_args = 0
  31              		@ link register save eliminated.
  40:Library/src/lcm32f06x_crc.c ****   if (CrcMode == CRC_8_ITU)
  32              		.loc 1 40 3 view .LVU1
  33              		.loc 1 40 6 is_stmt 0 view .LVU2
  34 0000 0129     		cmp	r1, #1
  35 0002 01D0     		beq	.L4
  41:Library/src/lcm32f06x_crc.c ****   {
  42:Library/src/lcm32f06x_crc.c ****     CRCx->CRC_CTRL = CRC_GPS_CRC8 | CRC_SWAP_00 | CRC_INVEN_LSB | CRC_LM_MSB | CRC_BYTE_1 | CRC_RES
  43:Library/src/lcm32f06x_crc.c ****   }
  44:Library/src/lcm32f06x_crc.c ****   else if (CrcMode == CRC_8_ROHC)
  36              		.loc 1 44 8 is_stmt 1 view .LVU3
  37              		.loc 1 44 11 is_stmt 0 view .LVU4
  38 0004 0229     		cmp	r1, #2
  39 0006 02D0     		beq	.L6
  40              	.L4:
  45:Library/src/lcm32f06x_crc.c ****   {
  46:Library/src/lcm32f06x_crc.c ****     CRCx->CRC_CTRL = CRC_GPS_CRC8 | CRC_SWAP_00 | CRC_INVEN_MSB | CRC_LM_LSB | CRC_BYTE_1 | CRC_RES
  47:Library/src/lcm32f06x_crc.c ****   }
  48:Library/src/lcm32f06x_crc.c ****   else
  49:Library/src/lcm32f06x_crc.c ****   {
  50:Library/src/lcm32f06x_crc.c ****     CRCx->CRC_CTRL = CRC_GPS_CRC8 | CRC_SWAP_00 | CRC_INVEN_LSB | CRC_LM_MSB | CRC_BYTE_1 | CRC_RES
  41              		.loc 1 50 5 is_stmt 1 view .LVU5
  42              		.loc 1 50 20 is_stmt 0 view .LVU6
  43 0008 024B     		ldr	r3, .L7
  44 000a 0360     		str	r3, [r0]
  45              	.L1:
  51:Library/src/lcm32f06x_crc.c ****   }
  52:Library/src/lcm32f06x_crc.c **** }
  46              		.loc 1 52 1 view .LVU7
  47              		@ sp needed
  48 000c 7047     		bx	lr
  49              	.L6:
  46:Library/src/lcm32f06x_crc.c ****   }
  50              		.loc 1 46 5 is_stmt 1 view .LVU8
  46:Library/src/lcm32f06x_crc.c ****   }
  51              		.loc 1 46 20 is_stmt 0 view .LVU9
  52 000e 024B     		ldr	r3, .L7+4
  53 0010 0360     		str	r3, [r0]
  54 0012 FBE7     		b	.L1
  55              	.L8:
  56              		.align	2
  57              	.L7:
  58 0014 02000100 		.word	65538
  59 0018 02800000 		.word	32770
  60              		.cfi_endproc
  61              	.LFE45:
ARM GAS  /tmp/cc1lb8fq.s 			page 3


  63              		.section	.text.Crc_initial_config_16a,"ax",%progbits
  64              		.align	1
  65              		.p2align 2,,3
  66              		.global	Crc_initial_config_16a
  67              		.syntax unified
  68              		.code	16
  69              		.thumb_func
  71              	Crc_initial_config_16a:
  72              	.LVL1:
  73              	.LFB46:
  53:Library/src/lcm32f06x_crc.c **** 
  54:Library/src/lcm32f06x_crc.c **** /**
  55:Library/src/lcm32f06x_crc.c ****   * @name   Crc_initial_config_16a
  56:Library/src/lcm32f06x_crc.c ****   * @brief  EN: CRC-16 polynomial 0x8005 initialization configuration.
  57:Library/src/lcm32f06x_crc.c ****   *         CN: CRC-16 多项式 0x8005 初始化配置。
  58:Library/src/lcm32f06x_crc.c ****   * @param  CRCx: 
  59:Library/src/lcm32f06x_crc.c ****   *         EN: There is only one CRCx: CRC0.
  60:Library/src/lcm32f06x_crc.c ****   *         CN: 仅有一个CRCx: CRC0 。
  61:Library/src/lcm32f06x_crc.c ****   * @param  CrcMode: 
  62:Library/src/lcm32f06x_crc.c ****   *         EN: CRC-16 polynomial 0x8005 mode.
  63:Library/src/lcm32f06x_crc.c ****   *         CN: CRC-16 多项式0x8005 模式。
  64:Library/src/lcm32f06x_crc.c ****   *             @arg CRC_16A_IBM
  65:Library/src/lcm32f06x_crc.c ****   *             @arg CRC_16A_MAXIM
  66:Library/src/lcm32f06x_crc.c ****   *             @arg CRC_16A_USB
  67:Library/src/lcm32f06x_crc.c ****   *             @arg CRC_16A_MODBUS
  68:Library/src/lcm32f06x_crc.c ****   * @retval None
  69:Library/src/lcm32f06x_crc.c ****   */
  70:Library/src/lcm32f06x_crc.c **** void Crc_initial_config_16a(CRC_TypeDef *CRCx, CRC_16A_MODE_TypeDef CrcMode)
  71:Library/src/lcm32f06x_crc.c **** {
  74              		.loc 1 71 1 is_stmt 1 view -0
  75              		.cfi_startproc
  76              		@ args = 0, pretend = 0, frame = 0
  77              		@ frame_needed = 0, uses_anonymous_args = 0
  78              		@ link register save eliminated.
  72:Library/src/lcm32f06x_crc.c ****   if (CrcMode == CRC_16A_IBM)
  79              		.loc 1 72 3 view .LVU11
  80              		.loc 1 72 6 is_stmt 0 view .LVU12
  81 0000 0029     		cmp	r1, #0
  82 0002 05D0     		beq	.L14
  73:Library/src/lcm32f06x_crc.c ****   {
  74:Library/src/lcm32f06x_crc.c ****     CRCx->CRC_CTRL = CRC_GPS_CRC16a | CRC_SWAP_00 | CRC_INVEN_MSB | CRC_LM_LSB | CRC_BYTE_2 | CRC_R
  75:Library/src/lcm32f06x_crc.c ****   }
  76:Library/src/lcm32f06x_crc.c ****   else if (CrcMode == CRC_16A_MAXIM)
  83              		.loc 1 76 8 is_stmt 1 view .LVU13
  84              		.loc 1 76 11 is_stmt 0 view .LVU14
  85 0004 0129     		cmp	r1, #1
  86 0006 03D0     		beq	.L14
  77:Library/src/lcm32f06x_crc.c ****   {
  78:Library/src/lcm32f06x_crc.c ****     CRCx->CRC_CTRL = CRC_GPS_CRC16a | CRC_SWAP_00 | CRC_INVEN_MSB | CRC_LM_LSB | CRC_BYTE_2 | CRC_R
  79:Library/src/lcm32f06x_crc.c ****   }
  80:Library/src/lcm32f06x_crc.c ****   else if (CrcMode == CRC_16A_USB)
  87              		.loc 1 80 8 is_stmt 1 view .LVU15
  88              		.loc 1 80 11 is_stmt 0 view .LVU16
  89 0008 0229     		cmp	r1, #2
  90 000a 01D0     		beq	.L14
  81:Library/src/lcm32f06x_crc.c ****   {
  82:Library/src/lcm32f06x_crc.c ****     CRCx->CRC_CTRL = CRC_GPS_CRC16a | CRC_SWAP_00 | CRC_INVEN_MSB | CRC_LM_LSB | CRC_BYTE_2 | CRC_R
ARM GAS  /tmp/cc1lb8fq.s 			page 4


  83:Library/src/lcm32f06x_crc.c ****   }
  84:Library/src/lcm32f06x_crc.c ****   else if (CrcMode == CRC_16A_MODBUS)
  91              		.loc 1 84 8 is_stmt 1 view .LVU17
  92              		.loc 1 84 11 is_stmt 0 view .LVU18
  93 000c 0329     		cmp	r1, #3
  94 000e 01D1     		bne	.L9
  95              	.L14:
  85:Library/src/lcm32f06x_crc.c ****   {
  86:Library/src/lcm32f06x_crc.c ****     CRCx->CRC_CTRL = CRC_GPS_CRC16a | CRC_SWAP_00 | CRC_INVEN_MSB | CRC_LM_LSB | CRC_BYTE_2 | CRC_R
  96              		.loc 1 86 5 is_stmt 1 view .LVU19
  97              		.loc 1 86 20 is_stmt 0 view .LVU20
  98 0010 014B     		ldr	r3, .L15
  99 0012 0360     		str	r3, [r0]
 100              	.L9:
  87:Library/src/lcm32f06x_crc.c ****   }
  88:Library/src/lcm32f06x_crc.c **** }
 101              		.loc 1 88 1 view .LVU21
 102              		@ sp needed
 103 0014 7047     		bx	lr
 104              	.L16:
 105 0016 C046     		.align	2
 106              	.L15:
 107 0018 02810001 		.word	16810242
 108              		.cfi_endproc
 109              	.LFE46:
 111              		.section	.text.Crc_initial_config_16b,"ax",%progbits
 112              		.align	1
 113              		.p2align 2,,3
 114              		.global	Crc_initial_config_16b
 115              		.syntax unified
 116              		.code	16
 117              		.thumb_func
 119              	Crc_initial_config_16b:
 120              	.LVL2:
 121              	.LFB47:
  89:Library/src/lcm32f06x_crc.c **** 
  90:Library/src/lcm32f06x_crc.c **** /**
  91:Library/src/lcm32f06x_crc.c ****   * @name   Crc_initial_config_16b
  92:Library/src/lcm32f06x_crc.c ****   * @brief  EN: CRC-16 polynomial 0x1021 initialization configuration.
  93:Library/src/lcm32f06x_crc.c ****   *         CN: CRC-16 多项式 0x1021 初始化配置。
  94:Library/src/lcm32f06x_crc.c ****   * @param  CRCx: 
  95:Library/src/lcm32f06x_crc.c ****   *         EN: There is only one CRCx: CRC0.
  96:Library/src/lcm32f06x_crc.c ****   *         CN: 仅有一个CRCx: CRC0 。
  97:Library/src/lcm32f06x_crc.c ****   * @param  CrcMode: 
  98:Library/src/lcm32f06x_crc.c ****   *         EN: CRC-16 polynomial 0x1021 mode.
  99:Library/src/lcm32f06x_crc.c ****   *         CN: CRC-16 0x1021 模式。
 100:Library/src/lcm32f06x_crc.c ****   *             @arg CRC_16B_CCITT
 101:Library/src/lcm32f06x_crc.c ****   *             @arg CRC_16B_CCITT_FALSE
 102:Library/src/lcm32f06x_crc.c ****   *             @arg CRC_16B_X25
 103:Library/src/lcm32f06x_crc.c ****   *             @arg CRC_16B_XMODEM
 104:Library/src/lcm32f06x_crc.c ****   * @retval None
 105:Library/src/lcm32f06x_crc.c ****   */
 106:Library/src/lcm32f06x_crc.c **** void Crc_initial_config_16b(CRC_TypeDef *CRCx, CRC_16B_MODE_TypeDef CrcMode)
 107:Library/src/lcm32f06x_crc.c **** {
 122              		.loc 1 107 1 is_stmt 1 view -0
 123              		.cfi_startproc
 124              		@ args = 0, pretend = 0, frame = 0
ARM GAS  /tmp/cc1lb8fq.s 			page 5


 125              		@ frame_needed = 0, uses_anonymous_args = 0
 126              		@ link register save eliminated.
 108:Library/src/lcm32f06x_crc.c ****   if (CrcMode == CRC_16B_CCITT)
 127              		.loc 1 108 3 view .LVU23
 128              		.loc 1 108 6 is_stmt 0 view .LVU24
 129 0000 0029     		cmp	r1, #0
 130 0002 08D0     		beq	.L22
 109:Library/src/lcm32f06x_crc.c ****   {
 110:Library/src/lcm32f06x_crc.c ****     CRCx->CRC_CTRL = CRC_GPS_CRC16b | CRC_SWAP_00 | CRC_INVEN_MSB | CRC_LM_LSB | CRC_BYTE_2 | CRC_R
 111:Library/src/lcm32f06x_crc.c ****   }
 112:Library/src/lcm32f06x_crc.c ****   else if (CrcMode == CRC_16B_CCITT_FALSE)
 131              		.loc 1 112 8 is_stmt 1 view .LVU25
 132              		.loc 1 112 11 is_stmt 0 view .LVU26
 133 0004 0129     		cmp	r1, #1
 134 0006 03D0     		beq	.L23
 113:Library/src/lcm32f06x_crc.c ****   {
 114:Library/src/lcm32f06x_crc.c ****     CRCx->CRC_CTRL = CRC_GPS_CRC16b | CRC_SWAP_00 | CRC_INVEN_LSB | CRC_LM_MSB | CRC_BYTE_2 | CRC_R
 115:Library/src/lcm32f06x_crc.c ****   }
 116:Library/src/lcm32f06x_crc.c ****   else if (CrcMode == CRC_16B_X25)
 135              		.loc 1 116 8 is_stmt 1 view .LVU27
 136              		.loc 1 116 11 is_stmt 0 view .LVU28
 137 0008 0229     		cmp	r1, #2
 138 000a 04D0     		beq	.L22
 117:Library/src/lcm32f06x_crc.c ****   {
 118:Library/src/lcm32f06x_crc.c ****     CRCx->CRC_CTRL = CRC_GPS_CRC16b | CRC_SWAP_00 | CRC_INVEN_MSB | CRC_LM_LSB | CRC_BYTE_2 | CRC_R
 119:Library/src/lcm32f06x_crc.c ****   }
 120:Library/src/lcm32f06x_crc.c ****   else if (CrcMode == CRC_16B_XMODEM)
 139              		.loc 1 120 8 is_stmt 1 view .LVU29
 140              		.loc 1 120 11 is_stmt 0 view .LVU30
 141 000c 0329     		cmp	r1, #3
 142 000e 04D1     		bne	.L17
 143              	.L23:
 121:Library/src/lcm32f06x_crc.c ****   {
 122:Library/src/lcm32f06x_crc.c ****     CRCx->CRC_CTRL = CRC_GPS_CRC16b | CRC_SWAP_00 | CRC_INVEN_LSB | CRC_LM_MSB | CRC_BYTE_2 | CRC_R
 144              		.loc 1 122 5 is_stmt 1 view .LVU31
 145              		.loc 1 122 20 is_stmt 0 view .LVU32
 146 0010 024B     		ldr	r3, .L24
 147 0012 0360     		str	r3, [r0]
 123:Library/src/lcm32f06x_crc.c ****   }
 124:Library/src/lcm32f06x_crc.c **** }
 148              		.loc 1 124 1 view .LVU33
 149 0014 01E0     		b	.L17
 150              	.L22:
 118:Library/src/lcm32f06x_crc.c ****   }
 151              		.loc 1 118 5 is_stmt 1 view .LVU34
 118:Library/src/lcm32f06x_crc.c ****   }
 152              		.loc 1 118 20 is_stmt 0 view .LVU35
 153 0016 024B     		ldr	r3, .L24+4
 154 0018 0360     		str	r3, [r0]
 155              	.L17:
 156              		.loc 1 124 1 view .LVU36
 157              		@ sp needed
 158 001a 7047     		bx	lr
 159              	.L25:
 160              		.align	2
 161              	.L24:
 162 001c 02010102 		.word	33620226
ARM GAS  /tmp/cc1lb8fq.s 			page 6


 163 0020 02810002 		.word	33587458
 164              		.cfi_endproc
 165              	.LFE47:
 167              		.section	.text.Crc_initial_config_32,"ax",%progbits
 168              		.align	1
 169              		.p2align 2,,3
 170              		.global	Crc_initial_config_32
 171              		.syntax unified
 172              		.code	16
 173              		.thumb_func
 175              	Crc_initial_config_32:
 176              	.LVL3:
 177              	.LFB48:
 125:Library/src/lcm32f06x_crc.c **** 
 126:Library/src/lcm32f06x_crc.c **** /**
 127:Library/src/lcm32f06x_crc.c ****   * @name   Crc_initial_config_32
 128:Library/src/lcm32f06x_crc.c ****   * @brief  EN: CRC-32 polynomial 0x0411DB7 initialization configuration.
 129:Library/src/lcm32f06x_crc.c ****   *         CN: CRC-32 多项式 0x0411DB7 初始化配置。
 130:Library/src/lcm32f06x_crc.c ****   * @param  CRCx: 
 131:Library/src/lcm32f06x_crc.c ****   *         EN: There is only one CRCx: CRC0.
 132:Library/src/lcm32f06x_crc.c ****   *         CN: 仅有一个CRCx: CRC0 。
 133:Library/src/lcm32f06x_crc.c ****   * @param  CrcMode: 
 134:Library/src/lcm32f06x_crc.c ****   *         EN: CRC-32 polynomial 0x0411DB7 mode.
 135:Library/src/lcm32f06x_crc.c ****   *         CN: CRC-32 0x0411DB7 模式。
 136:Library/src/lcm32f06x_crc.c ****   *             @arg CRC_32
 137:Library/src/lcm32f06x_crc.c ****   *             @arg CRC_32_MPEG_2
 138:Library/src/lcm32f06x_crc.c ****   * @retval None
 139:Library/src/lcm32f06x_crc.c ****   */
 140:Library/src/lcm32f06x_crc.c **** void Crc_initial_config_32(CRC_TypeDef *CRCx, CRC_32_MODE_TypeDef CrcMode)
 141:Library/src/lcm32f06x_crc.c **** {
 178              		.loc 1 141 1 is_stmt 1 view -0
 179              		.cfi_startproc
 180              		@ args = 0, pretend = 0, frame = 0
 181              		@ frame_needed = 0, uses_anonymous_args = 0
 182              		@ link register save eliminated.
 142:Library/src/lcm32f06x_crc.c ****   if (CrcMode == CRC_32)
 183              		.loc 1 142 3 view .LVU38
 184              		.loc 1 142 6 is_stmt 0 view .LVU39
 185 0000 0029     		cmp	r1, #0
 186 0002 02D1     		bne	.L27
 143:Library/src/lcm32f06x_crc.c ****   {
 144:Library/src/lcm32f06x_crc.c ****     CRCx->CRC_CTRL = CRC_GPS_CRC32 | CRC_SWAP_00 | CRC_INVEN_MSB | CRC_LM_LSB | CRC_BYTE_4 | CRC_RE
 187              		.loc 1 144 5 is_stmt 1 view .LVU40
 188              		.loc 1 144 20 is_stmt 0 view .LVU41
 189 0004 034B     		ldr	r3, .L29
 190 0006 0360     		str	r3, [r0]
 191              	.L26:
 145:Library/src/lcm32f06x_crc.c ****   }
 146:Library/src/lcm32f06x_crc.c ****   else if (CrcMode == CRC_32_MPEG_2)
 147:Library/src/lcm32f06x_crc.c ****   {
 148:Library/src/lcm32f06x_crc.c ****     CRCx->CRC_CTRL = CRC_GPS_CRC32 | CRC_SWAP_00 | CRC_INVEN_LSB | CRC_LM_MSB | CRC_BYTE_4 | CRC_RE
 149:Library/src/lcm32f06x_crc.c ****   }
 150:Library/src/lcm32f06x_crc.c **** }
 192              		.loc 1 150 1 view .LVU42
 193              		@ sp needed
 194 0008 7047     		bx	lr
 195              	.L27:
ARM GAS  /tmp/cc1lb8fq.s 			page 7


 146:Library/src/lcm32f06x_crc.c ****   {
 196              		.loc 1 146 8 is_stmt 1 view .LVU43
 146:Library/src/lcm32f06x_crc.c ****   {
 197              		.loc 1 146 11 is_stmt 0 view .LVU44
 198 000a 0129     		cmp	r1, #1
 199 000c FCD1     		bne	.L26
 148:Library/src/lcm32f06x_crc.c ****   }
 200              		.loc 1 148 5 is_stmt 1 view .LVU45
 148:Library/src/lcm32f06x_crc.c ****   }
 201              		.loc 1 148 20 is_stmt 0 view .LVU46
 202 000e 024B     		ldr	r3, .L29+4
 203 0010 0360     		str	r3, [r0]
 204              		.loc 1 150 1 view .LVU47
 205 0012 F9E7     		b	.L26
 206              	.L30:
 207              		.align	2
 208              	.L29:
 209 0014 02830003 		.word	50365186
 210 0018 02030103 		.word	50397954
 211              		.cfi_endproc
 212              	.LFE48:
 214              		.section	.text.CRC_CalcBlockCRC8,"ax",%progbits
 215              		.align	1
 216              		.p2align 2,,3
 217              		.global	CRC_CalcBlockCRC8
 218              		.syntax unified
 219              		.code	16
 220              		.thumb_func
 222              	CRC_CalcBlockCRC8:
 223              	.LVL4:
 224              	.LFB49:
 151:Library/src/lcm32f06x_crc.c **** 
 152:Library/src/lcm32f06x_crc.c **** /**
 153:Library/src/lcm32f06x_crc.c ****   * @name   CRC_CalcBlockCRC8
 154:Library/src/lcm32f06x_crc.c ****   * @brief  EN: CRC-8 verification data processing.
 155:Library/src/lcm32f06x_crc.c ****   *         CN: CRC-8 校验数据处理。
 156:Library/src/lcm32f06x_crc.c ****   * @param  CRCx: 
 157:Library/src/lcm32f06x_crc.c ****   *         EN: There is only one CRCx: CRC0.
 158:Library/src/lcm32f06x_crc.c ****   *         CN: 仅有一个CRCx: CRC0 。
 159:Library/src/lcm32f06x_crc.c ****   * @param  CrcMode: 
 160:Library/src/lcm32f06x_crc.c ****   *         EN: CRC-8 mode.
 161:Library/src/lcm32f06x_crc.c ****   *         CN: CRC-8 模式。
 162:Library/src/lcm32f06x_crc.c ****   *             @arg CRC_8
 163:Library/src/lcm32f06x_crc.c ****   *             @arg CRC_8_ITU
 164:Library/src/lcm32f06x_crc.c ****   *             @arg CRC_8_ROHC
 165:Library/src/lcm32f06x_crc.c ****   * @param  pBuffer[]: 
 166:Library/src/lcm32f06x_crc.c ****   *         EN: The data to be verified.
 167:Library/src/lcm32f06x_crc.c ****   *         CN: 待校验的数据。
 168:Library/src/lcm32f06x_crc.c ****   * @param  BufferLength: 
 169:Library/src/lcm32f06x_crc.c ****   *         EN: The length of the data to be verified.
 170:Library/src/lcm32f06x_crc.c ****   *         CN: 待校验数据长度。
 171:Library/src/lcm32f06x_crc.c ****   * @retval uint8_t
 172:Library/src/lcm32f06x_crc.c ****   */
 173:Library/src/lcm32f06x_crc.c **** uint8_t CRC_CalcBlockCRC8(CRC_TypeDef *CRCx, CRC_8_MODE_TypeDef CrcMode, uint8_t pBuffer[], uint8_t
 174:Library/src/lcm32f06x_crc.c **** {
 225              		.loc 1 174 1 is_stmt 1 view -0
 226              		.cfi_startproc
ARM GAS  /tmp/cc1lb8fq.s 			page 8


 227              		@ args = 0, pretend = 0, frame = 0
 228              		@ frame_needed = 0, uses_anonymous_args = 0
 175:Library/src/lcm32f06x_crc.c ****   uint8_t index = 0;
 229              		.loc 1 175 3 view .LVU49
 176:Library/src/lcm32f06x_crc.c ****   uint8_t temp;
 230              		.loc 1 176 3 view .LVU50
 177:Library/src/lcm32f06x_crc.c ****   if (CrcMode == CRC_8_ROHC)
 231              		.loc 1 177 3 view .LVU51
 174:Library/src/lcm32f06x_crc.c ****   uint8_t index = 0;
 232              		.loc 1 174 1 is_stmt 0 view .LVU52
 233 0000 70B5     		push	{r4, r5, r6, lr}
 234              	.LCFI0:
 235              		.cfi_def_cfa_offset 16
 236              		.cfi_offset 4, -16
 237              		.cfi_offset 5, -12
 238              		.cfi_offset 6, -8
 239              		.cfi_offset 14, -4
 174:Library/src/lcm32f06x_crc.c ****   uint8_t index = 0;
 240              		.loc 1 174 1 view .LVU53
 241 0002 0400     		movs	r4, r0
 242 0004 0E00     		movs	r6, r1
 243 0006 1500     		movs	r5, r2
 244              		.loc 1 177 6 view .LVU54
 245 0008 0229     		cmp	r1, #2
 246 000a 23D0     		beq	.L48
 178:Library/src/lcm32f06x_crc.c ****   {
 179:Library/src/lcm32f06x_crc.c ****     CRCx->CRC_RESULT = 0xFF;  //初始值
 180:Library/src/lcm32f06x_crc.c ****   }
 181:Library/src/lcm32f06x_crc.c ****   else
 182:Library/src/lcm32f06x_crc.c ****   {
 183:Library/src/lcm32f06x_crc.c ****     CRCx->CRC_RESULT = 0x00;  //初始值
 247              		.loc 1 183 5 is_stmt 1 view .LVU55
 248              		.loc 1 183 22 is_stmt 0 view .LVU56
 249 000c 0022     		movs	r2, #0
 250              	.LVL5:
 251              		.loc 1 183 22 view .LVU57
 252 000e 8260     		str	r2, [r0, #8]
 184:Library/src/lcm32f06x_crc.c ****   }
 185:Library/src/lcm32f06x_crc.c **** 
 186:Library/src/lcm32f06x_crc.c ****   for (index = 0; index < BufferLength; index++)
 253              		.loc 1 186 25 is_stmt 1 discriminator 1 view .LVU58
 254 0010 002B     		cmp	r3, #0
 255 0012 12D0     		beq	.L36
 256              	.L35:
 174:Library/src/lcm32f06x_crc.c ****   uint8_t index = 0;
 257              		.loc 1 174 1 is_stmt 0 view .LVU59
 258 0014 0021     		movs	r1, #0
 259              	.LVL6:
 187:Library/src/lcm32f06x_crc.c ****   {
 188:Library/src/lcm32f06x_crc.c ****     CRCx->CRC_DATA = pBuffer[index];
 189:Library/src/lcm32f06x_crc.c ****     while (CRCx->CRC_CTRL & CRC_CTRL_CRC_VALID_Msk)
 260              		.loc 1 189 27 view .LVU60
 261 0016 0420     		movs	r0, #4
 262              	.LVL7:
 263              	.L34:
 188:Library/src/lcm32f06x_crc.c ****     while (CRCx->CRC_CTRL & CRC_CTRL_CRC_VALID_Msk)
 264              		.loc 1 188 5 is_stmt 1 view .LVU61
ARM GAS  /tmp/cc1lb8fq.s 			page 9


 188:Library/src/lcm32f06x_crc.c ****     while (CRCx->CRC_CTRL & CRC_CTRL_CRC_VALID_Msk)
 265              		.loc 1 188 29 is_stmt 0 view .LVU62
 266 0018 6A5C     		ldrb	r2, [r5, r1]
 188:Library/src/lcm32f06x_crc.c ****     while (CRCx->CRC_CTRL & CRC_CTRL_CRC_VALID_Msk)
 267              		.loc 1 188 20 view .LVU63
 268 001a 6260     		str	r2, [r4, #4]
 269              		.loc 1 189 5 is_stmt 1 view .LVU64
 270              		.loc 1 189 12 view .LVU65
 271              		.loc 1 189 16 is_stmt 0 view .LVU66
 272 001c 2268     		ldr	r2, [r4]
 273              		.loc 1 189 12 view .LVU67
 274 001e 1042     		tst	r0, r2
 275 0020 07D0     		beq	.L37
 276              	.L38:
 190:Library/src/lcm32f06x_crc.c ****     {
 191:Library/src/lcm32f06x_crc.c ****         __NOP(); __NOP(); __NOP(); __NOP(); __NOP();
 277              		.loc 1 191 9 is_stmt 1 view .LVU68
 278              		.syntax divided
 279              	@ 191 "Library/src/lcm32f06x_crc.c" 1
 280 0022 C046     		nop
 281              	@ 0 "" 2
 282              		.loc 1 191 18 view .LVU69
 283              	@ 191 "Library/src/lcm32f06x_crc.c" 1
 284 0024 C046     		nop
 285              	@ 0 "" 2
 286              		.loc 1 191 27 view .LVU70
 287              	@ 191 "Library/src/lcm32f06x_crc.c" 1
 288 0026 C046     		nop
 289              	@ 0 "" 2
 290              		.loc 1 191 36 view .LVU71
 291              	@ 191 "Library/src/lcm32f06x_crc.c" 1
 292 0028 C046     		nop
 293              	@ 0 "" 2
 294              		.loc 1 191 45 view .LVU72
 295              	@ 191 "Library/src/lcm32f06x_crc.c" 1
 296 002a C046     		nop
 297              	@ 0 "" 2
 189:Library/src/lcm32f06x_crc.c ****     {
 298              		.loc 1 189 12 view .LVU73
 189:Library/src/lcm32f06x_crc.c ****     {
 299              		.loc 1 189 16 is_stmt 0 view .LVU74
 300              		.thumb
 301              		.syntax unified
 302 002c 2268     		ldr	r2, [r4]
 189:Library/src/lcm32f06x_crc.c ****     {
 303              		.loc 1 189 12 view .LVU75
 304 002e 1042     		tst	r0, r2
 305 0030 F7D1     		bne	.L38
 306              	.L37:
 192:Library/src/lcm32f06x_crc.c ****     };
 307              		.loc 1 192 6 is_stmt 1 view .LVU76
 186:Library/src/lcm32f06x_crc.c ****   {
 308              		.loc 1 186 46 discriminator 2 view .LVU77
 309              	.LVL8:
 186:Library/src/lcm32f06x_crc.c ****   {
 310              		.loc 1 186 25 discriminator 1 view .LVU78
 311 0032 0131     		adds	r1, r1, #1
ARM GAS  /tmp/cc1lb8fq.s 			page 10


 312              	.LVL9:
 186:Library/src/lcm32f06x_crc.c ****   {
 313              		.loc 1 186 25 is_stmt 0 discriminator 1 view .LVU79
 314 0034 CAB2     		uxtb	r2, r1
 315 0036 9342     		cmp	r3, r2
 316 0038 EED8     		bhi	.L34
 317              	.LVL10:
 318              	.L36:
 193:Library/src/lcm32f06x_crc.c ****   }
 194:Library/src/lcm32f06x_crc.c **** 
 195:Library/src/lcm32f06x_crc.c ****   if (CrcMode == CRC_8_ITU)
 319              		.loc 1 195 3 is_stmt 1 view .LVU80
 320              		.loc 1 195 6 is_stmt 0 view .LVU81
 321 003a 012E     		cmp	r6, #1
 322 003c 0FD0     		beq	.L49
 323              	.L33:
 196:Library/src/lcm32f06x_crc.c ****   {
 197:Library/src/lcm32f06x_crc.c ****     temp = Crc_read_result(CRCx) ^ 0x55;  //结果异或值
 198:Library/src/lcm32f06x_crc.c ****   }
 199:Library/src/lcm32f06x_crc.c ****   else
 200:Library/src/lcm32f06x_crc.c ****   {
 201:Library/src/lcm32f06x_crc.c ****     temp = Crc_read_result(CRCx);        //结果异或值
 324              		.loc 1 201 5 is_stmt 1 view .LVU82
 325              	.LVL11:
 326              	.LBB18:
 327              	.LBI18:
 202:Library/src/lcm32f06x_crc.c ****   }
 203:Library/src/lcm32f06x_crc.c **** 
 204:Library/src/lcm32f06x_crc.c ****   CRCx->CRC_CTRL_b.CRC_SRST = 1;      //复位结果
 205:Library/src/lcm32f06x_crc.c ****   CRCx->CRC_CTRL_b.CRC_SRSTALL = 1;   //复位CRC
 206:Library/src/lcm32f06x_crc.c ****   return temp;
 207:Library/src/lcm32f06x_crc.c **** }
 208:Library/src/lcm32f06x_crc.c **** 
 209:Library/src/lcm32f06x_crc.c **** /**
 210:Library/src/lcm32f06x_crc.c ****   * @name   CRC_CalcBlockCRC16a
 211:Library/src/lcm32f06x_crc.c ****   * @brief  EN: CRC-16 polynomial 0x8005 verification data processing.
 212:Library/src/lcm32f06x_crc.c ****   *         CN: CRC-16 多项式 0x8005 校验数据处理。
 213:Library/src/lcm32f06x_crc.c ****   * @param  CRCx: 
 214:Library/src/lcm32f06x_crc.c ****   *         EN: There is only one CRCx: CRC0.
 215:Library/src/lcm32f06x_crc.c ****   *         CN: 仅有一个CRCx: CRC0 。
 216:Library/src/lcm32f06x_crc.c ****   * @param  CrcMode:
 217:Library/src/lcm32f06x_crc.c ****   *         EN: CRC-16 polynomial 0x8005 mode.
 218:Library/src/lcm32f06x_crc.c ****   *         CN: CRC-16 多项式 0x8005 模式。
 219:Library/src/lcm32f06x_crc.c ****   *             @arg CRC_16A_IBM
 220:Library/src/lcm32f06x_crc.c ****   *             @arg CRC_16A_MAXIM
 221:Library/src/lcm32f06x_crc.c ****   *             @arg CRC_16A_USB
 222:Library/src/lcm32f06x_crc.c ****   *             @arg CRC_16A_MODBUS
 223:Library/src/lcm32f06x_crc.c ****   * @param  pBuffer[]: 
 224:Library/src/lcm32f06x_crc.c ****   *         EN: The data to be verified.
 225:Library/src/lcm32f06x_crc.c ****   *         CN: 待校验的数据。
 226:Library/src/lcm32f06x_crc.c ****   * @param  BufferLength: 
 227:Library/src/lcm32f06x_crc.c ****   *         EN: The length of the data to be verified.
 228:Library/src/lcm32f06x_crc.c ****   *         CN: 待校验数据长度。
 229:Library/src/lcm32f06x_crc.c ****   * @retval uint16_t
 230:Library/src/lcm32f06x_crc.c ****   */
 231:Library/src/lcm32f06x_crc.c **** uint16_t CRC_CalcBlockCRC16a(CRC_TypeDef *CRCx, CRC_16A_MODE_TypeDef CrcMode, uint8_t pBuffer[], ui
 232:Library/src/lcm32f06x_crc.c **** {
ARM GAS  /tmp/cc1lb8fq.s 			page 11


 233:Library/src/lcm32f06x_crc.c ****   uint8_t index = 0;
 234:Library/src/lcm32f06x_crc.c ****   uint16_t temp;
 235:Library/src/lcm32f06x_crc.c **** 
 236:Library/src/lcm32f06x_crc.c ****   if ((CrcMode == CRC_16A_USB) || (CrcMode == CRC_16A_MODBUS))
 237:Library/src/lcm32f06x_crc.c ****   {
 238:Library/src/lcm32f06x_crc.c ****     CRCx->CRC_RESULT = 0xFFFF;  //初始值
 239:Library/src/lcm32f06x_crc.c ****   }
 240:Library/src/lcm32f06x_crc.c ****   else
 241:Library/src/lcm32f06x_crc.c ****   {
 242:Library/src/lcm32f06x_crc.c ****     CRCx->CRC_RESULT = 0x0000;  //初始值
 243:Library/src/lcm32f06x_crc.c ****   }
 244:Library/src/lcm32f06x_crc.c **** 
 245:Library/src/lcm32f06x_crc.c ****   for (index = 0; index < BufferLength; index += 2)
 246:Library/src/lcm32f06x_crc.c ****   {
 247:Library/src/lcm32f06x_crc.c ****     CRCx->CRC_DATA = pBuffer[index] | (pBuffer[index + 1] << 8);
 248:Library/src/lcm32f06x_crc.c ****     while (CRCx->CRC_CTRL & CRC_CTRL_CRC_VALID_Msk)
 249:Library/src/lcm32f06x_crc.c ****     {
 250:Library/src/lcm32f06x_crc.c ****         __NOP(); __NOP(); __NOP(); __NOP(); __NOP();
 251:Library/src/lcm32f06x_crc.c ****     };
 252:Library/src/lcm32f06x_crc.c ****   }
 253:Library/src/lcm32f06x_crc.c **** 
 254:Library/src/lcm32f06x_crc.c ****   if ((CrcMode == CRC_16A_MAXIM) || (CrcMode == CRC_16A_USB))
 255:Library/src/lcm32f06x_crc.c ****   {
 256:Library/src/lcm32f06x_crc.c ****     temp = Crc_read_result(CRCx) ^ 0xFFFF;  //结果异或值
 257:Library/src/lcm32f06x_crc.c ****   }
 258:Library/src/lcm32f06x_crc.c ****   else
 259:Library/src/lcm32f06x_crc.c ****   {
 260:Library/src/lcm32f06x_crc.c ****     temp = Crc_read_result(CRCx);        //结果异或值
 261:Library/src/lcm32f06x_crc.c ****   }
 262:Library/src/lcm32f06x_crc.c **** 
 263:Library/src/lcm32f06x_crc.c ****   CRCx->CRC_CTRL_b.CRC_SRST = 1;      //复位结果
 264:Library/src/lcm32f06x_crc.c ****   CRCx->CRC_CTRL_b.CRC_SRSTALL = 1;   //复位CRC
 265:Library/src/lcm32f06x_crc.c ****   return temp;
 266:Library/src/lcm32f06x_crc.c **** }
 267:Library/src/lcm32f06x_crc.c **** 
 268:Library/src/lcm32f06x_crc.c **** /**
 269:Library/src/lcm32f06x_crc.c ****   * @name   CRC_CalcBlockCRC16b
 270:Library/src/lcm32f06x_crc.c ****   * @brief  EN: CRC-16 polynomial 0x1021 verification data processing.
 271:Library/src/lcm32f06x_crc.c ****   *         CN: CRC-16 多项式 0x1021 校验数据处理。
 272:Library/src/lcm32f06x_crc.c ****   * @param  CRCx: 
 273:Library/src/lcm32f06x_crc.c ****   *         EN: There is only one CRCx: CRC0.
 274:Library/src/lcm32f06x_crc.c ****   *         CN: 仅有一个CRCx: CRC0 。
 275:Library/src/lcm32f06x_crc.c ****   * @param  CrcMode:
 276:Library/src/lcm32f06x_crc.c ****   *         EN: CRC-16 polynomial 0x1021 mode.
 277:Library/src/lcm32f06x_crc.c ****   *         CN: CRC-16 多项式 0x1021 模式。
 278:Library/src/lcm32f06x_crc.c ****   *             @arg CRC_16B_CCITT
 279:Library/src/lcm32f06x_crc.c ****   *             @arg CRC_16B_CCITT_FALSE
 280:Library/src/lcm32f06x_crc.c ****   *             @arg CRC_16B_X25
 281:Library/src/lcm32f06x_crc.c ****   *             @arg CRC_16B_XMODEM
 282:Library/src/lcm32f06x_crc.c ****   * @param  pBuffer[]: 
 283:Library/src/lcm32f06x_crc.c ****   *         EN: The data to be verified.
 284:Library/src/lcm32f06x_crc.c ****   *         CN: 待校验的数据。
 285:Library/src/lcm32f06x_crc.c ****   * @param  BufferLength: 
 286:Library/src/lcm32f06x_crc.c ****   *         EN: The length of the data to be verified.
 287:Library/src/lcm32f06x_crc.c ****   *         CN: 待校验数据长度。
 288:Library/src/lcm32f06x_crc.c ****   * @retval uint16_t
 289:Library/src/lcm32f06x_crc.c ****   */
ARM GAS  /tmp/cc1lb8fq.s 			page 12


 290:Library/src/lcm32f06x_crc.c **** uint16_t CRC_CalcBlockCRC16b(CRC_TypeDef *CRCx, CRC_16B_MODE_TypeDef CrcMode, uint8_t pBuffer[], ui
 291:Library/src/lcm32f06x_crc.c **** {
 292:Library/src/lcm32f06x_crc.c ****   uint8_t index = 0;
 293:Library/src/lcm32f06x_crc.c ****   uint16_t temp;
 294:Library/src/lcm32f06x_crc.c **** 
 295:Library/src/lcm32f06x_crc.c ****   if ((CrcMode == CRC_16B_CCITT_FALSE) || (CrcMode == CRC_16B_X25))
 296:Library/src/lcm32f06x_crc.c ****   {
 297:Library/src/lcm32f06x_crc.c ****     CRCx->CRC_RESULT = 0xFFFF;  //初始值
 298:Library/src/lcm32f06x_crc.c ****   }
 299:Library/src/lcm32f06x_crc.c ****   else
 300:Library/src/lcm32f06x_crc.c ****   {
 301:Library/src/lcm32f06x_crc.c ****     CRCx->CRC_RESULT = 0x0000;  //初始值
 302:Library/src/lcm32f06x_crc.c ****   }
 303:Library/src/lcm32f06x_crc.c **** 
 304:Library/src/lcm32f06x_crc.c ****   for (index = 0; index < BufferLength; index += 2)
 305:Library/src/lcm32f06x_crc.c ****   {
 306:Library/src/lcm32f06x_crc.c ****     CRCx->CRC_DATA = pBuffer[index] | (pBuffer[index + 1] << 8);
 307:Library/src/lcm32f06x_crc.c ****     while (CRCx->CRC_CTRL & CRC_CTRL_CRC_VALID_Msk)
 308:Library/src/lcm32f06x_crc.c ****     {
 309:Library/src/lcm32f06x_crc.c ****         __NOP(); __NOP(); __NOP(); __NOP(); __NOP();
 310:Library/src/lcm32f06x_crc.c ****     };
 311:Library/src/lcm32f06x_crc.c ****   }
 312:Library/src/lcm32f06x_crc.c **** 
 313:Library/src/lcm32f06x_crc.c ****   if (CrcMode == CRC_16B_X25)
 314:Library/src/lcm32f06x_crc.c ****   {
 315:Library/src/lcm32f06x_crc.c ****     temp = Crc_read_result(CRCx) ^ 0xFFFF;  //结果异或值
 316:Library/src/lcm32f06x_crc.c ****   }
 317:Library/src/lcm32f06x_crc.c ****   else
 318:Library/src/lcm32f06x_crc.c ****   {
 319:Library/src/lcm32f06x_crc.c ****     temp = Crc_read_result(CRCx);        //结果异或值
 320:Library/src/lcm32f06x_crc.c ****   }
 321:Library/src/lcm32f06x_crc.c **** 
 322:Library/src/lcm32f06x_crc.c ****   CRCx->CRC_CTRL_b.CRC_SRST = 1;      //复位结果
 323:Library/src/lcm32f06x_crc.c ****   CRCx->CRC_CTRL_b.CRC_SRSTALL = 1;   //复位CRC
 324:Library/src/lcm32f06x_crc.c ****   return temp;
 325:Library/src/lcm32f06x_crc.c **** }
 326:Library/src/lcm32f06x_crc.c **** 
 327:Library/src/lcm32f06x_crc.c **** /**
 328:Library/src/lcm32f06x_crc.c ****   * @name   CRC_CalcBlockCRC32
 329:Library/src/lcm32f06x_crc.c ****   * @brief  EN: CRC-32 polynomial 0x0411DB7 verification data processing.
 330:Library/src/lcm32f06x_crc.c ****   *         CN: CRC-32 多项式 0x0411DB7 校验数据处理。
 331:Library/src/lcm32f06x_crc.c ****   * @param  CRCx: 
 332:Library/src/lcm32f06x_crc.c ****   *         EN: There is only one CRCx: CRC0.
 333:Library/src/lcm32f06x_crc.c ****   *         CN: 仅有一个CRCx: CRC0 。
 334:Library/src/lcm32f06x_crc.c ****   * @param  CrcMode:
 335:Library/src/lcm32f06x_crc.c ****   *         EN: CRC-32 polynomial 0x0411DB7 mode.
 336:Library/src/lcm32f06x_crc.c ****   *         CN: CRC-32 多项式 0x0411DB7 模式。
 337:Library/src/lcm32f06x_crc.c ****   *             @arg CRC_32
 338:Library/src/lcm32f06x_crc.c ****   *             @arg CRC_32_MPEG_2
 339:Library/src/lcm32f06x_crc.c ****   * @param  pBuffer[]: 
 340:Library/src/lcm32f06x_crc.c ****   *         EN: The data to be verified.
 341:Library/src/lcm32f06x_crc.c ****   *         CN: 待校验的数据。
 342:Library/src/lcm32f06x_crc.c ****   * @param  BufferLength: 
 343:Library/src/lcm32f06x_crc.c ****   *         EN: The length of the data to be verified.
 344:Library/src/lcm32f06x_crc.c ****   *         CN: 待校验数据长度。
 345:Library/src/lcm32f06x_crc.c ****   * @retval None
 346:Library/src/lcm32f06x_crc.c ****   */
ARM GAS  /tmp/cc1lb8fq.s 			page 13


 347:Library/src/lcm32f06x_crc.c **** uint32_t CRC_CalcBlockCRC32(CRC_TypeDef *CRCx, CRC_32_MODE_TypeDef CrcMode, uint8_t pBuffer[], uint
 348:Library/src/lcm32f06x_crc.c **** {
 349:Library/src/lcm32f06x_crc.c ****   uint8_t index = 0;
 350:Library/src/lcm32f06x_crc.c ****   uint32_t temp;
 351:Library/src/lcm32f06x_crc.c **** 
 352:Library/src/lcm32f06x_crc.c ****   if ((CrcMode == CRC_32) || (CrcMode == CRC_32_MPEG_2))
 353:Library/src/lcm32f06x_crc.c ****   {
 354:Library/src/lcm32f06x_crc.c ****     CRCx->CRC_RESULT = 0xFFFFFFFF;  //初始值
 355:Library/src/lcm32f06x_crc.c ****   }
 356:Library/src/lcm32f06x_crc.c ****   else
 357:Library/src/lcm32f06x_crc.c ****   {
 358:Library/src/lcm32f06x_crc.c ****     CRCx->CRC_RESULT = 0x00000000;  //初始值
 359:Library/src/lcm32f06x_crc.c ****   }
 360:Library/src/lcm32f06x_crc.c **** 
 361:Library/src/lcm32f06x_crc.c ****   for (index = 0; index < BufferLength; index += 4)
 362:Library/src/lcm32f06x_crc.c ****   {
 363:Library/src/lcm32f06x_crc.c ****     CRCx->CRC_DATA = pBuffer[index] | (pBuffer[index + 1] << 8) | \
 364:Library/src/lcm32f06x_crc.c ****                     (pBuffer[index + 2] << 16) | (pBuffer[index + 3] << 24);
 365:Library/src/lcm32f06x_crc.c ****     while (CRCx->CRC_CTRL & CRC_CTRL_CRC_VALID_Msk)
 366:Library/src/lcm32f06x_crc.c ****     {
 367:Library/src/lcm32f06x_crc.c ****         __NOP(); __NOP(); __NOP(); __NOP(); __NOP();
 368:Library/src/lcm32f06x_crc.c ****     };
 369:Library/src/lcm32f06x_crc.c ****   }
 370:Library/src/lcm32f06x_crc.c ****   
 371:Library/src/lcm32f06x_crc.c ****   if (CrcMode == CRC_32)
 372:Library/src/lcm32f06x_crc.c ****   {
 373:Library/src/lcm32f06x_crc.c ****     temp = Crc_read_result(CRCx) ^ 0xFFFFFFFF;  //结果异或值
 374:Library/src/lcm32f06x_crc.c ****   }
 375:Library/src/lcm32f06x_crc.c ****   else
 376:Library/src/lcm32f06x_crc.c ****   {
 377:Library/src/lcm32f06x_crc.c ****     temp = Crc_read_result(CRCx);        //结果异或值
 378:Library/src/lcm32f06x_crc.c ****   }
 379:Library/src/lcm32f06x_crc.c **** 
 380:Library/src/lcm32f06x_crc.c ****   CRCx->CRC_CTRL_b.CRC_SRST = 1;      //复位结果
 381:Library/src/lcm32f06x_crc.c ****   CRCx->CRC_CTRL_b.CRC_SRSTALL = 1;   //复位CRC
 382:Library/src/lcm32f06x_crc.c ****   return temp;
 383:Library/src/lcm32f06x_crc.c **** }
 384:Library/src/lcm32f06x_crc.c **** 
 385:Library/src/lcm32f06x_crc.c **** /**
 386:Library/src/lcm32f06x_crc.c ****   * @name   Crc_write_crc_data
 387:Library/src/lcm32f06x_crc.c ****   * @brief  EN: CRC writes data.
 388:Library/src/lcm32f06x_crc.c ****   *         CN: CRC 写入数据。
 389:Library/src/lcm32f06x_crc.c ****   * @param  CRCx: 
 390:Library/src/lcm32f06x_crc.c ****   *         EN: There is only one CRCx: CRC0.
 391:Library/src/lcm32f06x_crc.c ****   *         CN: 仅有一个CRCx: CRC0 。
 392:Library/src/lcm32f06x_crc.c ****   * @param  crc_data:
 393:Library/src/lcm32f06x_crc.c ****   *         EN: The data to be verified.
 394:Library/src/lcm32f06x_crc.c ****   *         CN: 待校验的数据。
 395:Library/src/lcm32f06x_crc.c ****   * @retval None
 396:Library/src/lcm32f06x_crc.c ****   */
 397:Library/src/lcm32f06x_crc.c **** void Crc_write_crc_data(CRC_TypeDef *CRCx, uint32_t crc_data)
 398:Library/src/lcm32f06x_crc.c **** {
 399:Library/src/lcm32f06x_crc.c ****   CRCx->CRC_DATA = crc_data;
 400:Library/src/lcm32f06x_crc.c **** }
 401:Library/src/lcm32f06x_crc.c **** 
 402:Library/src/lcm32f06x_crc.c **** /**
 403:Library/src/lcm32f06x_crc.c ****   * @name   Crc_read_result
ARM GAS  /tmp/cc1lb8fq.s 			page 14


 404:Library/src/lcm32f06x_crc.c ****   * @brief  EN: CRC reading result.
 405:Library/src/lcm32f06x_crc.c ****   *         CN: CRC 读取结果。
 406:Library/src/lcm32f06x_crc.c ****   * @param  CRCx: 
 407:Library/src/lcm32f06x_crc.c ****   *         EN: There is only one CRCx: CRC0.
 408:Library/src/lcm32f06x_crc.c ****   *         CN: 仅有一个CRCx: CRC0 。
 409:Library/src/lcm32f06x_crc.c ****   * @retval EN: CRC verification results
 410:Library/src/lcm32f06x_crc.c ****   *         CN: CRC 校验结果
 411:Library/src/lcm32f06x_crc.c ****   */
 412:Library/src/lcm32f06x_crc.c **** uint32_t Crc_read_result(CRC_TypeDef *CRCx)
 328              		.loc 1 412 10 view .LVU83
 329              	.LBB19:
 413:Library/src/lcm32f06x_crc.c **** {
 414:Library/src/lcm32f06x_crc.c ****   uint32_t temp;
 330              		.loc 1 414 3 view .LVU84
 415:Library/src/lcm32f06x_crc.c ****   temp = CRCx->CRC_RESULT;
 331              		.loc 1 415 3 view .LVU85
 332              		.loc 1 415 8 is_stmt 0 view .LVU86
 333 003e A068     		ldr	r0, [r4, #8]
 334              	.LVL12:
 416:Library/src/lcm32f06x_crc.c ****   return temp;
 335              		.loc 1 416 3 is_stmt 1 view .LVU87
 336              		.loc 1 416 3 is_stmt 0 view .LVU88
 337              	.LBE19:
 338              	.LBE18:
 201:Library/src/lcm32f06x_crc.c ****   }
 339              		.loc 1 201 10 discriminator 1 view .LVU89
 340 0040 C0B2     		uxtb	r0, r0
 341              	.LVL13:
 342              	.L39:
 204:Library/src/lcm32f06x_crc.c ****   CRCx->CRC_CTRL_b.CRC_SRSTALL = 1;   //复位CRC
 343              		.loc 1 204 3 is_stmt 1 view .LVU90
 204:Library/src/lcm32f06x_crc.c ****   CRCx->CRC_CTRL_b.CRC_SRSTALL = 1;   //复位CRC
 344              		.loc 1 204 29 is_stmt 0 view .LVU91
 345 0042 0222     		movs	r2, #2
 207:Library/src/lcm32f06x_crc.c **** 
 346              		.loc 1 207 1 view .LVU92
 347              		@ sp needed
 204:Library/src/lcm32f06x_crc.c ****   CRCx->CRC_CTRL_b.CRC_SRSTALL = 1;   //复位CRC
 348              		.loc 1 204 29 view .LVU93
 349 0044 2368     		ldr	r3, [r4]
 350 0046 1343     		orrs	r3, r2
 351 0048 2360     		str	r3, [r4]
 205:Library/src/lcm32f06x_crc.c ****   return temp;
 352              		.loc 1 205 3 is_stmt 1 view .LVU94
 205:Library/src/lcm32f06x_crc.c ****   return temp;
 353              		.loc 1 205 32 is_stmt 0 view .LVU95
 354 004a 2368     		ldr	r3, [r4]
 355 004c 013A     		subs	r2, r2, #1
 356 004e 1343     		orrs	r3, r2
 357 0050 2360     		str	r3, [r4]
 206:Library/src/lcm32f06x_crc.c **** }
 358              		.loc 1 206 3 is_stmt 1 view .LVU96
 359              	.LVL14:
 360              	.LVL15:
 361              	.LVL16:
 207:Library/src/lcm32f06x_crc.c **** 
 362              		.loc 1 207 1 is_stmt 0 view .LVU97
ARM GAS  /tmp/cc1lb8fq.s 			page 15


 363 0052 70BD     		pop	{r4, r5, r6, pc}
 364              	.LVL17:
 365              	.L48:
 179:Library/src/lcm32f06x_crc.c ****   }
 366              		.loc 1 179 5 is_stmt 1 view .LVU98
 179:Library/src/lcm32f06x_crc.c ****   }
 367              		.loc 1 179 22 is_stmt 0 view .LVU99
 368 0054 FF22     		movs	r2, #255
 369              	.LVL18:
 179:Library/src/lcm32f06x_crc.c ****   }
 370              		.loc 1 179 22 view .LVU100
 371 0056 8260     		str	r2, [r0, #8]
 186:Library/src/lcm32f06x_crc.c ****   {
 372              		.loc 1 186 25 is_stmt 1 discriminator 1 view .LVU101
 373 0058 002B     		cmp	r3, #0
 374 005a DBD1     		bne	.L35
 375 005c EFE7     		b	.L33
 376              	.LVL19:
 377              	.L49:
 197:Library/src/lcm32f06x_crc.c ****   }
 378              		.loc 1 197 5 view .LVU102
 379              	.LBB20:
 380              	.LBI20:
 412:Library/src/lcm32f06x_crc.c **** {
 381              		.loc 1 412 10 view .LVU103
 382              	.LBB21:
 414:Library/src/lcm32f06x_crc.c ****   temp = CRCx->CRC_RESULT;
 383              		.loc 1 414 3 view .LVU104
 415:Library/src/lcm32f06x_crc.c ****   return temp;
 384              		.loc 1 415 3 view .LVU105
 385              	.LBE21:
 386              	.LBE20:
 197:Library/src/lcm32f06x_crc.c ****   }
 387              		.loc 1 197 10 is_stmt 0 discriminator 1 view .LVU106
 388 005e 5523     		movs	r3, #85
 389              	.LVL20:
 390              	.LBB23:
 391              	.LBB22:
 415:Library/src/lcm32f06x_crc.c ****   return temp;
 392              		.loc 1 415 8 view .LVU107
 393 0060 A068     		ldr	r0, [r4, #8]
 394              	.LVL21:
 395              		.loc 1 416 3 is_stmt 1 view .LVU108
 396              		.loc 1 416 3 is_stmt 0 view .LVU109
 397              	.LBE22:
 398              	.LBE23:
 197:Library/src/lcm32f06x_crc.c ****   }
 399              		.loc 1 197 10 discriminator 1 view .LVU110
 400 0062 5840     		eors	r0, r3
 401 0064 C0B2     		uxtb	r0, r0
 402              	.LVL22:
 197:Library/src/lcm32f06x_crc.c ****   }
 403              		.loc 1 197 10 discriminator 1 view .LVU111
 404 0066 ECE7     		b	.L39
 405              		.cfi_endproc
 406              	.LFE49:
 408              		.section	.text.CRC_CalcBlockCRC16a,"ax",%progbits
ARM GAS  /tmp/cc1lb8fq.s 			page 16


 409              		.align	1
 410              		.p2align 2,,3
 411              		.global	CRC_CalcBlockCRC16a
 412              		.syntax unified
 413              		.code	16
 414              		.thumb_func
 416              	CRC_CalcBlockCRC16a:
 417              	.LVL23:
 418              	.LFB50:
 232:Library/src/lcm32f06x_crc.c ****   uint8_t index = 0;
 419              		.loc 1 232 1 is_stmt 1 view -0
 420              		.cfi_startproc
 421              		@ args = 0, pretend = 0, frame = 0
 422              		@ frame_needed = 0, uses_anonymous_args = 0
 233:Library/src/lcm32f06x_crc.c ****   uint16_t temp;
 423              		.loc 1 233 3 view .LVU113
 234:Library/src/lcm32f06x_crc.c **** 
 424              		.loc 1 234 3 view .LVU114
 236:Library/src/lcm32f06x_crc.c ****   {
 425              		.loc 1 236 3 view .LVU115
 232:Library/src/lcm32f06x_crc.c ****   uint8_t index = 0;
 426              		.loc 1 232 1 is_stmt 0 view .LVU116
 427 0000 F0B5     		push	{r4, r5, r6, r7, lr}
 428              	.LCFI1:
 429              		.cfi_def_cfa_offset 20
 430              		.cfi_offset 4, -20
 431              		.cfi_offset 5, -16
 432              		.cfi_offset 6, -12
 433              		.cfi_offset 7, -8
 434              		.cfi_offset 14, -4
 232:Library/src/lcm32f06x_crc.c ****   uint8_t index = 0;
 435              		.loc 1 232 1 view .LVU117
 436 0002 0D00     		movs	r5, r1
 437 0004 1F00     		movs	r7, r3
 236:Library/src/lcm32f06x_crc.c ****   {
 438              		.loc 1 236 6 view .LVU118
 439 0006 AB1E     		subs	r3, r5, #2
 440              	.LVL24:
 232:Library/src/lcm32f06x_crc.c ****   uint8_t index = 0;
 441              		.loc 1 232 1 view .LVU119
 442 0008 0400     		movs	r4, r0
 443 000a 1100     		movs	r1, r2
 444              	.LVL25:
 236:Library/src/lcm32f06x_crc.c ****   {
 445              		.loc 1 236 6 view .LVU120
 446 000c 012B     		cmp	r3, #1
 447 000e 28D9     		bls	.L66
 242:Library/src/lcm32f06x_crc.c ****   }
 448              		.loc 1 242 5 is_stmt 1 view .LVU121
 242:Library/src/lcm32f06x_crc.c ****   }
 449              		.loc 1 242 22 is_stmt 0 view .LVU122
 450 0010 0023     		movs	r3, #0
 451 0012 8360     		str	r3, [r0, #8]
 452              	.L54:
 245:Library/src/lcm32f06x_crc.c ****   {
 453              		.loc 1 245 25 is_stmt 1 discriminator 1 view .LVU123
 454 0014 0022     		movs	r2, #0
ARM GAS  /tmp/cc1lb8fq.s 			page 17


 455              	.LVL26:
 248:Library/src/lcm32f06x_crc.c ****     {
 456              		.loc 1 248 27 is_stmt 0 view .LVU124
 457 0016 0420     		movs	r0, #4
 458              	.LVL27:
 245:Library/src/lcm32f06x_crc.c ****   {
 459              		.loc 1 245 25 discriminator 1 view .LVU125
 460 0018 002F     		cmp	r7, #0
 461 001a 14D0     		beq	.L53
 462              	.LVL28:
 463              	.L52:
 247:Library/src/lcm32f06x_crc.c ****     while (CRCx->CRC_CTRL & CRC_CTRL_CRC_VALID_Msk)
 464              		.loc 1 247 5 is_stmt 1 view .LVU126
 247:Library/src/lcm32f06x_crc.c ****     while (CRCx->CRC_CTRL & CRC_CTRL_CRC_VALID_Msk)
 465              		.loc 1 247 47 is_stmt 0 view .LVU127
 466 001c 8B18     		adds	r3, r1, r2
 467 001e 5B78     		ldrb	r3, [r3, #1]
 247:Library/src/lcm32f06x_crc.c ****     while (CRCx->CRC_CTRL & CRC_CTRL_CRC_VALID_Msk)
 468              		.loc 1 247 29 view .LVU128
 469 0020 8E5C     		ldrb	r6, [r1, r2]
 247:Library/src/lcm32f06x_crc.c ****     while (CRCx->CRC_CTRL & CRC_CTRL_CRC_VALID_Msk)
 470              		.loc 1 247 59 view .LVU129
 471 0022 1B02     		lsls	r3, r3, #8
 247:Library/src/lcm32f06x_crc.c ****     while (CRCx->CRC_CTRL & CRC_CTRL_CRC_VALID_Msk)
 472              		.loc 1 247 37 view .LVU130
 473 0024 3343     		orrs	r3, r6
 247:Library/src/lcm32f06x_crc.c ****     while (CRCx->CRC_CTRL & CRC_CTRL_CRC_VALID_Msk)
 474              		.loc 1 247 20 view .LVU131
 475 0026 6360     		str	r3, [r4, #4]
 248:Library/src/lcm32f06x_crc.c ****     {
 476              		.loc 1 248 5 is_stmt 1 view .LVU132
 248:Library/src/lcm32f06x_crc.c ****     {
 477              		.loc 1 248 12 view .LVU133
 248:Library/src/lcm32f06x_crc.c ****     {
 478              		.loc 1 248 16 is_stmt 0 view .LVU134
 479 0028 2368     		ldr	r3, [r4]
 248:Library/src/lcm32f06x_crc.c ****     {
 480              		.loc 1 248 12 view .LVU135
 481 002a 1842     		tst	r0, r3
 482 002c 07D0     		beq	.L55
 483              	.L56:
 250:Library/src/lcm32f06x_crc.c ****     };
 484              		.loc 1 250 9 is_stmt 1 view .LVU136
 485              		.syntax divided
 486              	@ 250 "Library/src/lcm32f06x_crc.c" 1
 487 002e C046     		nop
 488              	@ 0 "" 2
 250:Library/src/lcm32f06x_crc.c ****     };
 489              		.loc 1 250 18 view .LVU137
 490              	@ 250 "Library/src/lcm32f06x_crc.c" 1
 491 0030 C046     		nop
 492              	@ 0 "" 2
 250:Library/src/lcm32f06x_crc.c ****     };
 493              		.loc 1 250 27 view .LVU138
 494              	@ 250 "Library/src/lcm32f06x_crc.c" 1
 495 0032 C046     		nop
 496              	@ 0 "" 2
ARM GAS  /tmp/cc1lb8fq.s 			page 18


 250:Library/src/lcm32f06x_crc.c ****     };
 497              		.loc 1 250 36 view .LVU139
 498              	@ 250 "Library/src/lcm32f06x_crc.c" 1
 499 0034 C046     		nop
 500              	@ 0 "" 2
 250:Library/src/lcm32f06x_crc.c ****     };
 501              		.loc 1 250 45 view .LVU140
 502              	@ 250 "Library/src/lcm32f06x_crc.c" 1
 503 0036 C046     		nop
 504              	@ 0 "" 2
 248:Library/src/lcm32f06x_crc.c ****     {
 505              		.loc 1 248 12 view .LVU141
 248:Library/src/lcm32f06x_crc.c ****     {
 506              		.loc 1 248 16 is_stmt 0 view .LVU142
 507              		.thumb
 508              		.syntax unified
 509 0038 2368     		ldr	r3, [r4]
 248:Library/src/lcm32f06x_crc.c ****     {
 510              		.loc 1 248 12 view .LVU143
 511 003a 1842     		tst	r0, r3
 512 003c F7D1     		bne	.L56
 513              	.L55:
 251:Library/src/lcm32f06x_crc.c ****   }
 514              		.loc 1 251 6 is_stmt 1 view .LVU144
 245:Library/src/lcm32f06x_crc.c ****   {
 515              		.loc 1 245 47 discriminator 2 view .LVU145
 516 003e 0232     		adds	r2, r2, #2
 517              	.LVL29:
 245:Library/src/lcm32f06x_crc.c ****   {
 518              		.loc 1 245 47 is_stmt 0 discriminator 2 view .LVU146
 519 0040 D2B2     		uxtb	r2, r2
 520              	.LVL30:
 245:Library/src/lcm32f06x_crc.c ****   {
 521              		.loc 1 245 25 is_stmt 1 discriminator 1 view .LVU147
 522 0042 9742     		cmp	r7, r2
 523 0044 EAD8     		bhi	.L52
 524              	.LVL31:
 525              	.L53:
 254:Library/src/lcm32f06x_crc.c ****   {
 526              		.loc 1 254 3 view .LVU148
 254:Library/src/lcm32f06x_crc.c ****   {
 527              		.loc 1 254 6 is_stmt 0 view .LVU149
 528 0046 013D     		subs	r5, r5, #1
 529              	.LVL32:
 530              	.LBB24:
 531              	.LBB25:
 415:Library/src/lcm32f06x_crc.c ****   return temp;
 532              		.loc 1 415 8 view .LVU150
 533 0048 A068     		ldr	r0, [r4, #8]
 534              	.LBE25:
 535              	.LBE24:
 254:Library/src/lcm32f06x_crc.c ****   {
 536              		.loc 1 254 6 view .LVU151
 537 004a 012D     		cmp	r5, #1
 538 004c 0CD9     		bls	.L67
 260:Library/src/lcm32f06x_crc.c ****   }
 539              		.loc 1 260 5 is_stmt 1 view .LVU152
ARM GAS  /tmp/cc1lb8fq.s 			page 19


 540              	.LVL33:
 541              	.LBB27:
 542              	.LBI27:
 412:Library/src/lcm32f06x_crc.c **** {
 543              		.loc 1 412 10 view .LVU153
 544              	.LBB28:
 414:Library/src/lcm32f06x_crc.c ****   temp = CRCx->CRC_RESULT;
 545              		.loc 1 414 3 view .LVU154
 415:Library/src/lcm32f06x_crc.c ****   return temp;
 546              		.loc 1 415 3 view .LVU155
 547              		.loc 1 416 3 view .LVU156
 548              		.loc 1 416 3 is_stmt 0 view .LVU157
 549              	.LBE28:
 550              	.LBE27:
 260:Library/src/lcm32f06x_crc.c ****   }
 551              		.loc 1 260 10 discriminator 1 view .LVU158
 552 004e 80B2     		uxth	r0, r0
 553              	.L58:
 554              	.LVL34:
 263:Library/src/lcm32f06x_crc.c ****   CRCx->CRC_CTRL_b.CRC_SRSTALL = 1;   //复位CRC
 555              		.loc 1 263 3 is_stmt 1 view .LVU159
 263:Library/src/lcm32f06x_crc.c ****   CRCx->CRC_CTRL_b.CRC_SRSTALL = 1;   //复位CRC
 556              		.loc 1 263 29 is_stmt 0 view .LVU160
 557 0050 0222     		movs	r2, #2
 266:Library/src/lcm32f06x_crc.c **** 
 558              		.loc 1 266 1 view .LVU161
 559              		@ sp needed
 263:Library/src/lcm32f06x_crc.c ****   CRCx->CRC_CTRL_b.CRC_SRSTALL = 1;   //复位CRC
 560              		.loc 1 263 29 view .LVU162
 561 0052 2368     		ldr	r3, [r4]
 562 0054 1343     		orrs	r3, r2
 563 0056 2360     		str	r3, [r4]
 264:Library/src/lcm32f06x_crc.c ****   return temp;
 564              		.loc 1 264 3 is_stmt 1 view .LVU163
 264:Library/src/lcm32f06x_crc.c ****   return temp;
 565              		.loc 1 264 32 is_stmt 0 view .LVU164
 566 0058 2368     		ldr	r3, [r4]
 567 005a 013A     		subs	r2, r2, #1
 568 005c 1343     		orrs	r3, r2
 569 005e 2360     		str	r3, [r4]
 265:Library/src/lcm32f06x_crc.c **** }
 570              		.loc 1 265 3 is_stmt 1 view .LVU165
 571              	.LVL35:
 572              	.LVL36:
 573              	.LVL37:
 266:Library/src/lcm32f06x_crc.c **** 
 574              		.loc 1 266 1 is_stmt 0 view .LVU166
 575 0060 F0BD     		pop	{r4, r5, r6, r7, pc}
 576              	.LVL38:
 577              	.L66:
 238:Library/src/lcm32f06x_crc.c ****   }
 578              		.loc 1 238 5 is_stmt 1 view .LVU167
 238:Library/src/lcm32f06x_crc.c ****   }
 579              		.loc 1 238 22 is_stmt 0 view .LVU168
 580 0062 034B     		ldr	r3, .L68
 581 0064 8360     		str	r3, [r0, #8]
 582 0066 D5E7     		b	.L54
ARM GAS  /tmp/cc1lb8fq.s 			page 20


 583              	.LVL39:
 584              	.L67:
 256:Library/src/lcm32f06x_crc.c ****   }
 585              		.loc 1 256 5 is_stmt 1 view .LVU169
 586              	.LBB29:
 587              	.LBI24:
 412:Library/src/lcm32f06x_crc.c **** {
 588              		.loc 1 412 10 view .LVU170
 589              	.LBB26:
 414:Library/src/lcm32f06x_crc.c ****   temp = CRCx->CRC_RESULT;
 590              		.loc 1 414 3 view .LVU171
 415:Library/src/lcm32f06x_crc.c ****   return temp;
 591              		.loc 1 415 3 view .LVU172
 592              		.loc 1 416 3 view .LVU173
 593              		.loc 1 416 3 is_stmt 0 view .LVU174
 594              	.LBE26:
 595              	.LBE29:
 256:Library/src/lcm32f06x_crc.c ****   }
 596              		.loc 1 256 10 discriminator 1 view .LVU175
 597 0068 C043     		mvns	r0, r0
 598 006a 80B2     		uxth	r0, r0
 599              	.LVL40:
 256:Library/src/lcm32f06x_crc.c ****   }
 600              		.loc 1 256 10 discriminator 1 view .LVU176
 601 006c F0E7     		b	.L58
 602              	.L69:
 603 006e C046     		.align	2
 604              	.L68:
 605 0070 FFFF0000 		.word	65535
 606              		.cfi_endproc
 607              	.LFE50:
 609              		.section	.text.CRC_CalcBlockCRC16b,"ax",%progbits
 610              		.align	1
 611              		.p2align 2,,3
 612              		.global	CRC_CalcBlockCRC16b
 613              		.syntax unified
 614              		.code	16
 615              		.thumb_func
 617              	CRC_CalcBlockCRC16b:
 618              	.LVL41:
 619              	.LFB51:
 291:Library/src/lcm32f06x_crc.c ****   uint8_t index = 0;
 620              		.loc 1 291 1 is_stmt 1 view -0
 621              		.cfi_startproc
 622              		@ args = 0, pretend = 0, frame = 0
 623              		@ frame_needed = 0, uses_anonymous_args = 0
 292:Library/src/lcm32f06x_crc.c ****   uint16_t temp;
 624              		.loc 1 292 3 view .LVU178
 293:Library/src/lcm32f06x_crc.c **** 
 625              		.loc 1 293 3 view .LVU179
 295:Library/src/lcm32f06x_crc.c ****   {
 626              		.loc 1 295 3 view .LVU180
 291:Library/src/lcm32f06x_crc.c ****   uint8_t index = 0;
 627              		.loc 1 291 1 is_stmt 0 view .LVU181
 628 0000 F0B5     		push	{r4, r5, r6, r7, lr}
 629              	.LCFI2:
 630              		.cfi_def_cfa_offset 20
ARM GAS  /tmp/cc1lb8fq.s 			page 21


 631              		.cfi_offset 4, -20
 632              		.cfi_offset 5, -16
 633              		.cfi_offset 6, -12
 634              		.cfi_offset 7, -8
 635              		.cfi_offset 14, -4
 291:Library/src/lcm32f06x_crc.c ****   uint8_t index = 0;
 636              		.loc 1 291 1 view .LVU182
 637 0002 0D00     		movs	r5, r1
 638 0004 1F00     		movs	r7, r3
 295:Library/src/lcm32f06x_crc.c ****   {
 639              		.loc 1 295 6 view .LVU183
 640 0006 6B1E     		subs	r3, r5, #1
 641              	.LVL42:
 291:Library/src/lcm32f06x_crc.c ****   uint8_t index = 0;
 642              		.loc 1 291 1 view .LVU184
 643 0008 0400     		movs	r4, r0
 644 000a 1100     		movs	r1, r2
 645              	.LVL43:
 295:Library/src/lcm32f06x_crc.c ****   {
 646              		.loc 1 295 6 view .LVU185
 647 000c 012B     		cmp	r3, #1
 648 000e 27D9     		bls	.L87
 301:Library/src/lcm32f06x_crc.c ****   }
 649              		.loc 1 301 5 is_stmt 1 view .LVU186
 301:Library/src/lcm32f06x_crc.c ****   }
 650              		.loc 1 301 22 is_stmt 0 view .LVU187
 651 0010 0023     		movs	r3, #0
 652 0012 8360     		str	r3, [r0, #8]
 304:Library/src/lcm32f06x_crc.c ****   {
 653              		.loc 1 304 25 is_stmt 1 discriminator 1 view .LVU188
 654 0014 002F     		cmp	r7, #0
 655 0016 18D0     		beq	.L75
 656              	.L74:
 291:Library/src/lcm32f06x_crc.c ****   uint8_t index = 0;
 657              		.loc 1 291 1 is_stmt 0 view .LVU189
 658 0018 0022     		movs	r2, #0
 659              	.LVL44:
 307:Library/src/lcm32f06x_crc.c ****     {
 660              		.loc 1 307 27 view .LVU190
 661 001a 0420     		movs	r0, #4
 662              	.LVL45:
 663              	.L73:
 306:Library/src/lcm32f06x_crc.c ****     while (CRCx->CRC_CTRL & CRC_CTRL_CRC_VALID_Msk)
 664              		.loc 1 306 5 is_stmt 1 view .LVU191
 306:Library/src/lcm32f06x_crc.c ****     while (CRCx->CRC_CTRL & CRC_CTRL_CRC_VALID_Msk)
 665              		.loc 1 306 47 is_stmt 0 view .LVU192
 666 001c 8B18     		adds	r3, r1, r2
 667 001e 5B78     		ldrb	r3, [r3, #1]
 306:Library/src/lcm32f06x_crc.c ****     while (CRCx->CRC_CTRL & CRC_CTRL_CRC_VALID_Msk)
 668              		.loc 1 306 29 view .LVU193
 669 0020 8E5C     		ldrb	r6, [r1, r2]
 306:Library/src/lcm32f06x_crc.c ****     while (CRCx->CRC_CTRL & CRC_CTRL_CRC_VALID_Msk)
 670              		.loc 1 306 59 view .LVU194
 671 0022 1B02     		lsls	r3, r3, #8
 306:Library/src/lcm32f06x_crc.c ****     while (CRCx->CRC_CTRL & CRC_CTRL_CRC_VALID_Msk)
 672              		.loc 1 306 37 view .LVU195
 673 0024 3343     		orrs	r3, r6
ARM GAS  /tmp/cc1lb8fq.s 			page 22


 306:Library/src/lcm32f06x_crc.c ****     while (CRCx->CRC_CTRL & CRC_CTRL_CRC_VALID_Msk)
 674              		.loc 1 306 20 view .LVU196
 675 0026 6360     		str	r3, [r4, #4]
 307:Library/src/lcm32f06x_crc.c ****     {
 676              		.loc 1 307 5 is_stmt 1 view .LVU197
 307:Library/src/lcm32f06x_crc.c ****     {
 677              		.loc 1 307 12 view .LVU198
 307:Library/src/lcm32f06x_crc.c ****     {
 678              		.loc 1 307 16 is_stmt 0 view .LVU199
 679 0028 2368     		ldr	r3, [r4]
 307:Library/src/lcm32f06x_crc.c ****     {
 680              		.loc 1 307 12 view .LVU200
 681 002a 1842     		tst	r0, r3
 682 002c 07D0     		beq	.L76
 683              	.L77:
 309:Library/src/lcm32f06x_crc.c ****     };
 684              		.loc 1 309 9 is_stmt 1 view .LVU201
 685              		.syntax divided
 686              	@ 309 "Library/src/lcm32f06x_crc.c" 1
 687 002e C046     		nop
 688              	@ 0 "" 2
 309:Library/src/lcm32f06x_crc.c ****     };
 689              		.loc 1 309 18 view .LVU202
 690              	@ 309 "Library/src/lcm32f06x_crc.c" 1
 691 0030 C046     		nop
 692              	@ 0 "" 2
 309:Library/src/lcm32f06x_crc.c ****     };
 693              		.loc 1 309 27 view .LVU203
 694              	@ 309 "Library/src/lcm32f06x_crc.c" 1
 695 0032 C046     		nop
 696              	@ 0 "" 2
 309:Library/src/lcm32f06x_crc.c ****     };
 697              		.loc 1 309 36 view .LVU204
 698              	@ 309 "Library/src/lcm32f06x_crc.c" 1
 699 0034 C046     		nop
 700              	@ 0 "" 2
 309:Library/src/lcm32f06x_crc.c ****     };
 701              		.loc 1 309 45 view .LVU205
 702              	@ 309 "Library/src/lcm32f06x_crc.c" 1
 703 0036 C046     		nop
 704              	@ 0 "" 2
 307:Library/src/lcm32f06x_crc.c ****     {
 705              		.loc 1 307 12 view .LVU206
 307:Library/src/lcm32f06x_crc.c ****     {
 706              		.loc 1 307 16 is_stmt 0 view .LVU207
 707              		.thumb
 708              		.syntax unified
 709 0038 2368     		ldr	r3, [r4]
 307:Library/src/lcm32f06x_crc.c ****     {
 710              		.loc 1 307 12 view .LVU208
 711 003a 1842     		tst	r0, r3
 712 003c F7D1     		bne	.L77
 713              	.L76:
 310:Library/src/lcm32f06x_crc.c ****   }
 714              		.loc 1 310 6 is_stmt 1 view .LVU209
 304:Library/src/lcm32f06x_crc.c ****   {
 715              		.loc 1 304 47 discriminator 2 view .LVU210
ARM GAS  /tmp/cc1lb8fq.s 			page 23


 716 003e 0232     		adds	r2, r2, #2
 717              	.LVL46:
 304:Library/src/lcm32f06x_crc.c ****   {
 718              		.loc 1 304 47 is_stmt 0 discriminator 2 view .LVU211
 719 0040 D2B2     		uxtb	r2, r2
 720              	.LVL47:
 304:Library/src/lcm32f06x_crc.c ****   {
 721              		.loc 1 304 25 is_stmt 1 discriminator 1 view .LVU212
 722 0042 9742     		cmp	r7, r2
 723 0044 EAD8     		bhi	.L73
 724              	.LVL48:
 725              	.L72:
 313:Library/src/lcm32f06x_crc.c ****   {
 726              		.loc 1 313 3 view .LVU213
 313:Library/src/lcm32f06x_crc.c ****   {
 727              		.loc 1 313 6 is_stmt 0 view .LVU214
 728 0046 022D     		cmp	r5, #2
 729 0048 0FD0     		beq	.L88
 730              	.L75:
 319:Library/src/lcm32f06x_crc.c ****   }
 731              		.loc 1 319 5 is_stmt 1 view .LVU215
 732              	.LVL49:
 733              	.LBB30:
 734              	.LBI30:
 412:Library/src/lcm32f06x_crc.c **** {
 735              		.loc 1 412 10 view .LVU216
 736              	.LBB31:
 414:Library/src/lcm32f06x_crc.c ****   temp = CRCx->CRC_RESULT;
 737              		.loc 1 414 3 view .LVU217
 415:Library/src/lcm32f06x_crc.c ****   return temp;
 738              		.loc 1 415 3 view .LVU218
 415:Library/src/lcm32f06x_crc.c ****   return temp;
 739              		.loc 1 415 8 is_stmt 0 view .LVU219
 740 004a A068     		ldr	r0, [r4, #8]
 741              	.LVL50:
 742              		.loc 1 416 3 is_stmt 1 view .LVU220
 743              		.loc 1 416 3 is_stmt 0 view .LVU221
 744              	.LBE31:
 745              	.LBE30:
 319:Library/src/lcm32f06x_crc.c ****   }
 746              		.loc 1 319 10 discriminator 1 view .LVU222
 747 004c 80B2     		uxth	r0, r0
 748              	.L78:
 749              	.LVL51:
 322:Library/src/lcm32f06x_crc.c ****   CRCx->CRC_CTRL_b.CRC_SRSTALL = 1;   //复位CRC
 750              		.loc 1 322 3 is_stmt 1 view .LVU223
 322:Library/src/lcm32f06x_crc.c ****   CRCx->CRC_CTRL_b.CRC_SRSTALL = 1;   //复位CRC
 751              		.loc 1 322 29 is_stmt 0 view .LVU224
 752 004e 0222     		movs	r2, #2
 325:Library/src/lcm32f06x_crc.c **** 
 753              		.loc 1 325 1 view .LVU225
 754              		@ sp needed
 322:Library/src/lcm32f06x_crc.c ****   CRCx->CRC_CTRL_b.CRC_SRSTALL = 1;   //复位CRC
 755              		.loc 1 322 29 view .LVU226
 756 0050 2368     		ldr	r3, [r4]
 757 0052 1343     		orrs	r3, r2
 758 0054 2360     		str	r3, [r4]
ARM GAS  /tmp/cc1lb8fq.s 			page 24


 323:Library/src/lcm32f06x_crc.c ****   return temp;
 759              		.loc 1 323 3 is_stmt 1 view .LVU227
 323:Library/src/lcm32f06x_crc.c ****   return temp;
 760              		.loc 1 323 32 is_stmt 0 view .LVU228
 761 0056 2368     		ldr	r3, [r4]
 762 0058 013A     		subs	r2, r2, #1
 763 005a 1343     		orrs	r3, r2
 764 005c 2360     		str	r3, [r4]
 324:Library/src/lcm32f06x_crc.c **** }
 765              		.loc 1 324 3 is_stmt 1 view .LVU229
 766              	.LVL52:
 767              	.LVL53:
 768              	.LVL54:
 325:Library/src/lcm32f06x_crc.c **** 
 769              		.loc 1 325 1 is_stmt 0 view .LVU230
 770 005e F0BD     		pop	{r4, r5, r6, r7, pc}
 771              	.LVL55:
 772              	.L87:
 297:Library/src/lcm32f06x_crc.c ****   }
 773              		.loc 1 297 5 is_stmt 1 view .LVU231
 297:Library/src/lcm32f06x_crc.c ****   }
 774              		.loc 1 297 22 is_stmt 0 view .LVU232
 775 0060 044B     		ldr	r3, .L89
 776 0062 8360     		str	r3, [r0, #8]
 304:Library/src/lcm32f06x_crc.c ****   {
 777              		.loc 1 304 25 is_stmt 1 discriminator 1 view .LVU233
 778 0064 002F     		cmp	r7, #0
 779 0066 D7D1     		bne	.L74
 780 0068 EDE7     		b	.L72
 781              	.LVL56:
 782              	.L88:
 315:Library/src/lcm32f06x_crc.c ****   }
 783              		.loc 1 315 5 view .LVU234
 784              	.LBB32:
 785              	.LBI32:
 412:Library/src/lcm32f06x_crc.c **** {
 786              		.loc 1 412 10 view .LVU235
 787              	.LBB33:
 414:Library/src/lcm32f06x_crc.c ****   temp = CRCx->CRC_RESULT;
 788              		.loc 1 414 3 view .LVU236
 415:Library/src/lcm32f06x_crc.c ****   return temp;
 789              		.loc 1 415 3 view .LVU237
 415:Library/src/lcm32f06x_crc.c ****   return temp;
 790              		.loc 1 415 8 is_stmt 0 view .LVU238
 791 006a A068     		ldr	r0, [r4, #8]
 792              	.LVL57:
 793              		.loc 1 416 3 is_stmt 1 view .LVU239
 794              		.loc 1 416 3 is_stmt 0 view .LVU240
 795              	.LBE33:
 796              	.LBE32:
 315:Library/src/lcm32f06x_crc.c ****   }
 797              		.loc 1 315 10 discriminator 1 view .LVU241
 798 006c C043     		mvns	r0, r0
 799 006e 80B2     		uxth	r0, r0
 800              	.LVL58:
 315:Library/src/lcm32f06x_crc.c ****   }
 801              		.loc 1 315 10 discriminator 1 view .LVU242
ARM GAS  /tmp/cc1lb8fq.s 			page 25


 802 0070 EDE7     		b	.L78
 803              	.L90:
 804 0072 C046     		.align	2
 805              	.L89:
 806 0074 FFFF0000 		.word	65535
 807              		.cfi_endproc
 808              	.LFE51:
 810              		.section	.text.CRC_CalcBlockCRC32,"ax",%progbits
 811              		.align	1
 812              		.p2align 2,,3
 813              		.global	CRC_CalcBlockCRC32
 814              		.syntax unified
 815              		.code	16
 816              		.thumb_func
 818              	CRC_CalcBlockCRC32:
 819              	.LVL59:
 820              	.LFB52:
 348:Library/src/lcm32f06x_crc.c ****   uint8_t index = 0;
 821              		.loc 1 348 1 is_stmt 1 view -0
 822              		.cfi_startproc
 823              		@ args = 0, pretend = 0, frame = 0
 824              		@ frame_needed = 0, uses_anonymous_args = 0
 349:Library/src/lcm32f06x_crc.c ****   uint32_t temp;
 825              		.loc 1 349 3 view .LVU244
 350:Library/src/lcm32f06x_crc.c **** 
 826              		.loc 1 350 3 view .LVU245
 352:Library/src/lcm32f06x_crc.c ****   {
 827              		.loc 1 352 3 view .LVU246
 348:Library/src/lcm32f06x_crc.c ****   uint8_t index = 0;
 828              		.loc 1 348 1 is_stmt 0 view .LVU247
 829 0000 F0B5     		push	{r4, r5, r6, r7, lr}
 830              	.LCFI3:
 831              		.cfi_def_cfa_offset 20
 832              		.cfi_offset 4, -20
 833              		.cfi_offset 5, -16
 834              		.cfi_offset 6, -12
 835              		.cfi_offset 7, -8
 836              		.cfi_offset 14, -4
 348:Library/src/lcm32f06x_crc.c ****   uint8_t index = 0;
 837              		.loc 1 348 1 view .LVU248
 838 0002 8C46     		mov	ip, r1
 839 0004 0400     		movs	r4, r0
 840 0006 1600     		movs	r6, r2
 841 0008 1F00     		movs	r7, r3
 352:Library/src/lcm32f06x_crc.c ****   {
 842              		.loc 1 352 6 view .LVU249
 843 000a 0129     		cmp	r1, #1
 844 000c 30D9     		bls	.L108
 358:Library/src/lcm32f06x_crc.c ****   }
 845              		.loc 1 358 5 is_stmt 1 view .LVU250
 358:Library/src/lcm32f06x_crc.c ****   }
 846              		.loc 1 358 22 is_stmt 0 view .LVU251
 847 000e 0023     		movs	r3, #0
 848              	.LVL60:
 358:Library/src/lcm32f06x_crc.c ****   }
 849              		.loc 1 358 22 view .LVU252
 850 0010 8360     		str	r3, [r0, #8]
ARM GAS  /tmp/cc1lb8fq.s 			page 26


 361:Library/src/lcm32f06x_crc.c ****   {
 851              		.loc 1 361 25 is_stmt 1 discriminator 1 view .LVU253
 852 0012 002F     		cmp	r7, #0
 853 0014 22D0     		beq	.L96
 854              	.L95:
 348:Library/src/lcm32f06x_crc.c ****   uint8_t index = 0;
 855              		.loc 1 348 1 is_stmt 0 view .LVU254
 856 0016 0021     		movs	r1, #0
 857              	.LVL61:
 365:Library/src/lcm32f06x_crc.c ****     {
 858              		.loc 1 365 27 view .LVU255
 859 0018 0422     		movs	r2, #4
 860              	.LVL62:
 861              	.L94:
 363:Library/src/lcm32f06x_crc.c ****                     (pBuffer[index + 2] << 16) | (pBuffer[index + 3] << 24);
 862              		.loc 1 363 5 is_stmt 1 view .LVU256
 363:Library/src/lcm32f06x_crc.c ****                     (pBuffer[index + 2] << 16) | (pBuffer[index + 3] << 24);
 863              		.loc 1 363 47 is_stmt 0 view .LVU257
 864 001a 7318     		adds	r3, r6, r1
 865 001c 5878     		ldrb	r0, [r3, #1]
 364:Library/src/lcm32f06x_crc.c ****     while (CRCx->CRC_CTRL & CRC_CTRL_CRC_VALID_Msk)
 866              		.loc 1 364 29 view .LVU258
 867 001e 9D78     		ldrb	r5, [r3, #2]
 363:Library/src/lcm32f06x_crc.c ****                     (pBuffer[index + 2] << 16) | (pBuffer[index + 3] << 24);
 868              		.loc 1 363 59 view .LVU259
 869 0020 0002     		lsls	r0, r0, #8
 364:Library/src/lcm32f06x_crc.c ****     while (CRCx->CRC_CTRL & CRC_CTRL_CRC_VALID_Msk)
 870              		.loc 1 364 41 view .LVU260
 871 0022 2D04     		lsls	r5, r5, #16
 364:Library/src/lcm32f06x_crc.c ****     while (CRCx->CRC_CTRL & CRC_CTRL_CRC_VALID_Msk)
 872              		.loc 1 364 58 view .LVU261
 873 0024 DB78     		ldrb	r3, [r3, #3]
 363:Library/src/lcm32f06x_crc.c ****                     (pBuffer[index + 2] << 16) | (pBuffer[index + 3] << 24);
 874              		.loc 1 363 65 view .LVU262
 875 0026 2843     		orrs	r0, r5
 363:Library/src/lcm32f06x_crc.c ****                     (pBuffer[index + 2] << 16) | (pBuffer[index + 3] << 24);
 876              		.loc 1 363 29 view .LVU263
 877 0028 755C     		ldrb	r5, [r6, r1]
 364:Library/src/lcm32f06x_crc.c ****     while (CRCx->CRC_CTRL & CRC_CTRL_CRC_VALID_Msk)
 878              		.loc 1 364 70 view .LVU264
 879 002a 1B06     		lsls	r3, r3, #24
 363:Library/src/lcm32f06x_crc.c ****                     (pBuffer[index + 2] << 16) | (pBuffer[index + 3] << 24);
 880              		.loc 1 363 65 view .LVU265
 881 002c 2843     		orrs	r0, r5
 364:Library/src/lcm32f06x_crc.c ****     while (CRCx->CRC_CTRL & CRC_CTRL_CRC_VALID_Msk)
 882              		.loc 1 364 48 view .LVU266
 883 002e 1843     		orrs	r0, r3
 363:Library/src/lcm32f06x_crc.c ****                     (pBuffer[index + 2] << 16) | (pBuffer[index + 3] << 24);
 884              		.loc 1 363 20 view .LVU267
 885 0030 6060     		str	r0, [r4, #4]
 365:Library/src/lcm32f06x_crc.c ****     {
 886              		.loc 1 365 5 is_stmt 1 view .LVU268
 365:Library/src/lcm32f06x_crc.c ****     {
 887              		.loc 1 365 12 view .LVU269
 365:Library/src/lcm32f06x_crc.c ****     {
 888              		.loc 1 365 16 is_stmt 0 view .LVU270
 889 0032 2368     		ldr	r3, [r4]
ARM GAS  /tmp/cc1lb8fq.s 			page 27


 365:Library/src/lcm32f06x_crc.c ****     {
 890              		.loc 1 365 12 view .LVU271
 891 0034 1A42     		tst	r2, r3
 892 0036 07D0     		beq	.L97
 893              	.L98:
 367:Library/src/lcm32f06x_crc.c ****     };
 894              		.loc 1 367 9 is_stmt 1 view .LVU272
 895              		.syntax divided
 896              	@ 367 "Library/src/lcm32f06x_crc.c" 1
 897 0038 C046     		nop
 898              	@ 0 "" 2
 367:Library/src/lcm32f06x_crc.c ****     };
 899              		.loc 1 367 18 view .LVU273
 900              	@ 367 "Library/src/lcm32f06x_crc.c" 1
 901 003a C046     		nop
 902              	@ 0 "" 2
 367:Library/src/lcm32f06x_crc.c ****     };
 903              		.loc 1 367 27 view .LVU274
 904              	@ 367 "Library/src/lcm32f06x_crc.c" 1
 905 003c C046     		nop
 906              	@ 0 "" 2
 367:Library/src/lcm32f06x_crc.c ****     };
 907              		.loc 1 367 36 view .LVU275
 908              	@ 367 "Library/src/lcm32f06x_crc.c" 1
 909 003e C046     		nop
 910              	@ 0 "" 2
 367:Library/src/lcm32f06x_crc.c ****     };
 911              		.loc 1 367 45 view .LVU276
 912              	@ 367 "Library/src/lcm32f06x_crc.c" 1
 913 0040 C046     		nop
 914              	@ 0 "" 2
 365:Library/src/lcm32f06x_crc.c ****     {
 915              		.loc 1 365 12 view .LVU277
 365:Library/src/lcm32f06x_crc.c ****     {
 916              		.loc 1 365 16 is_stmt 0 view .LVU278
 917              		.thumb
 918              		.syntax unified
 919 0042 2368     		ldr	r3, [r4]
 365:Library/src/lcm32f06x_crc.c ****     {
 920              		.loc 1 365 12 view .LVU279
 921 0044 1A42     		tst	r2, r3
 922 0046 F7D1     		bne	.L98
 923              	.L97:
 368:Library/src/lcm32f06x_crc.c ****   }
 924              		.loc 1 368 6 is_stmt 1 view .LVU280
 361:Library/src/lcm32f06x_crc.c ****   {
 925              		.loc 1 361 47 discriminator 2 view .LVU281
 926 0048 0431     		adds	r1, r1, #4
 927              	.LVL63:
 361:Library/src/lcm32f06x_crc.c ****   {
 928              		.loc 1 361 47 is_stmt 0 discriminator 2 view .LVU282
 929 004a C9B2     		uxtb	r1, r1
 930              	.LVL64:
 361:Library/src/lcm32f06x_crc.c ****   {
 931              		.loc 1 361 25 is_stmt 1 discriminator 1 view .LVU283
 932 004c 8F42     		cmp	r7, r1
 933 004e E4D8     		bhi	.L94
ARM GAS  /tmp/cc1lb8fq.s 			page 28


 934              	.LVL65:
 935              	.L93:
 371:Library/src/lcm32f06x_crc.c ****   {
 936              		.loc 1 371 3 view .LVU284
 371:Library/src/lcm32f06x_crc.c ****   {
 937              		.loc 1 371 6 is_stmt 0 view .LVU285
 938 0050 6346     		mov	r3, ip
 939 0052 002B     		cmp	r3, #0
 940 0054 02D1     		bne	.L96
 941              	.LVL66:
 373:Library/src/lcm32f06x_crc.c ****   }
 942              		.loc 1 373 5 is_stmt 1 view .LVU286
 943              	.LBB34:
 944              	.LBI34:
 412:Library/src/lcm32f06x_crc.c **** {
 945              		.loc 1 412 10 view .LVU287
 946              	.LBB35:
 414:Library/src/lcm32f06x_crc.c ****   temp = CRCx->CRC_RESULT;
 947              		.loc 1 414 3 view .LVU288
 415:Library/src/lcm32f06x_crc.c ****   return temp;
 948              		.loc 1 415 3 view .LVU289
 415:Library/src/lcm32f06x_crc.c ****   return temp;
 949              		.loc 1 415 8 is_stmt 0 view .LVU290
 950 0056 A068     		ldr	r0, [r4, #8]
 951              	.LVL67:
 952              		.loc 1 416 3 is_stmt 1 view .LVU291
 953              		.loc 1 416 3 is_stmt 0 view .LVU292
 954              	.LBE35:
 955              	.LBE34:
 373:Library/src/lcm32f06x_crc.c ****   }
 956              		.loc 1 373 10 discriminator 1 view .LVU293
 957 0058 C043     		mvns	r0, r0
 958              	.LVL68:
 373:Library/src/lcm32f06x_crc.c ****   }
 959              		.loc 1 373 10 discriminator 1 view .LVU294
 960 005a 00E0     		b	.L99
 961              	.LVL69:
 962              	.L96:
 377:Library/src/lcm32f06x_crc.c ****   }
 963              		.loc 1 377 5 is_stmt 1 view .LVU295
 964              	.LBB36:
 965              	.LBI36:
 412:Library/src/lcm32f06x_crc.c **** {
 966              		.loc 1 412 10 view .LVU296
 967              	.LBB37:
 414:Library/src/lcm32f06x_crc.c ****   temp = CRCx->CRC_RESULT;
 968              		.loc 1 414 3 view .LVU297
 415:Library/src/lcm32f06x_crc.c ****   return temp;
 969              		.loc 1 415 3 view .LVU298
 415:Library/src/lcm32f06x_crc.c ****   return temp;
 970              		.loc 1 415 8 is_stmt 0 view .LVU299
 971 005c A068     		ldr	r0, [r4, #8]
 972              	.LVL70:
 973              		.loc 1 416 3 is_stmt 1 view .LVU300
 974              	.L99:
 975              		.loc 1 416 3 is_stmt 0 view .LVU301
 976              	.LBE37:
ARM GAS  /tmp/cc1lb8fq.s 			page 29


 977              	.LBE36:
 380:Library/src/lcm32f06x_crc.c ****   CRCx->CRC_CTRL_b.CRC_SRSTALL = 1;   //复位CRC
 978              		.loc 1 380 3 is_stmt 1 view .LVU302
 380:Library/src/lcm32f06x_crc.c ****   CRCx->CRC_CTRL_b.CRC_SRSTALL = 1;   //复位CRC
 979              		.loc 1 380 29 is_stmt 0 view .LVU303
 980 005e 0222     		movs	r2, #2
 383:Library/src/lcm32f06x_crc.c **** 
 981              		.loc 1 383 1 view .LVU304
 982              		@ sp needed
 380:Library/src/lcm32f06x_crc.c ****   CRCx->CRC_CTRL_b.CRC_SRSTALL = 1;   //复位CRC
 983              		.loc 1 380 29 view .LVU305
 984 0060 2368     		ldr	r3, [r4]
 985 0062 1343     		orrs	r3, r2
 986 0064 2360     		str	r3, [r4]
 381:Library/src/lcm32f06x_crc.c ****   return temp;
 987              		.loc 1 381 3 is_stmt 1 view .LVU306
 381:Library/src/lcm32f06x_crc.c ****   return temp;
 988              		.loc 1 381 32 is_stmt 0 view .LVU307
 989 0066 2368     		ldr	r3, [r4]
 990 0068 013A     		subs	r2, r2, #1
 991 006a 1343     		orrs	r3, r2
 992 006c 2360     		str	r3, [r4]
 382:Library/src/lcm32f06x_crc.c **** }
 993              		.loc 1 382 3 is_stmt 1 view .LVU308
 994              	.LVL71:
 995              	.LVL72:
 996              	.LVL73:
 383:Library/src/lcm32f06x_crc.c **** 
 997              		.loc 1 383 1 is_stmt 0 view .LVU309
 998 006e F0BD     		pop	{r4, r5, r6, r7, pc}
 999              	.LVL74:
 1000              	.L108:
 354:Library/src/lcm32f06x_crc.c ****   }
 1001              		.loc 1 354 5 is_stmt 1 view .LVU310
 354:Library/src/lcm32f06x_crc.c ****   }
 1002              		.loc 1 354 22 is_stmt 0 view .LVU311
 1003 0070 0123     		movs	r3, #1
 1004              	.LVL75:
 354:Library/src/lcm32f06x_crc.c ****   }
 1005              		.loc 1 354 22 view .LVU312
 1006 0072 5B42     		rsbs	r3, r3, #0
 1007 0074 8360     		str	r3, [r0, #8]
 361:Library/src/lcm32f06x_crc.c ****   {
 1008              		.loc 1 361 25 is_stmt 1 discriminator 1 view .LVU313
 1009 0076 002F     		cmp	r7, #0
 1010 0078 CDD1     		bne	.L95
 1011 007a E9E7     		b	.L93
 1012              		.cfi_endproc
 1013              	.LFE52:
 1015              		.section	.text.Crc_write_crc_data,"ax",%progbits
 1016              		.align	1
 1017              		.p2align 2,,3
 1018              		.global	Crc_write_crc_data
 1019              		.syntax unified
 1020              		.code	16
 1021              		.thumb_func
 1023              	Crc_write_crc_data:
ARM GAS  /tmp/cc1lb8fq.s 			page 30


 1024              	.LVL76:
 1025              	.LFB53:
 398:Library/src/lcm32f06x_crc.c ****   CRCx->CRC_DATA = crc_data;
 1026              		.loc 1 398 1 view -0
 1027              		.cfi_startproc
 1028              		@ args = 0, pretend = 0, frame = 0
 1029              		@ frame_needed = 0, uses_anonymous_args = 0
 1030              		@ link register save eliminated.
 399:Library/src/lcm32f06x_crc.c **** }
 1031              		.loc 1 399 3 view .LVU315
 399:Library/src/lcm32f06x_crc.c **** }
 1032              		.loc 1 399 18 is_stmt 0 view .LVU316
 1033 0000 4160     		str	r1, [r0, #4]
 400:Library/src/lcm32f06x_crc.c **** 
 1034              		.loc 1 400 1 view .LVU317
 1035              		@ sp needed
 1036 0002 7047     		bx	lr
 1037              		.cfi_endproc
 1038              	.LFE53:
 1040              		.section	.text.Crc_read_result,"ax",%progbits
 1041              		.align	1
 1042              		.p2align 2,,3
 1043              		.global	Crc_read_result
 1044              		.syntax unified
 1045              		.code	16
 1046              		.thumb_func
 1048              	Crc_read_result:
 1049              	.LVL77:
 1050              	.LFB54:
 413:Library/src/lcm32f06x_crc.c ****   uint32_t temp;
 1051              		.loc 1 413 1 is_stmt 1 view -0
 1052              		.cfi_startproc
 1053              		@ args = 0, pretend = 0, frame = 0
 1054              		@ frame_needed = 0, uses_anonymous_args = 0
 1055              		@ link register save eliminated.
 414:Library/src/lcm32f06x_crc.c ****   temp = CRCx->CRC_RESULT;
 1056              		.loc 1 414 3 view .LVU319
 415:Library/src/lcm32f06x_crc.c ****   return temp;
 1057              		.loc 1 415 3 view .LVU320
 415:Library/src/lcm32f06x_crc.c ****   return temp;
 1058              		.loc 1 415 8 is_stmt 0 view .LVU321
 1059 0000 8068     		ldr	r0, [r0, #8]
 1060              	.LVL78:
 1061              		.loc 1 416 3 is_stmt 1 view .LVU322
 417:Library/src/lcm32f06x_crc.c **** }
 1062              		.loc 1 417 1 is_stmt 0 view .LVU323
 1063              		@ sp needed
 1064 0002 7047     		bx	lr
 1065              		.cfi_endproc
 1066              	.LFE54:
 1068              		.section	.text.Crc_write_result,"ax",%progbits
 1069              		.align	1
 1070              		.p2align 2,,3
 1071              		.global	Crc_write_result
 1072              		.syntax unified
 1073              		.code	16
 1074              		.thumb_func
ARM GAS  /tmp/cc1lb8fq.s 			page 31


 1076              	Crc_write_result:
 1077              	.LVL79:
 1078              	.LFB55:
 418:Library/src/lcm32f06x_crc.c **** 
 419:Library/src/lcm32f06x_crc.c **** /**
 420:Library/src/lcm32f06x_crc.c ****   * @name   Crc_write_result
 421:Library/src/lcm32f06x_crc.c ****   * @brief  EN: CRC writes the initial value.
 422:Library/src/lcm32f06x_crc.c ****   *         CN: CRC 写初始值。
 423:Library/src/lcm32f06x_crc.c ****   * @param  CRCx: 
 424:Library/src/lcm32f06x_crc.c ****   *         EN: There is only one CRCx: CRC0.
 425:Library/src/lcm32f06x_crc.c ****   *         CN: 仅有一个CRCx: CRC0 。
 426:Library/src/lcm32f06x_crc.c ****   * @retval None
 427:Library/src/lcm32f06x_crc.c ****   */
 428:Library/src/lcm32f06x_crc.c **** void Crc_write_result(CRC_TypeDef *CRCx, uint32_t Data)
 429:Library/src/lcm32f06x_crc.c **** {
 1079              		.loc 1 429 1 is_stmt 1 view -0
 1080              		.cfi_startproc
 1081              		@ args = 0, pretend = 0, frame = 0
 1082              		@ frame_needed = 0, uses_anonymous_args = 0
 1083              		@ link register save eliminated.
 430:Library/src/lcm32f06x_crc.c ****   CRCx->CRC_RESULT = Data;
 1084              		.loc 1 430 3 view .LVU325
 1085              		.loc 1 430 20 is_stmt 0 view .LVU326
 1086 0000 8160     		str	r1, [r0, #8]
 431:Library/src/lcm32f06x_crc.c **** }
 1087              		.loc 1 431 1 view .LVU327
 1088              		@ sp needed
 1089 0002 7047     		bx	lr
 1090              		.cfi_endproc
 1091              	.LFE55:
 1093              		.text
 1094              	.Letext0:
 1095              		.file 2 "/home/ha/toolchain/arm-gnu-toolchain-14.3/arm-none-eabi/include/machine/_default_types.h"
 1096              		.file 3 "/home/ha/toolchain/arm-gnu-toolchain-14.3/arm-none-eabi/include/sys/_stdint.h"
 1097              		.file 4 "Library/inc/lcm32f06x.h"
 1098              		.file 5 "Library/inc/lcm32f06x_crc.h"
ARM GAS  /tmp/cc1lb8fq.s 			page 32


DEFINED SYMBOLS
                            *ABS*:00000000 lcm32f06x_crc.c
     /tmp/cc1lb8fq.s:17     .text.Crc_initial_config_8:00000000 $t
     /tmp/cc1lb8fq.s:24     .text.Crc_initial_config_8:00000000 Crc_initial_config_8
     /tmp/cc1lb8fq.s:58     .text.Crc_initial_config_8:00000014 $d
     /tmp/cc1lb8fq.s:64     .text.Crc_initial_config_16a:00000000 $t
     /tmp/cc1lb8fq.s:71     .text.Crc_initial_config_16a:00000000 Crc_initial_config_16a
     /tmp/cc1lb8fq.s:107    .text.Crc_initial_config_16a:00000018 $d
     /tmp/cc1lb8fq.s:112    .text.Crc_initial_config_16b:00000000 $t
     /tmp/cc1lb8fq.s:119    .text.Crc_initial_config_16b:00000000 Crc_initial_config_16b
     /tmp/cc1lb8fq.s:162    .text.Crc_initial_config_16b:0000001c $d
     /tmp/cc1lb8fq.s:168    .text.Crc_initial_config_32:00000000 $t
     /tmp/cc1lb8fq.s:175    .text.Crc_initial_config_32:00000000 Crc_initial_config_32
     /tmp/cc1lb8fq.s:209    .text.Crc_initial_config_32:00000014 $d
     /tmp/cc1lb8fq.s:215    .text.CRC_CalcBlockCRC8:00000000 $t
     /tmp/cc1lb8fq.s:222    .text.CRC_CalcBlockCRC8:00000000 CRC_CalcBlockCRC8
     /tmp/cc1lb8fq.s:409    .text.CRC_CalcBlockCRC16a:00000000 $t
     /tmp/cc1lb8fq.s:416    .text.CRC_CalcBlockCRC16a:00000000 CRC_CalcBlockCRC16a
     /tmp/cc1lb8fq.s:605    .text.CRC_CalcBlockCRC16a:00000070 $d
     /tmp/cc1lb8fq.s:610    .text.CRC_CalcBlockCRC16b:00000000 $t
     /tmp/cc1lb8fq.s:617    .text.CRC_CalcBlockCRC16b:00000000 CRC_CalcBlockCRC16b
     /tmp/cc1lb8fq.s:806    .text.CRC_CalcBlockCRC16b:00000074 $d
     /tmp/cc1lb8fq.s:811    .text.CRC_CalcBlockCRC32:00000000 $t
     /tmp/cc1lb8fq.s:818    .text.CRC_CalcBlockCRC32:00000000 CRC_CalcBlockCRC32
     /tmp/cc1lb8fq.s:1016   .text.Crc_write_crc_data:00000000 $t
     /tmp/cc1lb8fq.s:1023   .text.Crc_write_crc_data:00000000 Crc_write_crc_data
     /tmp/cc1lb8fq.s:1041   .text.Crc_read_result:00000000 $t
     /tmp/cc1lb8fq.s:1048   .text.Crc_read_result:00000000 Crc_read_result
     /tmp/cc1lb8fq.s:1069   .text.Crc_write_result:00000000 $t
     /tmp/cc1lb8fq.s:1076   .text.Crc_write_result:00000000 Crc_write_result

NO UNDEFINED SYMBOLS
