📄 tsensor.txt
字号:
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.1 [Build 942] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Int_Flash\tsensor.o --depend=.\Int_Flash\tsensor.d --device=DARMSTM --apcs=interwork -O3 -I..\include -I..\..\..\..\..\INC\ST\STM32F10x\USB -Id:\Keil\ARM\INC\ST\STM32F10x -D__MICROLIB --omf_browse=.\Int_Flash\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 f7fffffe 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 f7fffffe 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 f8ad0014 STRH r0,[sp,#0x14]
;;;67 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
00001a 2003 MOVS r0,#3
00001c f88d0016 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 f88d0017 STRB r0,[sp,#0x17] ;68
000028 a905 ADD r1,sp,#0x14
00002a 4620 MOV r0,r4
00002c f7fffffe 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 f8ad0014 STRH r0,[sp,#0x14]
;;;73 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
000036 2001 MOVS r0,#1
000038 f88d0016 STRB r0,[sp,#0x16]
;;;74 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
00003c 2048 MOVS r0,#0x48
00003e f88d0017 STRB r0,[sp,#0x17]
;;;75 GPIO_Init(GPIOB, &GPIO_InitStructure);
000042 a905 ADD r1,sp,#0x14
000044 4620 MOV r0,r4
000046 f7fffffe BL GPIO_Init
;;;76
;;;77 I2C_DeInit(I2C1);
00004a 4c10 LDR r4,|L1.140|
00004c 4620 MOV r0,r4
00004e f7fffffe BL I2C_DeInit
;;;78
;;;79 /* I2C1 Init */
;;;80 I2C_InitStructure.I2C_Mode = I2C_Mode_I2C;
000052 2000 MOVS r0,#0
000054 f8ad0004 STRH r0,[sp,#4]
;;;81 I2C_InitStructure.I2C_DutyCycle = I2C_DutyCycle_2;
;;;82 I2C_InitStructure.I2C_OwnAddress1 = 0x00;
000058 f8ad0008 STRH r0,[sp,#8]
;;;83 I2C_InitStructure.I2C_Ack = I2C_Ack_Enable;
00005c 1520 ASRS r0,r4,#20
00005e f8ad000a STRH r0,[sp,#0xa]
;;;84 I2C_InitStructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit;
000062 0100 LSLS r0,r0,#4
000064 f8ad000c STRH r0,[sp,#0xc]
000068 f64b71ff MOV r1,#0xbfff ;81
;;;85 I2C_InitStructure.I2C_ClockSpeed = 200000;
00006c 4808 LDR r0,|L1.144|
00006e f8ad1006 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 f7fffffe BL I2C_Init
;;;87
;;;88 /* I2C1 Init */
;;;89 I2C_Cmd(I2C1, ENABLE);
00007c 2101 MOVS r1,#1
00007e 4620 MOV r0,r4
000080 f7fffffe 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 e92d41f0 PUSH {r4-r8,lr}
;;;101 u32 I2C_TimeOut = 0x3FFFF;
;;;102
;;;103 /* Clear the I2C1 AF flag */
;;;104 I2C_ClearFlag(I2C1, I2C_FLAG_AF);
000004 4e19 LDR r6,|L2.108|
000006 4d1a LDR r5,|L2.112|
000008 4c17 LDR r4,|L2.104|
00000a 4631 MOV r1,r6
00000c 4628 MOV r0,r5
00000e f7fffffe 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 f7fffffe 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 f7fffffe BL I2C_GenerateSTART
000022 4f14 LDR r7,|L2.116|
|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 f7fffffe 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 f7fffffe BL I2C_Send7bitAddress
00003a 4f0f LDR r7,|L2.120|
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 f7fffffe BL I2C_CheckEvent
000048 b910 CBNZ r0,|L2.80|
00004a 2c00 CMP r4,#0 ;122
00004c d1f7 BNE |L2.62|
00004e e005 B |L2.92|
|L2.80|
;;;125 }
;;;126
;;;127 if(I2C_TimeOut == 0) {
000050 b124 CBZ r4,|L2.92|
;;;128 return ERROR;
;;;129 }
;;;130
;;;131 if(I2C_GetFlagStatus(I2C1, I2C_FLAG_AF) != 0x0)
000052 4631 MOV r1,r6
000054 4628 MOV r0,r5
000056 f7fffffe BL I2C_GetFlagStatus
00005a b110 CBZ r0,|L2.98|
|L2.92|
;;;132 {
;;;133 return ERROR;
00005c 2000 MOVS r0,#0
|L2.94|
;;;134 }
;;;135 else
;;;136 {
;;;137 return SUCCESS;
;;;138 }
;;;139 }
00005e e8bd81f0 POP {r4-r8,pc}
|L2.98|
000062 2001 MOVS r0,#1 ;137
000064 e7fb B |L2.94|
;;;140
ENDP
000066 0000 DCW 0x0000
|L2.104|
000068 0003ffff DCD 0x0003ffff
|L2.108|
00006c 10000400 DCD 0x10000400
|L2.112|
000070 40005400 DCD 0x40005400
|L2.116|
000074 00030001 DCD 0x00030001
|L2.120|
000078 00070082 DCD 0x00070082
AREA ||i.I2C_LM75_Reg_Read||, CODE, READONLY, ALIGN=2
I2C_LM75_Reg_Read PROC
;;;151 u16 I2C_LM75_Reg_Read(u8 RegName)
;;;152 {
000000 e92d41f0 PUSH {r4-r8,lr}
;;;153 u32 RegValue=0;
;;;154
;;;155 /* Enable I2C1 acknowledgement if it is already disabled by other function */
;;;156 I2C_AcknowledgeConfig(I2C1, ENABLE);
000004 4c30 LDR r4,|L3.200|
000006 4606 MOV r6,r0 ;152
000008 2101 MOVS r1,#1
00000a 4620 MOV r0,r4
00000c f7fffffe BL I2C_AcknowledgeConfig
;;;157
;;;158 /*----- Transmission Phase -----*/
;;;159 /* Send I2C1 START condition */
;;;160 I2C_GenerateSTART(I2C1, ENABLE);
000010 2101 MOVS r1,#1
000012 4620 MOV r0,r4
000014 f7fffffe BL I2C_GenerateSTART
000018 4d2c LDR r5,|L3.204|
|L3.26|
;;;161
;;;162 /* Test on I2C1 EV5 and clear it */
;;;163 while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT)) /* EV5 */
00001a 4620 MOV r0,r4
00001c 4629 MOV r1,r5
00001e f7fffffe BL I2C_CheckEvent
000022 2800 CMP r0,#0
000024 d0f9 BEQ |L3.26|
;;;164 {
;;;165 }
;;;166
;;;167 /* Send STLM75 slave address for write */
;;;168 I2C_Send7bitAddress(I2C1, LM75_Addr, I2C_Direction_Transmitter);
000026 2200 MOVS r2,#0
000028 2190 MOVS r1,#0x90
00002a 4620 MOV r0,r4
00002c f7fffffe BL I2C_Send7bitAddress
000030 4f27 LDR r7,|L3.208|
|L3.50|
;;;169
;;;170 /* Test on I2C1 EV6 and clear it */
;;;171 while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED)) /* EV6 */
000032 4620 MOV r0,r4
000034 4639 MOV r1,r7
000036 f7fffffe BL I2C_CheckEvent
00003a 2800 CMP r0,#0
00003c d0f9 BEQ |L3.50|
;;;172 {
;;;173 }
;;;174
;;;175 /* Send the specified register data pointer */
;;;176 I2C_SendData(I2C1, RegName);
00003e 4631 MOV r1,r6
000040 4620 MOV r0,r4
000042 f7fffffe BL I2C_SendData
000046 4e22 LDR r6,|L3.208|
000048 1cb6 ADDS r6,r6,#2
|L3.74|
;;;177
;;;178 /* Test on I2C1 EV8 and clear it */
;;;179 while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_TRANSMITTED)) /* EV8 */
00004a 4631 MOV r1,r6
00004c 4620 MOV r0,r4
00004e f7fffffe BL I2C_CheckEvent
000052 2800 CMP r0,#0
000054 d0f9 BEQ |L3.74|
;;;180 {
;;;181 }
;;;182
;;;183 /*----- Reception Phase -----*/
;;;184 /* Send Re-STRAT condition */
;;;185 I2C_GenerateSTART(I2C1, ENABLE);
000056 2101 MOVS r1,#1
000058 4620 MOV r0,r4
00005a f7fffffe BL I2C_GenerateSTART
|L3.94|
;;;186
;;;187 /* Test on EV5 and clear it */
;;;188 while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT)) /* EV5 */
00005e 4629 MOV r1,r5
000060 4620 MOV r0,r4
000062 f7fffffe BL I2C_CheckEvent
000066 2800 CMP r0,#0
000068 d0f9 BEQ |L3.94|
;;;189 {
;;;190 }
;;;191
;;;192 /* Send STLM75 slave address for read */
;;;193 I2C_Send7bitAddress(I2C1, LM75_Addr, I2C_Direction_Receiver);
00006a 2201 MOVS r2,#1
00006c 2190 MOVS r1,#0x90
00006e 4620 MOV r0,r4
000070 f7fffffe BL I2C_Send7bitAddress
000074 4e15 LDR r6,|L3.204|
000076 4d15 LDR r5,|L3.204|
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -