ARM GAS  /tmp/cczO2nl5.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_opa.c"
  12              		.text
  13              	.Ltext0:
  14              		.cfi_sections	.debug_frame
  15              		.file 1 "Library/src/lcm32f06x_opa.c"
  16              		.section	.text.OPA_DeInit,"ax",%progbits
  17              		.align	1
  18              		.p2align 2,,3
  19              		.global	OPA_DeInit
  20              		.syntax unified
  21              		.code	16
  22              		.thumb_func
  24              	OPA_DeInit:
  25              	.LFB45:
   1:Library/src/lcm32f06x_opa.c **** /**
   2:Library/src/lcm32f06x_opa.c ****   ******************************************************************************
   3:Library/src/lcm32f06x_opa.c ****   * @file    lcm32f06x_opa.c 
   4:Library/src/lcm32f06x_opa.c ****   * @author  System R&D Team
   5:Library/src/lcm32f06x_opa.c ****   * @version V2.0.2
   6:Library/src/lcm32f06x_opa.c ****   * @date    10-April-2025
   7:Library/src/lcm32f06x_opa.c ****   * @brief   This file provides all the opa firmware functions.
   8:Library/src/lcm32f06x_opa.c ****   ******************************************************************************
   9:Library/src/lcm32f06x_opa.c ****   * @attention
  10:Library/src/lcm32f06x_opa.c ****   *
  11:Library/src/lcm32f06x_opa.c ****   * Copyright (c) Hangzhou Lingxin Microelectronics Co.
  12:Library/src/lcm32f06x_opa.c ****   * All rights reserved.
  13:Library/src/lcm32f06x_opa.c ****   *
  14:Library/src/lcm32f06x_opa.c ****   * This software is licensed under terms that can be found in the LICENSE file
  15:Library/src/lcm32f06x_opa.c ****   * in the root directory of this software component.
  16:Library/src/lcm32f06x_opa.c ****   * If no LICENSE file comes with this software, it is provided AS-IS.
  17:Library/src/lcm32f06x_opa.c ****   *
  18:Library/src/lcm32f06x_opa.c ****   ******************************************************************************
  19:Library/src/lcm32f06x_opa.c ****   */
  20:Library/src/lcm32f06x_opa.c **** 
  21:Library/src/lcm32f06x_opa.c **** /* Includes ------------------------------------------------------------------*/
  22:Library/src/lcm32f06x_opa.c **** #include "lcm32f06x_opa.h"
  23:Library/src/lcm32f06x_opa.c **** 
  24:Library/src/lcm32f06x_opa.c **** /**
  25:Library/src/lcm32f06x_opa.c ****   * @name   OPA_DeInit
  26:Library/src/lcm32f06x_opa.c ****   * @brief  EN: Deinitializes OPA peripheral registers to their default reset values.
  27:Library/src/lcm32f06x_opa.c ****   *         CN: 将 OPA 外设寄存器初始化为其默认重置值。
  28:Library/src/lcm32f06x_opa.c ****   * @param  None
  29:Library/src/lcm32f06x_opa.c ****   * @retval None
  30:Library/src/lcm32f06x_opa.c ****   * @note   EN: DAC ACMP and OPA share the same clock enable which can be used once.
  31:Library/src/lcm32f06x_opa.c ****   *         CN: DAC ACMP OPA 共用一个时钟使能，使用一次即可。
  32:Library/src/lcm32f06x_opa.c ****   */
  33:Library/src/lcm32f06x_opa.c **** void OPA_DeInit(void)
ARM GAS  /tmp/cczO2nl5.s 			page 2


  34:Library/src/lcm32f06x_opa.c **** {
  26              		.loc 1 34 1 view -0
  27              		.cfi_startproc
  28              		@ args = 0, pretend = 0, frame = 0
  29              		@ frame_needed = 0, uses_anonymous_args = 0
  35:Library/src/lcm32f06x_opa.c ****   RCC_APB0PeriphResetCmd(RCC_APB0Periph_ANACTRL, ENABLE);
  30              		.loc 1 35 3 view .LVU1
  34:Library/src/lcm32f06x_opa.c ****   RCC_APB0PeriphResetCmd(RCC_APB0Periph_ANACTRL, ENABLE);
  31              		.loc 1 34 1 is_stmt 0 view .LVU2
  32 0000 10B5     		push	{r4, lr}
  33              	.LCFI0:
  34              		.cfi_def_cfa_offset 8
  35              		.cfi_offset 4, -8
  36              		.cfi_offset 14, -4
  37              		.loc 1 35 3 view .LVU3
  38 0002 0121     		movs	r1, #1
  36:Library/src/lcm32f06x_opa.c ****   RCC_APB0PeriphResetCmd(RCC_APB0Periph_ANACTRL, DISABLE);
  37:Library/src/lcm32f06x_opa.c **** }
  39              		.loc 1 37 1 view .LVU4
  40              		@ sp needed
  35:Library/src/lcm32f06x_opa.c ****   RCC_APB0PeriphResetCmd(RCC_APB0Periph_ANACTRL, DISABLE);
  41              		.loc 1 35 3 view .LVU5
  42 0004 2020     		movs	r0, #32
  43 0006 FFF7FEFF 		bl	RCC_APB0PeriphResetCmd
  44              	.LVL0:
  36:Library/src/lcm32f06x_opa.c ****   RCC_APB0PeriphResetCmd(RCC_APB0Periph_ANACTRL, DISABLE);
  45              		.loc 1 36 3 is_stmt 1 view .LVU6
  46 000a 0021     		movs	r1, #0
  47 000c 2020     		movs	r0, #32
  48 000e FFF7FEFF 		bl	RCC_APB0PeriphResetCmd
  49              	.LVL1:
  50              		.loc 1 37 1 is_stmt 0 view .LVU7
  51 0012 10BD     		pop	{r4, pc}
  52              		.cfi_endproc
  53              	.LFE45:
  55              		.section	.text.OPA_StructInit,"ax",%progbits
  56              		.align	1
  57              		.p2align 2,,3
  58              		.global	OPA_StructInit
  59              		.syntax unified
  60              		.code	16
  61              		.thumb_func
  63              	OPA_StructInit:
  64              	.LVL2:
  65              	.LFB47:
  38:Library/src/lcm32f06x_opa.c **** 
  39:Library/src/lcm32f06x_opa.c **** /**
  40:Library/src/lcm32f06x_opa.c ****   * @name   OPA_Init
  41:Library/src/lcm32f06x_opa.c ****   * @brief  EN: Initializes the OPAx peripheral according to the specified 
  42:Library/src/lcm32f06x_opa.c ****   *             parameters in the OPA_InitStruct.
  43:Library/src/lcm32f06x_opa.c ****   *         CN: 根据 OPA_InitStruct 中指定的参数初始化 OPAx。
  44:Library/src/lcm32f06x_opa.c ****   * @param  OPAx: 
  45:Library/src/lcm32f06x_opa.c ****   *         EN: where x can be 0 or 1 or 2 to select the OPA peripheral.
  46:Library/src/lcm32f06x_opa.c ****   *         CN: x 可以是0、1或2,以选择 OPA 外设。
  47:Library/src/lcm32f06x_opa.c ****   * @param  OPA_InitStruct: 
  48:Library/src/lcm32f06x_opa.c ****   *         EN: pointer to a OPA_InitTypeDef structure that contains the 
  49:Library/src/lcm32f06x_opa.c ****   *             configuration information for the specified OPA peripheral.
ARM GAS  /tmp/cczO2nl5.s 			page 3


  50:Library/src/lcm32f06x_opa.c ****   *         CN: 指向 OPA_InitTypeDef 结构的指针，该结构包含指定 OPA 外设的配置信息。
  51:Library/src/lcm32f06x_opa.c ****   * @retval None
  52:Library/src/lcm32f06x_opa.c ****   */
  53:Library/src/lcm32f06x_opa.c **** void OPA_Init(OPA_TypeDef *OPAx, OPA_InitTypeDef *OPA_InitStruct)
  54:Library/src/lcm32f06x_opa.c **** {
  55:Library/src/lcm32f06x_opa.c ****   uint32_t tmpreg = 0;
  56:Library/src/lcm32f06x_opa.c **** 
  57:Library/src/lcm32f06x_opa.c ****   /* Check the OPA parameters */
  58:Library/src/lcm32f06x_opa.c ****   assert_param(IS_OPA_PositiveInput(OPA_InitStruct->OPA_PositiveInput));
  59:Library/src/lcm32f06x_opa.c ****   assert_param(IS_OPA_NegativeInput(OPA_InitStruct->OPA_NegativeInput));
  60:Library/src/lcm32f06x_opa.c ****   assert_param(IS_OPA_FeedbackResSingal(OPA_InitStruct->OPA_FeedbackResSingal));
  61:Library/src/lcm32f06x_opa.c ****   assert_param(IS_OPA_InputRes(OPA_InitStruct->OPA_InputRes));
  62:Library/src/lcm32f06x_opa.c ****   assert_param(IS_OPA_PositiveADCSwitch(OPA_InitStruct->OPA_PositiveADCSwitch));
  63:Library/src/lcm32f06x_opa.c ****   assert_param(IS_OPA_NegativeADCSwitch(OPA_InitStruct->OPA_NegativeADCSwitch));
  64:Library/src/lcm32f06x_opa.c ****   assert_param(IS_OPA_Gain(OPA_InitStruct->OPA_Gain));
  65:Library/src/lcm32f06x_opa.c ****   assert_param(IS_OPA_BiasVoltageSource(OPA_InitStruct->OPA_BiasVoltageSource));
  66:Library/src/lcm32f06x_opa.c ****   assert_param(IS_OPA_BiasVoltage(OPA_InitStruct->OPA_BiasVoltage));
  67:Library/src/lcm32f06x_opa.c ****   assert_param(IS_OPA_FeedbackRes(OPA_InitStruct->OPA_FeedbackRes));
  68:Library/src/lcm32f06x_opa.c ****   assert_param(IS_OPA_OppRES_Short(OPA_InitStruct->OPA_OppRES_Short));
  69:Library/src/lcm32f06x_opa.c ****   assert_param(IS_OPA_OpnRES_Short(OPA_InitStruct->OPA_OpnRES_Short));
  70:Library/src/lcm32f06x_opa.c **** 
  71:Library/src/lcm32f06x_opa.c ****   OPA_TRIM(OPAx);
  72:Library/src/lcm32f06x_opa.c **** 
  73:Library/src/lcm32f06x_opa.c ****   tmpreg = OPAx->OPA_CSR;
  74:Library/src/lcm32f06x_opa.c **** 
  75:Library/src/lcm32f06x_opa.c ****   tmpreg |= OPA_InitStruct->OPA_PositiveInput | OPA_InitStruct->OPA_NegativeInput |
  76:Library/src/lcm32f06x_opa.c ****             OPA_InitStruct->OPA_FeedbackResSingal | OPA_InitStruct->OPA_InputRes |
  77:Library/src/lcm32f06x_opa.c ****             OPA_InitStruct->OPA_PositiveADCSwitch | OPA_InitStruct->OPA_NegativeADCSwitch |
  78:Library/src/lcm32f06x_opa.c ****             OPA_InitStruct->OPA_Gain | OPA_InitStruct->OPA_BiasVoltageSource |
  79:Library/src/lcm32f06x_opa.c ****             OPA_InitStruct->OPA_BiasVoltage | OPA_InitStruct->OPA_FeedbackRes | 
  80:Library/src/lcm32f06x_opa.c ****             OPA_InitStruct->OPA_OppRES_Short | OPA_InitStruct->OPA_OpnRES_Short;
  81:Library/src/lcm32f06x_opa.c **** 
  82:Library/src/lcm32f06x_opa.c ****   OPAx->OPA_CSR = tmpreg;
  83:Library/src/lcm32f06x_opa.c **** }
  84:Library/src/lcm32f06x_opa.c **** 
  85:Library/src/lcm32f06x_opa.c **** /**
  86:Library/src/lcm32f06x_opa.c ****   * @name   OPA_StructInit
  87:Library/src/lcm32f06x_opa.c ****   * @brief  EN: Fills each OPA_InitStruct member with its default value.
  88:Library/src/lcm32f06x_opa.c ****   *         CN: 用默认值填充每个 OPA_InitStruct 成员。
  89:Library/src/lcm32f06x_opa.c ****   * @param  OPA_InitStruct: 
  90:Library/src/lcm32f06x_opa.c ****   *         EN: pointer to a OPA_InitTypeDef structure that contains the 
  91:Library/src/lcm32f06x_opa.c ****   *             configuration information for the specified OPA peripheral.
  92:Library/src/lcm32f06x_opa.c ****   *         CN: 指向 OPA_InitTypeDef 结构的指针，该结构包含指定 OPA 外设的配置信息。
  93:Library/src/lcm32f06x_opa.c ****   * @retval None
  94:Library/src/lcm32f06x_opa.c ****   */
  95:Library/src/lcm32f06x_opa.c **** void OPA_StructInit(OPA_InitTypeDef *OPA_InitStruct)
  96:Library/src/lcm32f06x_opa.c **** {
  66              		.loc 1 96 1 is_stmt 1 view -0
  67              		.cfi_startproc
  68              		@ args = 0, pretend = 0, frame = 0
  69              		@ frame_needed = 0, uses_anonymous_args = 0
  70              		@ link register save eliminated.
  97:Library/src/lcm32f06x_opa.c ****   OPA_InitStruct->OPA_PositiveInput = OPA_PositiveInput_P0;
  71              		.loc 1 97 3 view .LVU9
  72              		.loc 1 97 37 is_stmt 0 view .LVU10
  73 0000 0023     		movs	r3, #0
  98:Library/src/lcm32f06x_opa.c **** 
ARM GAS  /tmp/cczO2nl5.s 			page 4


  99:Library/src/lcm32f06x_opa.c ****   OPA_InitStruct->OPA_NegativeInput = OPA_NegativeInput_N0;
 100:Library/src/lcm32f06x_opa.c **** 
 101:Library/src/lcm32f06x_opa.c ****   OPA_InitStruct->OPA_FeedbackResSingal = OPA_FeedbackResSingal_DISEN;
 102:Library/src/lcm32f06x_opa.c **** 
 103:Library/src/lcm32f06x_opa.c ****   OPA_InitStruct->OPA_InputRes = OPA_InputRes_36K;
 104:Library/src/lcm32f06x_opa.c **** 
 105:Library/src/lcm32f06x_opa.c ****   OPA_InitStruct->OPA_PositiveADCSwitch = OPA_PositiveADCSwitch_DISEN;
 106:Library/src/lcm32f06x_opa.c **** 
 107:Library/src/lcm32f06x_opa.c ****   OPA_InitStruct->OPA_NegativeADCSwitch = OPA_NegativeADCSwitch_DISEN;
 108:Library/src/lcm32f06x_opa.c **** 
 109:Library/src/lcm32f06x_opa.c ****   OPA_InitStruct->OPA_Gain = OPA_Gain_1;
 110:Library/src/lcm32f06x_opa.c **** 
 111:Library/src/lcm32f06x_opa.c ****   OPA_InitStruct->OPA_BiasVoltageSource = OPA_BiasVoltageSource_PMU_AOUT;
 112:Library/src/lcm32f06x_opa.c **** 
 113:Library/src/lcm32f06x_opa.c ****   OPA_InitStruct->OPA_BiasVoltage = OPA_BiasVoltage_DISEN;
 114:Library/src/lcm32f06x_opa.c **** 
 115:Library/src/lcm32f06x_opa.c ****   OPA_InitStruct->OPA_FeedbackRes = OPA_FeedbackRes_DISEN;
 116:Library/src/lcm32f06x_opa.c **** 
 117:Library/src/lcm32f06x_opa.c ****   OPA_InitStruct->OPA_OppRES_Short = OPA_OppRES_Short_DISEN;
 118:Library/src/lcm32f06x_opa.c **** 
 119:Library/src/lcm32f06x_opa.c ****   OPA_InitStruct->OPA_OpnRES_Short = OPA_OpnRES_Short_DISEN; 
 120:Library/src/lcm32f06x_opa.c **** }
  74              		.loc 1 120 1 view .LVU11
  75              		@ sp needed
  97:Library/src/lcm32f06x_opa.c ****   OPA_InitStruct->OPA_PositiveInput = OPA_PositiveInput_P0;
  76              		.loc 1 97 37 view .LVU12
  77 0002 0360     		str	r3, [r0]
  99:Library/src/lcm32f06x_opa.c **** 
  78              		.loc 1 99 3 is_stmt 1 view .LVU13
  99:Library/src/lcm32f06x_opa.c **** 
  79              		.loc 1 99 37 is_stmt 0 view .LVU14
  80 0004 4360     		str	r3, [r0, #4]
 101:Library/src/lcm32f06x_opa.c **** 
  81              		.loc 1 101 3 is_stmt 1 view .LVU15
 101:Library/src/lcm32f06x_opa.c **** 
  82              		.loc 1 101 41 is_stmt 0 view .LVU16
  83 0006 8360     		str	r3, [r0, #8]
 103:Library/src/lcm32f06x_opa.c **** 
  84              		.loc 1 103 3 is_stmt 1 view .LVU17
 103:Library/src/lcm32f06x_opa.c **** 
  85              		.loc 1 103 32 is_stmt 0 view .LVU18
  86 0008 C360     		str	r3, [r0, #12]
 105:Library/src/lcm32f06x_opa.c **** 
  87              		.loc 1 105 3 is_stmt 1 view .LVU19
 105:Library/src/lcm32f06x_opa.c **** 
  88              		.loc 1 105 41 is_stmt 0 view .LVU20
  89 000a 0361     		str	r3, [r0, #16]
 107:Library/src/lcm32f06x_opa.c **** 
  90              		.loc 1 107 3 is_stmt 1 view .LVU21
 107:Library/src/lcm32f06x_opa.c **** 
  91              		.loc 1 107 41 is_stmt 0 view .LVU22
  92 000c 4361     		str	r3, [r0, #20]
 109:Library/src/lcm32f06x_opa.c **** 
  93              		.loc 1 109 3 is_stmt 1 view .LVU23
 109:Library/src/lcm32f06x_opa.c **** 
  94              		.loc 1 109 28 is_stmt 0 view .LVU24
  95 000e 8361     		str	r3, [r0, #24]
ARM GAS  /tmp/cczO2nl5.s 			page 5


 111:Library/src/lcm32f06x_opa.c **** 
  96              		.loc 1 111 3 is_stmt 1 view .LVU25
 111:Library/src/lcm32f06x_opa.c **** 
  97              		.loc 1 111 41 is_stmt 0 view .LVU26
  98 0010 C361     		str	r3, [r0, #28]
 113:Library/src/lcm32f06x_opa.c **** 
  99              		.loc 1 113 3 is_stmt 1 view .LVU27
 113:Library/src/lcm32f06x_opa.c **** 
 100              		.loc 1 113 35 is_stmt 0 view .LVU28
 101 0012 0362     		str	r3, [r0, #32]
 115:Library/src/lcm32f06x_opa.c **** 
 102              		.loc 1 115 3 is_stmt 1 view .LVU29
 115:Library/src/lcm32f06x_opa.c **** 
 103              		.loc 1 115 35 is_stmt 0 view .LVU30
 104 0014 4362     		str	r3, [r0, #36]
 117:Library/src/lcm32f06x_opa.c **** 
 105              		.loc 1 117 3 is_stmt 1 view .LVU31
 117:Library/src/lcm32f06x_opa.c **** 
 106              		.loc 1 117 36 is_stmt 0 view .LVU32
 107 0016 8362     		str	r3, [r0, #40]
 119:Library/src/lcm32f06x_opa.c **** }
 108              		.loc 1 119 3 is_stmt 1 view .LVU33
 119:Library/src/lcm32f06x_opa.c **** }
 109              		.loc 1 119 36 is_stmt 0 view .LVU34
 110 0018 C362     		str	r3, [r0, #44]
 111              		.loc 1 120 1 view .LVU35
 112 001a 7047     		bx	lr
 113              		.cfi_endproc
 114              	.LFE47:
 116              		.section	.text.OPA_Cmd,"ax",%progbits
 117              		.align	1
 118              		.p2align 2,,3
 119              		.global	OPA_Cmd
 120              		.syntax unified
 121              		.code	16
 122              		.thumb_func
 124              	OPA_Cmd:
 125              	.LVL3:
 126              	.LFB48:
 121:Library/src/lcm32f06x_opa.c **** 
 122:Library/src/lcm32f06x_opa.c **** /**
 123:Library/src/lcm32f06x_opa.c ****   * @name   OPA_Cmd
 124:Library/src/lcm32f06x_opa.c ****   * @brief  EN: Enables or disables the specified OPA peripheral.
 125:Library/src/lcm32f06x_opa.c ****   *         CN: 启用或禁用指定的 OPA 外设。
 126:Library/src/lcm32f06x_opa.c ****   * @param  OPAx: 
 127:Library/src/lcm32f06x_opa.c ****   *         EN: where x can be 0 or 1 or 2 to select the OPA peripheral.
 128:Library/src/lcm32f06x_opa.c ****   *         CN: x 可以是0、1或2,以选择 OPA 外设。
 129:Library/src/lcm32f06x_opa.c ****   * @param  NewState: 
 130:Library/src/lcm32f06x_opa.c ****   *         EN: New state of the OPAx peripheral.
 131:Library/src/lcm32f06x_opa.c ****   *         CN: OPAx 外设的新状态。
 132:Library/src/lcm32f06x_opa.c ****   * @retval None
 133:Library/src/lcm32f06x_opa.c ****   */
 134:Library/src/lcm32f06x_opa.c **** void OPA_Cmd(OPA_TypeDef *OPAx, FunctionalState NewState)
 135:Library/src/lcm32f06x_opa.c **** {
 127              		.loc 1 135 1 is_stmt 1 view -0
 128              		.cfi_startproc
 129              		@ args = 0, pretend = 0, frame = 0
ARM GAS  /tmp/cczO2nl5.s 			page 6


 130              		@ frame_needed = 0, uses_anonymous_args = 0
 131              		@ link register save eliminated.
 136:Library/src/lcm32f06x_opa.c ****   if (NewState != DISABLE)
 132              		.loc 1 136 3 view .LVU37
 137:Library/src/lcm32f06x_opa.c ****   {
 138:Library/src/lcm32f06x_opa.c ****     /* Enable the selected OPA peripheral  */
 139:Library/src/lcm32f06x_opa.c ****     OPAx->OPA_CSR |= (uint32_t)OPAX_CSR_OPxEN_Msk;
 133              		.loc 1 139 19 is_stmt 0 view .LVU38
 134 0000 0122     		movs	r2, #1
 135              		.loc 1 139 9 view .LVU39
 136 0002 0368     		ldr	r3, [r0]
 136:Library/src/lcm32f06x_opa.c ****   if (NewState != DISABLE)
 137              		.loc 1 136 6 view .LVU40
 138 0004 0029     		cmp	r1, #0
 139 0006 02D0     		beq	.L5
 140              		.loc 1 139 5 is_stmt 1 view .LVU41
 141              		.loc 1 139 19 is_stmt 0 view .LVU42
 142 0008 1343     		orrs	r3, r2
 143 000a 0360     		str	r3, [r0]
 144              	.L4:
 140:Library/src/lcm32f06x_opa.c ****   }
 141:Library/src/lcm32f06x_opa.c ****   else
 142:Library/src/lcm32f06x_opa.c ****   {
 143:Library/src/lcm32f06x_opa.c ****     /* Disable the selected OPA peripheral  */
 144:Library/src/lcm32f06x_opa.c ****     OPAx->OPA_CSR &= (uint32_t)(~OPAX_CSR_OPxEN_Msk);
 145:Library/src/lcm32f06x_opa.c ****   }
 146:Library/src/lcm32f06x_opa.c **** }
 145              		.loc 1 146 1 view .LVU43
 146              		@ sp needed
 147 000c 7047     		bx	lr
 148              	.L5:
 144:Library/src/lcm32f06x_opa.c ****   }
 149              		.loc 1 144 5 is_stmt 1 view .LVU44
 144:Library/src/lcm32f06x_opa.c ****   }
 150              		.loc 1 144 19 is_stmt 0 view .LVU45
 151 000e 9343     		bics	r3, r2
 152 0010 0360     		str	r3, [r0]
 153              		.loc 1 146 1 view .LVU46
 154 0012 FBE7     		b	.L4
 155              		.cfi_endproc
 156              	.LFE48:
 158              		.section	.text.Opa_trim,"ax",%progbits
 159              		.align	1
 160              		.p2align 2,,3
 161              		.global	Opa_trim
 162              		.syntax unified
 163              		.code	16
 164              		.thumb_func
 166              	Opa_trim:
 167              	.LVL4:
 168              	.LFB49:
 147:Library/src/lcm32f06x_opa.c **** 
 148:Library/src/lcm32f06x_opa.c **** /**
 149:Library/src/lcm32f06x_opa.c ****   * @name   Opa_trim
 150:Library/src/lcm32f06x_opa.c ****   * @brief  EN: OPA tuning value writing function.
 151:Library/src/lcm32f06x_opa.c ****   *         CN: OPA 修调值写入函数。
 152:Library/src/lcm32f06x_opa.c ****   * @param  OPAx: 
ARM GAS  /tmp/cczO2nl5.s 			page 7


 153:Library/src/lcm32f06x_opa.c ****   *         EN: where x can be 0 or 1 or 2 to select the OPA peripheral.
 154:Library/src/lcm32f06x_opa.c ****   *         CN: x 可以是0、1或2,以选择 OPA 外设。
 155:Library/src/lcm32f06x_opa.c ****   * @param  trim: 
 156:Library/src/lcm32f06x_opa.c ****   *         EN: OPAx adjustment value.
 157:Library/src/lcm32f06x_opa.c ****   *         CN: OPAx 修调值。
 158:Library/src/lcm32f06x_opa.c ****   * @retval None
 159:Library/src/lcm32f06x_opa.c ****   */
 160:Library/src/lcm32f06x_opa.c **** void Opa_trim(OPA_TypeDef *OPAx, uint8_t trim)
 161:Library/src/lcm32f06x_opa.c **** {
 169              		.loc 1 161 1 is_stmt 1 view -0
 170              		.cfi_startproc
 171              		@ args = 0, pretend = 0, frame = 0
 172              		@ frame_needed = 0, uses_anonymous_args = 0
 173              		@ link register save eliminated.
 162:Library/src/lcm32f06x_opa.c ****   OPAx->OPA_CSR = (OPAx->OPA_CSR & ~OPAX_CSR_OPxOS_Msk) | (trim << OPAX_CSR_OPxOS_Pos);
 174              		.loc 1 162 3 view .LVU48
 175              		.loc 1 162 24 is_stmt 0 view .LVU49
 176 0000 0368     		ldr	r3, [r0]
 177              		.loc 1 162 34 view .LVU50
 178 0002 034A     		ldr	r2, .L8
 179              		.loc 1 162 65 view .LVU51
 180 0004 0904     		lsls	r1, r1, #16
 181              	.LVL5:
 182              		.loc 1 162 34 view .LVU52
 183 0006 1340     		ands	r3, r2
 184              		.loc 1 162 57 view .LVU53
 185 0008 0B43     		orrs	r3, r1
 186              		.loc 1 162 17 view .LVU54
 187 000a 0360     		str	r3, [r0]
 163:Library/src/lcm32f06x_opa.c **** }
 188              		.loc 1 163 1 view .LVU55
 189              		@ sp needed
 190 000c 7047     		bx	lr
 191              	.L9:
 192 000e C046     		.align	2
 193              	.L8:
 194 0010 FFFFE0FF 		.word	-2031617
 195              		.cfi_endproc
 196              	.LFE49:
 198              		.section	.text.get_opa_trim,"ax",%progbits
 199              		.align	1
 200              		.p2align 2,,3
 201              		.global	get_opa_trim
 202              		.syntax unified
 203              		.code	16
 204              		.thumb_func
 206              	get_opa_trim:
 207              	.LVL6:
 208              	.LFB50:
 164:Library/src/lcm32f06x_opa.c **** 
 165:Library/src/lcm32f06x_opa.c **** /**
 166:Library/src/lcm32f06x_opa.c ****   * @name   get_opa_trim
 167:Library/src/lcm32f06x_opa.c ****   * @brief  EN: Reading OPA tuning values and writing functions.
 168:Library/src/lcm32f06x_opa.c ****   *         CN: 读取OPA 修调值函数。
 169:Library/src/lcm32f06x_opa.c ****   * @param  OPAx: 
 170:Library/src/lcm32f06x_opa.c ****   *         EN: where x can be 0 or 1 or 2 to select the OPA peripheral.
 171:Library/src/lcm32f06x_opa.c ****   *         CN: x 可以是0、1或2,以选择 OPA 外设。
ARM GAS  /tmp/cczO2nl5.s 			page 8


 172:Library/src/lcm32f06x_opa.c ****   * @retval uint8_t：
 173:Library/src/lcm32f06x_opa.c ****   *         EN: OPAx adjustment value.
 174:Library/src/lcm32f06x_opa.c ****   *         CN: OPAx 修调值。
 175:Library/src/lcm32f06x_opa.c ****   */
 176:Library/src/lcm32f06x_opa.c **** uint8_t get_opa_trim(OPA_TypeDef *OPAx)
 177:Library/src/lcm32f06x_opa.c **** {
 209              		.loc 1 177 1 is_stmt 1 view -0
 210              		.cfi_startproc
 211              		@ args = 0, pretend = 0, frame = 0
 212              		@ frame_needed = 0, uses_anonymous_args = 0
 213              		@ link register save eliminated.
 178:Library/src/lcm32f06x_opa.c ****   return ((OPAx->OPA_CSR & OPAX_CSR_OPxOS_Msk) >> OPAX_CSR_OPxOS_Pos);
 214              		.loc 1 178 3 view .LVU57
 215              		.loc 1 178 16 is_stmt 0 view .LVU58
 216 0000 0068     		ldr	r0, [r0]
 217              	.LVL7:
 179:Library/src/lcm32f06x_opa.c **** }
 218              		.loc 1 179 1 view .LVU59
 219              		@ sp needed
 178:Library/src/lcm32f06x_opa.c ****   return ((OPAx->OPA_CSR & OPAX_CSR_OPxOS_Msk) >> OPAX_CSR_OPxOS_Pos);
 220              		.loc 1 178 48 view .LVU60
 221 0002 C002     		lsls	r0, r0, #11
 178:Library/src/lcm32f06x_opa.c ****   return ((OPAx->OPA_CSR & OPAX_CSR_OPxOS_Msk) >> OPAX_CSR_OPxOS_Pos);
 222              		.loc 1 178 48 discriminator 1 view .LVU61
 223 0004 C00E     		lsrs	r0, r0, #27
 224              		.loc 1 179 1 view .LVU62
 225 0006 7047     		bx	lr
 226              		.cfi_endproc
 227              	.LFE50:
 229              		.section	.text.get_opa_trim_FLAG,"ax",%progbits
 230              		.align	1
 231              		.p2align 2,,3
 232              		.global	get_opa_trim_FLAG
 233              		.syntax unified
 234              		.code	16
 235              		.thumb_func
 237              	get_opa_trim_FLAG:
 238              	.LVL8:
 239              	.LFB51:
 180:Library/src/lcm32f06x_opa.c **** 
 181:Library/src/lcm32f06x_opa.c **** /**
 182:Library/src/lcm32f06x_opa.c ****   * @name   get_opa_trim_FLAG
 183:Library/src/lcm32f06x_opa.c ****   * @brief  EN: Reading OPA tuning state and writing functions.
 184:Library/src/lcm32f06x_opa.c ****   *         CN: 读取OPA 修调状态函数。
 185:Library/src/lcm32f06x_opa.c ****   * @param  OPAx: 
 186:Library/src/lcm32f06x_opa.c ****   *         EN: where x can be 0 or 1 or 2 to select the OPA peripheral.
 187:Library/src/lcm32f06x_opa.c ****   *         CN: x 可以是0、1或2,以选择 OPA 外设。
 188:Library/src/lcm32f06x_opa.c ****   * @retval uint8_t：
 189:Library/src/lcm32f06x_opa.c ****   *         EN: OPAx adjustment state.
 190:Library/src/lcm32f06x_opa.c ****   *         CN: OPAx 修调状态。
 191:Library/src/lcm32f06x_opa.c ****   */
 192:Library/src/lcm32f06x_opa.c **** uint32_t get_opa_trim_FLAG(OPA_TypeDef *OPAx)
 193:Library/src/lcm32f06x_opa.c **** {
 240              		.loc 1 193 1 is_stmt 1 view -0
 241              		.cfi_startproc
 242              		@ args = 0, pretend = 0, frame = 0
 243              		@ frame_needed = 0, uses_anonymous_args = 0
ARM GAS  /tmp/cczO2nl5.s 			page 9


 244              		@ link register save eliminated.
 194:Library/src/lcm32f06x_opa.c ****   return ((OPAx->OPA_CSR & OPAX_CSR_OPxTRIMO_Msk) >> OPAX_CSR_OPxTRIMO_Pos);
 245              		.loc 1 194 3 view .LVU64
 246              		.loc 1 194 16 is_stmt 0 view .LVU65
 247 0000 0068     		ldr	r0, [r0]
 248              	.LVL9:
 195:Library/src/lcm32f06x_opa.c **** }
 249              		.loc 1 195 1 view .LVU66
 250              		@ sp needed
 194:Library/src/lcm32f06x_opa.c ****   return ((OPAx->OPA_CSR & OPAX_CSR_OPxTRIMO_Msk) >> OPAX_CSR_OPxTRIMO_Pos);
 251              		.loc 1 194 51 view .LVU67
 252 0002 C00F     		lsrs	r0, r0, #31
 253              		.loc 1 195 1 view .LVU68
 254 0004 7047     		bx	lr
 255              		.cfi_endproc
 256              	.LFE51:
 258 0006 C046     		.section	.text.OPA_TRIM,"ax",%progbits
 259              		.align	1
 260              		.p2align 2,,3
 261              		.global	OPA_TRIM
 262              		.syntax unified
 263              		.code	16
 264              		.thumb_func
 266              	OPA_TRIM:
 267              	.LVL10:
 268              	.LFB52:
 196:Library/src/lcm32f06x_opa.c **** 
 197:Library/src/lcm32f06x_opa.c **** /**
 198:Library/src/lcm32f06x_opa.c ****   * @name   OPA_TRIM
 199:Library/src/lcm32f06x_opa.c ****   * @brief  EN: Operational amplifier calibration function.
 200:Library/src/lcm32f06x_opa.c ****   *         CN: 运放校准函数。
 201:Library/src/lcm32f06x_opa.c ****   * @param  OPAx: 
 202:Library/src/lcm32f06x_opa.c ****   *         EN: where x can be 0 or 1 or 2 to select the OPA peripheral.
 203:Library/src/lcm32f06x_opa.c ****   *         CN: x 可以是0、1或2,以选择 OPA 外设。
 204:Library/src/lcm32f06x_opa.c ****   * @retval None
 205:Library/src/lcm32f06x_opa.c ****   */
 206:Library/src/lcm32f06x_opa.c **** void OPA_TRIM(OPA_TypeDef *OPAx)
 207:Library/src/lcm32f06x_opa.c **** {
 269              		.loc 1 207 1 is_stmt 1 view -0
 270              		.cfi_startproc
 271              		@ args = 0, pretend = 0, frame = 0
 272              		@ frame_needed = 0, uses_anonymous_args = 0
 208:Library/src/lcm32f06x_opa.c ****   uint8_t CTRIMOLD = 0;
 273              		.loc 1 208 3 view .LVU70
 209:Library/src/lcm32f06x_opa.c ****   uint8_t CTRIM = 0x1f;
 274              		.loc 1 209 3 view .LVU71
 210:Library/src/lcm32f06x_opa.c ****   uint8_t direction = 0;
 275              		.loc 1 210 3 view .LVU72
 211:Library/src/lcm32f06x_opa.c ****   unsigned char flag = 0;
 276              		.loc 1 211 3 view .LVU73
 212:Library/src/lcm32f06x_opa.c ****   uint32_t mode = 0;
 277              		.loc 1 212 3 view .LVU74
 213:Library/src/lcm32f06x_opa.c **** 
 214:Library/src/lcm32f06x_opa.c ****   OPAx->OPA_CSR = OPAX_CSR_OPxTRIMEN_Msk | OPAX_CSR_OPxN_PD_Msk | \
 278              		.loc 1 214 3 view .LVU75
 207:Library/src/lcm32f06x_opa.c ****   uint8_t CTRIMOLD = 0;
 279              		.loc 1 207 1 is_stmt 0 view .LVU76
ARM GAS  /tmp/cczO2nl5.s 			page 10


 280 0000 F8B5     		push	{r3, r4, r5, r6, r7, lr}
 281              	.LCFI1:
 282              		.cfi_def_cfa_offset 24
 283              		.cfi_offset 3, -24
 284              		.cfi_offset 4, -20
 285              		.cfi_offset 5, -16
 286              		.cfi_offset 6, -12
 287              		.cfi_offset 7, -8
 288              		.cfi_offset 14, -4
 289              		.loc 1 214 17 view .LVU77
 290 0002 E023     		movs	r3, #224
 207:Library/src/lcm32f06x_opa.c ****   uint8_t CTRIMOLD = 0;
 291              		.loc 1 207 1 view .LVU78
 292 0004 4746     		mov	r7, r8
 293 0006 CE46     		mov	lr, r9
 215:Library/src/lcm32f06x_opa.c ****                   OPAX_CSR_OPxP_PD_Msk ;
 216:Library/src/lcm32f06x_opa.c ****   
 217:Library/src/lcm32f06x_opa.c ****   
 218:Library/src/lcm32f06x_opa.c ****   OPAx->OPA_CSR |= OPAX_CSR_OPxEN_Msk;
 294              		.loc 1 218 17 view .LVU79
 295 0008 0122     		movs	r2, #1
 214:Library/src/lcm32f06x_opa.c ****                   OPAX_CSR_OPxP_PD_Msk ;
 296              		.loc 1 214 17 view .LVU80
 297 000a DB05     		lsls	r3, r3, #23
 207:Library/src/lcm32f06x_opa.c ****   uint8_t CTRIMOLD = 0;
 298              		.loc 1 207 1 view .LVU81
 299 000c 80B5     		push	{r7, lr}
 300              	.LCFI2:
 301              		.cfi_def_cfa_offset 32
 302              		.cfi_offset 8, -32
 303              		.cfi_offset 9, -28
 214:Library/src/lcm32f06x_opa.c ****                   OPAX_CSR_OPxP_PD_Msk ;
 304              		.loc 1 214 17 view .LVU82
 305 000e 0360     		str	r3, [r0]
 306              		.loc 1 218 3 is_stmt 1 view .LVU83
 307              		.loc 1 218 7 is_stmt 0 view .LVU84
 308 0010 0368     		ldr	r3, [r0]
 207:Library/src/lcm32f06x_opa.c ****   uint8_t CTRIMOLD = 0;
 309              		.loc 1 207 1 view .LVU85
 310 0012 0500     		movs	r5, r0
 311              		.loc 1 218 17 view .LVU86
 312 0014 1343     		orrs	r3, r2
 313 0016 0360     		str	r3, [r0]
 219:Library/src/lcm32f06x_opa.c **** 
 220:Library/src/lcm32f06x_opa.c ****   while (flag == 0)
 314              		.loc 1 220 3 is_stmt 1 view .LVU87
 208:Library/src/lcm32f06x_opa.c ****   uint8_t CTRIM = 0x1f;
 315              		.loc 1 208 11 is_stmt 0 view .LVU88
 316 0018 0023     		movs	r3, #0
 317 001a 9946     		mov	r9, r3
 318              	.LBB12:
 319              	.LBB13:
 162:Library/src/lcm32f06x_opa.c **** }
 320              		.loc 1 162 34 view .LVU89
 321 001c 214B     		ldr	r3, .L26
 322              	.LBE13:
 323              	.LBE12:
ARM GAS  /tmp/cczO2nl5.s 			page 11


 210:Library/src/lcm32f06x_opa.c ****   unsigned char flag = 0;
 324              		.loc 1 210 11 view .LVU90
 325 001e 0027     		movs	r7, #0
 209:Library/src/lcm32f06x_opa.c ****   uint8_t direction = 0;
 326              		.loc 1 209 11 view .LVU91
 327 0020 1F24     		movs	r4, #31
 328              	.LBB16:
 329              	.LBB14:
 162:Library/src/lcm32f06x_opa.c **** }
 330              		.loc 1 162 34 view .LVU92
 331 0022 9846     		mov	r8, r3
 332              	.LVL11:
 333              	.L13:
 162:Library/src/lcm32f06x_opa.c **** }
 334              		.loc 1 162 34 view .LVU93
 335              	.LBE14:
 336              	.LBE16:
 337              		.loc 1 220 15 is_stmt 1 view .LVU94
 221:Library/src/lcm32f06x_opa.c ****   {
 222:Library/src/lcm32f06x_opa.c ****     Opa_trim(OPAx, CTRIM);
 338              		.loc 1 222 5 view .LVU95
 339              	.LBB17:
 340              	.LBI12:
 160:Library/src/lcm32f06x_opa.c **** {
 341              		.loc 1 160 6 view .LVU96
 342              	.LBB15:
 162:Library/src/lcm32f06x_opa.c **** }
 343              		.loc 1 162 3 view .LVU97
 162:Library/src/lcm32f06x_opa.c **** }
 344              		.loc 1 162 34 is_stmt 0 view .LVU98
 345 0024 4246     		mov	r2, r8
 162:Library/src/lcm32f06x_opa.c **** }
 346              		.loc 1 162 24 view .LVU99
 347 0026 2B68     		ldr	r3, [r5]
 162:Library/src/lcm32f06x_opa.c **** }
 348              		.loc 1 162 65 view .LVU100
 349 0028 2604     		lsls	r6, r4, #16
 162:Library/src/lcm32f06x_opa.c **** }
 350              		.loc 1 162 34 view .LVU101
 351 002a 1340     		ands	r3, r2
 162:Library/src/lcm32f06x_opa.c **** }
 352              		.loc 1 162 57 view .LVU102
 353 002c 3343     		orrs	r3, r6
 162:Library/src/lcm32f06x_opa.c **** }
 354              		.loc 1 162 17 view .LVU103
 355 002e 2B60     		str	r3, [r5]
 356              	.LVL12:
 162:Library/src/lcm32f06x_opa.c **** }
 357              		.loc 1 162 17 view .LVU104
 358              	.LBE15:
 359              	.LBE17:
 223:Library/src/lcm32f06x_opa.c ****     delay10us(20); // 200uS
 360              		.loc 1 223 5 is_stmt 1 view .LVU105
 361 0030 1420     		movs	r0, #20
 362 0032 FFF7FEFF 		bl	delay10us
 363              	.LVL13:
 224:Library/src/lcm32f06x_opa.c ****     mode = get_opa_trim_FLAG(OPAx);
ARM GAS  /tmp/cczO2nl5.s 			page 12


 364              		.loc 1 224 5 view .LVU106
 365              	.LBB18:
 366              	.LBI18:
 192:Library/src/lcm32f06x_opa.c **** {
 367              		.loc 1 192 10 view .LVU107
 368              	.LBB19:
 194:Library/src/lcm32f06x_opa.c **** }
 369              		.loc 1 194 3 view .LVU108
 194:Library/src/lcm32f06x_opa.c **** }
 370              		.loc 1 194 16 is_stmt 0 view .LVU109
 371 0036 2B68     		ldr	r3, [r5]
 194:Library/src/lcm32f06x_opa.c **** }
 372              		.loc 1 194 51 view .LVU110
 373 0038 DB0F     		lsrs	r3, r3, #31
 374              	.LVL14:
 194:Library/src/lcm32f06x_opa.c **** }
 375              		.loc 1 194 51 view .LVU111
 376              	.LBE19:
 377              	.LBE18:
 225:Library/src/lcm32f06x_opa.c ****     switch (direction)
 378              		.loc 1 225 5 is_stmt 1 view .LVU112
 379 003a 012F     		cmp	r7, #1
 380 003c 09D0     		beq	.L23
 381              	.LVL15:
 226:Library/src/lcm32f06x_opa.c ****     {
 227:Library/src/lcm32f06x_opa.c ****       case 0:
 228:Library/src/lcm32f06x_opa.c ****       {
 229:Library/src/lcm32f06x_opa.c ****         if (mode == 0)
 382              		.loc 1 229 9 view .LVU113
 383              		.loc 1 229 12 is_stmt 0 view .LVU114
 384 003e 002B     		cmp	r3, #0
 385 0040 19D1     		bne	.L20
 230:Library/src/lcm32f06x_opa.c ****         {
 231:Library/src/lcm32f06x_opa.c ****           CTRIM--;
 386              		.loc 1 231 11 is_stmt 1 view .LVU115
 387              		.loc 1 231 16 is_stmt 0 view .LVU116
 388 0042 013C     		subs	r4, r4, #1
 389              	.LVL16:
 390              		.loc 1 231 16 view .LVU117
 391 0044 E4B2     		uxtb	r4, r4
 232:Library/src/lcm32f06x_opa.c ****         }
 233:Library/src/lcm32f06x_opa.c ****         if ((mode == 1) || (CTRIM == 0))
 392              		.loc 1 233 9 is_stmt 1 view .LVU118
 393              		.loc 1 233 25 is_stmt 0 discriminator 1 view .LVU119
 394 0046 002C     		cmp	r4, #0
 395 0048 ECD1     		bne	.L13
 396              	.LVL17:
 397              		.loc 1 233 25 discriminator 1 view .LVU120
 398 004a 0023     		movs	r3, #0
 399              	.LVL18:
 234:Library/src/lcm32f06x_opa.c ****         {
 235:Library/src/lcm32f06x_opa.c ****           CTRIMOLD = CTRIM;
 236:Library/src/lcm32f06x_opa.c ****           CTRIM = 0;
 237:Library/src/lcm32f06x_opa.c ****           direction = 1;
 400              		.loc 1 237 21 view .LVU121
 401 004c 0127     		movs	r7, #1
 402 004e 9946     		mov	r9, r3
ARM GAS  /tmp/cczO2nl5.s 			page 13


 403 0050 E8E7     		b	.L13
 404              	.LVL19:
 405              	.L23:
 238:Library/src/lcm32f06x_opa.c ****         }
 239:Library/src/lcm32f06x_opa.c ****         break;
 240:Library/src/lcm32f06x_opa.c ****       }
 241:Library/src/lcm32f06x_opa.c ****       case 1:
 242:Library/src/lcm32f06x_opa.c ****       {
 243:Library/src/lcm32f06x_opa.c ****         if (mode == 1)
 406              		.loc 1 243 9 is_stmt 1 view .LVU122
 407              		.loc 1 243 12 is_stmt 0 view .LVU123
 408 0052 012B     		cmp	r3, #1
 409 0054 13D0     		beq	.L24
 410              	.LVL20:
 244:Library/src/lcm32f06x_opa.c ****         {
 245:Library/src/lcm32f06x_opa.c ****           CTRIM++;
 246:Library/src/lcm32f06x_opa.c ****         }
 247:Library/src/lcm32f06x_opa.c ****         if ((CTRIM == 0x1f) || (mode == 0))
 248:Library/src/lcm32f06x_opa.c ****         {
 249:Library/src/lcm32f06x_opa.c ****           flag = 1;
 411              		.loc 1 249 11 is_stmt 1 view .LVU124
 250:Library/src/lcm32f06x_opa.c ****           if (CTRIMOLD == 0)
 412              		.loc 1 250 11 view .LVU125
 413              		.loc 1 250 14 is_stmt 0 view .LVU126
 414 0056 4B46     		mov	r3, r9
 415              	.LVL21:
 416              		.loc 1 250 14 view .LVU127
 417 0058 002B     		cmp	r3, #0
 418 005a 19D1     		bne	.L16
 419              	.L25:
 251:Library/src/lcm32f06x_opa.c ****           {
 252:Library/src/lcm32f06x_opa.c ****             Opa_trim(OPAx, CTRIM);
 420              		.loc 1 252 13 is_stmt 1 view .LVU128
 421              	.LVL22:
 422              	.LBB20:
 423              	.LBI20:
 160:Library/src/lcm32f06x_opa.c **** {
 424              		.loc 1 160 6 view .LVU129
 425              	.LBB21:
 162:Library/src/lcm32f06x_opa.c **** }
 426              		.loc 1 162 3 view .LVU130
 162:Library/src/lcm32f06x_opa.c **** }
 427              		.loc 1 162 24 is_stmt 0 view .LVU131
 428 005c 2B68     		ldr	r3, [r5]
 162:Library/src/lcm32f06x_opa.c **** }
 429              		.loc 1 162 34 view .LVU132
 430 005e 114A     		ldr	r2, .L26
 431 0060 1340     		ands	r3, r2
 162:Library/src/lcm32f06x_opa.c **** }
 432              		.loc 1 162 57 view .LVU133
 433 0062 3343     		orrs	r3, r6
 162:Library/src/lcm32f06x_opa.c **** }
 434              		.loc 1 162 17 view .LVU134
 435 0064 2B60     		str	r3, [r5]
 436              	.LVL23:
 162:Library/src/lcm32f06x_opa.c **** }
 437              		.loc 1 162 17 view .LVU135
ARM GAS  /tmp/cczO2nl5.s 			page 14


 438              	.LBE21:
 439              	.LBE20:
 220:Library/src/lcm32f06x_opa.c ****   {
 440              		.loc 1 220 15 is_stmt 1 view .LVU136
 441              	.L17:
 253:Library/src/lcm32f06x_opa.c ****           }
 254:Library/src/lcm32f06x_opa.c ****           else
 255:Library/src/lcm32f06x_opa.c ****           {
 256:Library/src/lcm32f06x_opa.c ****             CTRIM = (CTRIM + CTRIMOLD) >> 1;
 257:Library/src/lcm32f06x_opa.c ****             Opa_trim(OPAx, CTRIM);
 258:Library/src/lcm32f06x_opa.c ****           }
 259:Library/src/lcm32f06x_opa.c ****         }
 260:Library/src/lcm32f06x_opa.c ****         break;
 261:Library/src/lcm32f06x_opa.c ****       }
 262:Library/src/lcm32f06x_opa.c ****       default:
 263:Library/src/lcm32f06x_opa.c ****         Opa_trim(OPAx, 0);
 264:Library/src/lcm32f06x_opa.c ****         break;
 265:Library/src/lcm32f06x_opa.c ****     }
 266:Library/src/lcm32f06x_opa.c ****   }
 267:Library/src/lcm32f06x_opa.c ****   OPAx->OPA_CSR &= ~(OPAX_CSR_OPxTRIMEN_Msk | OPAX_CSR_OPxN_PD_Msk | \
 442              		.loc 1 267 3 view .LVU137
 443              		.loc 1 267 7 is_stmt 0 view .LVU138
 444 0066 2B68     		ldr	r3, [r5]
 445              		.loc 1 267 17 view .LVU139
 446 0068 0F4A     		ldr	r2, .L26+4
 268:Library/src/lcm32f06x_opa.c ****                   OPAX_CSR_OPxP_PD_Msk | OPAX_CSR_OPxPS_Msk | \
 269:Library/src/lcm32f06x_opa.c ****                   OPAX_CSR_OPxEN_Msk);
 270:Library/src/lcm32f06x_opa.c **** }
 447              		.loc 1 270 1 view .LVU140
 448              		@ sp needed
 267:Library/src/lcm32f06x_opa.c ****                   OPAX_CSR_OPxP_PD_Msk | OPAX_CSR_OPxPS_Msk | \
 449              		.loc 1 267 17 view .LVU141
 450 006a 1340     		ands	r3, r2
 451 006c 2B60     		str	r3, [r5]
 452              	.LVL24:
 453              		.loc 1 270 1 view .LVU142
 454 006e C0BC     		pop	{r6, r7}
 455 0070 B946     		mov	r9, r7
 456 0072 B046     		mov	r8, r6
 457 0074 F8BD     		pop	{r3, r4, r5, r6, r7, pc}
 458              	.LVL25:
 459              	.L20:
 460              		.loc 1 270 1 view .LVU143
 461 0076 A146     		mov	r9, r4
 462              	.LVL26:
 236:Library/src/lcm32f06x_opa.c ****           direction = 1;
 463              		.loc 1 236 17 view .LVU144
 464 0078 3C00     		movs	r4, r7
 237:Library/src/lcm32f06x_opa.c ****         }
 465              		.loc 1 237 21 view .LVU145
 466 007a 0127     		movs	r7, #1
 467              	.LVL27:
 237:Library/src/lcm32f06x_opa.c ****         }
 468              		.loc 1 237 21 view .LVU146
 469 007c D2E7     		b	.L13
 470              	.LVL28:
 471              	.L24:
ARM GAS  /tmp/cczO2nl5.s 			page 15


 245:Library/src/lcm32f06x_opa.c ****         }
 472              		.loc 1 245 11 is_stmt 1 view .LVU147
 245:Library/src/lcm32f06x_opa.c ****         }
 473              		.loc 1 245 16 is_stmt 0 view .LVU148
 474 007e 0134     		adds	r4, r4, #1
 475              	.LVL29:
 245:Library/src/lcm32f06x_opa.c ****         }
 476              		.loc 1 245 16 view .LVU149
 477 0080 E4B2     		uxtb	r4, r4
 247:Library/src/lcm32f06x_opa.c ****         {
 478              		.loc 1 247 9 is_stmt 1 view .LVU150
 247:Library/src/lcm32f06x_opa.c ****         {
 479              		.loc 1 247 12 is_stmt 0 view .LVU151
 480 0082 1F2C     		cmp	r4, #31
 481 0084 CED1     		bne	.L13
 482 0086 F826     		movs	r6, #248
 250:Library/src/lcm32f06x_opa.c ****           {
 483              		.loc 1 250 14 view .LVU152
 484 0088 4B46     		mov	r3, r9
 485              	.LVL30:
 247:Library/src/lcm32f06x_opa.c ****         {
 486              		.loc 1 247 12 view .LVU153
 487 008a 7603     		lsls	r6, r6, #13
 488              	.LVL31:
 249:Library/src/lcm32f06x_opa.c ****           if (CTRIMOLD == 0)
 489              		.loc 1 249 11 is_stmt 1 view .LVU154
 250:Library/src/lcm32f06x_opa.c ****           {
 490              		.loc 1 250 11 view .LVU155
 250:Library/src/lcm32f06x_opa.c ****           {
 491              		.loc 1 250 14 is_stmt 0 view .LVU156
 492 008c 002B     		cmp	r3, #0
 493 008e E5D0     		beq	.L25
 494              	.L16:
 256:Library/src/lcm32f06x_opa.c ****             Opa_trim(OPAx, CTRIM);
 495              		.loc 1 256 13 is_stmt 1 view .LVU157
 496              	.LVL32:
 257:Library/src/lcm32f06x_opa.c ****           }
 497              		.loc 1 257 13 view .LVU158
 498              	.LBB22:
 499              	.LBI22:
 160:Library/src/lcm32f06x_opa.c **** {
 500              		.loc 1 160 6 view .LVU159
 501              	.LBB23:
 162:Library/src/lcm32f06x_opa.c **** }
 502              		.loc 1 162 3 view .LVU160
 503              	.LBE23:
 504              	.LBE22:
 256:Library/src/lcm32f06x_opa.c ****             Opa_trim(OPAx, CTRIM);
 505              		.loc 1 256 28 is_stmt 0 view .LVU161
 506 0090 2300     		movs	r3, r4
 507              	.LBB26:
 508              	.LBB24:
 162:Library/src/lcm32f06x_opa.c **** }
 509              		.loc 1 162 24 view .LVU162
 510 0092 2A68     		ldr	r2, [r5]
 162:Library/src/lcm32f06x_opa.c **** }
 511              		.loc 1 162 34 view .LVU163
ARM GAS  /tmp/cczO2nl5.s 			page 16


 512 0094 0349     		ldr	r1, .L26
 513              	.LBE24:
 514              	.LBE26:
 256:Library/src/lcm32f06x_opa.c ****             Opa_trim(OPAx, CTRIM);
 515              		.loc 1 256 28 view .LVU164
 516 0096 4B44     		add	r3, r3, r9
 256:Library/src/lcm32f06x_opa.c ****             Opa_trim(OPAx, CTRIM);
 517              		.loc 1 256 40 view .LVU165
 518 0098 5B10     		asrs	r3, r3, #1
 519              	.LBB27:
 520              	.LBB25:
 162:Library/src/lcm32f06x_opa.c **** }
 521              		.loc 1 162 65 view .LVU166
 522 009a 1B04     		lsls	r3, r3, #16
 162:Library/src/lcm32f06x_opa.c **** }
 523              		.loc 1 162 34 view .LVU167
 524 009c 0A40     		ands	r2, r1
 162:Library/src/lcm32f06x_opa.c **** }
 525              		.loc 1 162 57 view .LVU168
 526 009e 1343     		orrs	r3, r2
 162:Library/src/lcm32f06x_opa.c **** }
 527              		.loc 1 162 17 view .LVU169
 528 00a0 2B60     		str	r3, [r5]
 529              	.LVL33:
 162:Library/src/lcm32f06x_opa.c **** }
 530              		.loc 1 162 17 view .LVU170
 531              	.LBE25:
 532              	.LBE27:
 220:Library/src/lcm32f06x_opa.c ****   {
 533              		.loc 1 220 15 is_stmt 1 view .LVU171
 534 00a2 E0E7     		b	.L17
 535              	.L27:
 536              		.align	2
 537              	.L26:
 538 00a4 FFFFE0FF 		.word	-2031617
 539 00a8 DEFFFF8F 		.word	-1879048226
 540              		.cfi_endproc
 541              	.LFE52:
 543              		.section	.text.OPA_Init,"ax",%progbits
 544              		.align	1
 545              		.p2align 2,,3
 546              		.global	OPA_Init
 547              		.syntax unified
 548              		.code	16
 549              		.thumb_func
 551              	OPA_Init:
 552              	.LVL34:
 553              	.LFB46:
  54:Library/src/lcm32f06x_opa.c ****   uint32_t tmpreg = 0;
 554              		.loc 1 54 1 view -0
 555              		.cfi_startproc
 556              		@ args = 0, pretend = 0, frame = 0
 557              		@ frame_needed = 0, uses_anonymous_args = 0
  55:Library/src/lcm32f06x_opa.c **** 
 558              		.loc 1 55 3 view .LVU173
  58:Library/src/lcm32f06x_opa.c ****   assert_param(IS_OPA_NegativeInput(OPA_InitStruct->OPA_NegativeInput));
 559              		.loc 1 58 3 view .LVU174
ARM GAS  /tmp/cczO2nl5.s 			page 17


  59:Library/src/lcm32f06x_opa.c ****   assert_param(IS_OPA_FeedbackResSingal(OPA_InitStruct->OPA_FeedbackResSingal));
 560              		.loc 1 59 3 view .LVU175
  60:Library/src/lcm32f06x_opa.c ****   assert_param(IS_OPA_InputRes(OPA_InitStruct->OPA_InputRes));
 561              		.loc 1 60 3 view .LVU176
  61:Library/src/lcm32f06x_opa.c ****   assert_param(IS_OPA_PositiveADCSwitch(OPA_InitStruct->OPA_PositiveADCSwitch));
 562              		.loc 1 61 3 view .LVU177
  62:Library/src/lcm32f06x_opa.c ****   assert_param(IS_OPA_NegativeADCSwitch(OPA_InitStruct->OPA_NegativeADCSwitch));
 563              		.loc 1 62 3 view .LVU178
  63:Library/src/lcm32f06x_opa.c ****   assert_param(IS_OPA_Gain(OPA_InitStruct->OPA_Gain));
 564              		.loc 1 63 3 view .LVU179
  64:Library/src/lcm32f06x_opa.c ****   assert_param(IS_OPA_BiasVoltageSource(OPA_InitStruct->OPA_BiasVoltageSource));
 565              		.loc 1 64 3 view .LVU180
  65:Library/src/lcm32f06x_opa.c ****   assert_param(IS_OPA_BiasVoltage(OPA_InitStruct->OPA_BiasVoltage));
 566              		.loc 1 65 3 view .LVU181
  66:Library/src/lcm32f06x_opa.c ****   assert_param(IS_OPA_FeedbackRes(OPA_InitStruct->OPA_FeedbackRes));
 567              		.loc 1 66 3 view .LVU182
  67:Library/src/lcm32f06x_opa.c ****   assert_param(IS_OPA_OppRES_Short(OPA_InitStruct->OPA_OppRES_Short));
 568              		.loc 1 67 3 view .LVU183
  68:Library/src/lcm32f06x_opa.c ****   assert_param(IS_OPA_OpnRES_Short(OPA_InitStruct->OPA_OpnRES_Short));
 569              		.loc 1 68 3 view .LVU184
  69:Library/src/lcm32f06x_opa.c **** 
 570              		.loc 1 69 3 view .LVU185
  71:Library/src/lcm32f06x_opa.c **** 
 571              		.loc 1 71 3 view .LVU186
  54:Library/src/lcm32f06x_opa.c ****   uint32_t tmpreg = 0;
 572              		.loc 1 54 1 is_stmt 0 view .LVU187
 573 0000 70B5     		push	{r4, r5, r6, lr}
 574              	.LCFI3:
 575              		.cfi_def_cfa_offset 16
 576              		.cfi_offset 4, -16
 577              		.cfi_offset 5, -12
 578              		.cfi_offset 6, -8
 579              		.cfi_offset 14, -4
  54:Library/src/lcm32f06x_opa.c ****   uint32_t tmpreg = 0;
 580              		.loc 1 54 1 view .LVU188
 581 0002 0D00     		movs	r5, r1
  83:Library/src/lcm32f06x_opa.c **** 
 582              		.loc 1 83 1 view .LVU189
 583              		@ sp needed
  54:Library/src/lcm32f06x_opa.c ****   uint32_t tmpreg = 0;
 584              		.loc 1 54 1 view .LVU190
 585 0004 0400     		movs	r4, r0
  71:Library/src/lcm32f06x_opa.c **** 
 586              		.loc 1 71 3 view .LVU191
 587 0006 FFF7FEFF 		bl	OPA_TRIM
 588              	.LVL35:
  73:Library/src/lcm32f06x_opa.c **** 
 589              		.loc 1 73 3 is_stmt 1 view .LVU192
  75:Library/src/lcm32f06x_opa.c ****             OPA_InitStruct->OPA_FeedbackResSingal | OPA_InitStruct->OPA_InputRes |
 590              		.loc 1 75 47 is_stmt 0 view .LVU193
 591 000a 6968     		ldr	r1, [r5, #4]
 592 000c 2B68     		ldr	r3, [r5]
  73:Library/src/lcm32f06x_opa.c **** 
 593              		.loc 1 73 10 view .LVU194
 594 000e 2268     		ldr	r2, [r4]
 595              	.LVL36:
  75:Library/src/lcm32f06x_opa.c ****             OPA_InitStruct->OPA_FeedbackResSingal | OPA_InitStruct->OPA_InputRes |
ARM GAS  /tmp/cczO2nl5.s 			page 18


 596              		.loc 1 75 3 is_stmt 1 view .LVU195
  75:Library/src/lcm32f06x_opa.c ****             OPA_InitStruct->OPA_FeedbackResSingal | OPA_InitStruct->OPA_InputRes |
 597              		.loc 1 75 47 is_stmt 0 view .LVU196
 598 0010 0B43     		orrs	r3, r1
  75:Library/src/lcm32f06x_opa.c ****             OPA_InitStruct->OPA_FeedbackResSingal | OPA_InitStruct->OPA_InputRes |
 599              		.loc 1 75 83 view .LVU197
 600 0012 A968     		ldr	r1, [r5, #8]
 601 0014 0B43     		orrs	r3, r1
  76:Library/src/lcm32f06x_opa.c ****             OPA_InitStruct->OPA_PositiveADCSwitch | OPA_InitStruct->OPA_NegativeADCSwitch |
 602              		.loc 1 76 51 view .LVU198
 603 0016 E968     		ldr	r1, [r5, #12]
 604 0018 0B43     		orrs	r3, r1
  76:Library/src/lcm32f06x_opa.c ****             OPA_InitStruct->OPA_PositiveADCSwitch | OPA_InitStruct->OPA_NegativeADCSwitch |
 605              		.loc 1 76 82 view .LVU199
 606 001a 2969     		ldr	r1, [r5, #16]
 607 001c 0B43     		orrs	r3, r1
  77:Library/src/lcm32f06x_opa.c ****             OPA_InitStruct->OPA_Gain | OPA_InitStruct->OPA_BiasVoltageSource |
 608              		.loc 1 77 51 view .LVU200
 609 001e 6969     		ldr	r1, [r5, #20]
 610 0020 0B43     		orrs	r3, r1
  77:Library/src/lcm32f06x_opa.c ****             OPA_InitStruct->OPA_Gain | OPA_InitStruct->OPA_BiasVoltageSource |
 611              		.loc 1 77 91 view .LVU201
 612 0022 A969     		ldr	r1, [r5, #24]
 613 0024 0B43     		orrs	r3, r1
  78:Library/src/lcm32f06x_opa.c ****             OPA_InitStruct->OPA_BiasVoltage | OPA_InitStruct->OPA_FeedbackRes | 
 614              		.loc 1 78 38 view .LVU202
 615 0026 E969     		ldr	r1, [r5, #28]
 616 0028 0B43     		orrs	r3, r1
  78:Library/src/lcm32f06x_opa.c ****             OPA_InitStruct->OPA_BiasVoltage | OPA_InitStruct->OPA_FeedbackRes | 
 617              		.loc 1 78 78 view .LVU203
 618 002a 296A     		ldr	r1, [r5, #32]
 619 002c 0B43     		orrs	r3, r1
  79:Library/src/lcm32f06x_opa.c ****             OPA_InitStruct->OPA_OppRES_Short | OPA_InitStruct->OPA_OpnRES_Short;
 620              		.loc 1 79 45 view .LVU204
 621 002e 696A     		ldr	r1, [r5, #36]
 622 0030 0B43     		orrs	r3, r1
  79:Library/src/lcm32f06x_opa.c ****             OPA_InitStruct->OPA_OppRES_Short | OPA_InitStruct->OPA_OpnRES_Short;
 623              		.loc 1 79 79 view .LVU205
 624 0032 A96A     		ldr	r1, [r5, #40]
 625 0034 0B43     		orrs	r3, r1
  80:Library/src/lcm32f06x_opa.c **** 
 626              		.loc 1 80 46 view .LVU206
 627 0036 E96A     		ldr	r1, [r5, #44]
 628 0038 0B43     		orrs	r3, r1
  75:Library/src/lcm32f06x_opa.c ****             OPA_InitStruct->OPA_FeedbackResSingal | OPA_InitStruct->OPA_InputRes |
 629              		.loc 1 75 10 view .LVU207
 630 003a 1343     		orrs	r3, r2
 631              	.LVL37:
  82:Library/src/lcm32f06x_opa.c **** }
 632              		.loc 1 82 3 is_stmt 1 view .LVU208
  82:Library/src/lcm32f06x_opa.c **** }
 633              		.loc 1 82 17 is_stmt 0 view .LVU209
 634 003c 2360     		str	r3, [r4]
 635              	.LVL38:
 636              	.LVL39:
  83:Library/src/lcm32f06x_opa.c **** 
 637              		.loc 1 83 1 view .LVU210
ARM GAS  /tmp/cczO2nl5.s 			page 19


 638 003e 70BD     		pop	{r4, r5, r6, pc}
 639              		.cfi_endproc
 640              	.LFE46:
 642              		.text
 643              	.Letext0:
 644              		.file 2 "Library/inc/lcm32f06x.h"
 645              		.file 3 "/home/ha/toolchain/arm-gnu-toolchain-14.3/arm-none-eabi/include/machine/_default_types.h"
 646              		.file 4 "/home/ha/toolchain/arm-gnu-toolchain-14.3/arm-none-eabi/include/sys/_stdint.h"
 647              		.file 5 "Library/inc/lcm32f06x_opa.h"
 648              		.file 6 "Library/inc/lcm32f06x_rcc.h"
ARM GAS  /tmp/cczO2nl5.s 			page 20


DEFINED SYMBOLS
                            *ABS*:00000000 lcm32f06x_opa.c
     /tmp/cczO2nl5.s:17     .text.OPA_DeInit:00000000 $t
     /tmp/cczO2nl5.s:24     .text.OPA_DeInit:00000000 OPA_DeInit
     /tmp/cczO2nl5.s:56     .text.OPA_StructInit:00000000 $t
     /tmp/cczO2nl5.s:63     .text.OPA_StructInit:00000000 OPA_StructInit
     /tmp/cczO2nl5.s:117    .text.OPA_Cmd:00000000 $t
     /tmp/cczO2nl5.s:124    .text.OPA_Cmd:00000000 OPA_Cmd
     /tmp/cczO2nl5.s:159    .text.Opa_trim:00000000 $t
     /tmp/cczO2nl5.s:166    .text.Opa_trim:00000000 Opa_trim
     /tmp/cczO2nl5.s:194    .text.Opa_trim:00000010 $d
     /tmp/cczO2nl5.s:199    .text.get_opa_trim:00000000 $t
     /tmp/cczO2nl5.s:206    .text.get_opa_trim:00000000 get_opa_trim
     /tmp/cczO2nl5.s:230    .text.get_opa_trim_FLAG:00000000 $t
     /tmp/cczO2nl5.s:237    .text.get_opa_trim_FLAG:00000000 get_opa_trim_FLAG
     /tmp/cczO2nl5.s:259    .text.OPA_TRIM:00000000 $t
     /tmp/cczO2nl5.s:266    .text.OPA_TRIM:00000000 OPA_TRIM
     /tmp/cczO2nl5.s:538    .text.OPA_TRIM:000000a4 $d
     /tmp/cczO2nl5.s:544    .text.OPA_Init:00000000 $t
     /tmp/cczO2nl5.s:551    .text.OPA_Init:00000000 OPA_Init

UNDEFINED SYMBOLS
RCC_APB0PeriphResetCmd
delay10us
