📄 stm32f10x_crc.lst
字号:
###############################################################################
# #
# IAR ANSI C/C++ Compiler V6.10.2.52244/W32 for ARM 07/Aug/2011 12:10:33 #
# Copyright 1999-2010 IAR Systems AB. #
# #
# Cpu mode = thumb #
# Endian = little #
# Source file = F:\stm32\我的程序\Micrium\Software\EWARM\BSP\ST\STM32F10 #
# x_StdPeriph_Driver\src\stm32f10x_crc.c #
# Command line = F:\stm32\我的程序\Micrium\Software\EWARM\BSP\ST\STM32F10 #
# x_StdPeriph_Driver\src\stm32f10x_crc.c -D #
# USE_STDPERIPH_DRIVER -D STM32F10X_CL -lCN #
# F:\stm32\我的程序\Micrium\Software\EWARM\OS-II\Flash\Lis #
# t\ -o F:\stm32\我的程序\Micrium\Software\EWARM\OS-II\Fla #
# sh\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 #
# D:\arm\INC\c\DLib_Config_Normal.h -I #
# F:\stm32\我的程序\Micrium\Software\EWARM\OS-II\APP\ -I #
# F:\stm32\我的程序\Micrium\Software\EWARM\OS-II\..\BSP\ #
# -I F:\stm32\我的程序\Micrium\Software\EWARM\OS-II\..\BSP #
# \ST\CMSIS\CM3\CoreSupport\ -I #
# F:\stm32\我的程序\Micrium\Software\EWARM\OS-II\..\BSP\ST #
# \CMSIS\CM3\DeviceSupport\ST\STM32F10x\ -I #
# F:\stm32\我的程序\Micrium\Software\EWARM\OS-II\..\BSP\ST #
# \STM32F10x_StdPeriph_Driver\inc\ -I #
# F:\stm32\我的程序\Micrium\Software\EWARM\OS-II\..\BSP\uC #
# OS-II\ -I F:\stm32\我的程序\Micrium\Software\EWARM\OS-II #
# \..\..\uCOS-II\Ports\ARM-Cortex-M3\Generic\IAR\ -I #
# F:\stm32\我的程序\Micrium\Software\EWARM\OS-II\..\..\uCO #
# S-II\Source\ -I F:\stm32\我的程序\Micrium\Software\EWARM #
# \OS-II\..\..\uC-LIB\ -I F:\stm32\我的程序\Micrium\Softwa #
# re\EWARM\OS-II\..\..\uC-LIB\Ports\ARM-Cortex-M3\IAR\ -I #
# F:\stm32\我的程序\Micrium\Software\EWARM\OS-II\..\..\uC- #
# CPU\ -I F:\stm32\我的程序\Micrium\Software\EWARM\OS-II\. #
# .\..\uC-CPU\ARM-Cortex-M3\IAR\ -On --use_c++_inline #
# List file = F:\stm32\我的程序\Micrium\Software\EWARM\OS-II\Flash\Lis #
# t\stm32f10x_crc.lst #
# Object file = F:\stm32\我的程序\Micrium\Software\EWARM\OS-II\Flash\Obj #
# \stm32f10x_crc.o #
# #
# #
###############################################################################
F:\stm32\我的程序\Micrium\Software\EWARM\BSP\ST\STM32F10x_StdPeriph_Driver\src\stm32f10x_crc.c
1 /**
2 ******************************************************************************
3 * @file stm32f10x_crc.c
4 * @author MCD Application Team
5 * @version V3.4.0
6 * @date 10/15/2010
7 * @brief This file provides all the CRC firmware functions.
8 ******************************************************************************
9 * @copy
10 *
11 * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
12 * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
13 * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY
14 * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
15 * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
16 * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
17 *
18 * <h2><center>© COPYRIGHT 2010 STMicroelectronics</center></h2>
19 */
20
21 /* Includes ------------------------------------------------------------------*/
22 #include "stm32f10x_crc.h"
23
24 /** @addtogroup STM32F10x_StdPeriph_Driver
25 * @{
26 */
27
28 /** @defgroup CRC
29 * @brief CRC driver modules
30 * @{
31 */
32
33 /** @defgroup CRC_Private_TypesDefinitions
34 * @{
35 */
36
37 /**
38 * @}
39 */
40
41 /** @defgroup CRC_Private_Defines
42 * @{
43 */
44
45 /**
46 * @}
47 */
48
49 /** @defgroup CRC_Private_Macros
50 * @{
51 */
52
53 /**
54 * @}
55 */
56
57 /** @defgroup CRC_Private_Variables
58 * @{
59 */
60
61 /**
62 * @}
63 */
64
65 /** @defgroup CRC_Private_FunctionPrototypes
66 * @{
67 */
68
69 /**
70 * @}
71 */
72
73 /** @defgroup CRC_Private_Functions
74 * @{
75 */
76
77 /**
78 * @brief Resets the CRC Data register (DR).
79 * @param None
80 * @retval None
81 */
\ In section .text, align 2, keep-with-next
82 void CRC_ResetDR(void)
83 {
84 /* Reset CRC generator */
85 CRC->CR = CRC_CR_RESET;
\ CRC_ResetDR:
\ 00000000 .... LDR.N R0,??DataTable5 ;; 0x40023008
\ 00000002 0121 MOVS R1,#+1
\ 00000004 0160 STR R1,[R0, #+0]
86 }
\ 00000006 7047 BX LR ;; return
87
88 /**
89 * @brief Computes the 32-bit CRC of a given data word(32-bit).
90 * @param Data: data word(32-bit) to compute its CRC
91 * @retval 32-bit CRC
92 */
\ In section .text, align 2, keep-with-next
93 uint32_t CRC_CalcCRC(uint32_t Data)
94 {
\ CRC_CalcCRC:
\ 00000000 0100 MOVS R1,R0
95 CRC->DR = Data;
\ 00000002 .... LDR.N R0,??DataTable5_1 ;; 0x40023000
\ 00000004 0160 STR R1,[R0, #+0]
96
97 return (CRC->DR);
\ 00000006 .... LDR.N R0,??DataTable5_1 ;; 0x40023000
\ 00000008 0068 LDR R0,[R0, #+0]
\ 0000000A 7047 BX LR ;; return
98 }
99
100 /**
101 * @brief Computes the 32-bit CRC of a given buffer of data word(32-bit).
102 * @param pBuffer: pointer to the buffer containing the data to be computed
103 * @param BufferLength: length of the buffer to be computed
104 * @retval 32-bit CRC
105 */
\ In section .text, align 2, keep-with-next
106 uint32_t CRC_CalcBlockCRC(uint32_t pBuffer[], uint32_t BufferLength)
107 {
\ CRC_CalcBlockCRC:
\ 00000000 10B4 PUSH {R4}
\ 00000002 0200 MOVS R2,R0
108 uint32_t index = 0;
\ 00000004 0023 MOVS R3,#+0
109
110 for(index = 0; index < BufferLength; index++)
\ 00000006 0020 MOVS R0,#+0
\ 00000008 0300 MOVS R3,R0
\ ??CRC_CalcBlockCRC_0:
\ 0000000A 8B42 CMP R3,R1
\ 0000000C 05D2 BCS.N ??CRC_CalcBlockCRC_1
111 {
112 CRC->DR = pBuffer[index];
\ 0000000E 52F82300 LDR R0,[R2, R3, LSL #+2]
\ 00000012 .... LDR.N R4,??DataTable5_1 ;; 0x40023000
\ 00000014 2060 STR R0,[R4, #+0]
113 }
\ 00000016 5B1C ADDS R3,R3,#+1
\ 00000018 F7E7 B.N ??CRC_CalcBlockCRC_0
114 return (CRC->DR);
\ ??CRC_CalcBlockCRC_1:
\ 0000001A .... LDR.N R0,??DataTable5_1 ;; 0x40023000
\ 0000001C 0068 LDR R0,[R0, #+0]
\ 0000001E 10BC POP {R4}
\ 00000020 7047 BX LR ;; return
115 }
116
117 /**
118 * @brief Returns the current CRC value.
119 * @param None
120 * @retval 32-bit CRC
121 */
\ In section .text, align 2, keep-with-next
122 uint32_t CRC_GetCRC(void)
123 {
124 return (CRC->DR);
\ CRC_GetCRC:
\ 00000000 .... LDR.N R0,??DataTable5_1 ;; 0x40023000
\ 00000002 0068 LDR R0,[R0, #+0]
\ 00000004 7047 BX LR ;; return
125 }
126
127 /**
128 * @brief Stores a 8-bit data in the Independent Data(ID) register.
129 * @param IDValue: 8-bit value to be stored in the ID register
130 * @retval None
131 */
\ In section .text, align 2, keep-with-next
132 void CRC_SetIDRegister(uint8_t IDValue)
133 {
134 CRC->IDR = IDValue;
\ CRC_SetIDRegister:
\ 00000000 .... LDR.N R1,??DataTable5_2 ;; 0x40023004
\ 00000002 0870 STRB R0,[R1, #+0]
135 }
\ 00000004 7047 BX LR ;; return
136
137 /**
138 * @brief Returns the 8-bit data stored in the Independent Data(ID) register
139 * @param None
140 * @retval 8-bit value of the ID register
141 */
\ In section .text, align 2, keep-with-next
142 uint8_t CRC_GetIDRegister(void)
143 {
144 return (CRC->IDR);
\ CRC_GetIDRegister:
\ 00000000 .... LDR.N R0,??DataTable5_2 ;; 0x40023004
\ 00000002 0078 LDRB R0,[R0, #+0]
\ 00000004 C0B2 UXTB R0,R0 ;; ZeroExt R0,R0,#+24,#+24
\ 00000006 7047 BX LR ;; return
145 }
\ In section .text, align 4, keep-with-next
\ ??DataTable5:
\ 00000000 08300240 DC32 0x40023008
\ In section .text, align 4, keep-with-next
\ ??DataTable5_1:
\ 00000000 00300240 DC32 0x40023000
\ In section .text, align 4, keep-with-next
\ ??DataTable5_2:
\ 00000000 04300240 DC32 0x40023004
146
147 /**
148 * @}
149 */
150
151 /**
152 * @}
153 */
154
155 /**
156 * @}
157 */
158
159 /******************* (C) COPYRIGHT 2010 STMicroelectronics *****END OF FILE****/
Maximum stack usage in bytes:
Function .cstack
-------- -------
CRC_CalcBlockCRC 4
CRC_CalcCRC 0
CRC_GetCRC 0
CRC_GetIDRegister 0
CRC_ResetDR 0
CRC_SetIDRegister 0
Section sizes:
Function/Label Bytes
-------------- -----
CRC_ResetDR 8
CRC_CalcCRC 12
CRC_CalcBlockCRC 34
CRC_GetCRC 6
CRC_SetIDRegister 6
CRC_GetIDRegister 8
??DataTable5 4
??DataTable5_1 4
??DataTable5_2 4
86 bytes in section .text
86 bytes of CODE memory
Errors: none
Warnings: none
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -