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

📄 tsensor.txt

📁 stm32.rar
💻 TXT
📖 第 1 页 / 共 5 页
字号:
; 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 + -