|
|
ARM GAS /tmp/ccGAhXKe.s page 1
|
|
|
|
|
|
|
|
|
1 .cpu cortex-m0plus
|
|
|
2 .eabi_attribute 20, 1
|
|
|
3 .eabi_attribute 21, 1
|
|
|
4 .eabi_attribute 23, 3
|
|
|
5 .eabi_attribute 24, 1
|
|
|
6 .eabi_attribute 25, 1
|
|
|
7 .eabi_attribute 26, 1
|
|
|
8 .eabi_attribute 30, 1
|
|
|
9 .eabi_attribute 34, 0
|
|
|
10 .eabi_attribute 18, 4
|
|
|
11 .file "hw_rtc.c"
|
|
|
12 .text
|
|
|
13 .Ltext0:
|
|
|
14 .cfi_sections .debug_frame
|
|
|
15 .section .text.HW_RTC_GetCalendarValue,"ax",%progbits
|
|
|
16 .align 1
|
|
|
17 .syntax unified
|
|
|
18 .code 16
|
|
|
19 .thumb_func
|
|
|
20 .fpu softvfp
|
|
|
22 HW_RTC_GetCalendarValue:
|
|
|
23 .LFB113:
|
|
|
24 .file 1 "./Src/hw_rtc.c"
|
|
|
1:./Src/hw_rtc.c **** /*
|
|
|
2:./Src/hw_rtc.c **** / _____) _ | |
|
|
|
3:./Src/hw_rtc.c **** ( (____ _____ ____ _| |_ _____ ____| |__
|
|
|
4:./Src/hw_rtc.c **** \____ \| ___ | (_ _) ___ |/ ___) _ \
|
|
|
5:./Src/hw_rtc.c **** _____) ) ____| | | || |_| ____( (___| | | |
|
|
|
6:./Src/hw_rtc.c **** (______/|_____)_|_|_| \__)_____)\____)_| |_|
|
|
|
7:./Src/hw_rtc.c **** (C)2013 Semtech
|
|
|
8:./Src/hw_rtc.c ****
|
|
|
9:./Src/hw_rtc.c **** Description: MCU RTC timer
|
|
|
10:./Src/hw_rtc.c ****
|
|
|
11:./Src/hw_rtc.c **** License: Revised BSD License, see LICENSE.TXT file include in the project
|
|
|
12:./Src/hw_rtc.c ****
|
|
|
13:./Src/hw_rtc.c **** Maintainer: Miguel Luis and Gregory Cristian
|
|
|
14:./Src/hw_rtc.c **** */
|
|
|
15:./Src/hw_rtc.c **** /*******************************************************************************
|
|
|
16:./Src/hw_rtc.c **** * @file hw_rtc.c
|
|
|
17:./Src/hw_rtc.c **** * @author MCD Application Team
|
|
|
18:./Src/hw_rtc.c **** * @version V1.1.2
|
|
|
19:./Src/hw_rtc.c **** * @date 08-September-2017
|
|
|
20:./Src/hw_rtc.c **** * @brief driver for RTC
|
|
|
21:./Src/hw_rtc.c **** ******************************************************************************
|
|
|
22:./Src/hw_rtc.c **** * @attention
|
|
|
23:./Src/hw_rtc.c **** *
|
|
|
24:./Src/hw_rtc.c **** * <h2><center>© Copyright (c) 2017 STMicroelectronics International N.V.
|
|
|
25:./Src/hw_rtc.c **** * All rights reserved.</center></h2>
|
|
|
26:./Src/hw_rtc.c **** *
|
|
|
27:./Src/hw_rtc.c **** * Redistribution and use in source and binary forms, with or without
|
|
|
28:./Src/hw_rtc.c **** * modification, are permitted, provided that the following conditions are met:
|
|
|
29:./Src/hw_rtc.c **** *
|
|
|
30:./Src/hw_rtc.c **** * 1. Redistribution of source code must retain the above copyright notice,
|
|
|
31:./Src/hw_rtc.c **** * this list of conditions and the following disclaimer.
|
|
|
32:./Src/hw_rtc.c **** * 2. Redistributions in binary form must reproduce the above copyright notice,
|
|
|
33:./Src/hw_rtc.c **** * this list of conditions and the following disclaimer in the documentation
|
|
|
34:./Src/hw_rtc.c **** * and/or other materials provided with the distribution.
|
|
|
ARM GAS /tmp/ccGAhXKe.s page 2
|
|
|
|
|
|
|
|
|
35:./Src/hw_rtc.c **** * 3. Neither the name of STMicroelectronics nor the names of other
|
|
|
36:./Src/hw_rtc.c **** * contributors to this software may be used to endorse or promote products
|
|
|
37:./Src/hw_rtc.c **** * derived from this software without specific written permission.
|
|
|
38:./Src/hw_rtc.c **** * 4. This software, including modifications and/or derivative works of this
|
|
|
39:./Src/hw_rtc.c **** * software, must execute solely and exclusively on microcontroller or
|
|
|
40:./Src/hw_rtc.c **** * microprocessor devices manufactured by or for STMicroelectronics.
|
|
|
41:./Src/hw_rtc.c **** * 5. Redistribution and use of this software other than as permitted under
|
|
|
42:./Src/hw_rtc.c **** * this license is void and will automatically terminate your rights under
|
|
|
43:./Src/hw_rtc.c **** * this license.
|
|
|
44:./Src/hw_rtc.c **** *
|
|
|
45:./Src/hw_rtc.c **** * THIS SOFTWARE IS PROVIDED BY STMICROELECTRONICS AND CONTRIBUTORS "AS IS"
|
|
|
46:./Src/hw_rtc.c **** * AND ANY EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING, BUT NOT
|
|
|
47:./Src/hw_rtc.c **** * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
|
|
|
48:./Src/hw_rtc.c **** * PARTICULAR PURPOSE AND NON-INFRINGEMENT OF THIRD PARTY INTELLECTUAL PROPERTY
|
|
|
49:./Src/hw_rtc.c **** * RIGHTS ARE DISCLAIMED TO THE FULLEST EXTENT PERMITTED BY LAW. IN NO EVENT
|
|
|
50:./Src/hw_rtc.c **** * SHALL STMICROELECTRONICS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
|
51:./Src/hw_rtc.c **** * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
|
52:./Src/hw_rtc.c **** * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
|
|
|
53:./Src/hw_rtc.c **** * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
|
|
54:./Src/hw_rtc.c **** * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
|
|
55:./Src/hw_rtc.c **** * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
|
|
56:./Src/hw_rtc.c **** * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
57:./Src/hw_rtc.c **** *
|
|
|
58:./Src/hw_rtc.c **** ******************************************************************************
|
|
|
59:./Src/hw_rtc.c **** */
|
|
|
60:./Src/hw_rtc.c ****
|
|
|
61:./Src/hw_rtc.c **** /* Includes ------------------------------------------------------------------*/
|
|
|
62:./Src/hw_rtc.c **** #include "hw.h"
|
|
|
63:./Src/hw_rtc.c **** #include "low_power.h"
|
|
|
64:./Src/hw_rtc.c ****
|
|
|
65:./Src/hw_rtc.c **** /* Private typedef -----------------------------------------------------------*/
|
|
|
66:./Src/hw_rtc.c **** typedef struct
|
|
|
67:./Src/hw_rtc.c **** {
|
|
|
68:./Src/hw_rtc.c **** TimerTime_t Rtc_Time; /* Reference time */
|
|
|
69:./Src/hw_rtc.c ****
|
|
|
70:./Src/hw_rtc.c **** RTC_TimeTypeDef RTC_Calndr_Time; /* Reference time in calendar format */
|
|
|
71:./Src/hw_rtc.c ****
|
|
|
72:./Src/hw_rtc.c **** RTC_DateTypeDef RTC_Calndr_Date; /* Reference date in calendar format */
|
|
|
73:./Src/hw_rtc.c ****
|
|
|
74:./Src/hw_rtc.c **** } RtcTimerContext_t;
|
|
|
75:./Src/hw_rtc.c ****
|
|
|
76:./Src/hw_rtc.c **** /* Private define ------------------------------------------------------------*/
|
|
|
77:./Src/hw_rtc.c ****
|
|
|
78:./Src/hw_rtc.c **** /* MCU Wake Up Time */
|
|
|
79:./Src/hw_rtc.c **** #define MIN_ALARM_DELAY 3 /* in ticks */
|
|
|
80:./Src/hw_rtc.c ****
|
|
|
81:./Src/hw_rtc.c **** /* subsecond number of bits */
|
|
|
82:./Src/hw_rtc.c **** #define N_PREDIV_S 10
|
|
|
83:./Src/hw_rtc.c ****
|
|
|
84:./Src/hw_rtc.c **** /* Synchonuous prediv */
|
|
|
85:./Src/hw_rtc.c **** #define PREDIV_S ((1<<N_PREDIV_S)-1)
|
|
|
86:./Src/hw_rtc.c ****
|
|
|
87:./Src/hw_rtc.c **** /* Asynchonuous prediv */
|
|
|
88:./Src/hw_rtc.c **** #define PREDIV_A (1<<(15-N_PREDIV_S))-1
|
|
|
89:./Src/hw_rtc.c ****
|
|
|
90:./Src/hw_rtc.c **** /* Sub-second mask definition */
|
|
|
91:./Src/hw_rtc.c **** #if (N_PREDIV_S == 10)
|
|
|
ARM GAS /tmp/ccGAhXKe.s page 3
|
|
|
|
|
|
|
|
|
92:./Src/hw_rtc.c **** #define HW_RTC_ALARMSUBSECONDMASK RTC_ALARMSUBSECONDMASK_SS14_10
|
|
|
93:./Src/hw_rtc.c **** #else
|
|
|
94:./Src/hw_rtc.c **** #error "Please define HW_RTC_ALARMSUBSECONDMASK"
|
|
|
95:./Src/hw_rtc.c **** #endif
|
|
|
96:./Src/hw_rtc.c ****
|
|
|
97:./Src/hw_rtc.c **** /* RTC Time base in us */
|
|
|
98:./Src/hw_rtc.c **** #define USEC_NUMBER 1000000
|
|
|
99:./Src/hw_rtc.c **** #define MSEC_NUMBER (USEC_NUMBER/1000)
|
|
|
100:./Src/hw_rtc.c **** #define RTC_ALARM_TIME_BASE (USEC_NUMBER>>N_PREDIV_S)
|
|
|
101:./Src/hw_rtc.c ****
|
|
|
102:./Src/hw_rtc.c **** #define COMMON_FACTOR 3
|
|
|
103:./Src/hw_rtc.c **** #define CONV_NUMER (MSEC_NUMBER>>COMMON_FACTOR)
|
|
|
104:./Src/hw_rtc.c **** #define CONV_DENOM (1<<(N_PREDIV_S-COMMON_FACTOR))
|
|
|
105:./Src/hw_rtc.c ****
|
|
|
106:./Src/hw_rtc.c **** #define DAYS_IN_LEAP_YEAR (uint32_t) 366
|
|
|
107:./Src/hw_rtc.c ****
|
|
|
108:./Src/hw_rtc.c **** #define DAYS_IN_YEAR (uint32_t) 365
|
|
|
109:./Src/hw_rtc.c ****
|
|
|
110:./Src/hw_rtc.c **** #define SECONDS_IN_1DAY (uint32_t) 86400
|
|
|
111:./Src/hw_rtc.c ****
|
|
|
112:./Src/hw_rtc.c **** #define SECONDS_IN_1HOUR (uint32_t) 3600
|
|
|
113:./Src/hw_rtc.c ****
|
|
|
114:./Src/hw_rtc.c **** #define SECONDS_IN_1MINUTE (uint32_t) 60
|
|
|
115:./Src/hw_rtc.c ****
|
|
|
116:./Src/hw_rtc.c **** #define MINUTES_IN_1HOUR (uint32_t) 60
|
|
|
117:./Src/hw_rtc.c ****
|
|
|
118:./Src/hw_rtc.c **** #define HOURS_IN_1DAY (uint32_t) 24
|
|
|
119:./Src/hw_rtc.c ****
|
|
|
120:./Src/hw_rtc.c **** #define DAYS_IN_MONTH_CORRECTION_NORM ((uint32_t) 0x99AAA0 )
|
|
|
121:./Src/hw_rtc.c **** #define DAYS_IN_MONTH_CORRECTION_LEAP ((uint32_t) 0x445550 )
|
|
|
122:./Src/hw_rtc.c ****
|
|
|
123:./Src/hw_rtc.c ****
|
|
|
124:./Src/hw_rtc.c **** /* Calculates ceiling(X/N) */
|
|
|
125:./Src/hw_rtc.c **** #define DIVC(X,N) ( ( (X) + (N) -1 ) / (N) )
|
|
|
126:./Src/hw_rtc.c ****
|
|
|
127:./Src/hw_rtc.c ****
|
|
|
128:./Src/hw_rtc.c **** /* Private macro -------------------------------------------------------------*/
|
|
|
129:./Src/hw_rtc.c **** /* Private variables ---------------------------------------------------------*/
|
|
|
130:./Src/hw_rtc.c **** /*!
|
|
|
131:./Src/hw_rtc.c **** * \brief Indicates if the RTC is already Initalized or not
|
|
|
132:./Src/hw_rtc.c **** */
|
|
|
133:./Src/hw_rtc.c **** static bool HW_RTC_Initalized = false;
|
|
|
134:./Src/hw_rtc.c ****
|
|
|
135:./Src/hw_rtc.c **** /*!
|
|
|
136:./Src/hw_rtc.c **** * \brief compensates MCU wakeup time
|
|
|
137:./Src/hw_rtc.c **** */
|
|
|
138:./Src/hw_rtc.c ****
|
|
|
139:./Src/hw_rtc.c **** static bool McuWakeUpTimeInitialized = false;
|
|
|
140:./Src/hw_rtc.c ****
|
|
|
141:./Src/hw_rtc.c **** /*!
|
|
|
142:./Src/hw_rtc.c **** * \brief compensates MCU wakeup time
|
|
|
143:./Src/hw_rtc.c **** */
|
|
|
144:./Src/hw_rtc.c ****
|
|
|
145:./Src/hw_rtc.c **** static int16_t McuWakeUpTimeCal = 0;
|
|
|
146:./Src/hw_rtc.c ****
|
|
|
147:./Src/hw_rtc.c **** /*!
|
|
|
148:./Src/hw_rtc.c **** * Number of days in each month on a normal year
|
|
|
ARM GAS /tmp/ccGAhXKe.s page 4
|
|
|
|
|
|
|
|
|
149:./Src/hw_rtc.c **** */
|
|
|
150:./Src/hw_rtc.c **** static const uint8_t DaysInMonth[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
|
|
|
151:./Src/hw_rtc.c ****
|
|
|
152:./Src/hw_rtc.c **** /*!
|
|
|
153:./Src/hw_rtc.c **** * Number of days in each month on a leap year
|
|
|
154:./Src/hw_rtc.c **** */
|
|
|
155:./Src/hw_rtc.c **** static const uint8_t DaysInMonthLeapYear[] = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
|
|
|
156:./Src/hw_rtc.c ****
|
|
|
157:./Src/hw_rtc.c **** static RTC_HandleTypeDef RtcHandle={0};
|
|
|
158:./Src/hw_rtc.c ****
|
|
|
159:./Src/hw_rtc.c **** static RTC_AlarmTypeDef RTC_AlarmStructure;
|
|
|
160:./Src/hw_rtc.c ****
|
|
|
161:./Src/hw_rtc.c **** /*!
|
|
|
162:./Src/hw_rtc.c **** * Keep the value of the RTC timer when the RTC alarm is set
|
|
|
163:./Src/hw_rtc.c **** * Set with the HW_RTC_SetTimerContext function
|
|
|
164:./Src/hw_rtc.c **** * Value is kept as a Reference to calculate alarm
|
|
|
165:./Src/hw_rtc.c **** */
|
|
|
166:./Src/hw_rtc.c **** static RtcTimerContext_t RtcTimerContext;
|
|
|
167:./Src/hw_rtc.c ****
|
|
|
168:./Src/hw_rtc.c **** /* Private function prototypes -----------------------------------------------*/
|
|
|
169:./Src/hw_rtc.c ****
|
|
|
170:./Src/hw_rtc.c **** static void HW_RTC_SetConfig( void );
|
|
|
171:./Src/hw_rtc.c ****
|
|
|
172:./Src/hw_rtc.c **** static void HW_RTC_SetAlarmConfig( void );
|
|
|
173:./Src/hw_rtc.c ****
|
|
|
174:./Src/hw_rtc.c **** static void HW_RTC_StartWakeUpAlarm( uint32_t timeoutValue );
|
|
|
175:./Src/hw_rtc.c ****
|
|
|
176:./Src/hw_rtc.c **** static TimerTime_t HW_RTC_GetCalendarValue( RTC_DateTypeDef* RTC_DateStruct, RTC_TimeTypeDef* RTC_
|
|
|
177:./Src/hw_rtc.c ****
|
|
|
178:./Src/hw_rtc.c **** /* Exported functions ---------------------------------------------------------*/
|
|
|
179:./Src/hw_rtc.c ****
|
|
|
180:./Src/hw_rtc.c **** /*!
|
|
|
181:./Src/hw_rtc.c **** * @brief Initializes the RTC timer
|
|
|
182:./Src/hw_rtc.c **** * @note The timer is based on the RTC
|
|
|
183:./Src/hw_rtc.c **** * @param none
|
|
|
184:./Src/hw_rtc.c **** * @retval none
|
|
|
185:./Src/hw_rtc.c **** */
|
|
|
186:./Src/hw_rtc.c **** void HW_RTC_Init( void )
|
|
|
187:./Src/hw_rtc.c **** {
|
|
|
188:./Src/hw_rtc.c **** if( HW_RTC_Initalized == false )
|
|
|
189:./Src/hw_rtc.c **** {
|
|
|
190:./Src/hw_rtc.c **** HW_RTC_SetConfig( );
|
|
|
191:./Src/hw_rtc.c **** HW_RTC_SetAlarmConfig( );
|
|
|
192:./Src/hw_rtc.c **** HW_RTC_SetTimerContext( );
|
|
|
193:./Src/hw_rtc.c **** HW_RTC_Initalized = true;
|
|
|
194:./Src/hw_rtc.c **** }
|
|
|
195:./Src/hw_rtc.c **** }
|
|
|
196:./Src/hw_rtc.c ****
|
|
|
197:./Src/hw_rtc.c **** /*!
|
|
|
198:./Src/hw_rtc.c **** * @brief Configures the RTC timer
|
|
|
199:./Src/hw_rtc.c **** * @note The timer is based on the RTC
|
|
|
200:./Src/hw_rtc.c **** * @param none
|
|
|
201:./Src/hw_rtc.c **** * @retval none
|
|
|
202:./Src/hw_rtc.c **** */
|
|
|
203:./Src/hw_rtc.c **** static void HW_RTC_SetConfig( void )
|
|
|
204:./Src/hw_rtc.c **** {
|
|
|
205:./Src/hw_rtc.c **** RTC_TimeTypeDef RTC_TimeStruct;
|
|
|
ARM GAS /tmp/ccGAhXKe.s page 5
|
|
|
|
|
|
|
|
|
206:./Src/hw_rtc.c **** RTC_DateTypeDef RTC_DateStruct;
|
|
|
207:./Src/hw_rtc.c ****
|
|
|
208:./Src/hw_rtc.c **** RtcHandle.Instance = RTC;
|
|
|
209:./Src/hw_rtc.c ****
|
|
|
210:./Src/hw_rtc.c **** RtcHandle.Init.HourFormat = RTC_HOURFORMAT_24;
|
|
|
211:./Src/hw_rtc.c **** RtcHandle.Init.AsynchPrediv = PREDIV_A; /* RTC_ASYNCH_PREDIV; */
|
|
|
212:./Src/hw_rtc.c **** RtcHandle.Init.SynchPrediv = PREDIV_S; /* RTC_SYNCH_PREDIV; */
|
|
|
213:./Src/hw_rtc.c **** RtcHandle.Init.OutPut = RTC_OUTPUT;
|
|
|
214:./Src/hw_rtc.c **** RtcHandle.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH;
|
|
|
215:./Src/hw_rtc.c **** RtcHandle.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN;
|
|
|
216:./Src/hw_rtc.c ****
|
|
|
217:./Src/hw_rtc.c **** HAL_RTC_Init( &RtcHandle );
|
|
|
218:./Src/hw_rtc.c ****
|
|
|
219:./Src/hw_rtc.c **** /*Monday 1st January 2016*/
|
|
|
220:./Src/hw_rtc.c **** RTC_DateStruct.Year = 0;
|
|
|
221:./Src/hw_rtc.c **** RTC_DateStruct.Month = RTC_MONTH_JANUARY;
|
|
|
222:./Src/hw_rtc.c **** RTC_DateStruct.Date = 1;
|
|
|
223:./Src/hw_rtc.c **** RTC_DateStruct.WeekDay = RTC_WEEKDAY_MONDAY;
|
|
|
224:./Src/hw_rtc.c **** HAL_RTC_SetDate(&RtcHandle , &RTC_DateStruct, RTC_FORMAT_BIN);
|
|
|
225:./Src/hw_rtc.c ****
|
|
|
226:./Src/hw_rtc.c **** /*at 0:0:0*/
|
|
|
227:./Src/hw_rtc.c **** RTC_TimeStruct.Hours = 0;
|
|
|
228:./Src/hw_rtc.c **** RTC_TimeStruct.Minutes = 0;
|
|
|
229:./Src/hw_rtc.c ****
|
|
|
230:./Src/hw_rtc.c **** RTC_TimeStruct.Seconds = 0;
|
|
|
231:./Src/hw_rtc.c **** RTC_TimeStruct.TimeFormat = 0;
|
|
|
232:./Src/hw_rtc.c **** RTC_TimeStruct.SubSeconds = 0;
|
|
|
233:./Src/hw_rtc.c **** RTC_TimeStruct.StoreOperation = RTC_DAYLIGHTSAVING_NONE;
|
|
|
234:./Src/hw_rtc.c **** RTC_TimeStruct.DayLightSaving = RTC_STOREOPERATION_RESET;
|
|
|
235:./Src/hw_rtc.c ****
|
|
|
236:./Src/hw_rtc.c **** HAL_RTC_SetTime(&RtcHandle , &RTC_TimeStruct, RTC_FORMAT_BIN);
|
|
|
237:./Src/hw_rtc.c ****
|
|
|
238:./Src/hw_rtc.c **** /*Enable Direct Read of the calendar registers (not through Shadow) */
|
|
|
239:./Src/hw_rtc.c **** HAL_RTCEx_EnableBypassShadow(&RtcHandle);
|
|
|
240:./Src/hw_rtc.c **** }
|
|
|
241:./Src/hw_rtc.c ****
|
|
|
242:./Src/hw_rtc.c **** /*!
|
|
|
243:./Src/hw_rtc.c **** * @brief calculates the wake up time between wake up and mcu start
|
|
|
244:./Src/hw_rtc.c **** * @note resulotion in RTC_ALARM_TIME_BASE in timer ticks
|
|
|
245:./Src/hw_rtc.c **** * @param none
|
|
|
246:./Src/hw_rtc.c **** * @retval none
|
|
|
247:./Src/hw_rtc.c **** */
|
|
|
248:./Src/hw_rtc.c **** void HW_RTC_setMcuWakeUpTime( void )
|
|
|
249:./Src/hw_rtc.c **** {
|
|
|
250:./Src/hw_rtc.c **** RTC_TimeTypeDef RTC_TimeStruct;
|
|
|
251:./Src/hw_rtc.c **** RTC_DateTypeDef RTC_DateStruct;
|
|
|
252:./Src/hw_rtc.c ****
|
|
|
253:./Src/hw_rtc.c **** TimerTime_t now, hit;
|
|
|
254:./Src/hw_rtc.c **** int16_t McuWakeUpTime;
|
|
|
255:./Src/hw_rtc.c ****
|
|
|
256:./Src/hw_rtc.c **** if ((McuWakeUpTimeInitialized == false) &&
|
|
|
257:./Src/hw_rtc.c **** ( HAL_NVIC_GetPendingIRQ( RTC_Alarm_IRQn ) == 1))
|
|
|
258:./Src/hw_rtc.c **** { /* warning: works ok if now is below 30 days
|
|
|
259:./Src/hw_rtc.c **** it is ok since it's done once at first alarm wake-up*/
|
|
|
260:./Src/hw_rtc.c **** McuWakeUpTimeInitialized = true;
|
|
|
261:./Src/hw_rtc.c **** now = HW_RTC_GetCalendarValue( &RTC_DateStruct, &RTC_TimeStruct );
|
|
|
262:./Src/hw_rtc.c ****
|
|
|
ARM GAS /tmp/ccGAhXKe.s page 6
|
|
|
|
|
|
|
|
|
263:./Src/hw_rtc.c **** DBG_GPIO_SET(GPIOB, GPIO_PIN_13);
|
|
|
264:./Src/hw_rtc.c **** DBG_GPIO_RST(GPIOB, GPIO_PIN_13);
|
|
|
265:./Src/hw_rtc.c **** HAL_RTC_GetAlarm(&RtcHandle, &RTC_AlarmStructure, RTC_ALARM_A, RTC_FORMAT_BIN );
|
|
|
266:./Src/hw_rtc.c **** hit = RTC_AlarmStructure.AlarmTime.Seconds+
|
|
|
267:./Src/hw_rtc.c **** 60*(RTC_AlarmStructure.AlarmTime.Minutes+
|
|
|
268:./Src/hw_rtc.c **** 60*(RTC_AlarmStructure.AlarmTime.Hours+
|
|
|
269:./Src/hw_rtc.c **** 24*(RTC_AlarmStructure.AlarmDateWeekDay)));
|
|
|
270:./Src/hw_rtc.c **** hit = ( hit << N_PREDIV_S ) + (PREDIV_S - RTC_AlarmStructure.AlarmTime.SubSeconds);
|
|
|
271:./Src/hw_rtc.c ****
|
|
|
272:./Src/hw_rtc.c **** McuWakeUpTime = (int16_t) ((now-hit));
|
|
|
273:./Src/hw_rtc.c **** McuWakeUpTimeCal += McuWakeUpTime;
|
|
|
274:./Src/hw_rtc.c **** DBG_PRINTF("Cal=%d, %d\n\r",McuWakeUpTimeCal, McuWakeUpTime);
|
|
|
275:./Src/hw_rtc.c **** }
|
|
|
276:./Src/hw_rtc.c **** }
|
|
|
277:./Src/hw_rtc.c ****
|
|
|
278:./Src/hw_rtc.c **** int16_t HW_RTC_getMcuWakeUpTime( void )
|
|
|
279:./Src/hw_rtc.c **** {
|
|
|
280:./Src/hw_rtc.c **** return McuWakeUpTimeCal;
|
|
|
281:./Src/hw_rtc.c **** }
|
|
|
282:./Src/hw_rtc.c ****
|
|
|
283:./Src/hw_rtc.c **** /*!
|
|
|
284:./Src/hw_rtc.c **** * @brief returns the wake up time in ticks
|
|
|
285:./Src/hw_rtc.c **** * @param none
|
|
|
286:./Src/hw_rtc.c **** * @retval wake up time in ticks
|
|
|
287:./Src/hw_rtc.c **** */
|
|
|
288:./Src/hw_rtc.c **** uint32_t HW_RTC_GetMinimumTimeout( void )
|
|
|
289:./Src/hw_rtc.c **** {
|
|
|
290:./Src/hw_rtc.c **** return( MIN_ALARM_DELAY );
|
|
|
291:./Src/hw_rtc.c **** }
|
|
|
292:./Src/hw_rtc.c ****
|
|
|
293:./Src/hw_rtc.c **** /*!
|
|
|
294:./Src/hw_rtc.c **** * @brief converts time in ms to time in ticks
|
|
|
295:./Src/hw_rtc.c **** * @param [IN] time in milliseconds
|
|
|
296:./Src/hw_rtc.c **** * @retval returns time in timer ticks
|
|
|
297:./Src/hw_rtc.c **** */
|
|
|
298:./Src/hw_rtc.c **** uint32_t HW_RTC_ms2Tick( TimerTime_t timeMicroSec )
|
|
|
299:./Src/hw_rtc.c **** {
|
|
|
300:./Src/hw_rtc.c **** /*return( ( timeMicroSec / RTC_ALARM_TIME_BASE ) ); */
|
|
|
301:./Src/hw_rtc.c **** return ( uint32_t) ( ( ((uint64_t)timeMicroSec) * CONV_DENOM ) / CONV_NUMER );
|
|
|
302:./Src/hw_rtc.c **** }
|
|
|
303:./Src/hw_rtc.c ****
|
|
|
304:./Src/hw_rtc.c **** /*!
|
|
|
305:./Src/hw_rtc.c **** * @brief converts time in ticks to time in ms
|
|
|
306:./Src/hw_rtc.c **** * @param [IN] time in timer ticks
|
|
|
307:./Src/hw_rtc.c **** * @retval returns time in milliseconds
|
|
|
308:./Src/hw_rtc.c **** */
|
|
|
309:./Src/hw_rtc.c **** TimerTime_t HW_RTC_Tick2ms( uint32_t tick )
|
|
|
310:./Src/hw_rtc.c **** {
|
|
|
311:./Src/hw_rtc.c **** /*return( ( timeMicroSec * RTC_ALARM_TIME_BASE ) ); */
|
|
|
312:./Src/hw_rtc.c **** return ( ( (uint64_t)( tick )* CONV_NUMER ) / CONV_DENOM );
|
|
|
313:./Src/hw_rtc.c **** }
|
|
|
314:./Src/hw_rtc.c ****
|
|
|
315:./Src/hw_rtc.c **** /*!
|
|
|
316:./Src/hw_rtc.c **** * @brief Set the alarm
|
|
|
317:./Src/hw_rtc.c **** * @note The alarm is set at now (read in this funtion) + timeout
|
|
|
318:./Src/hw_rtc.c **** * @param timeout Duration of the Timer ticks
|
|
|
319:./Src/hw_rtc.c **** */
|
|
|
ARM GAS /tmp/ccGAhXKe.s page 7
|
|
|
|
|
|
|
|
|
320:./Src/hw_rtc.c **** void HW_RTC_SetAlarm( uint32_t timeout )
|
|
|
321:./Src/hw_rtc.c **** {
|
|
|
322:./Src/hw_rtc.c **** /* we don't go in Low Power mode for timeout below MIN_ALARM_DELAY */
|
|
|
323:./Src/hw_rtc.c **** if ( (MIN_ALARM_DELAY + McuWakeUpTimeCal ) < ((timeout - HW_RTC_GetTimerElapsedTime( ) )) )
|
|
|
324:./Src/hw_rtc.c **** {
|
|
|
325:./Src/hw_rtc.c **** LowPower_Enable( e_LOW_POWER_RTC );
|
|
|
326:./Src/hw_rtc.c **** }
|
|
|
327:./Src/hw_rtc.c **** else
|
|
|
328:./Src/hw_rtc.c **** {
|
|
|
329:./Src/hw_rtc.c **** LowPower_Disable( e_LOW_POWER_RTC );
|
|
|
330:./Src/hw_rtc.c **** }
|
|
|
331:./Src/hw_rtc.c ****
|
|
|
332:./Src/hw_rtc.c **** if( LowPower_GetState() == 0 )
|
|
|
333:./Src/hw_rtc.c **** {
|
|
|
334:./Src/hw_rtc.c **** LowPower_Enable( e_LOW_POWER_RTC );
|
|
|
335:./Src/hw_rtc.c **** timeout = timeout - McuWakeUpTimeCal;
|
|
|
336:./Src/hw_rtc.c **** }
|
|
|
337:./Src/hw_rtc.c ****
|
|
|
338:./Src/hw_rtc.c **** HW_RTC_StartWakeUpAlarm( timeout );
|
|
|
339:./Src/hw_rtc.c **** }
|
|
|
340:./Src/hw_rtc.c ****
|
|
|
341:./Src/hw_rtc.c **** /*!
|
|
|
342:./Src/hw_rtc.c **** * @brief Get the RTC timer elapsed time since the last Alarm was set
|
|
|
343:./Src/hw_rtc.c **** * @param none
|
|
|
344:./Src/hw_rtc.c **** * @retval RTC Elapsed time in ticks
|
|
|
345:./Src/hw_rtc.c **** */
|
|
|
346:./Src/hw_rtc.c **** uint32_t HW_RTC_GetTimerElapsedTime( void )
|
|
|
347:./Src/hw_rtc.c **** {
|
|
|
348:./Src/hw_rtc.c **** RTC_TimeTypeDef RTC_TimeStruct;
|
|
|
349:./Src/hw_rtc.c **** RTC_DateTypeDef RTC_DateStruct;
|
|
|
350:./Src/hw_rtc.c ****
|
|
|
351:./Src/hw_rtc.c **** TimerTime_t CalendarValue = HW_RTC_GetCalendarValue(&RTC_DateStruct, &RTC_TimeStruct );
|
|
|
352:./Src/hw_rtc.c ****
|
|
|
353:./Src/hw_rtc.c **** return( ( uint32_t )( CalendarValue - RtcTimerContext.Rtc_Time ));
|
|
|
354:./Src/hw_rtc.c **** }
|
|
|
355:./Src/hw_rtc.c ****
|
|
|
356:./Src/hw_rtc.c **** /*!
|
|
|
357:./Src/hw_rtc.c **** * @brief Get the RTC timer value
|
|
|
358:./Src/hw_rtc.c **** * @param none
|
|
|
359:./Src/hw_rtc.c **** * @retval RTC Timer value in ticks
|
|
|
360:./Src/hw_rtc.c **** */
|
|
|
361:./Src/hw_rtc.c **** uint32_t HW_RTC_GetTimerValue( void )
|
|
|
362:./Src/hw_rtc.c **** {
|
|
|
363:./Src/hw_rtc.c **** RTC_TimeTypeDef RTC_TimeStruct;
|
|
|
364:./Src/hw_rtc.c **** RTC_DateTypeDef RTC_DateStruct;
|
|
|
365:./Src/hw_rtc.c ****
|
|
|
366:./Src/hw_rtc.c **** uint32_t CalendarValue = (uint32_t) HW_RTC_GetCalendarValue(&RTC_DateStruct, &RTC_TimeStruct );
|
|
|
367:./Src/hw_rtc.c ****
|
|
|
368:./Src/hw_rtc.c **** return( CalendarValue );
|
|
|
369:./Src/hw_rtc.c **** }
|
|
|
370:./Src/hw_rtc.c ****
|
|
|
371:./Src/hw_rtc.c **** /*!
|
|
|
372:./Src/hw_rtc.c **** * @brief Stop the Alarm
|
|
|
373:./Src/hw_rtc.c **** * @param none
|
|
|
374:./Src/hw_rtc.c **** * @retval none
|
|
|
375:./Src/hw_rtc.c **** */
|
|
|
376:./Src/hw_rtc.c **** void HW_RTC_StopAlarm( void )
|
|
|
ARM GAS /tmp/ccGAhXKe.s page 8
|
|
|
|
|
|
|
|
|
377:./Src/hw_rtc.c **** {
|
|
|
378:./Src/hw_rtc.c ****
|
|
|
379:./Src/hw_rtc.c **** /* Clear RTC Alarm Flag */
|
|
|
380:./Src/hw_rtc.c **** __HAL_RTC_ALARM_CLEAR_FLAG( &RtcHandle, RTC_FLAG_ALRAF);
|
|
|
381:./Src/hw_rtc.c ****
|
|
|
382:./Src/hw_rtc.c **** /* Disable the Alarm A interrupt */
|
|
|
383:./Src/hw_rtc.c ****
|
|
|
384:./Src/hw_rtc.c **** HAL_RTC_DeactivateAlarm(&RtcHandle, RTC_ALARM_A );
|
|
|
385:./Src/hw_rtc.c **** }
|
|
|
386:./Src/hw_rtc.c ****
|
|
|
387:./Src/hw_rtc.c **** /*!
|
|
|
388:./Src/hw_rtc.c **** * @brief RTC IRQ Handler on the RTC Alarm
|
|
|
389:./Src/hw_rtc.c **** * @param none
|
|
|
390:./Src/hw_rtc.c **** * @retval none
|
|
|
391:./Src/hw_rtc.c **** */
|
|
|
392:./Src/hw_rtc.c **** void HW_RTC_IrqHandler ( void )
|
|
|
393:./Src/hw_rtc.c **** {
|
|
|
394:./Src/hw_rtc.c **** RTC_HandleTypeDef* hrtc=&RtcHandle;
|
|
|
395:./Src/hw_rtc.c **** /* enable low power at irq*/
|
|
|
396:./Src/hw_rtc.c **** LowPower_Enable( e_LOW_POWER_RTC );
|
|
|
397:./Src/hw_rtc.c ****
|
|
|
398:./Src/hw_rtc.c **** /* Get the AlarmA interrupt source enable status */
|
|
|
399:./Src/hw_rtc.c **** if(__HAL_RTC_ALARM_GET_IT_SOURCE(hrtc, RTC_IT_ALRA) != RESET)
|
|
|
400:./Src/hw_rtc.c **** {
|
|
|
401:./Src/hw_rtc.c **** /* Get the pending status of the AlarmA Interrupt */
|
|
|
402:./Src/hw_rtc.c **** if(__HAL_RTC_ALARM_GET_FLAG(hrtc, RTC_FLAG_ALRAF) != RESET)
|
|
|
403:./Src/hw_rtc.c **** {
|
|
|
404:./Src/hw_rtc.c **** /* Clear the AlarmA interrupt pending bit */
|
|
|
405:./Src/hw_rtc.c **** __HAL_RTC_ALARM_CLEAR_FLAG(hrtc, RTC_FLAG_ALRAF);
|
|
|
406:./Src/hw_rtc.c **** /* Clear the EXTI's line Flag for RTC Alarm */
|
|
|
407:./Src/hw_rtc.c **** __HAL_RTC_ALARM_EXTI_CLEAR_FLAG();
|
|
|
408:./Src/hw_rtc.c **** /* AlarmA callback */
|
|
|
409:./Src/hw_rtc.c **** HAL_RTC_AlarmAEventCallback(hrtc);
|
|
|
410:./Src/hw_rtc.c **** }
|
|
|
411:./Src/hw_rtc.c **** }
|
|
|
412:./Src/hw_rtc.c **** }
|
|
|
413:./Src/hw_rtc.c ****
|
|
|
414:./Src/hw_rtc.c ****
|
|
|
415:./Src/hw_rtc.c **** /*!
|
|
|
416:./Src/hw_rtc.c **** * @brief a delay of delay ms by polling RTC
|
|
|
417:./Src/hw_rtc.c **** * @param delay in ms
|
|
|
418:./Src/hw_rtc.c **** * @retval none
|
|
|
419:./Src/hw_rtc.c **** */
|
|
|
420:./Src/hw_rtc.c **** void HW_RTC_DelayMs( uint32_t delay )
|
|
|
421:./Src/hw_rtc.c **** {
|
|
|
422:./Src/hw_rtc.c **** TimerTime_t delayValue = 0;
|
|
|
423:./Src/hw_rtc.c **** TimerTime_t timeout = 0;
|
|
|
424:./Src/hw_rtc.c ****
|
|
|
425:./Src/hw_rtc.c **** delayValue = HW_RTC_ms2Tick( delay );
|
|
|
426:./Src/hw_rtc.c ****
|
|
|
427:./Src/hw_rtc.c **** /* Wait delay ms */
|
|
|
428:./Src/hw_rtc.c **** timeout = HW_RTC_GetTimerValue( );
|
|
|
429:./Src/hw_rtc.c **** while( ( ( HW_RTC_GetTimerValue( ) - timeout ) ) < delayValue )
|
|
|
430:./Src/hw_rtc.c **** {
|
|
|
431:./Src/hw_rtc.c **** __NOP( );
|
|
|
432:./Src/hw_rtc.c **** }
|
|
|
433:./Src/hw_rtc.c **** }
|
|
|
ARM GAS /tmp/ccGAhXKe.s page 9
|
|
|
|
|
|
|
|
|
434:./Src/hw_rtc.c ****
|
|
|
435:./Src/hw_rtc.c **** /*!
|
|
|
436:./Src/hw_rtc.c **** * @brief set Time Reference set also the RTC_DateStruct and RTC_TimeStruct
|
|
|
437:./Src/hw_rtc.c **** * @param none
|
|
|
438:./Src/hw_rtc.c **** * @retval Timer Value
|
|
|
439:./Src/hw_rtc.c **** */
|
|
|
440:./Src/hw_rtc.c **** uint32_t HW_RTC_SetTimerContext( void )
|
|
|
441:./Src/hw_rtc.c **** {
|
|
|
442:./Src/hw_rtc.c **** RtcTimerContext.Rtc_Time = HW_RTC_GetCalendarValue( &RtcTimerContext.RTC_Calndr_Date, &RtcTimerCo
|
|
|
443:./Src/hw_rtc.c **** return ( uint32_t ) RtcTimerContext.Rtc_Time;
|
|
|
444:./Src/hw_rtc.c **** }
|
|
|
445:./Src/hw_rtc.c ****
|
|
|
446:./Src/hw_rtc.c **** /*!
|
|
|
447:./Src/hw_rtc.c **** * @brief Get the RTC timer Reference
|
|
|
448:./Src/hw_rtc.c **** * @param none
|
|
|
449:./Src/hw_rtc.c **** * @retval Timer Value in Ticks
|
|
|
450:./Src/hw_rtc.c **** */
|
|
|
451:./Src/hw_rtc.c **** uint32_t HW_RTC_GetTimerContext( void )
|
|
|
452:./Src/hw_rtc.c **** {
|
|
|
453:./Src/hw_rtc.c **** return (uint32_t) RtcTimerContext.Rtc_Time;
|
|
|
454:./Src/hw_rtc.c **** }
|
|
|
455:./Src/hw_rtc.c **** /* Private functions ---------------------------------------------------------*/
|
|
|
456:./Src/hw_rtc.c ****
|
|
|
457:./Src/hw_rtc.c **** /*!
|
|
|
458:./Src/hw_rtc.c **** * @brief configure alarm at init
|
|
|
459:./Src/hw_rtc.c **** * @param none
|
|
|
460:./Src/hw_rtc.c **** * @retval none
|
|
|
461:./Src/hw_rtc.c **** */
|
|
|
462:./Src/hw_rtc.c **** static void HW_RTC_SetAlarmConfig( void )
|
|
|
463:./Src/hw_rtc.c **** {
|
|
|
464:./Src/hw_rtc.c **** HAL_RTC_DeactivateAlarm(&RtcHandle, RTC_ALARM_A);
|
|
|
465:./Src/hw_rtc.c **** }
|
|
|
466:./Src/hw_rtc.c ****
|
|
|
467:./Src/hw_rtc.c **** /*!
|
|
|
468:./Src/hw_rtc.c **** * @brief start wake up alarm
|
|
|
469:./Src/hw_rtc.c **** * @note alarm in RtcTimerContext.Rtc_Time + timeoutValue
|
|
|
470:./Src/hw_rtc.c **** * @param timeoutValue in ticks
|
|
|
471:./Src/hw_rtc.c **** * @retval none
|
|
|
472:./Src/hw_rtc.c **** */
|
|
|
473:./Src/hw_rtc.c **** static void HW_RTC_StartWakeUpAlarm( uint32_t timeoutValue )
|
|
|
474:./Src/hw_rtc.c **** {
|
|
|
475:./Src/hw_rtc.c **** uint16_t rtcAlarmSubSeconds = 0;
|
|
|
476:./Src/hw_rtc.c **** uint16_t rtcAlarmSeconds = 0;
|
|
|
477:./Src/hw_rtc.c **** uint16_t rtcAlarmMinutes = 0;
|
|
|
478:./Src/hw_rtc.c **** uint16_t rtcAlarmHours = 0;
|
|
|
479:./Src/hw_rtc.c **** uint16_t rtcAlarmDays = 0;
|
|
|
480:./Src/hw_rtc.c **** RTC_TimeTypeDef RTC_TimeStruct = RtcTimerContext.RTC_Calndr_Time;
|
|
|
481:./Src/hw_rtc.c **** RTC_DateTypeDef RTC_DateStruct = RtcTimerContext.RTC_Calndr_Date;
|
|
|
482:./Src/hw_rtc.c ****
|
|
|
483:./Src/hw_rtc.c **** HW_RTC_StopAlarm( );
|
|
|
484:./Src/hw_rtc.c **** DBG_GPIO_SET(GPIOB, GPIO_PIN_13);
|
|
|
485:./Src/hw_rtc.c ****
|
|
|
486:./Src/hw_rtc.c **** /*reverse counter */
|
|
|
487:./Src/hw_rtc.c **** rtcAlarmSubSeconds = PREDIV_S - RTC_TimeStruct.SubSeconds;
|
|
|
488:./Src/hw_rtc.c **** rtcAlarmSubSeconds += ( timeoutValue & PREDIV_S);
|
|
|
489:./Src/hw_rtc.c **** /* convert timeout to seconds */
|
|
|
490:./Src/hw_rtc.c **** timeoutValue >>= N_PREDIV_S; /* convert timeout in seconds */
|
|
|
ARM GAS /tmp/ccGAhXKe.s page 10
|
|
|
|
|
|
|
|
|
491:./Src/hw_rtc.c ****
|
|
|
492:./Src/hw_rtc.c **** /*convert microsecs to RTC format and add to 'Now' */
|
|
|
493:./Src/hw_rtc.c **** rtcAlarmDays = RTC_DateStruct.Date;
|
|
|
494:./Src/hw_rtc.c **** while (timeoutValue >= SECONDS_IN_1DAY)
|
|
|
495:./Src/hw_rtc.c **** {
|
|
|
496:./Src/hw_rtc.c **** timeoutValue -= SECONDS_IN_1DAY;
|
|
|
497:./Src/hw_rtc.c **** rtcAlarmDays++;
|
|
|
498:./Src/hw_rtc.c **** }
|
|
|
499:./Src/hw_rtc.c ****
|
|
|
500:./Src/hw_rtc.c **** /* calc hours */
|
|
|
501:./Src/hw_rtc.c **** rtcAlarmHours = RTC_TimeStruct.Hours;
|
|
|
502:./Src/hw_rtc.c **** while (timeoutValue >= SECONDS_IN_1HOUR)
|
|
|
503:./Src/hw_rtc.c **** {
|
|
|
504:./Src/hw_rtc.c **** timeoutValue -= SECONDS_IN_1HOUR;
|
|
|
505:./Src/hw_rtc.c **** rtcAlarmHours++;
|
|
|
506:./Src/hw_rtc.c **** }
|
|
|
507:./Src/hw_rtc.c ****
|
|
|
508:./Src/hw_rtc.c **** /* calc minutes */
|
|
|
509:./Src/hw_rtc.c **** rtcAlarmMinutes = RTC_TimeStruct.Minutes;
|
|
|
510:./Src/hw_rtc.c **** while (timeoutValue >= SECONDS_IN_1MINUTE)
|
|
|
511:./Src/hw_rtc.c **** {
|
|
|
512:./Src/hw_rtc.c **** timeoutValue -= SECONDS_IN_1MINUTE;
|
|
|
513:./Src/hw_rtc.c **** rtcAlarmMinutes++;
|
|
|
514:./Src/hw_rtc.c **** }
|
|
|
515:./Src/hw_rtc.c ****
|
|
|
516:./Src/hw_rtc.c **** /* calc seconds */
|
|
|
517:./Src/hw_rtc.c **** rtcAlarmSeconds = RTC_TimeStruct.Seconds + timeoutValue;
|
|
|
518:./Src/hw_rtc.c ****
|
|
|
519:./Src/hw_rtc.c **** /***** correct for modulo********/
|
|
|
520:./Src/hw_rtc.c **** while (rtcAlarmSubSeconds >= (PREDIV_S+1))
|
|
|
521:./Src/hw_rtc.c **** {
|
|
|
522:./Src/hw_rtc.c **** rtcAlarmSubSeconds -= (PREDIV_S+1);
|
|
|
523:./Src/hw_rtc.c **** rtcAlarmSeconds++;
|
|
|
524:./Src/hw_rtc.c **** }
|
|
|
525:./Src/hw_rtc.c ****
|
|
|
526:./Src/hw_rtc.c **** while (rtcAlarmSeconds >= SECONDS_IN_1MINUTE)
|
|
|
527:./Src/hw_rtc.c **** {
|
|
|
528:./Src/hw_rtc.c **** rtcAlarmSeconds -= SECONDS_IN_1MINUTE;
|
|
|
529:./Src/hw_rtc.c **** rtcAlarmMinutes++;
|
|
|
530:./Src/hw_rtc.c **** }
|
|
|
531:./Src/hw_rtc.c ****
|
|
|
532:./Src/hw_rtc.c **** while (rtcAlarmMinutes >= MINUTES_IN_1HOUR)
|
|
|
533:./Src/hw_rtc.c **** {
|
|
|
534:./Src/hw_rtc.c **** rtcAlarmMinutes -= MINUTES_IN_1HOUR;
|
|
|
535:./Src/hw_rtc.c **** rtcAlarmHours++;
|
|
|
536:./Src/hw_rtc.c **** }
|
|
|
537:./Src/hw_rtc.c ****
|
|
|
538:./Src/hw_rtc.c **** while (rtcAlarmHours >= HOURS_IN_1DAY)
|
|
|
539:./Src/hw_rtc.c **** {
|
|
|
540:./Src/hw_rtc.c **** rtcAlarmHours -= HOURS_IN_1DAY;
|
|
|
541:./Src/hw_rtc.c **** rtcAlarmDays++;
|
|
|
542:./Src/hw_rtc.c **** }
|
|
|
543:./Src/hw_rtc.c ****
|
|
|
544:./Src/hw_rtc.c **** if( RTC_DateStruct.Year % 4 == 0 )
|
|
|
545:./Src/hw_rtc.c **** {
|
|
|
546:./Src/hw_rtc.c **** if( rtcAlarmDays > DaysInMonthLeapYear[ RTC_DateStruct.Month - 1 ] )
|
|
|
547:./Src/hw_rtc.c **** {
|
|
|
ARM GAS /tmp/ccGAhXKe.s page 11
|
|
|
|
|
|
|
|
|
548:./Src/hw_rtc.c **** rtcAlarmDays = rtcAlarmDays % DaysInMonthLeapYear[ RTC_DateStruct.Month - 1 ];
|
|
|
549:./Src/hw_rtc.c **** }
|
|
|
550:./Src/hw_rtc.c **** }
|
|
|
551:./Src/hw_rtc.c **** else
|
|
|
552:./Src/hw_rtc.c **** {
|
|
|
553:./Src/hw_rtc.c **** if( rtcAlarmDays > DaysInMonth[ RTC_DateStruct.Month - 1 ] )
|
|
|
554:./Src/hw_rtc.c **** {
|
|
|
555:./Src/hw_rtc.c **** rtcAlarmDays = rtcAlarmDays % DaysInMonth[ RTC_DateStruct.Month - 1 ];
|
|
|
556:./Src/hw_rtc.c **** }
|
|
|
557:./Src/hw_rtc.c **** }
|
|
|
558:./Src/hw_rtc.c ****
|
|
|
559:./Src/hw_rtc.c **** /* Set RTC_AlarmStructure with calculated values*/
|
|
|
560:./Src/hw_rtc.c **** RTC_AlarmStructure.AlarmTime.SubSeconds = PREDIV_S-rtcAlarmSubSeconds;
|
|
|
561:./Src/hw_rtc.c **** RTC_AlarmStructure.AlarmSubSecondMask = HW_RTC_ALARMSUBSECONDMASK;
|
|
|
562:./Src/hw_rtc.c **** RTC_AlarmStructure.AlarmTime.Seconds = rtcAlarmSeconds;
|
|
|
563:./Src/hw_rtc.c **** RTC_AlarmStructure.AlarmTime.Minutes = rtcAlarmMinutes;
|
|
|
564:./Src/hw_rtc.c **** RTC_AlarmStructure.AlarmTime.Hours = rtcAlarmHours;
|
|
|
565:./Src/hw_rtc.c **** RTC_AlarmStructure.AlarmDateWeekDay = ( uint8_t )rtcAlarmDays;
|
|
|
566:./Src/hw_rtc.c **** RTC_AlarmStructure.AlarmTime.TimeFormat = RTC_TimeStruct.TimeFormat;
|
|
|
567:./Src/hw_rtc.c **** RTC_AlarmStructure.AlarmDateWeekDaySel = RTC_ALARMDATEWEEKDAYSEL_DATE;
|
|
|
568:./Src/hw_rtc.c **** RTC_AlarmStructure.AlarmMask = RTC_ALARMMASK_NONE;
|
|
|
569:./Src/hw_rtc.c **** RTC_AlarmStructure.Alarm = RTC_ALARM_A;
|
|
|
570:./Src/hw_rtc.c **** RTC_AlarmStructure.AlarmTime.DayLightSaving = RTC_DAYLIGHTSAVING_NONE;
|
|
|
571:./Src/hw_rtc.c **** RTC_AlarmStructure.AlarmTime.StoreOperation = RTC_STOREOPERATION_RESET;
|
|
|
572:./Src/hw_rtc.c ****
|
|
|
573:./Src/hw_rtc.c **** /* Set RTC_Alarm */
|
|
|
574:./Src/hw_rtc.c **** HAL_RTC_SetAlarm_IT( &RtcHandle, &RTC_AlarmStructure, RTC_FORMAT_BIN );
|
|
|
575:./Src/hw_rtc.c ****
|
|
|
576:./Src/hw_rtc.c **** /* Debug Printf*/
|
|
|
577:./Src/hw_rtc.c **** DBG( HW_RTC_GetCalendarValue( &RTC_DateStruct, &RTC_TimeStruct ); );
|
|
|
578:./Src/hw_rtc.c **** DBG_PRINTF("it's %d:%d:%d:%d ", RTC_TimeStruct.Hours, RTC_TimeStruct.Minutes, RTC_TimeStruct.Seco
|
|
|
579:./Src/hw_rtc.c **** DBG_PRINTF("WU@ %d:%d:%d:%d\n\r", rtcAlarmHours, rtcAlarmMinutes, rtcAlarmSeconds, (rtcAlarmSubSe
|
|
|
580:./Src/hw_rtc.c ****
|
|
|
581:./Src/hw_rtc.c **** DBG_GPIO_RST(GPIOB, GPIO_PIN_13);
|
|
|
582:./Src/hw_rtc.c **** }
|
|
|
583:./Src/hw_rtc.c ****
|
|
|
584:./Src/hw_rtc.c ****
|
|
|
585:./Src/hw_rtc.c **** /*!
|
|
|
586:./Src/hw_rtc.c **** * @brief get current time from calendar in ticks
|
|
|
587:./Src/hw_rtc.c **** * @param pointer to RTC_DateStruct
|
|
|
588:./Src/hw_rtc.c **** * @param pointer to RTC_TimeStruct
|
|
|
589:./Src/hw_rtc.c **** * @retval time in ticks
|
|
|
590:./Src/hw_rtc.c **** */
|
|
|
591:./Src/hw_rtc.c **** static TimerTime_t HW_RTC_GetCalendarValue( RTC_DateTypeDef* RTC_DateStruct, RTC_TimeTypeDef* RTC_T
|
|
|
592:./Src/hw_rtc.c **** {
|
|
|
25 .loc 1 592 0
|
|
|
26 .cfi_startproc
|
|
|
27 @ args = 0, pretend = 0, frame = 0
|
|
|
28 @ frame_needed = 0, uses_anonymous_args = 0
|
|
|
29 .LVL0:
|
|
|
30 0000 F8B5 push {r3, r4, r5, r6, r7, lr}
|
|
|
31 .LCFI0:
|
|
|
32 .cfi_def_cfa_offset 24
|
|
|
33 .cfi_offset 3, -24
|
|
|
34 .cfi_offset 4, -20
|
|
|
35 .cfi_offset 5, -16
|
|
|
36 .cfi_offset 6, -12
|
|
|
ARM GAS /tmp/ccGAhXKe.s page 12
|
|
|
|
|
|
|
|
|
37 .cfi_offset 7, -8
|
|
|
38 .cfi_offset 14, -4
|
|
|
39 0002 0600 movs r6, r0
|
|
|
40 0004 0C00 movs r4, r1
|
|
|
41 .LVL1:
|
|
|
593:./Src/hw_rtc.c **** TimerTime_t calendarValue = 0;
|
|
|
594:./Src/hw_rtc.c **** uint32_t first_read;
|
|
|
595:./Src/hw_rtc.c **** uint32_t correction;
|
|
|
596:./Src/hw_rtc.c ****
|
|
|
597:./Src/hw_rtc.c **** /* Get Time and Date*/
|
|
|
598:./Src/hw_rtc.c **** HAL_RTC_GetTime( &RtcHandle, RTC_TimeStruct, RTC_FORMAT_BIN );
|
|
|
42 .loc 1 598 0
|
|
|
43 0006 0022 movs r2, #0
|
|
|
44 0008 2448 ldr r0, .L6
|
|
|
45 .LVL2:
|
|
|
46 000a FFF7FEFF bl HAL_RTC_GetTime
|
|
|
47 .LVL3:
|
|
|
48 .L2:
|
|
|
599:./Src/hw_rtc.c ****
|
|
|
600:./Src/hw_rtc.c **** /* make sure it is correct due to asynchronus nature of RTC*/
|
|
|
601:./Src/hw_rtc.c **** do {
|
|
|
602:./Src/hw_rtc.c **** first_read = RTC_TimeStruct->SubSeconds;
|
|
|
49 .loc 1 602 0 discriminator 1
|
|
|
50 000e 6768 ldr r7, [r4, #4]
|
|
|
51 .LVL4:
|
|
|
603:./Src/hw_rtc.c **** HAL_RTC_GetDate( &RtcHandle, RTC_DateStruct, RTC_FORMAT_BIN );
|
|
|
52 .loc 1 603 0 discriminator 1
|
|
|
53 0010 224D ldr r5, .L6
|
|
|
54 0012 0022 movs r2, #0
|
|
|
55 0014 3100 movs r1, r6
|
|
|
56 0016 2800 movs r0, r5
|
|
|
57 0018 FFF7FEFF bl HAL_RTC_GetDate
|
|
|
58 .LVL5:
|
|
|
604:./Src/hw_rtc.c **** HAL_RTC_GetTime( &RtcHandle, RTC_TimeStruct, RTC_FORMAT_BIN );
|
|
|
59 .loc 1 604 0 discriminator 1
|
|
|
60 001c 0022 movs r2, #0
|
|
|
61 001e 2100 movs r1, r4
|
|
|
62 0020 2800 movs r0, r5
|
|
|
63 0022 FFF7FEFF bl HAL_RTC_GetTime
|
|
|
64 .LVL6:
|
|
|
605:./Src/hw_rtc.c **** } while (first_read != RTC_TimeStruct->SubSeconds);
|
|
|
65 .loc 1 605 0 discriminator 1
|
|
|
66 0026 6268 ldr r2, [r4, #4]
|
|
|
67 0028 BA42 cmp r2, r7
|
|
|
68 002a F0D1 bne .L2
|
|
|
606:./Src/hw_rtc.c ****
|
|
|
607:./Src/hw_rtc.c **** /* calculte amount of elapsed days since 01/01/2000 */
|
|
|
608:./Src/hw_rtc.c **** calendarValue= DIVC( (DAYS_IN_YEAR*3 + DAYS_IN_LEAP_YEAR)* RTC_DateStruct->Year , 4);
|
|
|
69 .loc 1 608 0
|
|
|
70 002c F178 ldrb r1, [r6, #3]
|
|
|
71 002e 1C4B ldr r3, .L6+4
|
|
|
72 0030 4B43 muls r3, r1
|
|
|
73 0032 0333 adds r3, r3, #3
|
|
|
74 0034 9D08 lsrs r5, r3, #2
|
|
|
75 .LVL7:
|
|
|
609:./Src/hw_rtc.c ****
|
|
|
610:./Src/hw_rtc.c **** correction = ( (RTC_DateStruct->Year % 4) == 0 ) ? DAYS_IN_MONTH_CORRECTION_LEAP : DAYS_IN_MONTH_
|
|
|
ARM GAS /tmp/ccGAhXKe.s page 13
|
|
|
|
|
|
|
|
|
76 .loc 1 610 0
|
|
|
77 0036 8B07 lsls r3, r1, #30
|
|
|
78 0038 2ED0 beq .L5
|
|
|
79 003a 1A4F ldr r7, .L6+8
|
|
|
80 .LVL8:
|
|
|
81 .L3:
|
|
|
611:./Src/hw_rtc.c ****
|
|
|
612:./Src/hw_rtc.c **** calendarValue +=( DIVC( (RTC_DateStruct->Month-1)*(30+31) ,2 ) - (((correction>> ((RTC_DateStruct
|
|
|
82 .loc 1 612 0 discriminator 4
|
|
|
83 003c 7078 ldrb r0, [r6, #1]
|
|
|
84 003e 0138 subs r0, r0, #1
|
|
|
85 0040 0301 lsls r3, r0, #4
|
|
|
86 0042 1B1A subs r3, r3, r0
|
|
|
87 0044 9B00 lsls r3, r3, #2
|
|
|
88 0046 1B18 adds r3, r3, r0
|
|
|
89 0048 0133 adds r3, r3, #1
|
|
|
90 004a D90F lsrs r1, r3, #31
|
|
|
91 004c C918 adds r1, r1, r3
|
|
|
92 004e 4910 asrs r1, r1, #1
|
|
|
93 0050 4000 lsls r0, r0, #1
|
|
|
94 0052 C740 lsrs r7, r7, r0
|
|
|
95 .LVL9:
|
|
|
96 0054 0323 movs r3, #3
|
|
|
97 0056 3B40 ands r3, r7
|
|
|
98 0058 CB1A subs r3, r1, r3
|
|
|
99 005a 5B19 adds r3, r3, r5
|
|
|
100 .LVL10:
|
|
|
613:./Src/hw_rtc.c ****
|
|
|
614:./Src/hw_rtc.c **** calendarValue += (RTC_DateStruct->Date -1);
|
|
|
101 .loc 1 614 0 discriminator 4
|
|
|
102 005c B178 ldrb r1, [r6, #2]
|
|
|
103 005e CB18 adds r3, r1, r3
|
|
|
104 .LVL11:
|
|
|
105 0060 013B subs r3, r3, #1
|
|
|
106 .LVL12:
|
|
|
615:./Src/hw_rtc.c ****
|
|
|
616:./Src/hw_rtc.c **** /* convert from days to seconds */
|
|
|
617:./Src/hw_rtc.c **** calendarValue *= SECONDS_IN_1DAY;
|
|
|
107 .loc 1 617 0 discriminator 4
|
|
|
108 0062 5900 lsls r1, r3, #1
|
|
|
109 0064 CB18 adds r3, r1, r3
|
|
|
110 .LVL13:
|
|
|
111 0066 1901 lsls r1, r3, #4
|
|
|
112 0068 CB1A subs r3, r1, r3
|
|
|
113 006a 1901 lsls r1, r3, #4
|
|
|
114 006c C91A subs r1, r1, r3
|
|
|
115 006e CE01 lsls r6, r1, #7
|
|
|
116 .LVL14:
|
|
|
618:./Src/hw_rtc.c ****
|
|
|
619:./Src/hw_rtc.c **** calendarValue += ( ( uint32_t )RTC_TimeStruct->Seconds +
|
|
|
117 .loc 1 619 0 discriminator 4
|
|
|
118 0070 A778 ldrb r7, [r4, #2]
|
|
|
620:./Src/hw_rtc.c **** ( ( uint32_t )RTC_TimeStruct->Minutes * SECONDS_IN_1MINUTE ) +
|
|
|
621:./Src/hw_rtc.c **** ( ( uint32_t )RTC_TimeStruct->Hours * SECONDS_IN_1HOUR ) ) ;
|
|
|
119 .loc 1 621 0 discriminator 4
|
|
|
120 0072 2578 ldrb r5, [r4]
|
|
|
121 0074 2901 lsls r1, r5, #4
|
|
|
ARM GAS /tmp/ccGAhXKe.s page 14
|
|
|
|
|
|
|
|
|
122 0076 4D1B subs r5, r1, r5
|
|
|
123 0078 2901 lsls r1, r5, #4
|
|
|
124 007a 491B subs r1, r1, r5
|
|
|
125 007c 0B01 lsls r3, r1, #4
|
|
|
620:./Src/hw_rtc.c **** ( ( uint32_t )RTC_TimeStruct->Minutes * SECONDS_IN_1MINUTE ) +
|
|
|
126 .loc 1 620 0 discriminator 4
|
|
|
127 007e 6078 ldrb r0, [r4, #1]
|
|
|
128 0080 0101 lsls r1, r0, #4
|
|
|
129 0082 091A subs r1, r1, r0
|
|
|
130 0084 8800 lsls r0, r1, #2
|
|
|
131 0086 1818 adds r0, r3, r0
|
|
|
132 0088 C019 adds r0, r0, r7
|
|
|
619:./Src/hw_rtc.c **** ( ( uint32_t )RTC_TimeStruct->Minutes * SECONDS_IN_1MINUTE ) +
|
|
|
133 .loc 1 619 0 discriminator 4
|
|
|
134 008a 8019 adds r0, r0, r6
|
|
|
135 .LVL15:
|
|
|
622:./Src/hw_rtc.c ****
|
|
|
623:./Src/hw_rtc.c ****
|
|
|
624:./Src/hw_rtc.c ****
|
|
|
625:./Src/hw_rtc.c **** calendarValue = (calendarValue<<N_PREDIV_S) + ( PREDIV_S - RTC_TimeStruct->SubSeconds);
|
|
|
136 .loc 1 625 0 discriminator 4
|
|
|
137 008c 8002 lsls r0, r0, #10
|
|
|
138 .LVL16:
|
|
|
139 008e 801A subs r0, r0, r2
|
|
|
140 0090 054B ldr r3, .L6+12
|
|
|
141 .LVL17:
|
|
|
142 0092 9C46 mov ip, r3
|
|
|
143 0094 6044 add r0, r0, ip
|
|
|
144 .LVL18:
|
|
|
626:./Src/hw_rtc.c ****
|
|
|
627:./Src/hw_rtc.c **** return( calendarValue );
|
|
|
628:./Src/hw_rtc.c **** }
|
|
|
145 .loc 1 628 0 discriminator 4
|
|
|
146 @ sp needed
|
|
|
147 .LVL19:
|
|
|
148 0096 F8BD pop {r3, r4, r5, r6, r7, pc}
|
|
|
149 .LVL20:
|
|
|
150 .L5:
|
|
|
610:./Src/hw_rtc.c ****
|
|
|
151 .loc 1 610 0
|
|
|
152 0098 044F ldr r7, .L6+16
|
|
|
153 .LVL21:
|
|
|
154 009a CFE7 b .L3
|
|
|
155 .L7:
|
|
|
156 .align 2
|
|
|
157 .L6:
|
|
|
158 009c 00000000 .word .LANCHOR0
|
|
|
159 00a0 B5050000 .word 1461
|
|
|
160 00a4 A0AA9900 .word 10070688
|
|
|
161 00a8 FF030000 .word 1023
|
|
|
162 00ac 50554400 .word 4478288
|
|
|
163 .cfi_endproc
|
|
|
164 .LFE113:
|
|
|
166 .section .text.HW_RTC_Init,"ax",%progbits
|
|
|
167 .align 1
|
|
|
168 .global HW_RTC_Init
|
|
|
169 .syntax unified
|
|
|
ARM GAS /tmp/ccGAhXKe.s page 15
|
|
|
|
|
|
|
|
|
170 .code 16
|
|
|
171 .thumb_func
|
|
|
172 .fpu softvfp
|
|
|
174 HW_RTC_Init:
|
|
|
175 .LFB96:
|
|
|
187:./Src/hw_rtc.c **** if( HW_RTC_Initalized == false )
|
|
|
176 .loc 1 187 0
|
|
|
177 .cfi_startproc
|
|
|
178 @ args = 0, pretend = 0, frame = 24
|
|
|
179 @ frame_needed = 0, uses_anonymous_args = 0
|
|
|
180 0000 70B5 push {r4, r5, r6, lr}
|
|
|
181 .LCFI1:
|
|
|
182 .cfi_def_cfa_offset 16
|
|
|
183 .cfi_offset 4, -16
|
|
|
184 .cfi_offset 5, -12
|
|
|
185 .cfi_offset 6, -8
|
|
|
186 .cfi_offset 14, -4
|
|
|
187 0002 86B0 sub sp, sp, #24
|
|
|
188 .LCFI2:
|
|
|
189 .cfi_def_cfa_offset 40
|
|
|
188:./Src/hw_rtc.c **** {
|
|
|
190 .loc 1 188 0
|
|
|
191 0004 1E4B ldr r3, .L11
|
|
|
192 0006 1B78 ldrb r3, [r3]
|
|
|
193 0008 002B cmp r3, #0
|
|
|
194 000a 01D0 beq .L10
|
|
|
195 .L8:
|
|
|
195:./Src/hw_rtc.c ****
|
|
|
196 .loc 1 195 0
|
|
|
197 000c 06B0 add sp, sp, #24
|
|
|
198 @ sp needed
|
|
|
199 000e 70BD pop {r4, r5, r6, pc}
|
|
|
200 .L10:
|
|
|
201 .LBB26:
|
|
|
202 .LBB27:
|
|
|
208:./Src/hw_rtc.c ****
|
|
|
203 .loc 1 208 0
|
|
|
204 0010 1C4C ldr r4, .L11+4
|
|
|
205 0012 1D4B ldr r3, .L11+8
|
|
|
206 0014 2360 str r3, [r4]
|
|
|
210:./Src/hw_rtc.c **** RtcHandle.Init.AsynchPrediv = PREDIV_A; /* RTC_ASYNCH_PREDIV; */
|
|
|
207 .loc 1 210 0
|
|
|
208 0016 0025 movs r5, #0
|
|
|
209 0018 6560 str r5, [r4, #4]
|
|
|
211:./Src/hw_rtc.c **** RtcHandle.Init.SynchPrediv = PREDIV_S; /* RTC_SYNCH_PREDIV; */
|
|
|
210 .loc 1 211 0
|
|
|
211 001a 1F23 movs r3, #31
|
|
|
212 001c A360 str r3, [r4, #8]
|
|
|
212:./Src/hw_rtc.c **** RtcHandle.Init.OutPut = RTC_OUTPUT;
|
|
|
213 .loc 1 212 0
|
|
|
214 001e 1B4B ldr r3, .L11+12
|
|
|
215 0020 E360 str r3, [r4, #12]
|
|
|
213:./Src/hw_rtc.c **** RtcHandle.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH;
|
|
|
216 .loc 1 213 0
|
|
|
217 0022 2561 str r5, [r4, #16]
|
|
|
214:./Src/hw_rtc.c **** RtcHandle.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN;
|
|
|
218 .loc 1 214 0
|
|
|
ARM GAS /tmp/ccGAhXKe.s page 16
|
|
|
|
|
|
|
|
|
219 0024 A561 str r5, [r4, #24]
|
|
|
215:./Src/hw_rtc.c ****
|
|
|
220 .loc 1 215 0
|
|
|
221 0026 E561 str r5, [r4, #28]
|
|
|
217:./Src/hw_rtc.c ****
|
|
|
222 .loc 1 217 0
|
|
|
223 0028 2000 movs r0, r4
|
|
|
224 002a FFF7FEFF bl HAL_RTC_Init
|
|
|
225 .LVL22:
|
|
|
220:./Src/hw_rtc.c **** RTC_DateStruct.Month = RTC_MONTH_JANUARY;
|
|
|
226 .loc 1 220 0
|
|
|
227 002e 6B46 mov r3, sp
|
|
|
228 0030 DD70 strb r5, [r3, #3]
|
|
|
221:./Src/hw_rtc.c **** RTC_DateStruct.Date = 1;
|
|
|
229 .loc 1 221 0
|
|
|
230 0032 0126 movs r6, #1
|
|
|
231 0034 5E70 strb r6, [r3, #1]
|
|
|
222:./Src/hw_rtc.c **** RTC_DateStruct.WeekDay = RTC_WEEKDAY_MONDAY;
|
|
|
232 .loc 1 222 0
|
|
|
233 0036 9E70 strb r6, [r3, #2]
|
|
|
223:./Src/hw_rtc.c **** HAL_RTC_SetDate(&RtcHandle , &RTC_DateStruct, RTC_FORMAT_BIN);
|
|
|
234 .loc 1 223 0
|
|
|
235 0038 1E70 strb r6, [r3]
|
|
|
224:./Src/hw_rtc.c ****
|
|
|
236 .loc 1 224 0
|
|
|
237 003a 0022 movs r2, #0
|
|
|
238 003c 6946 mov r1, sp
|
|
|
239 003e 2000 movs r0, r4
|
|
|
240 0040 FFF7FEFF bl HAL_RTC_SetDate
|
|
|
241 .LVL23:
|
|
|
227:./Src/hw_rtc.c **** RTC_TimeStruct.Minutes = 0;
|
|
|
242 .loc 1 227 0
|
|
|
243 0044 01A9 add r1, sp, #4
|
|
|
244 0046 0D70 strb r5, [r1]
|
|
|
228:./Src/hw_rtc.c ****
|
|
|
245 .loc 1 228 0
|
|
|
246 0048 4D70 strb r5, [r1, #1]
|
|
|
230:./Src/hw_rtc.c **** RTC_TimeStruct.TimeFormat = 0;
|
|
|
247 .loc 1 230 0
|
|
|
248 004a 8D70 strb r5, [r1, #2]
|
|
|
231:./Src/hw_rtc.c **** RTC_TimeStruct.SubSeconds = 0;
|
|
|
249 .loc 1 231 0
|
|
|
250 004c CD70 strb r5, [r1, #3]
|
|
|
232:./Src/hw_rtc.c **** RTC_TimeStruct.StoreOperation = RTC_DAYLIGHTSAVING_NONE;
|
|
|
251 .loc 1 232 0
|
|
|
252 004e 4D60 str r5, [r1, #4]
|
|
|
233:./Src/hw_rtc.c **** RTC_TimeStruct.DayLightSaving = RTC_STOREOPERATION_RESET;
|
|
|
253 .loc 1 233 0
|
|
|
254 0050 0D61 str r5, [r1, #16]
|
|
|
234:./Src/hw_rtc.c ****
|
|
|
255 .loc 1 234 0
|
|
|
256 0052 CD60 str r5, [r1, #12]
|
|
|
236:./Src/hw_rtc.c ****
|
|
|
257 .loc 1 236 0
|
|
|
258 0054 0022 movs r2, #0
|
|
|
259 0056 2000 movs r0, r4
|
|
|
260 0058 FFF7FEFF bl HAL_RTC_SetTime
|
|
|
ARM GAS /tmp/ccGAhXKe.s page 17
|
|
|
|
|
|
|
|
|
261 .LVL24:
|
|
|
239:./Src/hw_rtc.c **** }
|
|
|
262 .loc 1 239 0
|
|
|
263 005c 2000 movs r0, r4
|
|
|
264 005e FFF7FEFF bl HAL_RTCEx_EnableBypassShadow
|
|
|
265 .LVL25:
|
|
|
266 .LBE27:
|
|
|
267 .LBE26:
|
|
|
268 .LBB28:
|
|
|
269 .LBB29:
|
|
|
464:./Src/hw_rtc.c **** }
|
|
|
270 .loc 1 464 0
|
|
|
271 0062 8021 movs r1, #128
|
|
|
272 0064 4900 lsls r1, r1, #1
|
|
|
273 0066 2000 movs r0, r4
|
|
|
274 0068 FFF7FEFF bl HAL_RTC_DeactivateAlarm
|
|
|
275 .LVL26:
|
|
|
276 .LBE29:
|
|
|
277 .LBE28:
|
|
|
278 .LBB30:
|
|
|
279 .LBB31:
|
|
|
442:./Src/hw_rtc.c **** return ( uint32_t ) RtcTimerContext.Rtc_Time;
|
|
|
280 .loc 1 442 0
|
|
|
281 006c 084C ldr r4, .L11+16
|
|
|
282 006e 211D adds r1, r4, #4
|
|
|
283 0070 2000 movs r0, r4
|
|
|
284 0072 1830 adds r0, r0, #24
|
|
|
285 0074 FFF7FEFF bl HW_RTC_GetCalendarValue
|
|
|
286 .LVL27:
|
|
|
287 0078 2060 str r0, [r4]
|
|
|
288 .LBE31:
|
|
|
289 .LBE30:
|
|
|
193:./Src/hw_rtc.c **** }
|
|
|
290 .loc 1 193 0
|
|
|
291 007a 014B ldr r3, .L11
|
|
|
292 007c 1E70 strb r6, [r3]
|
|
|
195:./Src/hw_rtc.c ****
|
|
|
293 .loc 1 195 0
|
|
|
294 007e C5E7 b .L8
|
|
|
295 .L12:
|
|
|
296 .align 2
|
|
|
297 .L11:
|
|
|
298 0080 00000000 .word .LANCHOR1
|
|
|
299 0084 00000000 .word .LANCHOR0
|
|
|
300 0088 00280040 .word 1073752064
|
|
|
301 008c FF030000 .word 1023
|
|
|
302 0090 00000000 .word .LANCHOR2
|
|
|
303 .cfi_endproc
|
|
|
304 .LFE96:
|
|
|
306 .section .text.HW_RTC_setMcuWakeUpTime,"ax",%progbits
|
|
|
307 .align 1
|
|
|
308 .global HW_RTC_setMcuWakeUpTime
|
|
|
309 .syntax unified
|
|
|
310 .code 16
|
|
|
311 .thumb_func
|
|
|
312 .fpu softvfp
|
|
|
314 HW_RTC_setMcuWakeUpTime:
|
|
|
ARM GAS /tmp/ccGAhXKe.s page 18
|
|
|
|
|
|
|
|
|
315 .LFB98:
|
|
|
249:./Src/hw_rtc.c **** RTC_TimeTypeDef RTC_TimeStruct;
|
|
|
316 .loc 1 249 0
|
|
|
317 .cfi_startproc
|
|
|
318 @ args = 0, pretend = 0, frame = 24
|
|
|
319 @ frame_needed = 0, uses_anonymous_args = 0
|
|
|
320 0000 70B5 push {r4, r5, r6, lr}
|
|
|
321 .LCFI3:
|
|
|
322 .cfi_def_cfa_offset 16
|
|
|
323 .cfi_offset 4, -16
|
|
|
324 .cfi_offset 5, -12
|
|
|
325 .cfi_offset 6, -8
|
|
|
326 .cfi_offset 14, -4
|
|
|
327 0002 86B0 sub sp, sp, #24
|
|
|
328 .LCFI4:
|
|
|
329 .cfi_def_cfa_offset 40
|
|
|
256:./Src/hw_rtc.c **** ( HAL_NVIC_GetPendingIRQ( RTC_Alarm_IRQn ) == 1))
|
|
|
330 .loc 1 256 0
|
|
|
331 0004 1C4B ldr r3, .L16
|
|
|
332 0006 1B78 ldrb r3, [r3]
|
|
|
333 0008 002B cmp r3, #0
|
|
|
334 000a 01D0 beq .L15
|
|
|
335 .L13:
|
|
|
276:./Src/hw_rtc.c ****
|
|
|
336 .loc 1 276 0
|
|
|
337 000c 06B0 add sp, sp, #24
|
|
|
338 @ sp needed
|
|
|
339 000e 70BD pop {r4, r5, r6, pc}
|
|
|
340 .L15:
|
|
|
257:./Src/hw_rtc.c **** { /* warning: works ok if now is below 30 days
|
|
|
341 .loc 1 257 0 discriminator 1
|
|
|
342 0010 0220 movs r0, #2
|
|
|
343 0012 FFF7FEFF bl HAL_NVIC_GetPendingIRQ
|
|
|
344 .LVL28:
|
|
|
256:./Src/hw_rtc.c **** ( HAL_NVIC_GetPendingIRQ( RTC_Alarm_IRQn ) == 1))
|
|
|
345 .loc 1 256 0 discriminator 1
|
|
|
346 0016 0128 cmp r0, #1
|
|
|
347 0018 F8D1 bne .L13
|
|
|
260:./Src/hw_rtc.c **** now = HW_RTC_GetCalendarValue( &RTC_DateStruct, &RTC_TimeStruct );
|
|
|
348 .loc 1 260 0
|
|
|
349 001a 174B ldr r3, .L16
|
|
|
350 001c 0122 movs r2, #1
|
|
|
351 001e 1A70 strb r2, [r3]
|
|
|
261:./Src/hw_rtc.c ****
|
|
|
352 .loc 1 261 0
|
|
|
353 0020 01A9 add r1, sp, #4
|
|
|
354 0022 6846 mov r0, sp
|
|
|
355 0024 FFF7FEFF bl HW_RTC_GetCalendarValue
|
|
|
356 .LVL29:
|
|
|
357 0028 0400 movs r4, r0
|
|
|
358 .LVL30:
|
|
|
265:./Src/hw_rtc.c **** hit = RTC_AlarmStructure.AlarmTime.Seconds+
|
|
|
359 .loc 1 265 0
|
|
|
360 002a 8022 movs r2, #128
|
|
|
361 002c 134D ldr r5, .L16+4
|
|
|
362 002e 0023 movs r3, #0
|
|
|
363 0030 5200 lsls r2, r2, #1
|
|
|
ARM GAS /tmp/ccGAhXKe.s page 19
|
|
|
|
|
|
|
|
|
364 0032 2900 movs r1, r5
|
|
|
365 0034 1248 ldr r0, .L16+8
|
|
|
366 .LVL31:
|
|
|
367 0036 FFF7FEFF bl HAL_RTC_GetAlarm
|
|
|
368 .LVL32:
|
|
|
266:./Src/hw_rtc.c **** 60*(RTC_AlarmStructure.AlarmTime.Minutes+
|
|
|
369 .loc 1 266 0
|
|
|
370 003a A878 ldrb r0, [r5, #2]
|
|
|
267:./Src/hw_rtc.c **** 60*(RTC_AlarmStructure.AlarmTime.Hours+
|
|
|
371 .loc 1 267 0
|
|
|
372 003c 6B78 ldrb r3, [r5, #1]
|
|
|
268:./Src/hw_rtc.c **** 24*(RTC_AlarmStructure.AlarmDateWeekDay)));
|
|
|
373 .loc 1 268 0
|
|
|
374 003e 2978 ldrb r1, [r5]
|
|
|
269:./Src/hw_rtc.c **** hit = ( hit << N_PREDIV_S ) + (PREDIV_S - RTC_AlarmStructure.AlarmTime.SubSeconds);
|
|
|
375 .loc 1 269 0
|
|
|
376 0040 2022 movs r2, #32
|
|
|
377 0042 AA5C ldrb r2, [r5, r2]
|
|
|
378 0044 5600 lsls r6, r2, #1
|
|
|
379 0046 B618 adds r6, r6, r2
|
|
|
380 0048 F200 lsls r2, r6, #3
|
|
|
268:./Src/hw_rtc.c **** 24*(RTC_AlarmStructure.AlarmDateWeekDay)));
|
|
|
381 .loc 1 268 0
|
|
|
382 004a 8A18 adds r2, r1, r2
|
|
|
383 004c 1101 lsls r1, r2, #4
|
|
|
384 004e 891A subs r1, r1, r2
|
|
|
385 0050 8A00 lsls r2, r1, #2
|
|
|
267:./Src/hw_rtc.c **** 60*(RTC_AlarmStructure.AlarmTime.Hours+
|
|
|
386 .loc 1 267 0
|
|
|
387 0052 9A18 adds r2, r3, r2
|
|
|
388 0054 1301 lsls r3, r2, #4
|
|
|
389 0056 9B1A subs r3, r3, r2
|
|
|
390 0058 9A00 lsls r2, r3, #2
|
|
|
266:./Src/hw_rtc.c **** 60*(RTC_AlarmStructure.AlarmTime.Minutes+
|
|
|
391 .loc 1 266 0
|
|
|
392 005a 8018 adds r0, r0, r2
|
|
|
393 .LVL33:
|
|
|
270:./Src/hw_rtc.c ****
|
|
|
394 .loc 1 270 0
|
|
|
395 005c 8002 lsls r0, r0, #10
|
|
|
396 .LVL34:
|
|
|
397 005e 6B68 ldr r3, [r5, #4]
|
|
|
398 0060 C01A subs r0, r0, r3
|
|
|
399 0062 084B ldr r3, .L16+12
|
|
|
400 0064 9C46 mov ip, r3
|
|
|
401 0066 6044 add r0, r0, ip
|
|
|
402 .LVL35:
|
|
|
272:./Src/hw_rtc.c **** McuWakeUpTimeCal += McuWakeUpTime;
|
|
|
403 .loc 1 272 0
|
|
|
404 0068 201A subs r0, r4, r0
|
|
|
405 .LVL36:
|
|
|
406 006a 80B2 uxth r0, r0
|
|
|
407 .LVL37:
|
|
|
273:./Src/hw_rtc.c **** DBG_PRINTF("Cal=%d, %d\n\r",McuWakeUpTimeCal, McuWakeUpTime);
|
|
|
408 .loc 1 273 0
|
|
|
409 006c 064B ldr r3, .L16+16
|
|
|
410 .LVL38:
|
|
|
ARM GAS /tmp/ccGAhXKe.s page 20
|
|
|
|
|
|
|
|
|
411 006e 1C88 ldrh r4, [r3]
|
|
|
412 .LVL39:
|
|
|
413 0070 0019 adds r0, r0, r4
|
|
|
414 .LVL40:
|
|
|
415 0072 1880 strh r0, [r3]
|
|
|
276:./Src/hw_rtc.c ****
|
|
|
416 .loc 1 276 0
|
|
|
417 0074 CAE7 b .L13
|
|
|
418 .L17:
|
|
|
419 0076 C046 .align 2
|
|
|
420 .L16:
|
|
|
421 0078 00000000 .word .LANCHOR3
|
|
|
422 007c 00000000 .word .LANCHOR4
|
|
|
423 0080 00000000 .word .LANCHOR0
|
|
|
424 0084 FF030000 .word 1023
|
|
|
425 0088 00000000 .word .LANCHOR5
|
|
|
426 .cfi_endproc
|
|
|
427 .LFE98:
|
|
|
429 .section .text.HW_RTC_getMcuWakeUpTime,"ax",%progbits
|
|
|
430 .align 1
|
|
|
431 .global HW_RTC_getMcuWakeUpTime
|
|
|
432 .syntax unified
|
|
|
433 .code 16
|
|
|
434 .thumb_func
|
|
|
435 .fpu softvfp
|
|
|
437 HW_RTC_getMcuWakeUpTime:
|
|
|
438 .LFB99:
|
|
|
279:./Src/hw_rtc.c **** return McuWakeUpTimeCal;
|
|
|
439 .loc 1 279 0
|
|
|
440 .cfi_startproc
|
|
|
441 @ args = 0, pretend = 0, frame = 0
|
|
|
442 @ frame_needed = 0, uses_anonymous_args = 0
|
|
|
443 @ link register save eliminated.
|
|
|
280:./Src/hw_rtc.c **** }
|
|
|
444 .loc 1 280 0
|
|
|
445 0000 014B ldr r3, .L19
|
|
|
446 0002 0020 movs r0, #0
|
|
|
447 0004 185E ldrsh r0, [r3, r0]
|
|
|
281:./Src/hw_rtc.c ****
|
|
|
448 .loc 1 281 0
|
|
|
449 @ sp needed
|
|
|
450 0006 7047 bx lr
|
|
|
451 .L20:
|
|
|
452 .align 2
|
|
|
453 .L19:
|
|
|
454 0008 00000000 .word .LANCHOR5
|
|
|
455 .cfi_endproc
|
|
|
456 .LFE99:
|
|
|
458 .section .text.HW_RTC_GetMinimumTimeout,"ax",%progbits
|
|
|
459 .align 1
|
|
|
460 .global HW_RTC_GetMinimumTimeout
|
|
|
461 .syntax unified
|
|
|
462 .code 16
|
|
|
463 .thumb_func
|
|
|
464 .fpu softvfp
|
|
|
466 HW_RTC_GetMinimumTimeout:
|
|
|
467 .LFB100:
|
|
|
ARM GAS /tmp/ccGAhXKe.s page 21
|
|
|
|
|
|
|
|
|
289:./Src/hw_rtc.c **** return( MIN_ALARM_DELAY );
|
|
|
468 .loc 1 289 0
|
|
|
469 .cfi_startproc
|
|
|
470 @ args = 0, pretend = 0, frame = 0
|
|
|
471 @ frame_needed = 0, uses_anonymous_args = 0
|
|
|
472 @ link register save eliminated.
|
|
|
291:./Src/hw_rtc.c ****
|
|
|
473 .loc 1 291 0
|
|
|
474 0000 0320 movs r0, #3
|
|
|
475 @ sp needed
|
|
|
476 0002 7047 bx lr
|
|
|
477 .cfi_endproc
|
|
|
478 .LFE100:
|
|
|
480 .global __aeabi_uldivmod
|
|
|
481 .section .text.HW_RTC_ms2Tick,"ax",%progbits
|
|
|
482 .align 1
|
|
|
483 .global HW_RTC_ms2Tick
|
|
|
484 .syntax unified
|
|
|
485 .code 16
|
|
|
486 .thumb_func
|
|
|
487 .fpu softvfp
|
|
|
489 HW_RTC_ms2Tick:
|
|
|
490 .LFB101:
|
|
|
299:./Src/hw_rtc.c **** /*return( ( timeMicroSec / RTC_ALARM_TIME_BASE ) ); */
|
|
|
491 .loc 1 299 0
|
|
|
492 .cfi_startproc
|
|
|
493 @ args = 0, pretend = 0, frame = 0
|
|
|
494 @ frame_needed = 0, uses_anonymous_args = 0
|
|
|
495 .LVL41:
|
|
|
496 0000 10B5 push {r4, lr}
|
|
|
497 .LCFI5:
|
|
|
498 .cfi_def_cfa_offset 8
|
|
|
499 .cfi_offset 4, -8
|
|
|
500 .cfi_offset 14, -4
|
|
|
301:./Src/hw_rtc.c **** }
|
|
|
501 .loc 1 301 0
|
|
|
502 0002 410E lsrs r1, r0, #25
|
|
|
503 0004 C001 lsls r0, r0, #7
|
|
|
504 .LVL42:
|
|
|
505 0006 7D22 movs r2, #125
|
|
|
506 0008 0023 movs r3, #0
|
|
|
507 000a FFF7FEFF bl __aeabi_uldivmod
|
|
|
508 .LVL43:
|
|
|
302:./Src/hw_rtc.c ****
|
|
|
509 .loc 1 302 0
|
|
|
510 @ sp needed
|
|
|
511 000e 10BD pop {r4, pc}
|
|
|
512 .cfi_endproc
|
|
|
513 .LFE101:
|
|
|
515 .section .text.HW_RTC_Tick2ms,"ax",%progbits
|
|
|
516 .align 1
|
|
|
517 .global HW_RTC_Tick2ms
|
|
|
518 .syntax unified
|
|
|
519 .code 16
|
|
|
520 .thumb_func
|
|
|
521 .fpu softvfp
|
|
|
523 HW_RTC_Tick2ms:
|
|
|
ARM GAS /tmp/ccGAhXKe.s page 22
|
|
|
|
|
|
|
|
|
524 .LFB102:
|
|
|
310:./Src/hw_rtc.c **** /*return( ( timeMicroSec * RTC_ALARM_TIME_BASE ) ); */
|
|
|
525 .loc 1 310 0
|
|
|
526 .cfi_startproc
|
|
|
527 @ args = 0, pretend = 0, frame = 0
|
|
|
528 @ frame_needed = 0, uses_anonymous_args = 0
|
|
|
529 .LVL44:
|
|
|
530 0000 70B5 push {r4, r5, r6, lr}
|
|
|
531 .LCFI6:
|
|
|
532 .cfi_def_cfa_offset 16
|
|
|
533 .cfi_offset 4, -16
|
|
|
534 .cfi_offset 5, -12
|
|
|
535 .cfi_offset 6, -8
|
|
|
536 .cfi_offset 14, -4
|
|
|
312:./Src/hw_rtc.c **** }
|
|
|
537 .loc 1 312 0
|
|
|
538 0002 0400 movs r4, r0
|
|
|
539 0004 0025 movs r5, #0
|
|
|
540 0006 C30E lsrs r3, r0, #27
|
|
|
541 0008 4201 lsls r2, r0, #5
|
|
|
542 000a 121B subs r2, r2, r4
|
|
|
543 000c AB41 sbcs r3, r3, r5
|
|
|
544 000e 960F lsrs r6, r2, #30
|
|
|
545 0010 9900 lsls r1, r3, #2
|
|
|
546 0012 3143 orrs r1, r6
|
|
|
547 0014 9000 lsls r0, r2, #2
|
|
|
548 .LVL45:
|
|
|
549 0016 0019 adds r0, r0, r4
|
|
|
550 0018 6941 adcs r1, r1, r5
|
|
|
551 001a 4B06 lsls r3, r1, #25
|
|
|
552 001c C009 lsrs r0, r0, #7
|
|
|
553 001e 1843 orrs r0, r3
|
|
|
313:./Src/hw_rtc.c ****
|
|
|
554 .loc 1 313 0
|
|
|
555 @ sp needed
|
|
|
556 .LVL46:
|
|
|
557 0020 70BD pop {r4, r5, r6, pc}
|
|
|
558 .cfi_endproc
|
|
|
559 .LFE102:
|
|
|
561 .global __aeabi_idivmod
|
|
|
562 .section .text.HW_RTC_SetAlarm,"ax",%progbits
|
|
|
563 .align 1
|
|
|
564 .global HW_RTC_SetAlarm
|
|
|
565 .syntax unified
|
|
|
566 .code 16
|
|
|
567 .thumb_func
|
|
|
568 .fpu softvfp
|
|
|
570 HW_RTC_SetAlarm:
|
|
|
571 .LFB103:
|
|
|
321:./Src/hw_rtc.c **** /* we don't go in Low Power mode for timeout below MIN_ALARM_DELAY */
|
|
|
572 .loc 1 321 0
|
|
|
573 .cfi_startproc
|
|
|
574 @ args = 0, pretend = 0, frame = 24
|
|
|
575 @ frame_needed = 0, uses_anonymous_args = 0
|
|
|
576 .LVL47:
|
|
|
577 0000 F0B5 push {r4, r5, r6, r7, lr}
|
|
|
578 .LCFI7:
|
|
|
ARM GAS /tmp/ccGAhXKe.s page 23
|
|
|
|
|
|
|
|
|
579 .cfi_def_cfa_offset 20
|
|
|
580 .cfi_offset 4, -20
|
|
|
581 .cfi_offset 5, -16
|
|
|
582 .cfi_offset 6, -12
|
|
|
583 .cfi_offset 7, -8
|
|
|
584 .cfi_offset 14, -4
|
|
|
585 0002 87B0 sub sp, sp, #28
|
|
|
586 .LCFI8:
|
|
|
587 .cfi_def_cfa_offset 48
|
|
|
588 0004 0400 movs r4, r0
|
|
|
323:./Src/hw_rtc.c **** {
|
|
|
589 .loc 1 323 0
|
|
|
590 0006 5D4B ldr r3, .L45
|
|
|
591 0008 0025 movs r5, #0
|
|
|
592 000a 5D5F ldrsh r5, [r3, r5]
|
|
|
593 000c 0335 adds r5, r5, #3
|
|
|
594 .LBB38:
|
|
|
595 .LBB39:
|
|
|
351:./Src/hw_rtc.c ****
|
|
|
596 .loc 1 351 0
|
|
|
597 000e 01A9 add r1, sp, #4
|
|
|
598 0010 6846 mov r0, sp
|
|
|
599 .LVL48:
|
|
|
600 0012 FFF7FEFF bl HW_RTC_GetCalendarValue
|
|
|
601 .LVL49:
|
|
|
353:./Src/hw_rtc.c **** }
|
|
|
602 .loc 1 353 0
|
|
|
603 0016 5A4B ldr r3, .L45+4
|
|
|
604 0018 1B68 ldr r3, [r3]
|
|
|
605 001a C01A subs r0, r0, r3
|
|
|
606 .LVL50:
|
|
|
607 .LBE39:
|
|
|
608 .LBE38:
|
|
|
323:./Src/hw_rtc.c **** {
|
|
|
609 .loc 1 323 0
|
|
|
610 001c 201A subs r0, r4, r0
|
|
|
611 001e 8542 cmp r5, r0
|
|
|
612 0020 28D2 bcs .L25
|
|
|
325:./Src/hw_rtc.c **** }
|
|
|
613 .loc 1 325 0
|
|
|
614 0022 0120 movs r0, #1
|
|
|
615 0024 FFF7FEFF bl LowPower_Enable
|
|
|
616 .LVL51:
|
|
|
617 .L26:
|
|
|
332:./Src/hw_rtc.c **** {
|
|
|
618 .loc 1 332 0
|
|
|
619 0028 FFF7FEFF bl LowPower_GetState
|
|
|
620 .LVL52:
|
|
|
621 002c 0028 cmp r0, #0
|
|
|
622 002e 25D0 beq .L44
|
|
|
623 .L27:
|
|
|
624 .LVL53:
|
|
|
625 .LBB40:
|
|
|
626 .LBB41:
|
|
|
480:./Src/hw_rtc.c **** RTC_DateTypeDef RTC_DateStruct = RtcTimerContext.RTC_Calndr_Date;
|
|
|
627 .loc 1 480 0
|
|
|
628 0030 01AD add r5, sp, #4
|
|
|
ARM GAS /tmp/ccGAhXKe.s page 24
|
|
|
|
|
|
|
|
|
629 0032 5349 ldr r1, .L45+4
|
|
|
630 0034 2A00 movs r2, r5
|
|
|
631 0036 0B1D adds r3, r1, #4
|
|
|
632 0038 C1CB ldmia r3!, {r0, r6, r7}
|
|
|
633 003a C1C2 stmia r2!, {r0, r6, r7}
|
|
|
634 003c 41CB ldmia r3!, {r0, r6}
|
|
|
635 003e 41C2 stmia r2!, {r0, r6}
|
|
|
481:./Src/hw_rtc.c ****
|
|
|
636 .loc 1 481 0
|
|
|
637 0040 8B69 ldr r3, [r1, #24]
|
|
|
638 0042 0093 str r3, [sp]
|
|
|
639 .LBB42:
|
|
|
640 .LBB43:
|
|
|
380:./Src/hw_rtc.c ****
|
|
|
641 .loc 1 380 0
|
|
|
642 0044 4F48 ldr r0, .L45+8
|
|
|
643 0046 0168 ldr r1, [r0]
|
|
|
644 0048 CA68 ldr r2, [r1, #12]
|
|
|
645 004a FF23 movs r3, #255
|
|
|
646 004c 1A40 ands r2, r3
|
|
|
647 004e 4E4B ldr r3, .L45+12
|
|
|
648 0050 1343 orrs r3, r2
|
|
|
649 0052 CB60 str r3, [r1, #12]
|
|
|
384:./Src/hw_rtc.c **** }
|
|
|
650 .loc 1 384 0
|
|
|
651 0054 8021 movs r1, #128
|
|
|
652 0056 4900 lsls r1, r1, #1
|
|
|
653 0058 FFF7FEFF bl HAL_RTC_DeactivateAlarm
|
|
|
654 .LVL54:
|
|
|
655 .LBE43:
|
|
|
656 .LBE42:
|
|
|
487:./Src/hw_rtc.c **** rtcAlarmSubSeconds += ( timeoutValue & PREDIV_S);
|
|
|
657 .loc 1 487 0
|
|
|
658 005c AB88 ldrh r3, [r5, #4]
|
|
|
659 005e 4B4F ldr r7, .L45+16
|
|
|
660 0060 FF1A subs r7, r7, r3
|
|
|
661 0062 BFB2 uxth r7, r7
|
|
|
662 .LVL55:
|
|
|
488:./Src/hw_rtc.c **** /* convert timeout to seconds */
|
|
|
663 .loc 1 488 0
|
|
|
664 0064 A305 lsls r3, r4, #22
|
|
|
665 0066 9B0D lsrs r3, r3, #22
|
|
|
666 0068 FF18 adds r7, r7, r3
|
|
|
667 .LVL56:
|
|
|
668 006a BFB2 uxth r7, r7
|
|
|
669 .LVL57:
|
|
|
490:./Src/hw_rtc.c ****
|
|
|
670 .loc 1 490 0
|
|
|
671 006c A30A lsrs r3, r4, #10
|
|
|
672 .LVL58:
|
|
|
493:./Src/hw_rtc.c **** while (timeoutValue >= SECONDS_IN_1DAY)
|
|
|
673 .loc 1 493 0
|
|
|
674 006e 6A46 mov r2, sp
|
|
|
675 0070 9078 ldrb r0, [r2, #2]
|
|
|
676 .LVL59:
|
|
|
677 0072 10E0 b .L28
|
|
|
678 .LVL60:
|
|
|
ARM GAS /tmp/ccGAhXKe.s page 25
|
|
|
|
|
|
|
|
|
679 .L25:
|
|
|
680 .LBE41:
|
|
|
681 .LBE40:
|
|
|
329:./Src/hw_rtc.c **** }
|
|
|
682 .loc 1 329 0
|
|
|
683 0074 0120 movs r0, #1
|
|
|
684 0076 FFF7FEFF bl LowPower_Disable
|
|
|
685 .LVL61:
|
|
|
686 007a D5E7 b .L26
|
|
|
687 .L44:
|
|
|
334:./Src/hw_rtc.c **** timeout = timeout - McuWakeUpTimeCal;
|
|
|
688 .loc 1 334 0
|
|
|
689 007c 0130 adds r0, r0, #1
|
|
|
690 007e FFF7FEFF bl LowPower_Enable
|
|
|
691 .LVL62:
|
|
|
335:./Src/hw_rtc.c **** }
|
|
|
692 .loc 1 335 0
|
|
|
693 0082 3E4B ldr r3, .L45
|
|
|
694 0084 0022 movs r2, #0
|
|
|
695 0086 9B5E ldrsh r3, [r3, r2]
|
|
|
696 0088 E41A subs r4, r4, r3
|
|
|
697 .LVL63:
|
|
|
698 008a D1E7 b .L27
|
|
|
699 .LVL64:
|
|
|
700 .L29:
|
|
|
701 .LBB45:
|
|
|
702 .LBB44:
|
|
|
496:./Src/hw_rtc.c **** rtcAlarmDays++;
|
|
|
703 .loc 1 496 0
|
|
|
704 008c 404A ldr r2, .L45+20
|
|
|
705 008e 9446 mov ip, r2
|
|
|
706 0090 6344 add r3, r3, ip
|
|
|
707 .LVL65:
|
|
|
497:./Src/hw_rtc.c **** }
|
|
|
708 .loc 1 497 0
|
|
|
709 0092 0130 adds r0, r0, #1
|
|
|
710 .LVL66:
|
|
|
711 0094 80B2 uxth r0, r0
|
|
|
712 .LVL67:
|
|
|
713 .L28:
|
|
|
494:./Src/hw_rtc.c **** {
|
|
|
714 .loc 1 494 0
|
|
|
715 0096 3F4A ldr r2, .L45+24
|
|
|
716 0098 9342 cmp r3, r2
|
|
|
717 009a F7D8 bhi .L29
|
|
|
501:./Src/hw_rtc.c **** while (timeoutValue >= SECONDS_IN_1HOUR)
|
|
|
718 .loc 1 501 0
|
|
|
719 009c 01AA add r2, sp, #4
|
|
|
720 009e 1478 ldrb r4, [r2]
|
|
|
721 .LVL68:
|
|
|
722 00a0 04E0 b .L30
|
|
|
723 .L31:
|
|
|
504:./Src/hw_rtc.c **** rtcAlarmHours++;
|
|
|
724 .loc 1 504 0
|
|
|
725 00a2 3D4A ldr r2, .L45+28
|
|
|
726 00a4 9446 mov ip, r2
|
|
|
727 00a6 6344 add r3, r3, ip
|
|
|
ARM GAS /tmp/ccGAhXKe.s page 26
|
|
|
|
|
|
|
|
|
728 .LVL69:
|
|
|
505:./Src/hw_rtc.c **** }
|
|
|
729 .loc 1 505 0
|
|
|
730 00a8 0134 adds r4, r4, #1
|
|
|
731 .LVL70:
|
|
|
732 00aa A4B2 uxth r4, r4
|
|
|
733 .LVL71:
|
|
|
734 .L30:
|
|
|
502:./Src/hw_rtc.c **** {
|
|
|
735 .loc 1 502 0
|
|
|
736 00ac 3B4A ldr r2, .L45+32
|
|
|
737 00ae 9342 cmp r3, r2
|
|
|
738 00b0 F7D8 bhi .L31
|
|
|
509:./Src/hw_rtc.c **** while (timeoutValue >= SECONDS_IN_1MINUTE)
|
|
|
739 .loc 1 509 0
|
|
|
740 00b2 01AA add r2, sp, #4
|
|
|
741 00b4 5578 ldrb r5, [r2, #1]
|
|
|
742 .LVL72:
|
|
|
743 00b6 02E0 b .L32
|
|
|
744 .L33:
|
|
|
512:./Src/hw_rtc.c **** rtcAlarmMinutes++;
|
|
|
745 .loc 1 512 0
|
|
|
746 00b8 3C3B subs r3, r3, #60
|
|
|
747 .LVL73:
|
|
|
513:./Src/hw_rtc.c **** }
|
|
|
748 .loc 1 513 0
|
|
|
749 00ba 0135 adds r5, r5, #1
|
|
|
750 .LVL74:
|
|
|
751 00bc ADB2 uxth r5, r5
|
|
|
752 .LVL75:
|
|
|
753 .L32:
|
|
|
510:./Src/hw_rtc.c **** {
|
|
|
754 .loc 1 510 0
|
|
|
755 00be 3B2B cmp r3, #59
|
|
|
756 00c0 FAD8 bhi .L33
|
|
|
517:./Src/hw_rtc.c ****
|
|
|
757 .loc 1 517 0
|
|
|
758 00c2 01AA add r2, sp, #4
|
|
|
759 00c4 9678 ldrb r6, [r2, #2]
|
|
|
760 00c6 9BB2 uxth r3, r3
|
|
|
761 .LVL76:
|
|
|
762 00c8 F618 adds r6, r6, r3
|
|
|
763 00ca B6B2 uxth r6, r6
|
|
|
764 .LVL77:
|
|
|
765 00cc 05E0 b .L34
|
|
|
766 .L35:
|
|
|
522:./Src/hw_rtc.c **** rtcAlarmSeconds++;
|
|
|
767 .loc 1 522 0
|
|
|
768 00ce 344B ldr r3, .L45+36
|
|
|
769 00d0 9C46 mov ip, r3
|
|
|
770 00d2 6744 add r7, r7, ip
|
|
|
771 .LVL78:
|
|
|
772 00d4 BFB2 uxth r7, r7
|
|
|
773 .LVL79:
|
|
|
523:./Src/hw_rtc.c **** }
|
|
|
774 .loc 1 523 0
|
|
|
775 00d6 0136 adds r6, r6, #1
|
|
|
ARM GAS /tmp/ccGAhXKe.s page 27
|
|
|
|
|
|
|
|
|
776 .LVL80:
|
|
|
777 00d8 B6B2 uxth r6, r6
|
|
|
778 .LVL81:
|
|
|
779 .L34:
|
|
|
520:./Src/hw_rtc.c **** {
|
|
|
780 .loc 1 520 0
|
|
|
781 00da 2C4B ldr r3, .L45+16
|
|
|
782 00dc 9F42 cmp r7, r3
|
|
|
783 00de F6D8 bhi .L35
|
|
|
784 00e0 03E0 b .L36
|
|
|
785 .L37:
|
|
|
528:./Src/hw_rtc.c **** rtcAlarmMinutes++;
|
|
|
786 .loc 1 528 0
|
|
|
787 00e2 3C3E subs r6, r6, #60
|
|
|
788 .LVL82:
|
|
|
789 00e4 B6B2 uxth r6, r6
|
|
|
790 .LVL83:
|
|
|
529:./Src/hw_rtc.c **** }
|
|
|
791 .loc 1 529 0
|
|
|
792 00e6 0135 adds r5, r5, #1
|
|
|
793 .LVL84:
|
|
|
794 00e8 ADB2 uxth r5, r5
|
|
|
795 .LVL85:
|
|
|
796 .L36:
|
|
|
526:./Src/hw_rtc.c **** {
|
|
|
797 .loc 1 526 0
|
|
|
798 00ea 3B2E cmp r6, #59
|
|
|
799 00ec F9D8 bhi .L37
|
|
|
800 00ee 03E0 b .L38
|
|
|
801 .L39:
|
|
|
534:./Src/hw_rtc.c **** rtcAlarmHours++;
|
|
|
802 .loc 1 534 0
|
|
|
803 00f0 3C3D subs r5, r5, #60
|
|
|
804 .LVL86:
|
|
|
805 00f2 ADB2 uxth r5, r5
|
|
|
806 .LVL87:
|
|
|
535:./Src/hw_rtc.c **** }
|
|
|
807 .loc 1 535 0
|
|
|
808 00f4 0134 adds r4, r4, #1
|
|
|
809 .LVL88:
|
|
|
810 00f6 A4B2 uxth r4, r4
|
|
|
811 .LVL89:
|
|
|
812 .L38:
|
|
|
532:./Src/hw_rtc.c **** {
|
|
|
813 .loc 1 532 0
|
|
|
814 00f8 3B2D cmp r5, #59
|
|
|
815 00fa F9D8 bhi .L39
|
|
|
816 00fc 03E0 b .L40
|
|
|
817 .L41:
|
|
|
540:./Src/hw_rtc.c **** rtcAlarmDays++;
|
|
|
818 .loc 1 540 0
|
|
|
819 00fe 183C subs r4, r4, #24
|
|
|
820 .LVL90:
|
|
|
821 0100 A4B2 uxth r4, r4
|
|
|
822 .LVL91:
|
|
|
541:./Src/hw_rtc.c **** }
|
|
|
823 .loc 1 541 0
|
|
|
ARM GAS /tmp/ccGAhXKe.s page 28
|
|
|
|
|
|
|
|
|
824 0102 0130 adds r0, r0, #1
|
|
|
825 .LVL92:
|
|
|
826 0104 80B2 uxth r0, r0
|
|
|
827 .LVL93:
|
|
|
828 .L40:
|
|
|
538:./Src/hw_rtc.c **** {
|
|
|
829 .loc 1 538 0
|
|
|
830 0106 172C cmp r4, #23
|
|
|
831 0108 F9D8 bhi .L41
|
|
|
544:./Src/hw_rtc.c **** {
|
|
|
832 .loc 1 544 0
|
|
|
833 010a 6B46 mov r3, sp
|
|
|
834 010c DB78 ldrb r3, [r3, #3]
|
|
|
835 010e 9B07 lsls r3, r3, #30
|
|
|
836 0110 0BD1 bne .L42
|
|
|
546:./Src/hw_rtc.c **** {
|
|
|
837 .loc 1 546 0
|
|
|
838 0112 6B46 mov r3, sp
|
|
|
839 0114 5B78 ldrb r3, [r3, #1]
|
|
|
840 0116 013B subs r3, r3, #1
|
|
|
841 0118 224A ldr r2, .L45+40
|
|
|
842 011a D15C ldrb r1, [r2, r3]
|
|
|
843 011c 8BB2 uxth r3, r1
|
|
|
844 011e 9842 cmp r0, r3
|
|
|
845 0120 0ED9 bls .L43
|
|
|
548:./Src/hw_rtc.c **** }
|
|
|
846 .loc 1 548 0
|
|
|
847 0122 FFF7FEFF bl __aeabi_idivmod
|
|
|
848 .LVL94:
|
|
|
849 0126 88B2 uxth r0, r1
|
|
|
850 .LVL95:
|
|
|
851 0128 0AE0 b .L43
|
|
|
852 .L42:
|
|
|
553:./Src/hw_rtc.c **** {
|
|
|
853 .loc 1 553 0
|
|
|
854 012a 6B46 mov r3, sp
|
|
|
855 012c 5B78 ldrb r3, [r3, #1]
|
|
|
856 012e 013B subs r3, r3, #1
|
|
|
857 0130 1D4A ldr r2, .L45+44
|
|
|
858 0132 D15C ldrb r1, [r2, r3]
|
|
|
859 0134 8BB2 uxth r3, r1
|
|
|
860 0136 9842 cmp r0, r3
|
|
|
861 0138 02D9 bls .L43
|
|
|
555:./Src/hw_rtc.c **** }
|
|
|
862 .loc 1 555 0
|
|
|
863 013a FFF7FEFF bl __aeabi_idivmod
|
|
|
864 .LVL96:
|
|
|
865 013e 88B2 uxth r0, r1
|
|
|
866 .LVL97:
|
|
|
867 .L43:
|
|
|
560:./Src/hw_rtc.c **** RTC_AlarmStructure.AlarmSubSecondMask = HW_RTC_ALARMSUBSECONDMASK;
|
|
|
868 .loc 1 560 0
|
|
|
869 0140 124B ldr r3, .L45+16
|
|
|
870 0142 DF1B subs r7, r3, r7
|
|
|
871 .LVL98:
|
|
|
872 0144 1949 ldr r1, .L45+48
|
|
|
873 0146 4F60 str r7, [r1, #4]
|
|
|
ARM GAS /tmp/ccGAhXKe.s page 29
|
|
|
|
|
|
|
|
|
561:./Src/hw_rtc.c **** RTC_AlarmStructure.AlarmTime.Seconds = rtcAlarmSeconds;
|
|
|
874 .loc 1 561 0
|
|
|
875 0148 A023 movs r3, #160
|
|
|
876 014a 1B05 lsls r3, r3, #20
|
|
|
877 014c 8B61 str r3, [r1, #24]
|
|
|
562:./Src/hw_rtc.c **** RTC_AlarmStructure.AlarmTime.Minutes = rtcAlarmMinutes;
|
|
|
878 .loc 1 562 0
|
|
|
879 014e 8E70 strb r6, [r1, #2]
|
|
|
563:./Src/hw_rtc.c **** RTC_AlarmStructure.AlarmTime.Hours = rtcAlarmHours;
|
|
|
880 .loc 1 563 0
|
|
|
881 0150 4D70 strb r5, [r1, #1]
|
|
|
564:./Src/hw_rtc.c **** RTC_AlarmStructure.AlarmDateWeekDay = ( uint8_t )rtcAlarmDays;
|
|
|
882 .loc 1 564 0
|
|
|
883 0152 0C70 strb r4, [r1]
|
|
|
565:./Src/hw_rtc.c **** RTC_AlarmStructure.AlarmTime.TimeFormat = RTC_TimeStruct.TimeFormat;
|
|
|
884 .loc 1 565 0
|
|
|
885 0154 2023 movs r3, #32
|
|
|
886 0156 C854 strb r0, [r1, r3]
|
|
|
566:./Src/hw_rtc.c **** RTC_AlarmStructure.AlarmDateWeekDaySel = RTC_ALARMDATEWEEKDAYSEL_DATE;
|
|
|
887 .loc 1 566 0
|
|
|
888 0158 01AB add r3, sp, #4
|
|
|
889 015a DB78 ldrb r3, [r3, #3]
|
|
|
890 015c CB70 strb r3, [r1, #3]
|
|
|
567:./Src/hw_rtc.c **** RTC_AlarmStructure.AlarmMask = RTC_ALARMMASK_NONE;
|
|
|
891 .loc 1 567 0
|
|
|
892 015e 0023 movs r3, #0
|
|
|
893 0160 CB61 str r3, [r1, #28]
|
|
|
568:./Src/hw_rtc.c **** RTC_AlarmStructure.Alarm = RTC_ALARM_A;
|
|
|
894 .loc 1 568 0
|
|
|
895 0162 4B61 str r3, [r1, #20]
|
|
|
569:./Src/hw_rtc.c **** RTC_AlarmStructure.AlarmTime.DayLightSaving = RTC_DAYLIGHTSAVING_NONE;
|
|
|
896 .loc 1 569 0
|
|
|
897 0164 8022 movs r2, #128
|
|
|
898 0166 5200 lsls r2, r2, #1
|
|
|
899 0168 4A62 str r2, [r1, #36]
|
|
|
570:./Src/hw_rtc.c **** RTC_AlarmStructure.AlarmTime.StoreOperation = RTC_STOREOPERATION_RESET;
|
|
|
900 .loc 1 570 0
|
|
|
901 016a CB60 str r3, [r1, #12]
|
|
|
571:./Src/hw_rtc.c ****
|
|
|
902 .loc 1 571 0
|
|
|
903 016c 0B61 str r3, [r1, #16]
|
|
|
574:./Src/hw_rtc.c ****
|
|
|
904 .loc 1 574 0
|
|
|
905 016e 0022 movs r2, #0
|
|
|
906 0170 0448 ldr r0, .L45+8
|
|
|
907 .LVL99:
|
|
|
908 0172 FFF7FEFF bl HAL_RTC_SetAlarm_IT
|
|
|
909 .LVL100:
|
|
|
910 .LBE44:
|
|
|
911 .LBE45:
|
|
|
339:./Src/hw_rtc.c ****
|
|
|
912 .loc 1 339 0
|
|
|
913 0176 07B0 add sp, sp, #28
|
|
|
914 @ sp needed
|
|
|
915 0178 F0BD pop {r4, r5, r6, r7, pc}
|
|
|
916 .L46:
|
|
|
917 017a C046 .align 2
|
|
|
ARM GAS /tmp/ccGAhXKe.s page 30
|
|
|
|
|
|
|
|
|
918 .L45:
|
|
|
919 017c 00000000 .word .LANCHOR5
|
|
|
920 0180 00000000 .word .LANCHOR2
|
|
|
921 0184 00000000 .word .LANCHOR0
|
|
|
922 0188 7FFEFFFF .word -385
|
|
|
923 018c FF030000 .word 1023
|
|
|
924 0190 80AEFEFF .word -86400
|
|
|
925 0194 7F510100 .word 86399
|
|
|
926 0198 F0F1FFFF .word -3600
|
|
|
927 019c 0F0E0000 .word 3599
|
|
|
928 01a0 00FCFFFF .word -1024
|
|
|
929 01a4 00000000 .word .LANCHOR6
|
|
|
930 01a8 00000000 .word .LANCHOR7
|
|
|
931 01ac 00000000 .word .LANCHOR4
|
|
|
932 .cfi_endproc
|
|
|
933 .LFE103:
|
|
|
935 .section .text.HW_RTC_GetTimerElapsedTime,"ax",%progbits
|
|
|
936 .align 1
|
|
|
937 .global HW_RTC_GetTimerElapsedTime
|
|
|
938 .syntax unified
|
|
|
939 .code 16
|
|
|
940 .thumb_func
|
|
|
941 .fpu softvfp
|
|
|
943 HW_RTC_GetTimerElapsedTime:
|
|
|
944 .LFB104:
|
|
|
347:./Src/hw_rtc.c **** RTC_TimeTypeDef RTC_TimeStruct;
|
|
|
945 .loc 1 347 0
|
|
|
946 .cfi_startproc
|
|
|
947 @ args = 0, pretend = 0, frame = 24
|
|
|
948 @ frame_needed = 0, uses_anonymous_args = 0
|
|
|
949 0000 00B5 push {lr}
|
|
|
950 .LCFI9:
|
|
|
951 .cfi_def_cfa_offset 4
|
|
|
952 .cfi_offset 14, -4
|
|
|
953 0002 87B0 sub sp, sp, #28
|
|
|
954 .LCFI10:
|
|
|
955 .cfi_def_cfa_offset 32
|
|
|
351:./Src/hw_rtc.c ****
|
|
|
956 .loc 1 351 0
|
|
|
957 0004 01A9 add r1, sp, #4
|
|
|
958 0006 6846 mov r0, sp
|
|
|
959 0008 FFF7FEFF bl HW_RTC_GetCalendarValue
|
|
|
960 .LVL101:
|
|
|
353:./Src/hw_rtc.c **** }
|
|
|
961 .loc 1 353 0
|
|
|
962 000c 024B ldr r3, .L48
|
|
|
963 000e 1B68 ldr r3, [r3]
|
|
|
964 0010 C01A subs r0, r0, r3
|
|
|
965 .LVL102:
|
|
|
354:./Src/hw_rtc.c ****
|
|
|
966 .loc 1 354 0
|
|
|
967 0012 07B0 add sp, sp, #28
|
|
|
968 @ sp needed
|
|
|
969 0014 00BD pop {pc}
|
|
|
970 .L49:
|
|
|
971 0016 C046 .align 2
|
|
|
972 .L48:
|
|
|
ARM GAS /tmp/ccGAhXKe.s page 31
|
|
|
|
|
|
|
|
|
973 0018 00000000 .word .LANCHOR2
|
|
|
974 .cfi_endproc
|
|
|
975 .LFE104:
|
|
|
977 .section .text.HW_RTC_GetTimerValue,"ax",%progbits
|
|
|
978 .align 1
|
|
|
979 .global HW_RTC_GetTimerValue
|
|
|
980 .syntax unified
|
|
|
981 .code 16
|
|
|
982 .thumb_func
|
|
|
983 .fpu softvfp
|
|
|
985 HW_RTC_GetTimerValue:
|
|
|
986 .LFB105:
|
|
|
362:./Src/hw_rtc.c **** RTC_TimeTypeDef RTC_TimeStruct;
|
|
|
987 .loc 1 362 0
|
|
|
988 .cfi_startproc
|
|
|
989 @ args = 0, pretend = 0, frame = 24
|
|
|
990 @ frame_needed = 0, uses_anonymous_args = 0
|
|
|
991 0000 00B5 push {lr}
|
|
|
992 .LCFI11:
|
|
|
993 .cfi_def_cfa_offset 4
|
|
|
994 .cfi_offset 14, -4
|
|
|
995 0002 87B0 sub sp, sp, #28
|
|
|
996 .LCFI12:
|
|
|
997 .cfi_def_cfa_offset 32
|
|
|
366:./Src/hw_rtc.c ****
|
|
|
998 .loc 1 366 0
|
|
|
999 0004 01A9 add r1, sp, #4
|
|
|
1000 0006 6846 mov r0, sp
|
|
|
1001 0008 FFF7FEFF bl HW_RTC_GetCalendarValue
|
|
|
1002 .LVL103:
|
|
|
369:./Src/hw_rtc.c ****
|
|
|
1003 .loc 1 369 0
|
|
|
1004 000c 07B0 add sp, sp, #28
|
|
|
1005 @ sp needed
|
|
|
1006 000e 00BD pop {pc}
|
|
|
1007 .cfi_endproc
|
|
|
1008 .LFE105:
|
|
|
1010 .section .text.HW_RTC_StopAlarm,"ax",%progbits
|
|
|
1011 .align 1
|
|
|
1012 .global HW_RTC_StopAlarm
|
|
|
1013 .syntax unified
|
|
|
1014 .code 16
|
|
|
1015 .thumb_func
|
|
|
1016 .fpu softvfp
|
|
|
1018 HW_RTC_StopAlarm:
|
|
|
1019 .LFB106:
|
|
|
377:./Src/hw_rtc.c ****
|
|
|
1020 .loc 1 377 0
|
|
|
1021 .cfi_startproc
|
|
|
1022 @ args = 0, pretend = 0, frame = 0
|
|
|
1023 @ frame_needed = 0, uses_anonymous_args = 0
|
|
|
1024 0000 10B5 push {r4, lr}
|
|
|
1025 .LCFI13:
|
|
|
1026 .cfi_def_cfa_offset 8
|
|
|
1027 .cfi_offset 4, -8
|
|
|
1028 .cfi_offset 14, -4
|
|
|
380:./Src/hw_rtc.c ****
|
|
|
ARM GAS /tmp/ccGAhXKe.s page 32
|
|
|
|
|
|
|
|
|
1029 .loc 1 380 0
|
|
|
1030 0002 0648 ldr r0, .L52
|
|
|
1031 0004 0168 ldr r1, [r0]
|
|
|
1032 0006 CA68 ldr r2, [r1, #12]
|
|
|
1033 0008 FF23 movs r3, #255
|
|
|
1034 000a 1A40 ands r2, r3
|
|
|
1035 000c 044B ldr r3, .L52+4
|
|
|
1036 000e 1343 orrs r3, r2
|
|
|
1037 0010 CB60 str r3, [r1, #12]
|
|
|
384:./Src/hw_rtc.c **** }
|
|
|
1038 .loc 1 384 0
|
|
|
1039 0012 8021 movs r1, #128
|
|
|
1040 0014 4900 lsls r1, r1, #1
|
|
|
1041 0016 FFF7FEFF bl HAL_RTC_DeactivateAlarm
|
|
|
1042 .LVL104:
|
|
|
385:./Src/hw_rtc.c ****
|
|
|
1043 .loc 1 385 0
|
|
|
1044 @ sp needed
|
|
|
1045 001a 10BD pop {r4, pc}
|
|
|
1046 .L53:
|
|
|
1047 .align 2
|
|
|
1048 .L52:
|
|
|
1049 001c 00000000 .word .LANCHOR0
|
|
|
1050 0020 7FFEFFFF .word -385
|
|
|
1051 .cfi_endproc
|
|
|
1052 .LFE106:
|
|
|
1054 .section .text.HW_RTC_IrqHandler,"ax",%progbits
|
|
|
1055 .align 1
|
|
|
1056 .global HW_RTC_IrqHandler
|
|
|
1057 .syntax unified
|
|
|
1058 .code 16
|
|
|
1059 .thumb_func
|
|
|
1060 .fpu softvfp
|
|
|
1062 HW_RTC_IrqHandler:
|
|
|
1063 .LFB107:
|
|
|
393:./Src/hw_rtc.c **** RTC_HandleTypeDef* hrtc=&RtcHandle;
|
|
|
1064 .loc 1 393 0
|
|
|
1065 .cfi_startproc
|
|
|
1066 @ args = 0, pretend = 0, frame = 0
|
|
|
1067 @ frame_needed = 0, uses_anonymous_args = 0
|
|
|
1068 0000 10B5 push {r4, lr}
|
|
|
1069 .LCFI14:
|
|
|
1070 .cfi_def_cfa_offset 8
|
|
|
1071 .cfi_offset 4, -8
|
|
|
1072 .cfi_offset 14, -4
|
|
|
1073 .LVL105:
|
|
|
396:./Src/hw_rtc.c ****
|
|
|
1074 .loc 1 396 0
|
|
|
1075 0002 0120 movs r0, #1
|
|
|
1076 0004 FFF7FEFF bl LowPower_Enable
|
|
|
1077 .LVL106:
|
|
|
399:./Src/hw_rtc.c **** {
|
|
|
1078 .loc 1 399 0
|
|
|
1079 0008 0B4B ldr r3, .L57
|
|
|
1080 000a 1B68 ldr r3, [r3]
|
|
|
1081 000c 9A68 ldr r2, [r3, #8]
|
|
|
1082 000e D204 lsls r2, r2, #19
|
|
|
ARM GAS /tmp/ccGAhXKe.s page 33
|
|
|
|
|
|
|
|
|
1083 0010 02D5 bpl .L54
|
|
|
402:./Src/hw_rtc.c **** {
|
|
|
1084 .loc 1 402 0
|
|
|
1085 0012 DA68 ldr r2, [r3, #12]
|
|
|
1086 0014 D205 lsls r2, r2, #23
|
|
|
1087 0016 00D4 bmi .L56
|
|
|
1088 .L54:
|
|
|
412:./Src/hw_rtc.c ****
|
|
|
1089 .loc 1 412 0
|
|
|
1090 @ sp needed
|
|
|
1091 0018 10BD pop {r4, pc}
|
|
|
1092 .L56:
|
|
|
405:./Src/hw_rtc.c **** /* Clear the EXTI's line Flag for RTC Alarm */
|
|
|
1093 .loc 1 405 0
|
|
|
1094 001a D968 ldr r1, [r3, #12]
|
|
|
1095 001c FF22 movs r2, #255
|
|
|
1096 001e 1140 ands r1, r2
|
|
|
1097 0020 064A ldr r2, .L57+4
|
|
|
1098 0022 0A43 orrs r2, r1
|
|
|
1099 0024 DA60 str r2, [r3, #12]
|
|
|
407:./Src/hw_rtc.c **** /* AlarmA callback */
|
|
|
1100 .loc 1 407 0
|
|
|
1101 0026 064B ldr r3, .L57+8
|
|
|
1102 0028 8022 movs r2, #128
|
|
|
1103 002a 9202 lsls r2, r2, #10
|
|
|
1104 002c 5A61 str r2, [r3, #20]
|
|
|
409:./Src/hw_rtc.c **** }
|
|
|
1105 .loc 1 409 0
|
|
|
1106 002e 0248 ldr r0, .L57
|
|
|
1107 0030 FFF7FEFF bl HAL_RTC_AlarmAEventCallback
|
|
|
1108 .LVL107:
|
|
|
412:./Src/hw_rtc.c ****
|
|
|
1109 .loc 1 412 0
|
|
|
1110 0034 F0E7 b .L54
|
|
|
1111 .L58:
|
|
|
1112 0036 C046 .align 2
|
|
|
1113 .L57:
|
|
|
1114 0038 00000000 .word .LANCHOR0
|
|
|
1115 003c 7FFEFFFF .word -385
|
|
|
1116 0040 00040140 .word 1073808384
|
|
|
1117 .cfi_endproc
|
|
|
1118 .LFE107:
|
|
|
1120 .section .text.HW_RTC_DelayMs,"ax",%progbits
|
|
|
1121 .align 1
|
|
|
1122 .global HW_RTC_DelayMs
|
|
|
1123 .syntax unified
|
|
|
1124 .code 16
|
|
|
1125 .thumb_func
|
|
|
1126 .fpu softvfp
|
|
|
1128 HW_RTC_DelayMs:
|
|
|
1129 .LFB108:
|
|
|
421:./Src/hw_rtc.c **** TimerTime_t delayValue = 0;
|
|
|
1130 .loc 1 421 0
|
|
|
1131 .cfi_startproc
|
|
|
1132 @ args = 0, pretend = 0, frame = 24
|
|
|
1133 @ frame_needed = 0, uses_anonymous_args = 0
|
|
|
1134 .LVL108:
|
|
|
ARM GAS /tmp/ccGAhXKe.s page 34
|
|
|
|
|
|
|
|
|
1135 0000 30B5 push {r4, r5, lr}
|
|
|
1136 .LCFI15:
|
|
|
1137 .cfi_def_cfa_offset 12
|
|
|
1138 .cfi_offset 4, -12
|
|
|
1139 .cfi_offset 5, -8
|
|
|
1140 .cfi_offset 14, -4
|
|
|
1141 0002 87B0 sub sp, sp, #28
|
|
|
1142 .LCFI16:
|
|
|
1143 .cfi_def_cfa_offset 40
|
|
|
1144 .LVL109:
|
|
|
1145 .LBB46:
|
|
|
1146 .LBB47:
|
|
|
301:./Src/hw_rtc.c **** }
|
|
|
1147 .loc 1 301 0
|
|
|
1148 0004 410E lsrs r1, r0, #25
|
|
|
1149 0006 C001 lsls r0, r0, #7
|
|
|
1150 .LVL110:
|
|
|
1151 0008 7D22 movs r2, #125
|
|
|
1152 000a 0023 movs r3, #0
|
|
|
1153 000c FFF7FEFF bl __aeabi_uldivmod
|
|
|
1154 .LVL111:
|
|
|
1155 0010 0400 movs r4, r0
|
|
|
1156 .LVL112:
|
|
|
1157 .LBE47:
|
|
|
1158 .LBE46:
|
|
|
1159 .LBB48:
|
|
|
1160 .LBB49:
|
|
|
366:./Src/hw_rtc.c ****
|
|
|
1161 .loc 1 366 0
|
|
|
1162 0012 01A9 add r1, sp, #4
|
|
|
1163 0014 6846 mov r0, sp
|
|
|
1164 0016 FFF7FEFF bl HW_RTC_GetCalendarValue
|
|
|
1165 .LVL113:
|
|
|
1166 001a 0500 movs r5, r0
|
|
|
1167 .LVL114:
|
|
|
1168 .LBE49:
|
|
|
1169 .LBE48:
|
|
|
429:./Src/hw_rtc.c **** {
|
|
|
1170 .loc 1 429 0
|
|
|
1171 001c 00E0 b .L60
|
|
|
1172 .L61:
|
|
|
1173 .LBB50:
|
|
|
1174 .LBB51:
|
|
|
1175 .file 2 "Drivers/CMSIS/Include/cmsis_gcc.h"
|
|
|
1:Drivers/CMSIS/Include/cmsis_gcc.h **** /**************************************************************************//**
|
|
|
2:Drivers/CMSIS/Include/cmsis_gcc.h **** * @file cmsis_gcc.h
|
|
|
3:Drivers/CMSIS/Include/cmsis_gcc.h **** * @brief CMSIS Cortex-M Core Function/Instruction Header File
|
|
|
4:Drivers/CMSIS/Include/cmsis_gcc.h **** * @version V4.30
|
|
|
5:Drivers/CMSIS/Include/cmsis_gcc.h **** * @date 20. October 2015
|
|
|
6:Drivers/CMSIS/Include/cmsis_gcc.h **** ******************************************************************************/
|
|
|
7:Drivers/CMSIS/Include/cmsis_gcc.h **** /* Copyright (c) 2009 - 2015 ARM LIMITED
|
|
|
8:Drivers/CMSIS/Include/cmsis_gcc.h ****
|
|
|
9:Drivers/CMSIS/Include/cmsis_gcc.h **** All rights reserved.
|
|
|
10:Drivers/CMSIS/Include/cmsis_gcc.h **** Redistribution and use in source and binary forms, with or without
|
|
|
11:Drivers/CMSIS/Include/cmsis_gcc.h **** modification, are permitted provided that the following conditions are met:
|
|
|
12:Drivers/CMSIS/Include/cmsis_gcc.h **** - Redistributions of source code must retain the above copyright
|
|
|
13:Drivers/CMSIS/Include/cmsis_gcc.h **** notice, this list of conditions and the following disclaimer.
|
|
|
ARM GAS /tmp/ccGAhXKe.s page 35
|
|
|
|
|
|
|
|
|
14:Drivers/CMSIS/Include/cmsis_gcc.h **** - Redistributions in binary form must reproduce the above copyright
|
|
|
15:Drivers/CMSIS/Include/cmsis_gcc.h **** notice, this list of conditions and the following disclaimer in the
|
|
|
16:Drivers/CMSIS/Include/cmsis_gcc.h **** documentation and/or other materials provided with the distribution.
|
|
|
17:Drivers/CMSIS/Include/cmsis_gcc.h **** - Neither the name of ARM nor the names of its contributors may be used
|
|
|
18:Drivers/CMSIS/Include/cmsis_gcc.h **** to endorse or promote products derived from this software without
|
|
|
19:Drivers/CMSIS/Include/cmsis_gcc.h **** specific prior written permission.
|
|
|
20:Drivers/CMSIS/Include/cmsis_gcc.h **** *
|
|
|
21:Drivers/CMSIS/Include/cmsis_gcc.h **** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
|
22:Drivers/CMSIS/Include/cmsis_gcc.h **** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
|
23:Drivers/CMSIS/Include/cmsis_gcc.h **** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
|
24:Drivers/CMSIS/Include/cmsis_gcc.h **** ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
|
|
|
25:Drivers/CMSIS/Include/cmsis_gcc.h **** LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
|
26:Drivers/CMSIS/Include/cmsis_gcc.h **** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
|
27:Drivers/CMSIS/Include/cmsis_gcc.h **** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
|
28:Drivers/CMSIS/Include/cmsis_gcc.h **** INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
|
29:Drivers/CMSIS/Include/cmsis_gcc.h **** CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
|
30:Drivers/CMSIS/Include/cmsis_gcc.h **** ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
|
31:Drivers/CMSIS/Include/cmsis_gcc.h **** POSSIBILITY OF SUCH DAMAGE.
|
|
|
32:Drivers/CMSIS/Include/cmsis_gcc.h **** ---------------------------------------------------------------------------*/
|
|
|
33:Drivers/CMSIS/Include/cmsis_gcc.h ****
|
|
|
34:Drivers/CMSIS/Include/cmsis_gcc.h ****
|
|
|
35:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __CMSIS_GCC_H
|
|
|
36:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_H
|
|
|
37:Drivers/CMSIS/Include/cmsis_gcc.h ****
|
|
|
38:Drivers/CMSIS/Include/cmsis_gcc.h **** /* ignore some GCC warnings */
|
|
|
39:Drivers/CMSIS/Include/cmsis_gcc.h **** #if defined ( __GNUC__ )
|
|
|
40:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push
|
|
|
41:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wsign-conversion"
|
|
|
42:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wconversion"
|
|
|
43:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wunused-parameter"
|
|
|
44:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
|
|
|
45:Drivers/CMSIS/Include/cmsis_gcc.h ****
|
|
|
46:Drivers/CMSIS/Include/cmsis_gcc.h ****
|
|
|
47:Drivers/CMSIS/Include/cmsis_gcc.h **** /* ########################### Core Function Access ########################### */
|
|
|
48:Drivers/CMSIS/Include/cmsis_gcc.h **** /** \ingroup CMSIS_Core_FunctionInterface
|
|
|
49:Drivers/CMSIS/Include/cmsis_gcc.h **** \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions
|
|
|
50:Drivers/CMSIS/Include/cmsis_gcc.h **** @{
|
|
|
51:Drivers/CMSIS/Include/cmsis_gcc.h **** */
|
|
|
52:Drivers/CMSIS/Include/cmsis_gcc.h ****
|
|
|
53:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
|
|
|
54:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Enable IRQ Interrupts
|
|
|
55:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Enables IRQ interrupts by clearing the I-bit in the CPSR.
|
|
|
56:Drivers/CMSIS/Include/cmsis_gcc.h **** Can only be executed in Privileged modes.
|
|
|
57:Drivers/CMSIS/Include/cmsis_gcc.h **** */
|
|
|
58:Drivers/CMSIS/Include/cmsis_gcc.h **** __attribute__( ( always_inline ) ) __STATIC_INLINE void __enable_irq(void)
|
|
|
59:Drivers/CMSIS/Include/cmsis_gcc.h **** {
|
|
|
60:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("cpsie i" : : : "memory");
|
|
|
61:Drivers/CMSIS/Include/cmsis_gcc.h **** }
|
|
|
62:Drivers/CMSIS/Include/cmsis_gcc.h ****
|
|
|
63:Drivers/CMSIS/Include/cmsis_gcc.h ****
|
|
|
64:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
|
|
|
65:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Disable IRQ Interrupts
|
|
|
66:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Disables IRQ interrupts by setting the I-bit in the CPSR.
|
|
|
67:Drivers/CMSIS/Include/cmsis_gcc.h **** Can only be executed in Privileged modes.
|
|
|
68:Drivers/CMSIS/Include/cmsis_gcc.h **** */
|
|
|
69:Drivers/CMSIS/Include/cmsis_gcc.h **** __attribute__( ( always_inline ) ) __STATIC_INLINE void __disable_irq(void)
|
|
|
70:Drivers/CMSIS/Include/cmsis_gcc.h **** {
|
|
|
ARM GAS /tmp/ccGAhXKe.s page 36
|
|
|
|
|
|
|
|
|
71:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("cpsid i" : : : "memory");
|
|
|
72:Drivers/CMSIS/Include/cmsis_gcc.h **** }
|
|
|
73:Drivers/CMSIS/Include/cmsis_gcc.h ****
|
|
|
74:Drivers/CMSIS/Include/cmsis_gcc.h ****
|
|
|
75:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
|
|
|
76:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Control Register
|
|
|
77:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the content of the Control Register.
|
|
|
78:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Control Register value
|
|
|
79:Drivers/CMSIS/Include/cmsis_gcc.h **** */
|
|
|
80:Drivers/CMSIS/Include/cmsis_gcc.h **** __attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_CONTROL(void)
|
|
|
81:Drivers/CMSIS/Include/cmsis_gcc.h **** {
|
|
|
82:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result;
|
|
|
83:Drivers/CMSIS/Include/cmsis_gcc.h ****
|
|
|
84:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, control" : "=r" (result) );
|
|
|
85:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result);
|
|
|
86:Drivers/CMSIS/Include/cmsis_gcc.h **** }
|
|
|
87:Drivers/CMSIS/Include/cmsis_gcc.h ****
|
|
|
88:Drivers/CMSIS/Include/cmsis_gcc.h ****
|
|
|
89:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
|
|
|
90:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Control Register
|
|
|
91:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Writes the given value to the Control Register.
|
|
|
92:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] control Control Register value to set
|
|
|
93:Drivers/CMSIS/Include/cmsis_gcc.h **** */
|
|
|
94:Drivers/CMSIS/Include/cmsis_gcc.h **** __attribute__( ( always_inline ) ) __STATIC_INLINE void __set_CONTROL(uint32_t control)
|
|
|
95:Drivers/CMSIS/Include/cmsis_gcc.h **** {
|
|
|
96:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR control, %0" : : "r" (control) : "memory");
|
|
|
97:Drivers/CMSIS/Include/cmsis_gcc.h **** }
|
|
|
98:Drivers/CMSIS/Include/cmsis_gcc.h ****
|
|
|
99:Drivers/CMSIS/Include/cmsis_gcc.h ****
|
|
|
100:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
|
|
|
101:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get IPSR Register
|
|
|
102:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the content of the IPSR Register.
|
|
|
103:Drivers/CMSIS/Include/cmsis_gcc.h **** \return IPSR Register value
|
|
|
104:Drivers/CMSIS/Include/cmsis_gcc.h **** */
|
|
|
105:Drivers/CMSIS/Include/cmsis_gcc.h **** __attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_IPSR(void)
|
|
|
106:Drivers/CMSIS/Include/cmsis_gcc.h **** {
|
|
|
107:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result;
|
|
|
108:Drivers/CMSIS/Include/cmsis_gcc.h ****
|
|
|
109:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, ipsr" : "=r" (result) );
|
|
|
110:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result);
|
|
|
111:Drivers/CMSIS/Include/cmsis_gcc.h **** }
|
|
|
112:Drivers/CMSIS/Include/cmsis_gcc.h ****
|
|
|
113:Drivers/CMSIS/Include/cmsis_gcc.h ****
|
|
|
114:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
|
|
|
115:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get APSR Register
|
|
|
116:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the content of the APSR Register.
|
|
|
117:Drivers/CMSIS/Include/cmsis_gcc.h **** \return APSR Register value
|
|
|
118:Drivers/CMSIS/Include/cmsis_gcc.h **** */
|
|
|
119:Drivers/CMSIS/Include/cmsis_gcc.h **** __attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_APSR(void)
|
|
|
120:Drivers/CMSIS/Include/cmsis_gcc.h **** {
|
|
|
121:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result;
|
|
|
122:Drivers/CMSIS/Include/cmsis_gcc.h ****
|
|
|
123:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, apsr" : "=r" (result) );
|
|
|
124:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result);
|
|
|
125:Drivers/CMSIS/Include/cmsis_gcc.h **** }
|
|
|
126:Drivers/CMSIS/Include/cmsis_gcc.h ****
|
|
|
127:Drivers/CMSIS/Include/cmsis_gcc.h ****
|
|
|
ARM GAS /tmp/ccGAhXKe.s page 37
|
|
|
|
|
|
|
|
|
128:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
|
|
|
129:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get xPSR Register
|
|
|
130:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the content of the xPSR Register.
|
|
|
131:Drivers/CMSIS/Include/cmsis_gcc.h ****
|
|
|
132:Drivers/CMSIS/Include/cmsis_gcc.h **** \return xPSR Register value
|
|
|
133:Drivers/CMSIS/Include/cmsis_gcc.h **** */
|
|
|
134:Drivers/CMSIS/Include/cmsis_gcc.h **** __attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_xPSR(void)
|
|
|
135:Drivers/CMSIS/Include/cmsis_gcc.h **** {
|
|
|
136:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result;
|
|
|
137:Drivers/CMSIS/Include/cmsis_gcc.h ****
|
|
|
138:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, xpsr" : "=r" (result) );
|
|
|
139:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result);
|
|
|
140:Drivers/CMSIS/Include/cmsis_gcc.h **** }
|
|
|
141:Drivers/CMSIS/Include/cmsis_gcc.h ****
|
|
|
142:Drivers/CMSIS/Include/cmsis_gcc.h ****
|
|
|
143:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
|
|
|
144:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Process Stack Pointer
|
|
|
145:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Process Stack Pointer (PSP).
|
|
|
146:Drivers/CMSIS/Include/cmsis_gcc.h **** \return PSP Register value
|
|
|
147:Drivers/CMSIS/Include/cmsis_gcc.h **** */
|
|
|
148:Drivers/CMSIS/Include/cmsis_gcc.h **** __attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_PSP(void)
|
|
|
149:Drivers/CMSIS/Include/cmsis_gcc.h **** {
|
|
|
150:Drivers/CMSIS/Include/cmsis_gcc.h **** register uint32_t result;
|
|
|
151:Drivers/CMSIS/Include/cmsis_gcc.h ****
|
|
|
152:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, psp\n" : "=r" (result) );
|
|
|
153:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result);
|
|
|
154:Drivers/CMSIS/Include/cmsis_gcc.h **** }
|
|
|
155:Drivers/CMSIS/Include/cmsis_gcc.h ****
|
|
|
156:Drivers/CMSIS/Include/cmsis_gcc.h ****
|
|
|
157:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
|
|
|
158:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Process Stack Pointer
|
|
|
159:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Process Stack Pointer (PSP).
|
|
|
160:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] topOfProcStack Process Stack Pointer value to set
|
|
|
161:Drivers/CMSIS/Include/cmsis_gcc.h **** */
|
|
|
162:Drivers/CMSIS/Include/cmsis_gcc.h **** __attribute__( ( always_inline ) ) __STATIC_INLINE void __set_PSP(uint32_t topOfProcStack)
|
|
|
163:Drivers/CMSIS/Include/cmsis_gcc.h **** {
|
|
|
164:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR psp, %0\n" : : "r" (topOfProcStack) : "sp");
|
|
|
165:Drivers/CMSIS/Include/cmsis_gcc.h **** }
|
|
|
166:Drivers/CMSIS/Include/cmsis_gcc.h ****
|
|
|
167:Drivers/CMSIS/Include/cmsis_gcc.h ****
|
|
|
168:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
|
|
|
169:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Main Stack Pointer
|
|
|
170:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Main Stack Pointer (MSP).
|
|
|
171:Drivers/CMSIS/Include/cmsis_gcc.h **** \return MSP Register value
|
|
|
172:Drivers/CMSIS/Include/cmsis_gcc.h **** */
|
|
|
173:Drivers/CMSIS/Include/cmsis_gcc.h **** __attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_MSP(void)
|
|
|
174:Drivers/CMSIS/Include/cmsis_gcc.h **** {
|
|
|
175:Drivers/CMSIS/Include/cmsis_gcc.h **** register uint32_t result;
|
|
|
176:Drivers/CMSIS/Include/cmsis_gcc.h ****
|
|
|
177:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, msp\n" : "=r" (result) );
|
|
|
178:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result);
|
|
|
179:Drivers/CMSIS/Include/cmsis_gcc.h **** }
|
|
|
180:Drivers/CMSIS/Include/cmsis_gcc.h ****
|
|
|
181:Drivers/CMSIS/Include/cmsis_gcc.h ****
|
|
|
182:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
|
|
|
183:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Main Stack Pointer
|
|
|
184:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Main Stack Pointer (MSP).
|
|
|
ARM GAS /tmp/ccGAhXKe.s page 38
|
|
|
|
|
|
|
|
|
185:Drivers/CMSIS/Include/cmsis_gcc.h ****
|
|
|
186:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] topOfMainStack Main Stack Pointer value to set
|
|
|
187:Drivers/CMSIS/Include/cmsis_gcc.h **** */
|
|
|
188:Drivers/CMSIS/Include/cmsis_gcc.h **** __attribute__( ( always_inline ) ) __STATIC_INLINE void __set_MSP(uint32_t topOfMainStack)
|
|
|
189:Drivers/CMSIS/Include/cmsis_gcc.h **** {
|
|
|
190:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR msp, %0\n" : : "r" (topOfMainStack) : "sp");
|
|
|
191:Drivers/CMSIS/Include/cmsis_gcc.h **** }
|
|
|
192:Drivers/CMSIS/Include/cmsis_gcc.h ****
|
|
|
193:Drivers/CMSIS/Include/cmsis_gcc.h ****
|
|
|
194:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
|
|
|
195:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Priority Mask
|
|
|
196:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current state of the priority mask bit from the Priority Mask Register.
|
|
|
197:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Priority Mask value
|
|
|
198:Drivers/CMSIS/Include/cmsis_gcc.h **** */
|
|
|
199:Drivers/CMSIS/Include/cmsis_gcc.h **** __attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_PRIMASK(void)
|
|
|
200:Drivers/CMSIS/Include/cmsis_gcc.h **** {
|
|
|
201:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result;
|
|
|
202:Drivers/CMSIS/Include/cmsis_gcc.h ****
|
|
|
203:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, primask" : "=r" (result) );
|
|
|
204:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result);
|
|
|
205:Drivers/CMSIS/Include/cmsis_gcc.h **** }
|
|
|
206:Drivers/CMSIS/Include/cmsis_gcc.h ****
|
|
|
207:Drivers/CMSIS/Include/cmsis_gcc.h ****
|
|
|
208:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
|
|
|
209:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Priority Mask
|
|
|
210:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Priority Mask Register.
|
|
|
211:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] priMask Priority Mask
|
|
|
212:Drivers/CMSIS/Include/cmsis_gcc.h **** */
|
|
|
213:Drivers/CMSIS/Include/cmsis_gcc.h **** __attribute__( ( always_inline ) ) __STATIC_INLINE void __set_PRIMASK(uint32_t priMask)
|
|
|
214:Drivers/CMSIS/Include/cmsis_gcc.h **** {
|
|
|
215:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory");
|
|
|
216:Drivers/CMSIS/Include/cmsis_gcc.h **** }
|
|
|
217:Drivers/CMSIS/Include/cmsis_gcc.h ****
|
|
|
218:Drivers/CMSIS/Include/cmsis_gcc.h ****
|
|
|
219:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (__CORTEX_M >= 0x03U)
|
|
|
220:Drivers/CMSIS/Include/cmsis_gcc.h ****
|
|
|
221:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
|
|
|
222:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Enable FIQ
|
|
|
223:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Enables FIQ interrupts by clearing the F-bit in the CPSR.
|
|
|
224:Drivers/CMSIS/Include/cmsis_gcc.h **** Can only be executed in Privileged modes.
|
|
|
225:Drivers/CMSIS/Include/cmsis_gcc.h **** */
|
|
|
226:Drivers/CMSIS/Include/cmsis_gcc.h **** __attribute__( ( always_inline ) ) __STATIC_INLINE void __enable_fault_irq(void)
|
|
|
227:Drivers/CMSIS/Include/cmsis_gcc.h **** {
|
|
|
228:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("cpsie f" : : : "memory");
|
|
|
229:Drivers/CMSIS/Include/cmsis_gcc.h **** }
|
|
|
230:Drivers/CMSIS/Include/cmsis_gcc.h ****
|
|
|
231:Drivers/CMSIS/Include/cmsis_gcc.h ****
|
|
|
232:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
|
|
|
233:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Disable FIQ
|
|
|
234:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Disables FIQ interrupts by setting the F-bit in the CPSR.
|
|
|
235:Drivers/CMSIS/Include/cmsis_gcc.h **** Can only be executed in Privileged modes.
|
|
|
236:Drivers/CMSIS/Include/cmsis_gcc.h **** */
|
|
|
237:Drivers/CMSIS/Include/cmsis_gcc.h **** __attribute__( ( always_inline ) ) __STATIC_INLINE void __disable_fault_irq(void)
|
|
|
238:Drivers/CMSIS/Include/cmsis_gcc.h **** {
|
|
|
239:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("cpsid f" : : : "memory");
|
|
|
240:Drivers/CMSIS/Include/cmsis_gcc.h **** }
|
|
|
241:Drivers/CMSIS/Include/cmsis_gcc.h ****
|
|
|
ARM GAS /tmp/ccGAhXKe.s page 39
|
|
|
|
|
|
|
|
|
242:Drivers/CMSIS/Include/cmsis_gcc.h ****
|
|
|
243:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
|
|
|
244:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Base Priority
|
|
|
245:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Base Priority register.
|
|
|
246:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Base Priority register value
|
|
|
247:Drivers/CMSIS/Include/cmsis_gcc.h **** */
|
|
|
248:Drivers/CMSIS/Include/cmsis_gcc.h **** __attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_BASEPRI(void)
|
|
|
249:Drivers/CMSIS/Include/cmsis_gcc.h **** {
|
|
|
250:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result;
|
|
|
251:Drivers/CMSIS/Include/cmsis_gcc.h ****
|
|
|
252:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, basepri" : "=r" (result) );
|
|
|
253:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result);
|
|
|
254:Drivers/CMSIS/Include/cmsis_gcc.h **** }
|
|
|
255:Drivers/CMSIS/Include/cmsis_gcc.h ****
|
|
|
256:Drivers/CMSIS/Include/cmsis_gcc.h ****
|
|
|
257:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
|
|
|
258:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Base Priority
|
|
|
259:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Base Priority register.
|
|
|
260:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] basePri Base Priority value to set
|
|
|
261:Drivers/CMSIS/Include/cmsis_gcc.h **** */
|
|
|
262:Drivers/CMSIS/Include/cmsis_gcc.h **** __attribute__( ( always_inline ) ) __STATIC_INLINE void __set_BASEPRI(uint32_t value)
|
|
|
263:Drivers/CMSIS/Include/cmsis_gcc.h **** {
|
|
|
264:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR basepri, %0" : : "r" (value) : "memory");
|
|
|
265:Drivers/CMSIS/Include/cmsis_gcc.h **** }
|
|
|
266:Drivers/CMSIS/Include/cmsis_gcc.h ****
|
|
|
267:Drivers/CMSIS/Include/cmsis_gcc.h ****
|
|
|
268:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
|
|
|
269:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Base Priority with condition
|
|
|
270:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Base Priority register only if BASEPRI masking is disable
|
|
|
271:Drivers/CMSIS/Include/cmsis_gcc.h **** or the new value increases the BASEPRI priority level.
|
|
|
272:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] basePri Base Priority value to set
|
|
|
273:Drivers/CMSIS/Include/cmsis_gcc.h **** */
|
|
|
274:Drivers/CMSIS/Include/cmsis_gcc.h **** __attribute__( ( always_inline ) ) __STATIC_INLINE void __set_BASEPRI_MAX(uint32_t value)
|
|
|
275:Drivers/CMSIS/Include/cmsis_gcc.h **** {
|
|
|
276:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR basepri_max, %0" : : "r" (value) : "memory");
|
|
|
277:Drivers/CMSIS/Include/cmsis_gcc.h **** }
|
|
|
278:Drivers/CMSIS/Include/cmsis_gcc.h ****
|
|
|
279:Drivers/CMSIS/Include/cmsis_gcc.h ****
|
|
|
280:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
|
|
|
281:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Fault Mask
|
|
|
282:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Fault Mask register.
|
|
|
283:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Fault Mask register value
|
|
|
284:Drivers/CMSIS/Include/cmsis_gcc.h **** */
|
|
|
285:Drivers/CMSIS/Include/cmsis_gcc.h **** __attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_FAULTMASK(void)
|
|
|
286:Drivers/CMSIS/Include/cmsis_gcc.h **** {
|
|
|
287:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result;
|
|
|
288:Drivers/CMSIS/Include/cmsis_gcc.h ****
|
|
|
289:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, faultmask" : "=r" (result) );
|
|
|
290:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result);
|
|
|
291:Drivers/CMSIS/Include/cmsis_gcc.h **** }
|
|
|
292:Drivers/CMSIS/Include/cmsis_gcc.h ****
|
|
|
293:Drivers/CMSIS/Include/cmsis_gcc.h ****
|
|
|
294:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
|
|
|
295:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Fault Mask
|
|
|
296:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Fault Mask register.
|
|
|
297:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] faultMask Fault Mask value to set
|
|
|
298:Drivers/CMSIS/Include/cmsis_gcc.h **** */
|
|
|
ARM GAS /tmp/ccGAhXKe.s page 40
|
|
|
|
|
|
|
|
|
299:Drivers/CMSIS/Include/cmsis_gcc.h **** __attribute__( ( always_inline ) ) __STATIC_INLINE void __set_FAULTMASK(uint32_t faultMask)
|
|
|
300:Drivers/CMSIS/Include/cmsis_gcc.h **** {
|
|
|
301:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR faultmask, %0" : : "r" (faultMask) : "memory");
|
|
|
302:Drivers/CMSIS/Include/cmsis_gcc.h **** }
|
|
|
303:Drivers/CMSIS/Include/cmsis_gcc.h ****
|
|
|
304:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif /* (__CORTEX_M >= 0x03U) */
|
|
|
305:Drivers/CMSIS/Include/cmsis_gcc.h ****
|
|
|
306:Drivers/CMSIS/Include/cmsis_gcc.h ****
|
|
|
307:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (__CORTEX_M == 0x04U) || (__CORTEX_M == 0x07U)
|
|
|
308:Drivers/CMSIS/Include/cmsis_gcc.h ****
|
|
|
309:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
|
|
|
310:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get FPSCR
|
|
|
311:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Floating Point Status/Control register.
|
|
|
312:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Floating Point Status/Control register value
|
|
|
313:Drivers/CMSIS/Include/cmsis_gcc.h **** */
|
|
|
314:Drivers/CMSIS/Include/cmsis_gcc.h **** __attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_FPSCR(void)
|
|
|
315:Drivers/CMSIS/Include/cmsis_gcc.h **** {
|
|
|
316:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (__FPU_PRESENT == 1U) && (__FPU_USED == 1U)
|
|
|
317:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result;
|
|
|
318:Drivers/CMSIS/Include/cmsis_gcc.h ****
|
|
|
319:Drivers/CMSIS/Include/cmsis_gcc.h **** /* Empty asm statement works as a scheduling barrier */
|
|
|
320:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("");
|
|
|
321:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("VMRS %0, fpscr" : "=r" (result) );
|
|
|
322:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("");
|
|
|
323:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result);
|
|
|
324:Drivers/CMSIS/Include/cmsis_gcc.h **** #else
|
|
|
325:Drivers/CMSIS/Include/cmsis_gcc.h **** return(0);
|
|
|
326:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
|
|
|
327:Drivers/CMSIS/Include/cmsis_gcc.h **** }
|
|
|
328:Drivers/CMSIS/Include/cmsis_gcc.h ****
|
|
|
329:Drivers/CMSIS/Include/cmsis_gcc.h ****
|
|
|
330:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
|
|
|
331:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set FPSCR
|
|
|
332:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Floating Point Status/Control register.
|
|
|
333:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] fpscr Floating Point Status/Control value to set
|
|
|
334:Drivers/CMSIS/Include/cmsis_gcc.h **** */
|
|
|
335:Drivers/CMSIS/Include/cmsis_gcc.h **** __attribute__( ( always_inline ) ) __STATIC_INLINE void __set_FPSCR(uint32_t fpscr)
|
|
|
336:Drivers/CMSIS/Include/cmsis_gcc.h **** {
|
|
|
337:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (__FPU_PRESENT == 1U) && (__FPU_USED == 1U)
|
|
|
338:Drivers/CMSIS/Include/cmsis_gcc.h **** /* Empty asm statement works as a scheduling barrier */
|
|
|
339:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("");
|
|
|
340:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("VMSR fpscr, %0" : : "r" (fpscr) : "vfpcc");
|
|
|
341:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("");
|
|
|
342:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
|
|
|
343:Drivers/CMSIS/Include/cmsis_gcc.h **** }
|
|
|
344:Drivers/CMSIS/Include/cmsis_gcc.h ****
|
|
|
345:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif /* (__CORTEX_M == 0x04U) || (__CORTEX_M == 0x07U) */
|
|
|
346:Drivers/CMSIS/Include/cmsis_gcc.h ****
|
|
|
347:Drivers/CMSIS/Include/cmsis_gcc.h ****
|
|
|
348:Drivers/CMSIS/Include/cmsis_gcc.h ****
|
|
|
349:Drivers/CMSIS/Include/cmsis_gcc.h **** /*@} end of CMSIS_Core_RegAccFunctions */
|
|
|
350:Drivers/CMSIS/Include/cmsis_gcc.h ****
|
|
|
351:Drivers/CMSIS/Include/cmsis_gcc.h ****
|
|
|
352:Drivers/CMSIS/Include/cmsis_gcc.h **** /* ########################## Core Instruction Access ######################### */
|
|
|
353:Drivers/CMSIS/Include/cmsis_gcc.h **** /** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface
|
|
|
354:Drivers/CMSIS/Include/cmsis_gcc.h **** Access to dedicated instructions
|
|
|
355:Drivers/CMSIS/Include/cmsis_gcc.h **** @{
|
|
|
ARM GAS /tmp/ccGAhXKe.s page 41
|
|
|
|
|
|
|
|
|
356:Drivers/CMSIS/Include/cmsis_gcc.h **** */
|
|
|
357:Drivers/CMSIS/Include/cmsis_gcc.h ****
|
|
|
358:Drivers/CMSIS/Include/cmsis_gcc.h **** /* Define macros for porting to both thumb1 and thumb2.
|
|
|
359:Drivers/CMSIS/Include/cmsis_gcc.h **** * For thumb1, use low register (r0-r7), specified by constraint "l"
|
|
|
360:Drivers/CMSIS/Include/cmsis_gcc.h **** * Otherwise, use general registers, specified by constraint "r" */
|
|
|
361:Drivers/CMSIS/Include/cmsis_gcc.h **** #if defined (__thumb__) && !defined (__thumb2__)
|
|
|
362:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_OUT_REG(r) "=l" (r)
|
|
|
363:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_USE_REG(r) "l" (r)
|
|
|
364:Drivers/CMSIS/Include/cmsis_gcc.h **** #else
|
|
|
365:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_OUT_REG(r) "=r" (r)
|
|
|
366:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_USE_REG(r) "r" (r)
|
|
|
367:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
|
|
|
368:Drivers/CMSIS/Include/cmsis_gcc.h ****
|
|
|
369:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
|
|
|
370:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief No Operation
|
|
|
371:Drivers/CMSIS/Include/cmsis_gcc.h **** \details No Operation does nothing. This instruction can be used for code alignment purposes.
|
|
|
372:Drivers/CMSIS/Include/cmsis_gcc.h **** */
|
|
|
373:Drivers/CMSIS/Include/cmsis_gcc.h **** __attribute__((always_inline)) __STATIC_INLINE void __NOP(void)
|
|
|
374:Drivers/CMSIS/Include/cmsis_gcc.h **** {
|
|
|
375:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("nop");
|
|
|
1176 .loc 2 375 0
|
|
|
1177 .syntax divided
|
|
|
1178 @ 375 "Drivers/CMSIS/Include/cmsis_gcc.h" 1
|
|
|
1179 001e C046 nop
|
|
|
1180 @ 0 "" 2
|
|
|
1181 .thumb
|
|
|
1182 .syntax unified
|
|
|
1183 .L60:
|
|
|
1184 .LBE51:
|
|
|
1185 .LBE50:
|
|
|
1186 .LBB52:
|
|
|
1187 .LBB53:
|
|
|
366:./Src/hw_rtc.c ****
|
|
|
1188 .loc 1 366 0
|
|
|
1189 0020 01A9 add r1, sp, #4
|
|
|
1190 0022 6846 mov r0, sp
|
|
|
1191 0024 FFF7FEFF bl HW_RTC_GetCalendarValue
|
|
|
1192 .LVL115:
|
|
|
1193 .LBE53:
|
|
|
1194 .LBE52:
|
|
|
429:./Src/hw_rtc.c **** {
|
|
|
1195 .loc 1 429 0
|
|
|
1196 0028 401B subs r0, r0, r5
|
|
|
1197 002a A042 cmp r0, r4
|
|
|
1198 002c F7D3 bcc .L61
|
|
|
433:./Src/hw_rtc.c ****
|
|
|
1199 .loc 1 433 0
|
|
|
1200 002e 07B0 add sp, sp, #28
|
|
|
1201 @ sp needed
|
|
|
1202 0030 30BD pop {r4, r5, pc}
|
|
|
1203 .cfi_endproc
|
|
|
1204 .LFE108:
|
|
|
1206 .section .text.HW_RTC_SetTimerContext,"ax",%progbits
|
|
|
1207 .align 1
|
|
|
1208 .global HW_RTC_SetTimerContext
|
|
|
1209 .syntax unified
|
|
|
1210 .code 16
|
|
|
ARM GAS /tmp/ccGAhXKe.s page 42
|
|
|
|
|
|
|
|
|
1211 .thumb_func
|
|
|
1212 .fpu softvfp
|
|
|
1214 HW_RTC_SetTimerContext:
|
|
|
1215 .LFB109:
|
|
|
441:./Src/hw_rtc.c **** RtcTimerContext.Rtc_Time = HW_RTC_GetCalendarValue( &RtcTimerContext.RTC_Calndr_Date, &RtcTimerCo
|
|
|
1216 .loc 1 441 0
|
|
|
1217 .cfi_startproc
|
|
|
1218 @ args = 0, pretend = 0, frame = 0
|
|
|
1219 @ frame_needed = 0, uses_anonymous_args = 0
|
|
|
1220 0000 10B5 push {r4, lr}
|
|
|
1221 .LCFI17:
|
|
|
1222 .cfi_def_cfa_offset 8
|
|
|
1223 .cfi_offset 4, -8
|
|
|
1224 .cfi_offset 14, -4
|
|
|
442:./Src/hw_rtc.c **** return ( uint32_t ) RtcTimerContext.Rtc_Time;
|
|
|
1225 .loc 1 442 0
|
|
|
1226 0002 044C ldr r4, .L63
|
|
|
1227 0004 211D adds r1, r4, #4
|
|
|
1228 0006 2000 movs r0, r4
|
|
|
1229 0008 1830 adds r0, r0, #24
|
|
|
1230 000a FFF7FEFF bl HW_RTC_GetCalendarValue
|
|
|
1231 .LVL116:
|
|
|
1232 000e 2060 str r0, [r4]
|
|
|
444:./Src/hw_rtc.c ****
|
|
|
1233 .loc 1 444 0
|
|
|
1234 @ sp needed
|
|
|
1235 0010 10BD pop {r4, pc}
|
|
|
1236 .L64:
|
|
|
1237 0012 C046 .align 2
|
|
|
1238 .L63:
|
|
|
1239 0014 00000000 .word .LANCHOR2
|
|
|
1240 .cfi_endproc
|
|
|
1241 .LFE109:
|
|
|
1243 .section .text.HW_RTC_GetTimerContext,"ax",%progbits
|
|
|
1244 .align 1
|
|
|
1245 .global HW_RTC_GetTimerContext
|
|
|
1246 .syntax unified
|
|
|
1247 .code 16
|
|
|
1248 .thumb_func
|
|
|
1249 .fpu softvfp
|
|
|
1251 HW_RTC_GetTimerContext:
|
|
|
1252 .LFB110:
|
|
|
452:./Src/hw_rtc.c **** return (uint32_t) RtcTimerContext.Rtc_Time;
|
|
|
1253 .loc 1 452 0
|
|
|
1254 .cfi_startproc
|
|
|
1255 @ args = 0, pretend = 0, frame = 0
|
|
|
1256 @ frame_needed = 0, uses_anonymous_args = 0
|
|
|
1257 @ link register save eliminated.
|
|
|
453:./Src/hw_rtc.c **** }
|
|
|
1258 .loc 1 453 0
|
|
|
1259 0000 014B ldr r3, .L66
|
|
|
1260 0002 1868 ldr r0, [r3]
|
|
|
454:./Src/hw_rtc.c **** /* Private functions ---------------------------------------------------------*/
|
|
|
1261 .loc 1 454 0
|
|
|
1262 @ sp needed
|
|
|
1263 0004 7047 bx lr
|
|
|
1264 .L67:
|
|
|
ARM GAS /tmp/ccGAhXKe.s page 43
|
|
|
|
|
|
|
|
|
1265 0006 C046 .align 2
|
|
|
1266 .L66:
|
|
|
1267 0008 00000000 .word .LANCHOR2
|
|
|
1268 .cfi_endproc
|
|
|
1269 .LFE110:
|
|
|
1271 .section .bss.HW_RTC_Initalized,"aw",%nobits
|
|
|
1272 .set .LANCHOR1,. + 0
|
|
|
1275 HW_RTC_Initalized:
|
|
|
1276 0000 00 .space 1
|
|
|
1277 .section .bss.McuWakeUpTimeCal,"aw",%nobits
|
|
|
1278 .align 1
|
|
|
1279 .set .LANCHOR5,. + 0
|
|
|
1282 McuWakeUpTimeCal:
|
|
|
1283 0000 0000 .space 2
|
|
|
1284 .section .bss.McuWakeUpTimeInitialized,"aw",%nobits
|
|
|
1285 .set .LANCHOR3,. + 0
|
|
|
1288 McuWakeUpTimeInitialized:
|
|
|
1289 0000 00 .space 1
|
|
|
1290 .section .bss.RTC_AlarmStructure,"aw",%nobits
|
|
|
1291 .align 2
|
|
|
1292 .set .LANCHOR4,. + 0
|
|
|
1295 RTC_AlarmStructure:
|
|
|
1296 0000 00000000 .space 40
|
|
|
1296 00000000
|
|
|
1296 00000000
|
|
|
1296 00000000
|
|
|
1296 00000000
|
|
|
1297 .section .bss.RtcHandle,"aw",%nobits
|
|
|
1298 .align 2
|
|
|
1299 .set .LANCHOR0,. + 0
|
|
|
1302 RtcHandle:
|
|
|
1303 0000 00000000 .space 36
|
|
|
1303 00000000
|
|
|
1303 00000000
|
|
|
1303 00000000
|
|
|
1303 00000000
|
|
|
1304 .section .bss.RtcTimerContext,"aw",%nobits
|
|
|
1305 .align 2
|
|
|
1306 .set .LANCHOR2,. + 0
|
|
|
1309 RtcTimerContext:
|
|
|
1310 0000 00000000 .space 28
|
|
|
1310 00000000
|
|
|
1310 00000000
|
|
|
1310 00000000
|
|
|
1310 00000000
|
|
|
1311 .section .rodata.DaysInMonth,"a",%progbits
|
|
|
1312 .align 2
|
|
|
1313 .set .LANCHOR7,. + 0
|
|
|
1316 DaysInMonth:
|
|
|
1317 0000 1F .byte 31
|
|
|
1318 0001 1C .byte 28
|
|
|
1319 0002 1F .byte 31
|
|
|
1320 0003 1E .byte 30
|
|
|
1321 0004 1F .byte 31
|
|
|
1322 0005 1E .byte 30
|
|
|
1323 0006 1F .byte 31
|
|
|
1324 0007 1F .byte 31
|
|
|
ARM GAS /tmp/ccGAhXKe.s page 44
|
|
|
|
|
|
|
|
|
1325 0008 1E .byte 30
|
|
|
1326 0009 1F .byte 31
|
|
|
1327 000a 1E .byte 30
|
|
|
1328 000b 1F .byte 31
|
|
|
1329 .section .rodata.DaysInMonthLeapYear,"a",%progbits
|
|
|
1330 .align 2
|
|
|
1331 .set .LANCHOR6,. + 0
|
|
|
1334 DaysInMonthLeapYear:
|
|
|
1335 0000 1F .byte 31
|
|
|
1336 0001 1D .byte 29
|
|
|
1337 0002 1F .byte 31
|
|
|
1338 0003 1E .byte 30
|
|
|
1339 0004 1F .byte 31
|
|
|
1340 0005 1E .byte 30
|
|
|
1341 0006 1F .byte 31
|
|
|
1342 0007 1F .byte 31
|
|
|
1343 0008 1E .byte 30
|
|
|
1344 0009 1F .byte 31
|
|
|
1345 000a 1E .byte 30
|
|
|
1346 000b 1F .byte 31
|
|
|
1347 .text
|
|
|
1348 .Letext0:
|
|
|
1349 .file 3 "/usr/arm-none-eabi/include/machine/_default_types.h"
|
|
|
1350 .file 4 "/usr/arm-none-eabi/include/sys/lock.h"
|
|
|
1351 .file 5 "/usr/arm-none-eabi/include/sys/_types.h"
|
|
|
1352 .file 6 "/usr/lib/gcc/arm-none-eabi/7.2.0/include/stddef.h"
|
|
|
1353 .file 7 "/usr/arm-none-eabi/include/sys/reent.h"
|
|
|
1354 .file 8 "/usr/arm-none-eabi/include/math.h"
|
|
|
1355 .file 9 "/usr/arm-none-eabi/include/sys/_stdint.h"
|
|
|
1356 .file 10 "Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h"
|
|
|
1357 .file 11 "Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l073xx.h"
|
|
|
1358 .file 12 "Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h"
|
|
|
1359 .file 13 "Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_def.h"
|
|
|
1360 .file 14 "Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rtc.h"
|
|
|
1361 .file 15 "Middlewares/Third_Party/Lora/Utilities/utilities.h"
|
|
|
1362 .file 16 "Inc/hw_msp.h"
|
|
|
1363 .file 17 "Middlewares/Third_Party/Lora/Utilities/low_power.h"
|
|
|
1364 .file 18 "Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_cortex.h"
|
|
|
1365 .file 19 "Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rtc_ex.h"
|
|
|
ARM GAS /tmp/ccGAhXKe.s page 45
|
|
|
|
|
|
|
|
|
DEFINED SYMBOLS
|
|
|
*ABS*:0000000000000000 hw_rtc.c
|
|
|
/tmp/ccGAhXKe.s:16 .text.HW_RTC_GetCalendarValue:0000000000000000 $t
|
|
|
/tmp/ccGAhXKe.s:22 .text.HW_RTC_GetCalendarValue:0000000000000000 HW_RTC_GetCalendarValue
|
|
|
/tmp/ccGAhXKe.s:158 .text.HW_RTC_GetCalendarValue:000000000000009c $d
|
|
|
/tmp/ccGAhXKe.s:167 .text.HW_RTC_Init:0000000000000000 $t
|
|
|
/tmp/ccGAhXKe.s:174 .text.HW_RTC_Init:0000000000000000 HW_RTC_Init
|
|
|
/tmp/ccGAhXKe.s:298 .text.HW_RTC_Init:0000000000000080 $d
|
|
|
/tmp/ccGAhXKe.s:307 .text.HW_RTC_setMcuWakeUpTime:0000000000000000 $t
|
|
|
/tmp/ccGAhXKe.s:314 .text.HW_RTC_setMcuWakeUpTime:0000000000000000 HW_RTC_setMcuWakeUpTime
|
|
|
/tmp/ccGAhXKe.s:421 .text.HW_RTC_setMcuWakeUpTime:0000000000000078 $d
|
|
|
/tmp/ccGAhXKe.s:430 .text.HW_RTC_getMcuWakeUpTime:0000000000000000 $t
|
|
|
/tmp/ccGAhXKe.s:437 .text.HW_RTC_getMcuWakeUpTime:0000000000000000 HW_RTC_getMcuWakeUpTime
|
|
|
/tmp/ccGAhXKe.s:454 .text.HW_RTC_getMcuWakeUpTime:0000000000000008 $d
|
|
|
/tmp/ccGAhXKe.s:459 .text.HW_RTC_GetMinimumTimeout:0000000000000000 $t
|
|
|
/tmp/ccGAhXKe.s:466 .text.HW_RTC_GetMinimumTimeout:0000000000000000 HW_RTC_GetMinimumTimeout
|
|
|
/tmp/ccGAhXKe.s:482 .text.HW_RTC_ms2Tick:0000000000000000 $t
|
|
|
/tmp/ccGAhXKe.s:489 .text.HW_RTC_ms2Tick:0000000000000000 HW_RTC_ms2Tick
|
|
|
/tmp/ccGAhXKe.s:516 .text.HW_RTC_Tick2ms:0000000000000000 $t
|
|
|
/tmp/ccGAhXKe.s:523 .text.HW_RTC_Tick2ms:0000000000000000 HW_RTC_Tick2ms
|
|
|
/tmp/ccGAhXKe.s:563 .text.HW_RTC_SetAlarm:0000000000000000 $t
|
|
|
/tmp/ccGAhXKe.s:570 .text.HW_RTC_SetAlarm:0000000000000000 HW_RTC_SetAlarm
|
|
|
/tmp/ccGAhXKe.s:919 .text.HW_RTC_SetAlarm:000000000000017c $d
|
|
|
/tmp/ccGAhXKe.s:936 .text.HW_RTC_GetTimerElapsedTime:0000000000000000 $t
|
|
|
/tmp/ccGAhXKe.s:943 .text.HW_RTC_GetTimerElapsedTime:0000000000000000 HW_RTC_GetTimerElapsedTime
|
|
|
/tmp/ccGAhXKe.s:973 .text.HW_RTC_GetTimerElapsedTime:0000000000000018 $d
|
|
|
/tmp/ccGAhXKe.s:978 .text.HW_RTC_GetTimerValue:0000000000000000 $t
|
|
|
/tmp/ccGAhXKe.s:985 .text.HW_RTC_GetTimerValue:0000000000000000 HW_RTC_GetTimerValue
|
|
|
/tmp/ccGAhXKe.s:1011 .text.HW_RTC_StopAlarm:0000000000000000 $t
|
|
|
/tmp/ccGAhXKe.s:1018 .text.HW_RTC_StopAlarm:0000000000000000 HW_RTC_StopAlarm
|
|
|
/tmp/ccGAhXKe.s:1049 .text.HW_RTC_StopAlarm:000000000000001c $d
|
|
|
/tmp/ccGAhXKe.s:1055 .text.HW_RTC_IrqHandler:0000000000000000 $t
|
|
|
/tmp/ccGAhXKe.s:1062 .text.HW_RTC_IrqHandler:0000000000000000 HW_RTC_IrqHandler
|
|
|
/tmp/ccGAhXKe.s:1114 .text.HW_RTC_IrqHandler:0000000000000038 $d
|
|
|
/tmp/ccGAhXKe.s:1121 .text.HW_RTC_DelayMs:0000000000000000 $t
|
|
|
/tmp/ccGAhXKe.s:1128 .text.HW_RTC_DelayMs:0000000000000000 HW_RTC_DelayMs
|
|
|
/tmp/ccGAhXKe.s:1207 .text.HW_RTC_SetTimerContext:0000000000000000 $t
|
|
|
/tmp/ccGAhXKe.s:1214 .text.HW_RTC_SetTimerContext:0000000000000000 HW_RTC_SetTimerContext
|
|
|
/tmp/ccGAhXKe.s:1239 .text.HW_RTC_SetTimerContext:0000000000000014 $d
|
|
|
/tmp/ccGAhXKe.s:1244 .text.HW_RTC_GetTimerContext:0000000000000000 $t
|
|
|
/tmp/ccGAhXKe.s:1251 .text.HW_RTC_GetTimerContext:0000000000000000 HW_RTC_GetTimerContext
|
|
|
/tmp/ccGAhXKe.s:1267 .text.HW_RTC_GetTimerContext:0000000000000008 $d
|
|
|
/tmp/ccGAhXKe.s:1275 .bss.HW_RTC_Initalized:0000000000000000 HW_RTC_Initalized
|
|
|
/tmp/ccGAhXKe.s:1276 .bss.HW_RTC_Initalized:0000000000000000 $d
|
|
|
/tmp/ccGAhXKe.s:1278 .bss.McuWakeUpTimeCal:0000000000000000 $d
|
|
|
/tmp/ccGAhXKe.s:1282 .bss.McuWakeUpTimeCal:0000000000000000 McuWakeUpTimeCal
|
|
|
/tmp/ccGAhXKe.s:1288 .bss.McuWakeUpTimeInitialized:0000000000000000 McuWakeUpTimeInitialized
|
|
|
/tmp/ccGAhXKe.s:1289 .bss.McuWakeUpTimeInitialized:0000000000000000 $d
|
|
|
/tmp/ccGAhXKe.s:1291 .bss.RTC_AlarmStructure:0000000000000000 $d
|
|
|
/tmp/ccGAhXKe.s:1295 .bss.RTC_AlarmStructure:0000000000000000 RTC_AlarmStructure
|
|
|
/tmp/ccGAhXKe.s:1298 .bss.RtcHandle:0000000000000000 $d
|
|
|
/tmp/ccGAhXKe.s:1302 .bss.RtcHandle:0000000000000000 RtcHandle
|
|
|
/tmp/ccGAhXKe.s:1305 .bss.RtcTimerContext:0000000000000000 $d
|
|
|
/tmp/ccGAhXKe.s:1309 .bss.RtcTimerContext:0000000000000000 RtcTimerContext
|
|
|
/tmp/ccGAhXKe.s:1312 .rodata.DaysInMonth:0000000000000000 $d
|
|
|
/tmp/ccGAhXKe.s:1316 .rodata.DaysInMonth:0000000000000000 DaysInMonth
|
|
|
/tmp/ccGAhXKe.s:1330 .rodata.DaysInMonthLeapYear:0000000000000000 $d
|
|
|
ARM GAS /tmp/ccGAhXKe.s page 46
|
|
|
|
|
|
|
|
|
/tmp/ccGAhXKe.s:1334 .rodata.DaysInMonthLeapYear:0000000000000000 DaysInMonthLeapYear
|
|
|
.debug_frame:0000000000000010 $d
|
|
|
|
|
|
UNDEFINED SYMBOLS
|
|
|
HAL_RTC_GetTime
|
|
|
HAL_RTC_GetDate
|
|
|
HAL_RTC_Init
|
|
|
HAL_RTC_SetDate
|
|
|
HAL_RTC_SetTime
|
|
|
HAL_RTCEx_EnableBypassShadow
|
|
|
HAL_RTC_DeactivateAlarm
|
|
|
HAL_NVIC_GetPendingIRQ
|
|
|
HAL_RTC_GetAlarm
|
|
|
__aeabi_uldivmod
|
|
|
__aeabi_idivmod
|
|
|
LowPower_Enable
|
|
|
LowPower_GetState
|
|
|
LowPower_Disable
|
|
|
HAL_RTC_SetAlarm_IT
|
|
|
HAL_RTC_AlarmAEventCallback
|
|
|
|