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

📄 tsensor.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
📖 第 1 页 / 共 5 页
字号:
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  4630              MOV      r0,r6
00001e  f7fffffe          BL       I2C_GenerateSTART
;;;113      
;;;114      /* Test on I2C1 EV5 and clear it */
;;;115      while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT))  /* EV5 */
000022  4f13              LDR      r7,|L7.112|
                  |L7.36|
000024  4630              MOV      r0,r6
000026  4639              MOV      r1,r7
000028  f7fffffe          BL       I2C_CheckEvent
00002c  2800              CMP      r0,#0
00002e  d0f9              BEQ      |L7.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  4630              MOV      r0,r6
000036  f7fffffe          BL       I2C_Send7bitAddress
;;;121      
;;;122      while((!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED)) && I2C_TimeOut)/* EV6 */
00003a  4f0e              LDR      r7,|L7.116|
;;;123      {
;;;124        I2C_TimeOut--;
00003c  e000              B        |L7.64|
                  |L7.62|
00003e  1e64              SUBS     r4,r4,#1
                  |L7.64|
000040  4639              MOV      r1,r7                 ;122
000042  4630              MOV      r0,r6                 ;122
000044  f7fffffe          BL       I2C_CheckEvent
000048  b908              CBNZ     r0,|L7.78|
00004a  2c00              CMP      r4,#0                 ;122
00004c  d1f7              BNE      |L7.62|
                  |L7.78|
;;;125      }
;;;126    
;;;127      if(I2C_GetFlagStatus(I2C1, I2C_FLAG_AF) != 0x0)
00004e  4629              MOV      r1,r5
000050  4630              MOV      r0,r6
000052  f7fffffe          BL       I2C_GetFlagStatus
000056  b110              CBZ      r0,|L7.94|
;;;128      {
;;;129        return ERROR;
000058  2000              MOVS     r0,#0
                  |L7.90|
;;;130      }
;;;131      else
;;;132      {
;;;133        return SUCCESS;
;;;134      }
;;;135    }
00005a  e8bd81f0          POP      {r4-r8,pc}
                  |L7.94|
00005e  2001              MOVS     r0,#1                 ;133
000060  e7fb              B        |L7.90|
;;;136    
                          ENDP

000062  0000              DCW      0x0000
                  |L7.100|
                          DCD      0x0003ffff
                  |L7.104|
                          DCD      0x10000400
                  |L7.108|
                          DCD      0x40005400
                  |L7.112|
                          DCD      0x00030001
                  |L7.116|
                          DCD      0x00070082

                          AREA ||i.I2C_LM75_Temp_Read||, CODE, READONLY, ALIGN=2

                  I2C_LM75_Temp_Read PROC
;;;289    *******************************************************************************/
;;;290    u16 I2C_LM75_Temp_Read(void)
000000  b570              PUSH     {r4-r6,lr}
;;;291    {
;;;292      u32 RegValue = 0;
;;;293    
;;;294      /* Enable I2C1 acknowledgement if it is already disabled by other function */
;;;295      I2C_AcknowledgeConfig(I2C1, ENABLE);
000002  4c30              LDR      r4,|L8.196|
000004  2101              MOVS     r1,#1
000006  4620              MOV      r0,r4
000008  f7fffffe          BL       I2C_AcknowledgeConfig
;;;296    
;;;297      /*----- Transmission Phase -----*/
;;;298      /* Send I2C1 START condition */
;;;299      I2C_GenerateSTART(I2C1, ENABLE);
00000c  2101              MOVS     r1,#1
00000e  4620              MOV      r0,r4
000010  f7fffffe          BL       I2C_GenerateSTART
;;;300      
;;;301      /* Test on I2C1 EV5 and clear it */
;;;302      while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT))  /* EV5 */
000014  4d2c              LDR      r5,|L8.200|
                  |L8.22|
000016  4620              MOV      r0,r4
000018  4629              MOV      r1,r5
00001a  f7fffffe          BL       I2C_CheckEvent
00001e  2800              CMP      r0,#0
000020  d0f9              BEQ      |L8.22|
;;;303      {
;;;304      }
;;;305      
;;;306      /* Send STLM75 slave address for write */
;;;307      I2C_Send7bitAddress(I2C1, LM75_Addr, I2C_Direction_Transmitter);
000022  2200              MOVS     r2,#0
000024  2190              MOVS     r1,#0x90
000026  4620              MOV      r0,r4
000028  f7fffffe          BL       I2C_Send7bitAddress
;;;308      
;;;309      /* Test on I2C1 EV6 and clear it */
;;;310      while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED)) /* EV6 */
00002c  4e27              LDR      r6,|L8.204|
                  |L8.46|
00002e  4620              MOV      r0,r4
000030  4631              MOV      r1,r6
000032  f7fffffe          BL       I2C_CheckEvent
000036  2800              CMP      r0,#0
000038  d0f9              BEQ      |L8.46|
;;;311      {
;;;312      }
;;;313    
;;;314      /* Send the temperature register data pointer */
;;;315      I2C_SendData(I2C1, LM75_TEMP_Reg);
00003a  2100              MOVS     r1,#0
00003c  4620              MOV      r0,r4
00003e  f7fffffe          BL       I2C_SendData
;;;316      
;;;317      /* Test on I2C1 EV8 and clear it */
;;;318      while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_TRANSMITTED)) /* EV8 */
000042  4e22              LDR      r6,|L8.204|
000044  1cb6              ADDS     r6,r6,#2
                  |L8.70|
000046  4631              MOV      r1,r6
000048  4620              MOV      r0,r4
00004a  f7fffffe          BL       I2C_CheckEvent
00004e  2800              CMP      r0,#0
000050  d0f9              BEQ      |L8.70|
;;;319      {
;;;320      }
;;;321    
;;;322      /*----- Reception Phase -----*/
;;;323      /* Send Re-STRAT condition */
;;;324      I2C_GenerateSTART(I2C1, ENABLE);
000052  2101              MOVS     r1,#1
000054  4620              MOV      r0,r4
000056  f7fffffe          BL       I2C_GenerateSTART
                  |L8.90|
;;;325      
;;;326      /* Test on EV5 and clear it */
;;;327      while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT))  /* EV5 */
00005a  4629              MOV      r1,r5
00005c  4620              MOV      r0,r4
00005e  f7fffffe          BL       I2C_CheckEvent
000062  2800              CMP      r0,#0
000064  d0f9              BEQ      |L8.90|
;;;328      {
;;;329      }
;;;330      
;;;331      /* Send STLM75 slave address for read */
;;;332      I2C_Send7bitAddress(I2C1, LM75_Addr, I2C_Direction_Receiver);
000066  2201              MOVS     r2,#1
000068  2190              MOVS     r1,#0x90
00006a  4620              MOV      r0,r4
00006c  f7fffffe          BL       I2C_Send7bitAddress
;;;333      
;;;334      /* Test on EV6 and clear it */
;;;335      while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_RECEIVER_MODE_SELECTED))  /* EV6 */
000070  4d15              LDR      r5,|L8.200|
;;;336      {
;;;337      }
;;;338    
;;;339      /* Test on EV7 and clear it */
;;;340      while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_RECEIVED))  /* EV7 */
000072  4e15              LDR      r6,|L8.200|
000074  1c6d              ADDS     r5,r5,#1              ;335
000076  363f              ADDS     r6,r6,#0x3f
                  |L8.120|
000078  4629              MOV      r1,r5                 ;335
00007a  4620              MOV      r0,r4                 ;335
00007c  f7fffffe          BL       I2C_CheckEvent
000080  2800              CMP      r0,#0                 ;335
000082  d0f9              BEQ      |L8.120|
                  |L8.132|
