📄 tsensor.txt
字号:
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.1 [Build 934] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\tsensor.o --depend=.\Obj\tsensor.d --device=DARMSTM --apcs=interwork -O3 -I..\..\include -I..\..\..\FWLib\library\inc -I..\..\..\USBLib\library\inc -I..\..\SRAM -I"D:\Program Files\MDK KEIL\ARM\INC\ST\STM32F10x" -D__MICROLIB --omf_browse=.\Obj\tsensor.crf ..\..\source\tsensor.c]
THUMB
AREA ||i.I2C_LM75_Init||, CODE, READONLY, ALIGN=2
I2C_LM75_Init PROC
;;;54 void I2C_LM75_Init(void)
;;;55 {
000000 b510 PUSH {r4,lr}
000002 b086 SUB sp,sp,#0x18
;;;56 GPIO_InitTypeDef GPIO_InitStructure;
;;;57 I2C_InitTypeDef I2C_InitStructure;
;;;58
;;;59 /* GPIOB Periph clock enable */
;;;60 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOB, ENABLE);
000004 2101 MOVS r1,#1
000006 2009 MOVS r0,#9
000008 f7fff7ff BL RCC_APB2PeriphClockCmd
;;;61
;;;62 /* I2C1 Periph clock enable */
;;;63 RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1, ENABLE);
00000c 2101 MOVS r1,#1
00000e 0548 LSLS r0,r1,#21
000010 f7fff7ff BL RCC_APB1PeriphClockCmd
;;;64
;;;65 /* Configure I2C1 pins: SCL and SDA */
;;;66 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;
000014 20c0 MOVS r0,#0xc0
000016 f8adf8ad STRH r0,[sp,#0x14]
;;;67 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
00001a 2003 MOVS r0,#3
00001c f88df88d STRB r0,[sp,#0x16]
;;;68 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_OD;
000020 201c MOVS r0,#0x1c
;;;69 GPIO_Init(GPIOB, &GPIO_InitStructure);
000022 4c19 LDR r4,|L1.136|
000024 f88df88d STRB r0,[sp,#0x17] ;68
000028 a905 ADD r1,sp,#0x14
00002a 4620 MOV r0,r4
00002c f7fff7ff BL GPIO_Init
;;;70
;;;71 /* Configure PB.5 as Input pull-up, used as TemperatureSensor_INT */
;;;72 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
000030 2020 MOVS r0,#0x20
000032 f8adf8ad STRH r0,[sp,#0x14]
;;;73 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
000036 2001 MOVS r0,#1
000038 f88df88d STRB r0,[sp,#0x16]
;;;74 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
00003c 2048 MOVS r0,#0x48
00003e f88df88d STRB r0,[sp,#0x17]
;;;75 GPIO_Init(GPIOB, &GPIO_InitStructure);
000042 a905 ADD r1,sp,#0x14
000044 4620 MOV r0,r4
000046 f7fff7ff BL GPIO_Init
;;;76
;;;77 I2C_DeInit(I2C1);
00004a 4c10 LDR r4,|L1.140|
00004c 4620 MOV r0,r4
00004e f7fff7ff BL I2C_DeInit
;;;78
;;;79 /* I2C1 Init */
;;;80 I2C_InitStructure.I2C_Mode = I2C_Mode_I2C;
000052 2000 MOVS r0,#0
000054 f8adf8ad STRH r0,[sp,#4]
;;;81 I2C_InitStructure.I2C_DutyCycle = I2C_DutyCycle_2;
;;;82 I2C_InitStructure.I2C_OwnAddress1 = 0x00;
000058 f8adf8ad STRH r0,[sp,#8]
;;;83 I2C_InitStructure.I2C_Ack = I2C_Ack_Enable;
00005c 1520 ASRS r0,r4,#20
00005e f8adf8ad STRH r0,[sp,#0xa]
;;;84 I2C_InitStructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit;
000062 0100 LSLS r0,r0,#4
000064 f8adf8ad STRH r0,[sp,#0xc]
000068 f64bf64b MOV r1,#0xbfff ;81
;;;85 I2C_InitStructure.I2C_ClockSpeed = 200000;
00006c 4808 LDR r0,|L1.144|
00006e f8adf8ad STRH r1,[sp,#6] ;81
;;;86 I2C_Init(I2C1, &I2C_InitStructure);
000072 9004 STR r0,[sp,#0x10]
000074 a901 ADD r1,sp,#4
000076 4620 MOV r0,r4
000078 f7fff7ff BL I2C_Init
;;;87
;;;88 /* I2C1 Init */
;;;89 I2C_Cmd(I2C1, ENABLE);
00007c 2101 MOVS r1,#1
00007e 4620 MOV r0,r4
000080 f7fff7ff BL I2C_Cmd
;;;90 }
000084 b006 ADD sp,sp,#0x18
000086 bd10 POP {r4,pc}
;;;91
ENDP
|L1.136|
000088 40010c00 DCD 0x40010c00
|L1.140|
00008c 40005400 DCD 0x40005400
|L1.144|
000090 00030d40 DCD 0x00030d40
AREA ||i.I2C_LM75_Status||, CODE, READONLY, ALIGN=2
I2C_LM75_Status PROC
;;;99 ErrorStatus I2C_LM75_Status(void)
;;;100 {
000000 e92de92d PUSH {r4-r8,lr}
;;;101 u32 I2C_TimeOut = 0x3FFFF;
;;;102
;;;103 /* Clear the I2C1 AF flag */
;;;104 I2C_ClearFlag(I2C1, I2C_FLAG_AF);
000004 4e18 LDR r6,|L2.104|
000006 4d19 LDR r5,|L2.108|
000008 4c16 LDR r4,|L2.100|
00000a 4631 MOV r1,r6
00000c 4628 MOV r0,r5
00000e f7fff7ff BL I2C_ClearFlag
;;;105
;;;106 /* Enable I2C1 acknowledgement if it is already disabled by other function */
;;;107 I2C_AcknowledgeConfig(I2C1, ENABLE);
000012 2101 MOVS r1,#1
000014 4628 MOV r0,r5
000016 f7fff7ff BL I2C_AcknowledgeConfig
;;;108
;;;109 /*----- Transmission Phase -----*/
;;;110
;;;111 /* Send I2C1 START condition */
;;;112 I2C_GenerateSTART(I2C1, ENABLE);
00001a 2101 MOVS r1,#1
00001c 4628 MOV r0,r5
00001e f7fff7ff BL I2C_GenerateSTART
000022 4f13 LDR r7,|L2.112|
|L2.36|
;;;113
;;;114 /* Test on I2C1 EV5 and clear it */
;;;115 while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT)) /* EV5 */
000024 4628 MOV r0,r5
000026 4639 MOV r1,r7
000028 f7fff7ff BL I2C_CheckEvent
00002c 2800 CMP r0,#0
00002e d0f9 BEQ |L2.36|
;;;116 {
;;;117 }
;;;118
;;;119 /* Send STLM75 slave address for write */
;;;120 I2C_Send7bitAddress(I2C1, LM75_Addr, I2C_Direction_Transmitter);
000030 2200 MOVS r2,#0
000032 2190 MOVS r1,#0x90
000034 4628 MOV r0,r5
000036 f7fff7ff BL I2C_Send7bitAddress
00003a 4f0e LDR r7,|L2.116|
00003c e000 B |L2.64|
|L2.62|
;;;121
;;;122 while((!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED)) && I2C_TimeOut)/* EV6 */
;;;123 {
;;;124 I2C_TimeOut--;
00003e 1e64 SUBS r4,r4,#1
|L2.64|
000040 4639 MOV r1,r7 ;122
000042 4628 MOV r0,r5 ;122
000044 f7fff7ff BL I2C_CheckEvent
000048 b908 CBNZ r0,|L2.78|
00004a 2c00 CMP r4,#0 ;122
00004c d1f7 BNE |L2.62|
|L2.78|
;;;125 }
;;;126
;;;127 if(I2C_GetFlagStatus(I2C1, I2C_FLAG_AF) != 0x0)
00004e 4631 MOV r1,r6
000050 4628 MOV r0,r5
000052 f7fff7ff BL I2C_GetFlagStatus
000056 b110 CBZ r0,|L2.94|
;;;128 {
;;;129 return ERROR;
000058 2000 MOVS r0,#0
|L2.90|
;;;130 }
;;;131 else
;;;132 {
;;;133 return SUCCESS;
;;;134 }
;;;135 }
00005a e8bde8bd POP {r4-r8,pc}
|L2.94|
00005e 2001 MOVS r0,#1 ;133
000060 e7fb B |L2.90|
;;;136
ENDP
000062 0000 DCW 0x0000
|L2.100|
000064 0003ffff DCD 0x0003ffff
|L2.104|
000068 10000400 DCD 0x10000400
|L2.108|
00006c 40005400 DCD 0x40005400
|L2.112|
000070 00030001 DCD 0x00030001
|L2.116|
000074 00070082 DCD 0x00070082
AREA ||i.I2C_LM75_Reg_Read||, CODE, READONLY, ALIGN=2
I2C_LM75_Reg_Read PROC
;;;147 u16 I2C_LM75_Reg_Read(u8 RegName)
;;;148 {
000000 e92de92d PUSH {r4-r8,lr}
;;;149 u32 RegValue=0;
;;;150
;;;151 /* Enable I2C1 acknowledgement if it is already disabled by other function */
;;;152 I2C_AcknowledgeConfig(I2C1, ENABLE);
000004 4c30 LDR r4,|L3.200|
000006 4606 MOV r6,r0 ;148
000008 2101 MOVS r1,#1
00000a 4620 MOV r0,r4
00000c f7fff7ff BL I2C_AcknowledgeConfig
;;;153
;;;154 /*----- Transmission Phase -----*/
;;;155 /* Send I2C1 START condition */
;;;156 I2C_GenerateSTART(I2C1, ENABLE);
000010 2101 MOVS r1,#1
000012 4620 MOV r0,r4
000014 f7fff7ff BL I2C_GenerateSTART
000018 4d2c LDR r5,|L3.204|
|L3.26|
;;;157
;;;158 /* Test on I2C1 EV5 and clear it */
;;;159 while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT)) /* EV5 */
00001a 4620 MOV r0,r4
00001c 4629 MOV r1,r5
00001e f7fff7ff BL I2C_CheckEvent
000022 2800 CMP r0,#0
000024 d0f9 BEQ |L3.26|
;;;160 {
;;;161 }
;;;162
;;;163 /* Send STLM75 slave address for write */
;;;164 I2C_Send7bitAddress(I2C1, LM75_Addr, I2C_Direction_Transmitter);
000026 2200 MOVS r2,#0
000028 2190 MOVS r1,#0x90
00002a 4620 MOV r0,r4
00002c f7fff7ff BL I2C_Send7bitAddress
000030 4f27 LDR r7,|L3.208|
|L3.50|
;;;165
;;;166 /* Test on I2C1 EV6 and clear it */
;;;167 while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED)) /* EV6 */
000032 4620 MOV r0,r4
000034 4639 MOV r1,r7
000036 f7fff7ff BL I2C_CheckEvent
00003a 2800 CMP r0,#0
00003c d0f9 BEQ |L3.50|
;;;168 {
;;;169 }
;;;170
;;;171 /* Send the specified register data pointer */
;;;172 I2C_SendData(I2C1, RegName);
00003e 4631 MOV r1,r6
000040 4620 MOV r0,r4
000042 f7fff7ff BL I2C_SendData
000046 4e22 LDR r6,|L3.208|
000048 1cb6 ADDS r6,r6,#2
|L3.74|
;;;173
;;;174 /* Test on I2C1 EV8 and clear it */
;;;175 while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_TRANSMITTED)) /* EV8 */
00004a 4631 MOV r1,r6
00004c 4620 MOV r0,r4
00004e f7fff7ff BL I2C_CheckEvent
000052 2800 CMP r0,#0
000054 d0f9 BEQ |L3.74|
;;;176 {
;;;177 }
;;;178
;;;179 /*----- Reception Phase -----*/
;;;180 /* Send Re-STRAT condition */
;;;181 I2C_GenerateSTART(I2C1, ENABLE);
000056 2101 MOVS r1,#1
000058 4620 MOV r0,r4
00005a f7fff7ff BL I2C_GenerateSTART
|L3.94|
;;;182
;;;183 /* Test on EV5 and clear it */
;;;184 while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT)) /* EV5 */
00005e 4629 MOV r1,r5
000060 4620 MOV r0,r4
000062 f7fff7ff BL I2C_CheckEvent
000066 2800 CMP r0,#0
000068 d0f9 BEQ |L3.94|
;;;185 {
;;;186 }
;;;187
;;;188 /* Send STLM75 slave address for read */
;;;189 I2C_Send7bitAddress(I2C1, LM75_Addr, I2C_Direction_Receiver);
00006a 2201 MOVS r2,#1
00006c 2190 MOVS r1,#0x90
00006e 4620 MOV r0,r4
000070 f7fff7ff BL I2C_Send7bitAddress
000074 4e15 LDR r6,|L3.204|
000076 4d15 LDR r5,|L3.204|
000078 1c76 ADDS r6,r6,#1
00007a 353f ADDS r5,r5,#0x3f
|L3.124|
;;;190
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -