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

📄 stm32f10x_i2c.lst

📁 完成数据的采集
💻 LST
📖 第 1 页 / 共 5 页
字号:
###############################################################################
#                                                                             #
#                                                       30/Jul/2008  14:37:35 #
# IAR ARM ANSI C/C++ Compiler V5.11.0.20622/W32 EVALUATION                    #
# Copyright 1999-2007 IAR Systems. All rights reserved.                       #
#                                                                             #
#    Cpu mode     =  thumb                                                    #
#    Endian       =  little                                                   #
#    Source file  =  E:\library\src\stm32f10x_i2c.c                           #
#    Command line =  E:\library\src\stm32f10x_i2c.c -D EMB_FLASH -lCN         #
#                    E:\ELE\yten\pro\Debug\List\ -lb                          #
#                    E:\ELE\yten\pro\Debug\List\ -o                           #
#                    E:\ELE\yten\pro\Debug\Obj\ --no_cse --no_unroll          #
#                    --no_inline --no_code_motion --no_tbaa --no_clustering   #
#                    --no_scheduling --debug --endian little --cpu Cortex-M3  #
#                    -e --fpu None --dlib_config "C:\Program Files\IAR        #
#                    Systems\Embedded Workbench 5.0                           #
#                    Evaluation\ARM\INC\DLib_Config_Normal.h" -I              #
#                    E:\ELE\yten\pro\ -I E:\ELE\yten\pro\..\LIBRARY\INC\ -I   #
#                    "C:\Program Files\IAR Systems\Embedded Workbench 5.0     #
#                    Evaluation\ARM\INC\" --section .text=.XML -On            #
#    List file    =  E:\ELE\yten\pro\Debug\List\stm32f10x_i2c.lst             #
#    Object file  =  E:\ELE\yten\pro\Debug\Obj\stm32f10x_i2c.o                #
#                                                                             #
#                                                                             #
###############################################################################

E:\library\src\stm32f10x_i2c.c
      1          /******************** (C) COPYRIGHT 2007 STMicroelectronics ********************
      2          * File Name          : stm32f10x_i2c.c
      3          * Author             : MCD Application Team
      4          * Version            : V1.0
      5          * Date               : 10/08/2007
      6          * Description        : This file provides all the I2C firmware functions.
      7          ********************************************************************************
      8          * THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
      9          * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.
     10          * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,
     11          * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE
     12          * CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING
     13          * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
     14          *******************************************************************************/
     15          
     16          /* Includes ------------------------------------------------------------------*/
     17          #include "stm32f10x_i2c.h"
     18          #include "stm32f10x_rcc.h"
     19          
     20          /* Private typedef -----------------------------------------------------------*/
     21          /* Private define ------------------------------------------------------------*/
     22          /* I2C SPE mask */
     23          #define CR1_PE_Set              ((u16)0x0001)
     24          #define CR1_PE_Reset            ((u16)0xFFFE)
     25          
     26          /* I2C DMAEN mask */
     27          #define CR2_DMAEN_Set           ((u16)0x0800)
     28          #define CR2_DMAEN_Reset         ((u16)0xF7FF)
     29          
     30          /* I2C LAST mask */
     31          #define CR2_LAST_Set            ((u16)0x1000)
     32          #define CR2_LAST_Reset          ((u16)0xEFFF)
     33          
     34          /* I2C START mask */
     35          #define CR1_START_Set           ((u16)0x0100)
     36          #define CR1_START_Reset         ((u16)0xFEFF)
     37          
     38          /* I2C STOP mask */
     39          #define CR1_STOP_Set            ((u16)0x0200)
     40          #define CR1_STOP_Reset          ((u16)0xFDFF)
     41          
     42          /* I2C ACK mask */
     43          #define CR1_ACK_Set             ((u16)0x0400)
     44          #define CR1_ACK_Reset           ((u16)0xFBFF)
     45          
     46          /* I2C ENGC mask */
     47          #define CR1_ENGC_Set            ((u16)0x0040)
     48          #define CR1_ENGC_Reset          ((u16)0xFFBF)
     49          
     50          /* I2C ADD0 mask */
     51          #define OAR1_ADD0_Set           ((u16)0x0001)
     52          #define OAR1_ADD0_Reset         ((u16)0xFFFE)
     53          
     54          /* I2C SWRST mask */
     55          #define CR1_SWRST_Set           ((u16)0x8000)
     56          #define CR1_SWRST_Reset         ((u16)0x7FFF)
     57          
     58          /* I2C PEC mask */
     59          #define CR1_PEC_Set             ((u16)0x1000)
     60          #define CR1_PEC_Reset           ((u16)0xEFFF)
     61          
     62          /* I2C ENPEC mask */
     63          #define CR1_ENPEC_Set           ((u16)0x0020)
     64          #define CR1_ENPEC_Reset         ((u16)0xFFDF)
     65          
     66          /* I2C ENARP mask */
     67          #define CR1_ENARP_Set           ((u16)0x0010)
     68          #define CR1_ENARP_Reset         ((u16)0xFFEF)
     69          
     70          /* I2C NOSTRETCH mask */
     71          #define CR1_NOSTRETCH_Set       ((u16)0x0080)
     72          #define CR1_NOSTRETCH_Reset     ((u16)0xFF7F)
     73          
     74          /* I2C ENDUAL mask */
     75          #define OAR2_ENDUAL_Set         ((u16)0x0001)
     76          #define OAR2_ENDUAL_Reset       ((u16)0xFFFE)
     77          
     78          /* I2C F/S mask */
     79          #define CCR_FS_Set              ((u16)0x8000)
     80          
     81          /* I2C ADD2 mask */
     82          #define OAR2_ADD2_Reset         ((u16)0xFF01)
     83          
     84          /* I2C FREQ mask */
     85          #define CR2_FREQ_Reset          ((u16)0xFFC0)
     86          
     87          /* I2C CCR mask */
     88          #define CCR_CCR_Set             ((u16)0x0FFF)
     89          
     90          /* I2C FLAG mask */
     91          #define I2C_FLAG_Mask           ((u32)0x00FFFFFF)
     92          
     93          /* I2C registers Masks */
     94          #define CR1_CLEAR_Mask          ((u16)0xFBF5)
     95          
     96          /* Private macro -------------------------------------------------------------*/
     97          /* Private variables ---------------------------------------------------------*/
     98          /* Private function prototypes -----------------------------------------------*/
     99          /* Private functions ---------------------------------------------------------*/
    100          
    101          /*******************************************************************************
    102          * Function Name  : I2C_DeInit
    103          * Description    : Deinitializes the I2Cx peripheral registers to their default
    104          *                  reset values.
    105          * Input          : - I2Cx: where x can be 1 or 2 to select the I2C peripheral.
    106          * Output         : None
    107          * Return         : None
    108          *******************************************************************************/

   \                                 In section .XML, align 4, keep-with-next
    109          void I2C_DeInit(I2C_TypeDef* I2Cx)
    110          {
   \                     I2C_DeInit:
   \   00000000   10B5               PUSH     {R4,LR}
   \   00000002   0400               MOVS     R4,R0
    111            switch (*(u32*)&I2Cx)
   \   00000004   2000               MOVS     R0,R4
   \   00000006   0F49               LDR.N    R1,??I2C_DeInit_0  ;; 0x40005400
   \   00000008   401A               SUBS     R0,R0,R1
   \   0000000A   04D0               BEQ.N    ??I2C_DeInit_1
   \   0000000C   5FF48061           MOVS     R1,#+1024
   \   00000010   401A               SUBS     R0,R0,R1
   \   00000012   0BD0               BEQ.N    ??I2C_DeInit_2
   \   00000014   14E0               B.N      ??I2C_DeInit_3
    112            {
    113              case I2C1_BASE:
    114                /* Enable I2C1 reset state */
    115                RCC_APB1PeriphResetCmd(RCC_APB1Periph_I2C1, ENABLE);
   \                     ??I2C_DeInit_1:
   \   00000016   0121               MOVS     R1,#+1
   \   00000018   5FF40010           MOVS     R0,#+2097152
   \   0000001C   ........           BL       RCC_APB1PeriphResetCmd
    116                /* Release I2C1 from reset state */
    117                RCC_APB1PeriphResetCmd(RCC_APB1Periph_I2C1, DISABLE);
   \   00000020   0021               MOVS     R1,#+0
   \   00000022   5FF40010           MOVS     R0,#+2097152
   \   00000026   ........           BL       RCC_APB1PeriphResetCmd
   \   0000002A   09E0               B.N      ??I2C_DeInit_3
    118                break;
    119          
    120              case I2C2_BASE:
    121                /* Enable I2C2 reset state */
    122                RCC_APB1PeriphResetCmd(RCC_APB1Periph_I2C2, ENABLE);
   \                     ??I2C_DeInit_2:
   \   0000002C   0121               MOVS     R1,#+1
   \   0000002E   5FF48000           MOVS     R0,#+4194304
   \   00000032   ........           BL       RCC_APB1PeriphResetCmd
    123                /* Release I2C2 from reset state */
    124                RCC_APB1PeriphResetCmd(RCC_APB1Periph_I2C2, DISABLE);
   \   00000036   0021               MOVS     R1,#+0
   \   00000038   5FF48000           MOVS     R0,#+4194304
   \   0000003C   ........           BL       RCC_APB1PeriphResetCmd
    125                break;
    126          
    127              default:
    128                break;
    129            }
    130          }
   \                     ??I2C_DeInit_3:
   \   00000040   10BD               POP      {R4,PC}          ;; return
   \   00000042   00BF               Nop      
   \                     ??I2C_DeInit_0:
   \   00000044   00540040           DC32     0x40005400
    131          
    132          /*******************************************************************************
    133          * Function Name  : I2C_Init
    134          * Description    : Initializes the I2Cx peripheral according to the specified 
    135          *                  parameters in the I2C_InitStruct.
    136          * Input          : - I2Cx: where x can be 1 or 2 to select the I2C peripheral.
    137          *                  - I2C_InitStruct: pointer to a I2C_InitTypeDef structure that
    138          *                    contains the configuration information for the specified
    139          *                    I2C peripheral.
    140          * Output         : None
    141          * Return         : None
    142          ******************************************************************************/

   \                                 In section .XML, align 4, keep-with-next
    143          void I2C_Init(I2C_TypeDef* I2Cx, I2C_InitTypeDef* I2C_InitStruct)
    144          {
   \                     I2C_Init:
   \   00000000   F0B5               PUSH     {R4-R7,LR}
   \   00000002   87B0               SUB      SP,SP,#+28
   \   00000004   0400               MOVS     R4,R0
   \   00000006   0D00               MOVS     R5,R1
    145            u16 tmpreg = 0, freqrange = 0;
   \   00000008   0020               MOVS     R0,#+0
   \   0000000A   0700               MOVS     R7,R0
   \   0000000C   0020               MOVS     R0,#+0
   \   0000000E   ADF80400           STRH     R0,[SP, #+4]
    146            u16 result = 0x04;
   \   00000012   0420               MOVS     R0,#+4
   \   00000014   0600               MOVS     R6,R0
    147            u32 pclk1clock = 12000000;
   \   00000016   3848               LDR.N    R0,??I2C_Init_0  ;; 0xb71b00
   \   00000018   0090               STR      R0,[SP, #+0]
    148            RCC_ClocksTypeDef  RCC_Clocks;
    149          
    150            /* Check the parameters */
    151            assert_param(IS_I2C_MODE(I2C_InitStruct->I2C_Mode));
    152            assert_param(IS_I2C_DUTY_CYCLE(I2C_InitStruct->I2C_DutyCycle));
    153            assert_param(IS_I2C_OWN_ADDRESS1(I2C_InitStruct->I2C_OwnAddress1));
    154            assert_param(IS_I2C_ACK_STATE(I2C_InitStruct->I2C_Ack));
    155            assert_param(IS_I2C_ACKNOWLEDGE_ADDRESS(I2C_InitStruct->I2C_AcknowledgedAddress));
    156            assert_param(IS_I2C_CLOCK_SPEED(I2C_InitStruct->I2C_ClockSpeed));
    157          

⌨️ 快捷键说明

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