000084  4631              MOV      r1,r6
000086  4620              MOV      r0,r4
000088  f7fffffe          BL       I2C_CheckEvent
00008c  2800              CMP      r0,#0
00008e  d0f9              BEQ      |L8.132|
;;;341      {
;;;342      }
;;;343      
;;;344      /* Store I2C1 received data */
;;;345      RegValue = I2C_ReceiveData(I2C1) << 8;
000090  4620              MOV      r0,r4
000092  f7fffffe          BL       I2C_ReceiveData
000096  0205              LSLS     r5,r0,#8
;;;346      
;;;347      /* Disable I2C1 acknowledgement */
;;;348      I2C_AcknowledgeConfig(I2C1, DISABLE);
000098  2100              MOVS     r1,#0
00009a  4620              MOV      r0,r4
00009c  f7fffffe          BL       I2C_AcknowledgeConfig
;;;349      
;;;350      /* Send I2C1 STOP Condition */
;;;351      I2C_GenerateSTOP(I2C1, ENABLE);
0000a0  2101              MOVS     r1,#1
0000a2  4620              MOV      r0,r4
0000a4  f7fffffe          BL       I2C_GenerateSTOP
                  |L8.168|
;;;352      
;;;353      /* Test on EV7 and clear it */
;;;354      while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_RECEIVED))  /* EV7 */
0000a8  4631              MOV      r1,r6
0000aa  4620              MOV      r0,r4
0000ac  f7fffffe          BL       I2C_CheckEvent
0000b0  2800              CMP      r0,#0
0000b2  d0f9              BEQ      |L8.168|
;;;355      {
;;;356      }
;;;357      
;;;358      /* Store I2C1 received data */
;;;359      RegValue |= I2C_ReceiveData(I2C1);
0000b4  4620              MOV      r0,r4
0000b6  f7fffffe          BL       I2C_ReceiveData
0000ba  4328              ORRS     r0,r0,r5
;;;360    
;;;361      /* Return Temperature value */
;;;362      return (RegValue >> 5);
0000bc  f3c0104f          UBFX     r0,r0,#5,#16
;;;363    }
0000c0  bd70              POP      {r4-r6,pc}
;;;364    
                          ENDP

0000c2  0000              DCW      0x0000
                  |L8.196|
                          DCD      0x40005400
                  |L8.200|
                          DCD      0x00030001
                  |L8.204|
                          DCD      0x00070082

                          AREA ||i.Thermometer_Temperature||, CODE, READONLY, ALIGN=2

                  Thermometer_Temperature PROC
;;;601    *******************************************************************************/
;;;602    void Thermometer_Temperature(void)
000000  e92d5ff0          PUSH     {r4-r12,lr}
;;;603    {
;;;604      u32 i = 0, pressedkey = 0;
000004  f05f0500          MOVS.W   r5,#0
                  |L9.8|
;;;605      
;;;606      while(ReadKey() != NOKEY)
000008  f7fffffe          BL       ReadKey
00000c  2800              CMP      r0,#0
00000e  d1fb              BNE      |L9.8|
;;;607      {
;;;608      }
;;;609      RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, DISABLE);
000010  f44f7a80          MOV      r10,#0x100
000014  2100              MOVS     r1,#0
000016  4650              MOV      r0,r10
000018  f7fffffe          BL       RCC_AHBPeriphClockCmd
;;;610      
;;;611      /* Initialize the Temperature Sensor */
;;;612      I2C_LM75_Init();
00001c  f7fffffe          BL       I2C_LM75_Init
;;;613    
;;;614      if(I2C_LM75_Status() == SUCCESS)
000020  f7fffffe          BL       I2C_LM75_Status
000024  2801              CMP      r0,#1
000026  d17e              BNE      |L9.294|
;;;615      {
;;;616        /* Disable the JoyStick Interrupts */
;;;617        IntExtOnOffConfig(DISABLE);
000028  2000              MOVS     r0,#0
00002a  f7fffffe          BL       IntExtOnOffConfig
;;;618    
;;;619        RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE);
00002e  2101              MOVS     r1,#1
000030  4656              MOV      r6,r10
000032  4650              MOV      r0,r10
000034  f7fffffe          BL       RCC_AHBPeriphClockCmd
;;;620        /* Clear the LCD */
;;;621        LCD_Clear(White);
000038  f64f74ff          MOV      r4,#0xffff
00003c  4620              MOV      r0,r4
00003e  f7fffffe          BL       LCD_Clear
;;;622      
;;;623        /* Set the Icon display window */ 
;;;624        LCD_SetDisplayWindow(150, 190, 64, 64);
000042  2340              MOVS     r3,#0x40

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -