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

📄 tsensor.txt

📁 STM32外部SRAM用作datamemery的程序 开发环境MDK
💻 TXT
📖 第 1 页 / 共 5 页
字号:
; 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 + -