From 0b0d0f487564428c474a29c0f0fb3686c5168fb6 Mon Sep 17 00:00:00 2001 From: Mitchell M Date: Wed, 12 Jun 2024 22:57:35 -0500 Subject: [PATCH] rfid working --- Core/Inc/RFID.h | 196 + Core/Inc/main.h | 3 + Core/Src/RFID.c | 341 + Core/Src/main.c | 34 +- Core/Src/stm32g0xx_hal_msp.c | 6 +- Debug/Core/Src/RFID.cyclo | 15 + Debug/Core/Src/RFID.d | 69 + Debug/Core/Src/RFID.o | Bin 0 -> 760556 bytes Debug/Core/Src/RFID.su | 15 + Debug/Core/Src/main.cyclo | 30 +- Debug/Core/Src/main.d | 4 +- Debug/Core/Src/main.o | Bin 766504 -> 770676 bytes Debug/Core/Src/main.su | 30 +- Debug/Core/Src/stm32g0xx_hal_msp.cyclo | 6 +- Debug/Core/Src/stm32g0xx_hal_msp.o | Bin 732904 -> 732980 bytes Debug/Core/Src/stm32g0xx_hal_msp.su | 6 +- Debug/Core/Src/stm32g0xx_it.o | Bin 724216 -> 724292 bytes Debug/Core/Src/subdir.mk | 5 +- Debug/blk_box_bc.elf | Bin 889624 -> 905776 bytes Debug/blk_box_bc.list | 24751 ++++++++++++----------- Debug/blk_box_bc.map | 1756 +- Debug/objects.list | 1 + blk_box_bc Debug.launch | 1 + blk_box_bc.ioc | 9 +- 24 files changed, 14363 insertions(+), 12915 deletions(-) create mode 100644 Core/Inc/RFID.h create mode 100644 Core/Src/RFID.c create mode 100644 Debug/Core/Src/RFID.cyclo create mode 100644 Debug/Core/Src/RFID.d create mode 100644 Debug/Core/Src/RFID.o create mode 100644 Debug/Core/Src/RFID.su diff --git a/Core/Inc/RFID.h b/Core/Inc/RFID.h new file mode 100644 index 0000000..ab647c2 --- /dev/null +++ b/Core/Inc/RFID.h @@ -0,0 +1,196 @@ +/* + * RFID.h + * + * Created on: Jan 16, 2022 + * Author: hussam + */ + + + +#ifndef RFID_H_ +#define RFID_H_ + + +#include "stdbool.h" +#include "stdint.h" + + +#define MFRC522_CS_LOW MFRC522_CS_PORT->BSRRH = MFRC522_CS_PIN; +#define MFRC522_CS_HIGH MFRC522_CS_PORT->BSRRL = MFRC522_CS_PIN; + +/* MFRC522 Commands */ +#define PCD_IDLE 0x00 //NO action; Cancel the current command +#define PCD_AUTHENT 0x0E //Authentication Key +#define PCD_RECEIVE 0x08 //Receive Data +#define PCD_TRANSMIT 0x04 //Transmit data +#define PCD_TRANSCEIVE 0x0C //Transmit and receive data, +#define PCD_RESETPHASE 0x0F //Reset +#define PCD_CALCCRC 0x03 //CRC Calculate + +/* Mifare_One card command word */ +#define PICC_REQIDL 0x26 // find the antenna area does not enter hibernation +#define PICC_REQALL 0x52 // find all the cards antenna area +#define PICC_ANTICOLL 0x93 // anti-collision +#define PICC_SElECTTAG 0x93 // election card +#define PICC_AUTHENT1A 0x60 // authentication key A +#define PICC_AUTHENT1B 0x61 // authentication key B +#define PICC_READ 0x30 // Read Block +#define PICC_WRITE 0xA0 // write block +#define PICC_DECREMENT 0xC0 // debit +#define PICC_INCREMENT 0xC1 // recharge +#define PICC_RESTORE 0xC2 // transfer block data to the buffer +#define PICC_TRANSFER 0xB0 // save the data in the buffer +#define PICC_HALT 0x50 // Sleep + +/* MFRC522 Registers */ +//Page 0: Command and Status +#define MFRC522_REG_RESERVED00 0x00 +#define MFRC522_REG_COMMAND 0x01 +#define MFRC522_REG_COMM_IE_N 0x02 +#define MFRC522_REG_DIV1_EN 0x03 +#define MFRC522_REG_COMM_IRQ 0x04 +#define MFRC522_REG_DIV_IRQ 0x05 +#define MFRC522_REG_ERROR 0x06 +#define MFRC522_REG_STATUS1 0x07 +#define MFRC522_REG_STATUS2 0x08 +#define MFRC522_REG_FIFO_DATA 0x09 +#define MFRC522_REG_FIFO_LEVEL 0x0A +#define MFRC522_REG_WATER_LEVEL 0x0B +#define MFRC522_REG_CONTROL 0x0C +#define MFRC522_REG_BIT_FRAMING 0x0D +#define MFRC522_REG_COLL 0x0E +#define MFRC522_REG_RESERVED01 0x0F +//Page 1: Command +#define MFRC522_REG_RESERVED10 0x10 +#define MFRC522_REG_MODE 0x11 +#define MFRC522_REG_TX_MODE 0x12 +#define MFRC522_REG_RX_MODE 0x13 +#define MFRC522_REG_TX_CONTROL 0x14 +#define MFRC522_REG_TX_AUTO 0x15 +#define MFRC522_REG_TX_SELL 0x16 +#define MFRC522_REG_RX_SELL 0x17 +#define MFRC522_REG_RX_THRESHOLD 0x18 +#define MFRC522_REG_DEMOD 0x19 +#define MFRC522_REG_RESERVED11 0x1A +#define MFRC522_REG_RESERVED12 0x1B +#define MFRC522_REG_MIFARE 0x1C +#define MFRC522_REG_RESERVED13 0x1D +#define MFRC522_REG_RESERVED14 0x1E +#define MFRC522_REG_SERIALSPEED 0x1F +//Page 2: CFG +#define MFRC522_REG_RESERVED20 0x20 +#define MFRC522_REG_CRC_RESULT_M 0x21 +#define MFRC522_REG_CRC_RESULT_L 0x22 +#define MFRC522_REG_RESERVED21 0x23 +#define MFRC522_REG_MOD_WIDTH 0x24 +#define MFRC522_REG_RESERVED22 0x25 +#define MFRC522_REG_RF_CFG 0x26 +#define MFRC522_REG_GS_N 0x27 +#define MFRC522_REG_CWGS_PREG 0x28 +#define MFRC522_REG__MODGS_PREG 0x29 +#define MFRC522_REG_T_MODE 0x2A +#define MFRC522_REG_T_PRESCALER 0x2B +#define MFRC522_REG_T_RELOAD_H 0x2C +#define MFRC522_REG_T_RELOAD_L 0x2D +#define MFRC522_REG_T_COUNTER_VALUE_H 0x2E +#define MFRC522_REG_T_COUNTER_VALUE_L 0x2F +//Page 3:TestRegister +#define MFRC522_REG_RESERVED30 0x30 +#define MFRC522_REG_TEST_SEL1 0x31 +#define MFRC522_REG_TEST_SEL2 0x32 +#define MFRC522_REG_TEST_PIN_EN 0x33 +#define MFRC522_REG_TEST_PIN_VALUE 0x34 +#define MFRC522_REG_TEST_BUS 0x35 +#define MFRC522_REG_AUTO_TEST 0x36 +#define MFRC522_REG_VERSION 0x37 +#define MFRC522_REG_ANALOG_TEST 0x38 +#define MFRC522_REG_TEST_ADC1 0x39 +#define MFRC522_REG_TEST_ADC2 0x3A +#define MFRC522_REG_TEST_ADC0 0x3B +#define MFRC522_REG_RESERVED31 0x3C +#define MFRC522_REG_RESERVED32 0x3D +#define MFRC522_REG_RESERVED33 0x3E +#define MFRC522_REG_RESERVED34 0x3F +//Dummy byte +#define MFRC522_DUMMY 0x00 + +#define MFRC522_MAX_LEN 16 + + +/** + * @brief initialize function + */ +void rc522_init(void); + +/** + * @brief read register + */ +uint8_t rc522_regRead8(uint8_t reg); + +/** + * @brief write register + */ +void rc522_regWrite8(uint8_t reg, uint8_t data8); + +/** + * @brief set bit + */ +void rc522_setBit(uint8_t reg, uint8_t mask); + +/** + * @brief clear bit + */ +void rc522_clearBit(uint8_t reg, uint8_t mask); + +/** + * @brief reset function + */ +void rc522_reset(void); + +/** + * @brief Antenna ON + */ +void rc522_antennaON(void); + +/** + * @brief Check card + */ +bool rc522_checkCard(uint8_t *id); + +/** + * @brief Request function + */ +bool rc522_request(uint8_t reqMode, uint8_t *tagType); + +/** + * @brief to Card + */ +bool rc522_toCard( + uint8_t command, + uint8_t* sendData, + uint8_t sendLen, + uint8_t* backData, + uint16_t* backLen); + +/** + * @brief Anti-Collis + */ +bool rc522_antiColl(uint8_t* serNum); + +/** + * @brief Halt + */ +void rc522_halt(void); + +/** + * @brief calculate CRC + */ +void rc522_calculateCRC(uint8_t* pIndata, uint8_t len, uint8_t* pOutData); + +/** + * @brief compare IDs + */ +bool rc522_compareIds(uint8_t *idCurrent, uint8_t *idReference); + + +#endif /* RFID_H_ */ diff --git a/Core/Inc/main.h b/Core/Inc/main.h index aad5768..02b2994 100644 --- a/Core/Inc/main.h +++ b/Core/Inc/main.h @@ -54,11 +54,14 @@ void Error_Handler(void); /* USER CODE BEGIN EFP */ +extern SPI_HandleTypeDef hspi1; /* USER CODE END EFP */ /* Private defines -----------------------------------------------------------*/ #define INT_Pin GPIO_PIN_1 #define INT_GPIO_Port GPIOA +#define RFID_CS_Pin GPIO_PIN_4 +#define RFID_CS_GPIO_Port GPIOA #define HALL_Pin GPIO_PIN_0 #define HALL_GPIO_Port GPIOB #define CLOSE_Pin GPIO_PIN_1 diff --git a/Core/Src/RFID.c b/Core/Src/RFID.c new file mode 100644 index 0000000..42a72fb --- /dev/null +++ b/Core/Src/RFID.c @@ -0,0 +1,341 @@ +#include "RFID.h" +#include "main.h" +#include "stdbool.h" +#include "stdio.h" + +/** + * @brief initialize function + */ + +/** + * @brief read register + */ + + +bool rc522_toCard( + uint8_t command, + uint8_t* sendData, + uint8_t sendLen, + uint8_t* backData, + uint16_t* backLen); + +bool rc522_request(uint8_t reqMode, uint8_t *tagType); + +bool rc522_antiColl(uint8_t* serNum); + +void spi_cs_rfid_write(bool state) +{ + HAL_GPIO_WritePin(RFID_CS_GPIO_Port, RFID_CS_Pin, state); +} + +uint8_t rc522_regRead8(uint8_t reg) +{ + spi_cs_rfid_write(0); + reg = ((reg << 1) & 0x7E) | 0x80; +// spi1_transmit(®, 1); + // TODO: change to interrupting or something. + HAL_SPI_Transmit(&hspi1, ®, 1, 1000); + uint8_t dataRd=0; + HAL_SPI_Receive(&hspi1, &dataRd, 1, 1000); +// spi1_receive(&dataRd, 1); + spi_cs_rfid_write(1); + return dataRd; +} + +/** + * @brief write register + */ +void rc522_regWrite8(uint8_t reg, uint8_t data8) +{ + spi_cs_rfid_write(0); + uint8_t txData[2] = {0x7E&(reg << 1), data8}; +// spi1_transmit(txData, 2); + HAL_SPI_Transmit(&hspi1, (uint8_t*)&txData, 2, 1000); + spi_cs_rfid_write(1); +} + +/** + * @brief set bit + */ +void rc522_setBit(uint8_t reg, uint8_t mask) +{ + rc522_regWrite8(reg, rc522_regRead8(reg)|mask); +} + +/** + * @brief clear bit + */ +void rc522_clearBit(uint8_t reg, uint8_t mask) +{ + rc522_regWrite8(reg, rc522_regRead8(reg)&(~mask)); +} + +/** + * @brief reset function + */ +void rc522_reset(void) +{ + rc522_regWrite8(0x01, 0x0F); +} + +/** + * @brief Antenna ON + */ +void rc522_antennaON(void) +{ + uint8_t temp; + + temp = rc522_regRead8(MFRC522_REG_TX_CONTROL); + if (!(temp & 0x03)) { + rc522_setBit(MFRC522_REG_TX_CONTROL, 0x03); + } +} + +/** + * @brief Check card + */ +bool rc522_checkCard(uint8_t *id) +{ + bool status=false; + //Find cards, return card type + status = rc522_request(PICC_REQIDL, id); + if (status == true) { + //Card detected + //Anti-collision, return card serial number 4 bytes + status = rc522_antiColl(id); + } + rc522_halt(); //Command card into hibernation + + return status; +} + +/** + * @brief Request function + */ +bool rc522_request(uint8_t reqMode, uint8_t *tagType) +{ + bool status=false; + uint16_t backBits; + rc522_regWrite8(MFRC522_REG_BIT_FRAMING, 0x07); + tagType[0] = reqMode; + status = rc522_toCard(PCD_TRANSCEIVE, tagType, 1, tagType, &backBits); + if ((status != true) || (backBits != 0x10)) { + status = false; + } + return status; +} + +/** + * @brief to Card + */ +bool rc522_toCard( + uint8_t command, + uint8_t* sendData, + uint8_t sendLen, + uint8_t* backData, + uint16_t* backLen) +{ + bool status = false; + uint8_t irqEn = 0x00; + uint8_t waitIRq = 0x00; + uint8_t lastBits; + uint8_t n; + uint16_t i; + + switch (command) { + case PCD_AUTHENT: { + irqEn = 0x12; + waitIRq = 0x10; + break; + } + case PCD_TRANSCEIVE: { + irqEn = 0x77; + waitIRq = 0x30; + break; + } + default: + break; + } + + rc522_regWrite8(MFRC522_REG_COMM_IE_N, irqEn | 0x80); + rc522_clearBit(MFRC522_REG_COMM_IRQ, 0x80); + rc522_setBit(MFRC522_REG_FIFO_LEVEL, 0x80); + + rc522_regWrite8(MFRC522_REG_COMMAND, PCD_IDLE); + + //Writing data to the FIFO + for (i = 0; i < sendLen; i++) { + rc522_regWrite8(MFRC522_REG_FIFO_DATA, sendData[i]); + } + + //Execute the command + rc522_regWrite8(MFRC522_REG_COMMAND, command); + if (command == PCD_TRANSCEIVE) { + rc522_setBit(MFRC522_REG_BIT_FRAMING, 0x80); //StartSend=1,transmission of data starts + } + + //Waiting to receive data to complete + i = 100; //i according to the clock frequency adjustment, the operator M1 card maximum waiting time 25ms??? + do { + //CommIrqReg[7..0] + //Set1 TxIRq RxIRq IdleIRq HiAlerIRq LoAlertIRq ErrIRq TimerIRq + n = rc522_regRead8(MFRC522_REG_COMM_IRQ); + i--; + } while ((i!=0) && !(n&0x01) && !(n&waitIRq)); + + rc522_clearBit(MFRC522_REG_BIT_FRAMING, 0x80); //StartSend=0 + + if (i != 0) { + if (!(rc522_regRead8(MFRC522_REG_ERROR) & 0x1B)) { + status = true; + if (n & irqEn & 0x01) { + status = false; + } + + if (command == PCD_TRANSCEIVE) { + n = rc522_regRead8(MFRC522_REG_FIFO_LEVEL); + uint8_t l = n; + lastBits = rc522_regRead8(MFRC522_REG_CONTROL) & 0x07; + if (lastBits) { + *backLen = (n - 1) * 8 + lastBits; + } else { + *backLen = n * 8; + } + + if (n == 0) { + n = 1; + } + if (n > MFRC522_MAX_LEN) { + n = MFRC522_MAX_LEN; + } + + //Reading the received data in FIFO + for (i = 0; i < n; i++) { + uint8_t d = rc522_regRead8(MFRC522_REG_FIFO_DATA); + if (l == 4) + printf("%02x ", d); + backData[i] = d; + } + if (l==4) + printf("\r\n"); + return status; + } + } else { + printf("error\r\n"); + status = false; + } + } + + return status; +} + +bool rc522_antiColl(uint8_t* serNum) +{ + bool status; + uint8_t i; + uint8_t serNumCheck = 0; + uint16_t unLen; + //for (i = 0; i < 4; i++) +// printf("Anticoll In %d: 0x%02x\r\n", i, serNum[i]); + + + rc522_regWrite8(MFRC522_REG_BIT_FRAMING, 0x00); //TxLastBists = BitFramingReg[2..0] + + serNum[0] = PICC_ANTICOLL; + serNum[1] = 0x20; + status = rc522_toCard(PCD_TRANSCEIVE, serNum, 2, serNum, &unLen); + + //for (i = 0; i < 4; i++) +// printf("Anticoll ToCard %d: 0x%02x\r\n", i, serNum[i]); + + if (status == true) { + //Check card serial number + for (i = 0; i < 4; i++) { + serNumCheck ^= serNum[i]; + } + if (serNumCheck != serNum[i]) { + status = false; + } + } + return status; +} + +void rc522_halt(void) +{ + uint16_t unLen; + uint8_t buff[4]; + + buff[0] = PICC_HALT; + buff[1] = 0; + rc522_calculateCRC(buff, 2, &buff[2]); + + rc522_toCard(PCD_TRANSCEIVE, buff, 4, buff, &unLen); +} + +void rc522_calculateCRC(uint8_t* pIndata, uint8_t len, uint8_t* pOutData) +{ + uint8_t i, n; + + rc522_clearBit(MFRC522_REG_DIV_IRQ, 0x04); //CRCIrq = 0 + rc522_setBit(MFRC522_REG_FIFO_LEVEL, 0x80); //Clear the FIFO pointer + //Write_MFRC522(CommandReg, PCD_IDLE); + + //Writing data to the FIFO + for (i = 0; i < len; i++) { + rc522_regWrite8(MFRC522_REG_FIFO_DATA, *(pIndata+i)); + } + rc522_regWrite8(MFRC522_REG_COMMAND, PCD_CALCCRC); + + //Wait CRC calculation is complete + i = 0xFF; + do { + n = rc522_regRead8(MFRC522_REG_DIV_IRQ); + i--; + } while ((i!=0) && !(n&0x04)); //CRCIrq = 1 + + //Read CRC calculation result + pOutData[0] = rc522_regRead8(MFRC522_REG_CRC_RESULT_L); + pOutData[1] = rc522_regRead8(MFRC522_REG_CRC_RESULT_M); +} + +/** + * @brief compare IDs + */ +bool rc522_compareIds(uint8_t *idCurrent, uint8_t *idReference) +{ + uint8_t i; + for(i=0; i<4;i++) + { + if(idCurrent[i] != idReference[i]) + { + return false; + } + } + return true; +} + +void rc522_init(void) +{ + /* + * STM32 ->RFID + * SPI -> SPI + * PA8 ->RST + * PB0 ->CS + * */ + + HAL_GPIO_WritePin(RFID_RST_GPIO_Port, RFID_RST_Pin, 0); + HAL_GPIO_WritePin(RFID_RST_GPIO_Port, RFID_RST_Pin, 1); + rc522_reset(); + + rc522_regWrite8(MFRC522_REG_T_MODE, 0x80); + rc522_regWrite8(MFRC522_REG_T_PRESCALER, 0xA9); + rc522_regWrite8(MFRC522_REG_T_RELOAD_L, 0xE8); + rc522_regWrite8(MFRC522_REG_T_RELOAD_H, 0x03); + + + rc522_regWrite8(MFRC522_REG_TX_AUTO, 0x40); + rc522_regWrite8(MFRC522_REG_MODE, 0x3D); + + rc522_antennaON(); //Open the antenna +} + diff --git a/Core/Src/main.c b/Core/Src/main.c index 82440c0..f413f62 100644 --- a/Core/Src/main.c +++ b/Core/Src/main.c @@ -21,6 +21,7 @@ /* Private includes ----------------------------------------------------------*/ /* USER CODE BEGIN Includes */ +#include "RFID.h" #include /* USER CODE END Includes */ @@ -128,22 +129,27 @@ int main(void) /* USER CODE BEGIN 2 */ init_keypad(); init_buttons(); + rc522_init(); printf("Hello, world!\r\n"); /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ + uint8_t rfid_id[4] = {0}; while (1) { - HAL_Delay(100); - scan_keypad(); - scan_buttons(); + HAL_Delay(500); +// scan_keypad(); +// scan_buttons(); // printBinary(keypad_state); - printf("s: %d\r\n", keypad_state); - printf("r: %d\r\n", recv_cnt); - printf("d: %d %d %d %d, %d %d %d %d\r\n", data[0], data[1], data[2], data[3], data[4], data[5], data[6], data[7]); - HAL_I2C_Slave_Receive_IT(&hi2c1, (uint8_t*)&data, 8); +// printf("s: %d\r\n", keypad_state); +// printf("r: %d\r\n", recv_cnt); +// printf("d: %d %d %d %d, %d %d %d %d\r\n", data[0], data[1], data[2], data[3], data[4], data[5], data[6], data[7]); +// HAL_I2C_Slave_Receive_IT(&hi2c1, (uint8_t*)&data, 8); + if(rc522_checkCard(rfid_id)) { + printf("0x%x 0x%x 0x%x 0x%x\r\n", rfid_id[0], rfid_id[1], rfid_id[2], rfid_id[3]); + } /* USER CODE END WHILE */ @@ -257,10 +263,10 @@ static void MX_SPI1_Init(void) hspi1.Instance = SPI1; hspi1.Init.Mode = SPI_MODE_MASTER; hspi1.Init.Direction = SPI_DIRECTION_2LINES; - hspi1.Init.DataSize = SPI_DATASIZE_4BIT; + hspi1.Init.DataSize = SPI_DATASIZE_8BIT; hspi1.Init.CLKPolarity = SPI_POLARITY_LOW; hspi1.Init.CLKPhase = SPI_PHASE_1EDGE; - hspi1.Init.NSS = SPI_NSS_HARD_OUTPUT; + hspi1.Init.NSS = SPI_NSS_SOFT; hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2; hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB; hspi1.Init.TIMode = SPI_TIMODE_DISABLE; @@ -344,6 +350,9 @@ static void MX_GPIO_Init(void) __HAL_RCC_GPIOC_CLK_ENABLE(); __HAL_RCC_GPIOD_CLK_ENABLE(); + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(RFID_CS_GPIO_Port, RFID_CS_Pin, GPIO_PIN_RESET); + /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(RFID_RST_GPIO_Port, RFID_RST_Pin, GPIO_PIN_RESET); @@ -364,6 +373,13 @@ static void MX_GPIO_Init(void) GPIO_InitStruct.Alternate = GPIO_AF7_EVENTOUT; HAL_GPIO_Init(INT_GPIO_Port, &GPIO_InitStruct); + /*Configure GPIO pin : RFID_CS_Pin */ + GPIO_InitStruct.Pin = RFID_CS_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(RFID_CS_GPIO_Port, &GPIO_InitStruct); + /*Configure GPIO pins : HALL_Pin CLOSE_Pin */ GPIO_InitStruct.Pin = HALL_Pin|CLOSE_Pin; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; diff --git a/Core/Src/stm32g0xx_hal_msp.c b/Core/Src/stm32g0xx_hal_msp.c index ded7ebc..fa502c5 100644 --- a/Core/Src/stm32g0xx_hal_msp.c +++ b/Core/Src/stm32g0xx_hal_msp.c @@ -182,12 +182,11 @@ void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi) __HAL_RCC_GPIOA_CLK_ENABLE(); /**SPI1 GPIO Configuration - PA4 ------> SPI1_NSS PA5 ------> SPI1_SCK PA6 ------> SPI1_MISO PA7 ------> SPI1_MOSI */ - GPIO_InitStruct.Pin = GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7; + GPIO_InitStruct.Pin = GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; @@ -218,12 +217,11 @@ void HAL_SPI_MspDeInit(SPI_HandleTypeDef* hspi) __HAL_RCC_SPI1_CLK_DISABLE(); /**SPI1 GPIO Configuration - PA4 ------> SPI1_NSS PA5 ------> SPI1_SCK PA6 ------> SPI1_MISO PA7 ------> SPI1_MOSI */ - HAL_GPIO_DeInit(GPIOA, GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7); + HAL_GPIO_DeInit(GPIOA, GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7); /* USER CODE BEGIN SPI1_MspDeInit 1 */ diff --git a/Debug/Core/Src/RFID.cyclo b/Debug/Core/Src/RFID.cyclo new file mode 100644 index 0000000..b9e6e54 --- /dev/null +++ b/Debug/Core/Src/RFID.cyclo @@ -0,0 +1,15 @@ +../Core/Src/RFID.c:26:6:spi_cs_rfid_write 1 +../Core/Src/RFID.c:31:9:rc522_regRead8 1 +../Core/Src/RFID.c:48:6:rc522_regWrite8 1 +../Core/Src/RFID.c:60:6:rc522_setBit 1 +../Core/Src/RFID.c:68:6:rc522_clearBit 1 +../Core/Src/RFID.c:76:6:rc522_reset 1 +../Core/Src/RFID.c:84:6:rc522_antennaON 2 +../Core/Src/RFID.c:97:6:rc522_checkCard 2 +../Core/Src/RFID.c:115:6:rc522_request 3 +../Core/Src/RFID.c:131:6:rc522_toCard 18 +../Core/Src/RFID.c:232:6:rc522_antiColl 4 +../Core/Src/RFID.c:263:6:rc522_halt 1 +../Core/Src/RFID.c:275:6:rc522_calculateCRC 4 +../Core/Src/RFID.c:304:6:rc522_compareIds 3 +../Core/Src/RFID.c:317:6:rc522_init 1 diff --git a/Debug/Core/Src/RFID.d b/Debug/Core/Src/RFID.d new file mode 100644 index 0000000..07b5c71 --- /dev/null +++ b/Debug/Core/Src/RFID.d @@ -0,0 +1,69 @@ +Core/Src/RFID.o: ../Core/Src/RFID.c ../Core/Inc/RFID.h ../Core/Inc/main.h \ + ../Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal.h \ + ../Core/Inc/stm32g0xx_hal_conf.h \ + ../Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_rcc.h \ + ../Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_def.h \ + ../Drivers/CMSIS/Device/ST/STM32G0xx/Include/stm32g0xx.h \ + ../Drivers/CMSIS/Device/ST/STM32G0xx/Include/stm32g070xx.h \ + ../Drivers/CMSIS/Include/core_cm0plus.h \ + ../Drivers/CMSIS/Include/cmsis_version.h \ + ../Drivers/CMSIS/Include/cmsis_compiler.h \ + ../Drivers/CMSIS/Include/cmsis_gcc.h \ + ../Drivers/CMSIS/Include/mpu_armv7.h \ + ../Drivers/CMSIS/Device/ST/STM32G0xx/Include/system_stm32g0xx.h \ + ../Drivers/STM32G0xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + ../Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_ll_rcc.h \ + ../Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_rcc_ex.h \ + ../Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_gpio.h \ + ../Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_gpio_ex.h \ + ../Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_dma.h \ + ../Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_ll_dma.h \ + ../Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_ll_dmamux.h \ + ../Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_dma_ex.h \ + ../Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_cortex.h \ + ../Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_exti.h \ + ../Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_flash.h \ + ../Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_flash_ex.h \ + ../Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_i2c.h \ + ../Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_i2c_ex.h \ + ../Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_pwr.h \ + ../Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_pwr_ex.h \ + ../Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_spi.h \ + ../Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_spi_ex.h \ + ../Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_uart.h \ + ../Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_uart_ex.h +../Core/Inc/RFID.h: +../Core/Inc/main.h: +../Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal.h: +../Core/Inc/stm32g0xx_hal_conf.h: +../Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_rcc.h: +../Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_def.h: +../Drivers/CMSIS/Device/ST/STM32G0xx/Include/stm32g0xx.h: +../Drivers/CMSIS/Device/ST/STM32G0xx/Include/stm32g070xx.h: +../Drivers/CMSIS/Include/core_cm0plus.h: +../Drivers/CMSIS/Include/cmsis_version.h: +../Drivers/CMSIS/Include/cmsis_compiler.h: +../Drivers/CMSIS/Include/cmsis_gcc.h: +../Drivers/CMSIS/Include/mpu_armv7.h: +../Drivers/CMSIS/Device/ST/STM32G0xx/Include/system_stm32g0xx.h: +../Drivers/STM32G0xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: +../Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_ll_rcc.h: +../Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_rcc_ex.h: +../Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_gpio.h: +../Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_gpio_ex.h: +../Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_dma.h: +../Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_ll_dma.h: +../Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_ll_dmamux.h: +../Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_dma_ex.h: +../Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_cortex.h: +../Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_exti.h: +../Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_flash.h: +../Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_flash_ex.h: +../Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_i2c.h: +../Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_i2c_ex.h: +../Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_pwr.h: +../Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_pwr_ex.h: +../Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_spi.h: +../Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_spi_ex.h: +../Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_uart.h: +../Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_uart_ex.h: diff --git a/Debug/Core/Src/RFID.o b/Debug/Core/Src/RFID.o new file mode 100644 index 0000000000000000000000000000000000000000..2beec224e1c35d088bba47691486df972414203b GIT binary patch literal 760556 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%0A7G~ioP8OdLahhrfNGfa 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%0DUgSauJ$fecP|DKf}>mA9hWFB3G&4tYta$|yJt zFLf$k4b@5%^t)(6wD`#|z_160y9=74e_&pUnf;A%eKvN}msr_hUakasXI{6YxJ3Pd z;*Le?*pu$5CqdJ*pqM8g#USL>3=B?~;I17pMC(he;c#r>nG~8ytyUT(Hjn?Jsj2~N z$McG9-1YogOCU@jG4GzDmlRRNF9g-mOa2gf@X%L}!mJBISPdQ=7ce0PC1(TR}TG?=+8yt&xgdqXXTt!nDjFP_TH6EP7 zp=`TJ@n%hS-y4=(BNIegpf48xcE7y(@Mp+MbH=%ceUcjKLhhC+S|szWAZVlv11uQRk(G2FH}Y+eLs-;=kNp7^_b{dNH-FRNGRVi3M(kkB-AUrpFdd4GK{j244w5J$@-0XJk6DSwaa`Bguoi>Q zM$sY25<_q;qnG?59mV=WMPkZi$x&HDF(rWh zV1YY>+ugU|EAx8^Twz6rTs{i8cZY_G^nc{%QZ)bbhj^HE` zZsJ?c&K70nX#vp7J1>)v5ou)PWvciL80(Vk`e^`SDM!-RCmA*Ma2h)V*3-%8SY>E! zY!1pQRR_JYWG=DoGwj|eNc9H``n(8RYrhH+aP-(nma+k7$^ z+LbW9i;-;+d&x!egn?|LxG8F^0Pi)bfDj%WUj6VV#;ekcP(n!^=D4k$6jTtiF(^d{ z=O&mkLg1kZ=cJp^vYW%8co`kNQ6ZwK$vZn*T^0^ zpRR8&9|8f5&Yb+K26SN-U^9uaFcvtgcOyhD^CrGcBtT`en%y+jX}AK(IN)^Q zDugSmPis*G8S82oza!6b+qV#m|B=avhTf>icu-i|3`bt;r*Mx_T_3I=?-5zE^W%>{ zGJ%)H3D(G(x@8&t9dEl3X9*1SebXy75^Zb3Pv4-X8zEVsuWPH$#1rUiT3q%ucBiUfcxWpE9+P@M3ccR1`S?9 zMY@NO(nfdGwIt|q=zvsg_a zzh;$JUYqPf``)9cqqaO)PbeNMiATd0_~#mT^PQf$)pYp()~zH%cy;B^HhZi8PF+d5{R~Os2qWd01Ss2mH~g@{F&^UUBxnvnisr=(MS^Ss^%H# zbsqo-_fvZU0pp? z!9k3ew3x`*yR+`j%fD|M?_srw%oAK8=~{yjCdio;sAU<$Z4vrXZe>YtqT#~ zR%I3LS^X6^BD=;C8{r9KyKx)B2)3^=tNW~3%oZoP1U@b-LtlRd!8U|K^>X_NBz9(6?FXN7d!dcDqr7J}a z)Xdk~OK_t#I7n_(-JHBITKHs%P)PpJZphoMfd2HK#9G^86)T7y9t>+1rx>q<5us}K za^62*oSiPA(VvY#u$S}c1ho%Q zG)bdzl1%AV`35>2T}8H`VBhog&GD2OL7|kT$_SDoa5>cV$O9DZ9)*xAqLIor==IUT zNU3JhaIz4q;v_VHdNqmh2*p5*7H2}7g;`HOAIkqES!ZS$#p`nO8%Y3 zG&igq91ZWet|(^<4^-_D+%`*ZO1%yTFEyly+O)B&20Y%y^d5S8JZz?GSECnan=ix5 zhs*x;)#sZph=)+%W^o3P9uQoI*s??`mC`B~BX$XGh1xA+nBtJ(JP@nq_dMpM~Hqgu&`W%$n~H$xNany^0p32=_lVT z2DC_qUm#DJ1I(`kCyFp!UsUG^VOvJWVK@cF1R3Mc8=tP#9vjuG1k)#jd84G6$IW=4 zue{;`wN258-3FBw<0eBd=%1m}V2=EB3Z-UK3=Pg4Re_EwhC$!=Ppea$mh(PK#aMDZ z*x~Ub8Uvws)8~g@*RPj%mpAvHHh1@uGzeXR+j}9%*MW5`w2OrXs#5!2DT^Cf0MkOm z3dI<*nl52|nCOWXOXa1u;r`(x>Wbm0BR~sVg(kK;c9DmjVJq}Vnha-XB=7ba60ui> z`MK~2rZY*LA3r4!!45)!C>lk05qtK8H=*lFbM(ICi$qLd1MIkMLI zu~I{fs#id*VWzj7purLpTCuK%)WhrUv{nt!H?lg$8D~3iC znZPL#+e%6VG`+AaHDt@j0trl6BgSAaR@*}U3D8UHErW~P;}+wkR@68O9V<|t@(W+@ zo6Y7Uo6TR|tskN`+o0kMboYmLpJ|I9qEUZYrxJ;O}2wr4!4 z5E{12^AW6Na0$@kWnk2sTIsMIQdL&g-c=9WqAE8OR`?X#%Wh|RL=|ORHVc{*lRh*htr}z^6XK1()gI#V8oJy1lEN-~omJtIxJ+<#!~04JlXT=TlOSfq zds17cZB2Ma4Y;4AV=$gu7?e@Dmdt9)x`{jmMt8f>{p2p0hSoX=8y^kO|AQrtCE$@F z$}4t0MWPwX{7ZDt6yn)RyU(<(zlhGfd7XiCLkx0^Mj8fVb4AQWX-wt?*pC<)XqNvd#q4Qjs!> z&7rBE2goUZ)IWLGs$khm_Q!tN&A$Pgf+u;PFHaa#77;d+TZXb>{c6GTOajXpU}Z*m zMIM9YJo;9<6Zo$4nfj?jmLMjT#rJuwl?-!`dwo1W6}RHxRX{zIL6-{tKqk9VeYpY* zEdn{29FI+rMTixTfK}|WH8L-|C@{7{+w4@Q%{SVxuEW;HE!2H7M)z?xkzl|?f|s3t z1f2lL0dDz)^cF-yJcCbyCkz5h{l%tQ=ee;> zBHRMSGGkW;gB89V^+;Hu0F@}ec4t4lTAjR=YDgr6yP?|4fQN)=BTvu&38e_Ydf&{a zXdy&tw;Xy370aNJ3i+rL+e!%8SD<@n@-d_o;_-;#Q@LlDlbNX>udi3X&G6sh?O$%J zv?88Gf`Zn>Tl&4UKwW32Ol6%05g-Wq6O~Yy!x-4)Ru3$g59mw)lf6@iaTI^sJo2`E zf}D7)u!Fh=5S-3utE9z3k;Mz}gTuW_sO_d2*$A7o{*}ms!vE)Lu38@0u=b8$TyjjF z!W{)(>g3697I;sd=7U15>oVioMsl*Ya8sNUYFRA8hQ34nHzK|zuV6hxp0BpL2^As8 zT)7b~Ly;2Di2@wHPo#M;K#*Talkn*Yq{(`pSoSOHFt4f7_)w<|88B{9@LKN`RFC2z z2nJsAvzp&F;kpe76O+yo&FR<~Xal)2I!F7)0se!B;N5^8`jnW|1k-r=?G3PgUHqyl zYwwJyN2E_Lkn0Q#N^t?9n2@Ot4tLa;BaU<)I`4S!gKR9d_$?v8>9h~ucfl=K4eIp81jB?u@GR)ufTa!_V?XErYXLimV^zT@Cu z6>Wkl?GS`T!6+0>u*5Jc(khoOwIpODaEr%+P@UlAv^Gjv(?8G*Nf5F0k&EVjFi5Cc z;gWc@^32{mG$9F=J6f&KCD0@}#P38m2OU!3I5R~PabvZKEChrCq(g(YN2svDioVon zc00O0ogk?UIXxICnIHNtKpp_yi{Uh`niRA=o2B2d4dR|JW+O0Kg~Wg}$fi;bnK^-p z5F@m5%1J-JOWrpE^w{Q}WV%uX)D3(@wDs!QyGgT3knEkgHMk2rrr^0vgbIO|Ef$_b zoZMupLt!_sXGS`Q)*LI=?SNTtw4@NPy!&CNecTpDDFCp?;59otR3;{~$vd!zRB9~@ z&=Ip@7nE`nAwigkjCVobM?HrWz=RY-FQ_dVm*>pU*Lv&*ktLlv;cfv0!lP;cTJ=ak zUU$^_UjKn*r3y>3_!hiSic+G27$}>EJ@_S>g0_b}uvdM!MJc+TO~BBowsEMJ`dn8z zWC<|Qi1~gXZ~gbQFT@LYlkicbp+pH4QqSm2L%|GbhbMVPlFhD1p zgU-xzCOgGDoNP%r)Gba}S!&Nnc=8)Y!+%~8A_oi6#Y??j{9f18%y=n6ht13ySA4j= zxqrY%OlOqlRRH?{BEoww=A8y)KE>gQ9z-4Yd_Ye}h@5AfxezK3tq<8Jg_?fGmco_p z#v)>Sy)qlj5kMSu!GXzghjvRPI@ll3aWs_^)M$9kj6;u<*fs?_K4#sdZ%oq^^UY9( zrf1nD7GHZO)`Do+@!~CpN}!y}CLt;(UE=*)?g+YFjQIHG4Tf-ZXd*PUhvblNCx#%* zsmudGpl%w#mzpCprt^0T?>vRY3=}>;vb`QK+ESG8`JSs3K0jSjMGcHH-C-5n;>Uk; zx}Bfr&qvd}=TAmBAC?t6TPwYYgD^GNTAU%-wS!s2iEqyoxeOT=u)L8QQAE*dw2a%a zKmlJ=y@O>B|LI6;3Ri-gCYd))Z;&u!dr6jZ>cu@^7K(@zoG*+SgoQE$u~lF;Bx?Bp zCGoa=fF<_=pYpI8)I5aUeWh4h$dRaOqQEkL;UEn&k|I!a$VWq{EXKgd*@%ImwgYOM z<0`A|z-;nQ*PE}GcXyqC+5K0&Zl;Ny6(SVBuK)_0E&nx0WZYA@lS-Av34p_NmrgT< zEYjp~j-z6^`Uv*@E|Z5C|RNgSpINgX$vfT;%{ zhfa;bm`NMw^B43^$ycHO_}4L-od0KDj&h1Vl6!)*fvUABzw#A(BN2_LM2B>w1{$_c z&{l^|moBPM_yvKFdKTM*k>I=9l@}c=rWH93@T8(1<2-aT43~arhOu(OA)8Yeqb?-F zY>``_dTj=?z+}jhugq*b&o!M#C#1HcP>{xBp{qGZs4-cc6K$AfFo}EOQ>EXzxkeV1 zT}G$EA_l7mgrGt|S5VprG{O#N-g!%>G9U0ym*|sKQvYeyA410V@AaqW#ngR5hQny7 zlQ8(q%<2gz1*!v7AZS0kv>CD`LOmz!4c`|eY`xe#oDOCz(s_A}qAM8yK?#7s+kr}; z5RuKM5UL0TgEn(MGkPH#ku(QY8xN@^PE82SPB!zs*n7#pS{dB9B$BRAV~vc~`i>b? z4_vQ3S9ASw^XcklgG#`0VJ$)@Gi!$d?Hu_GXckiuL1NyC?~sP!+FV&QUDf{97iQH0 zmSXkaP=?Y!aE;>J#!x6eSG$H&l3OIVYDaag1iM-45y_(`msllF2;)4^JVX$;kwt@} zvV1P(^=J`&Kq*B)EvZEB-9>^h$w9bsB#B8(T(>(NsJmz2ci)Ew_cFXwN$l5 z2*F}vE^H{Ugu;}N)$xsEK~v0?z`8a?3DavRWC00OOrqM#5(w1)ZtuR=Uav3NOtq zdx{gHu)D)XoF|2jbph8aaHV1wdQ_kCa_6*?3&nw5tlu3>s2HY92zO>mcMN-;%qSIH zKNRo=Hj7nOGoiGXH5*6LxMnh)C-EXQHarRxY-Oe1Y;9cYS>Q|I6$=*KVXMaEk}S_Q zzB7+R>mDqh3Pl6h!l}Cv)x({(2frM-hVBI4&ncfXbWqsuPhgbbU6ZkpX;KO$gfDN#7}U9hwRi z*43PmZ57s+FBXtuyDE=Xq1xP>GzjA&F5>M&sZslLxV zE2!n2HLv=Til-Ep1vcJ|4xAKAH`P0X*BF+|bxtS=fpgQ=tZnK5caSkE>Y-k0QM7os z!sb@3ttAsI#m1|xyN`RF4#a}%2e(xfg+y!%!H^)kRRf4>Dt-$Xl=uyp$)rG&lSsOB z^;_N@c8k*|v|~lrC-rERo|DZQx1uL)g4n96dfI>?Grr}F(f!g5mM7B=l8 zPG#BJd6YaY&GCpS^H1Q2F~7V0>F)BY(7VtNoijkltV00jrivrb^u^I^9NjJv1rBsQ zZdX-T!Gxm6(&Ga6CB+u1+7I60sL>~N-M#y?9(;f}2KvcMXeV^(M-lU3ZV0yC|9u`r z>G}Un4n*Y(TrEHr0muuB1zMB)4`sa}j!JZwGZa!lgcI^iD?+Z4M zcqv>C4HEjm^rxumu!l*0_5N9 z)sPyAb`6#(evpV)Xxu^_8j#n%*}6(^7O5I=@>OOQ&gW|ozfZT1sPyux{r$n)gZ;PN zc6ax1zte5+9bEmsyK@Lo5fB4+<_oT7@RVY}0g3*|5C zY1o;pKv%eldhEQ?TtIJrh_N3x^dJq=*>!I?9%0a+bescMQMCNdY?OA7Y5c%y;8cJA z{XY$E@2>u7dH3<3NN2zQh{56WQA-42?p&jsOZD#|4cyqLG-0BkeTW!Uk|1Lb$YEhh z7xH=WP*bywf;`r09;4W(?51_tWY%^<-d<0G!w)v7m8M9X*ZFWrcF-`OsZ8WJIJ#lU zpYu(7_>$`Y4p9*t|=DBW;) zCD3Ga;48!hgpr5YLw&K6-YS-DfKnRf-0<0!^&4N&ioY~^9(-5SDdkeUuy4!N;QPU4 z#Sa`+hr|M0xAR$h6B$y~PP3`7GDz5|NPa+U4l)5lN5t#3Rz1fQ1`Ww~vYpQ_Xy{>D7x#^L zYf6`JrDrG382&3CGJO;;)kE@yl#r&B3W~@MMH8K8{=-G!-;SN>qDhZ&D7XL7a^lke3^YbCg3SD*lx>tl81AFI9?~&$pLwd_4s3L#LZJfGEA?g3 z2h%ITrE7hYRs8aLg^TNQnFJGEJ%M*swVNf_` zQ%X^0Jq?}fLwLvkrjTMLlyvx!VC5N_L1Xw0OCV!>*>h^$?ArT)aR?a za4Oeqx^I&QAciaZN_X;HE@xK6P*E|s5Ht}iSPT~f3@PW9>rl->Xzoy)b3DnX;>tHJ zwzH|@iU_=HLYg~df~Q=rX5%OjglqfW6f#s*D`+}$utqEm1vZ0r1*Y!qL9A#W>&C6m zeM91tDXO65QduBqJ!h?uRJQf-_1oRmPpM2GZbV_KV=9(iv8dmA7%aE{;y1M5=2O

`la05HCT13;37)6sM(3SDh1&<+YE6=;Wr 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

Et9wDLepy7s@xv*1lAt>O$a^ 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

1!J#qAj^MO*yOL+5Tw6$+O2SiGo{ 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 z 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 @Z|1H?D?4tyn^xtvYeWhrsH^+1uf_NzC~G>doRy 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

I1gHzsT}jOe!CkY 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�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 l&7IgqsR}9#yX-AM=14<`L`o}&{||&XxO4yj delta 71288 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Ȳ?5p>-E=~sb@Ryw{3HquA%UGSebgg*qKV}blB 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

Xc`C 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 z zFp4^(T!Fc+iHd1kI??fgf971q@7oGS;`e>*S`Iv%+0&;Wp=<;ld=Fz|zQE!F z8!-sNaQsyeAVe@@8TuxYh0DPuvN?OeB{5Y3+I^SJ8jFUcu^}|GJYn8+U@wc!po)yN z_g6IHG2IO>*&dqKU$Gh60sopkNd}kAtf)ZshApF2%3Br_k7m7Nk@O+GXYaj$o5Nhg zVflewe-HAJWzhM$TxMN}7JOn_`b<8vGt+_jg;~)m;49P9Vl|I#ivX9;9!j=D@I0QS zgE=KEh2AJFW$%iiD`Qr)d?{y1G=o&K4&&ih&t$I9eP_+DgEX*zoIx7d$zMR4*yNY6 z+{?Gnn;cHuI2aE5cycE+!kOo91KH1S(v0uIZ_Ebg%6risNS+<+Bj`Th-!%>zl6jT-@n6xryjzyur z^In!ohXFpxj&6r#iL8>UrN0|1w8JHx99&aKO1zw3D$#u6A|*)nN&m`lHCkHhfc>!EaI@1l$s7-^bAfT&aFlt zjjZ!QkWtnjfHr!(4}Ln1JO|(3O7Ft*_hnQj7<1?zY{ovOzrQ(dfD3HKr<)o8F`=9a zuoKT`Zmd~KfX2mEfS*@J06OvVdRFhc!tz!SE5e)x1{tI!VM#vHu?bn=< z;Xl4I=ZqZxjp8(CjMqa5y~#x8BDMVv5+rT@Zt@Rn zDHRbnLmJ%hL+4IptMrD*E~#sy$wXdyT>7ukWCH6TrGtg3zUhZ@Es>T|@(<3(+;k#~ z@|laD{e8mmbAe9-e(sXSGmvwV|NoI9B0Z$R93)6`CxT!g{Oby-n_xPD-#sn;2a0B< z3lP_ym0HNawv^V&VBAbfCbB{@7eV}_xkQ>t;Y5Cu8i=%%#>?UOB3%lQ!|}RQ1eO^~ zgN=UJxD!Fl|07+E!JU(K67iJMi5N@z<{&Q8S|UTGWFmf&xd}k;zLn;g0JMh`4wgkp z4McE}rly@)8!7m^i9&kNU}7aMzxs!O)U(K6!k#hcO4ongUNpBzq5zV3fyUe87 Ix*rk$ADGI~lmGw# diff --git a/Debug/Core/Src/subdir.mk b/Debug/Core/Src/subdir.mk index 74032b2..8050786 100644 --- a/Debug/Core/Src/subdir.mk +++ b/Debug/Core/Src/subdir.mk @@ -5,6 +5,7 @@ # Add inputs and outputs from these tool invocations to the build variables C_SRCS += \ +../Core/Src/RFID.c \ ../Core/Src/main.c \ ../Core/Src/stm32g0xx_hal_msp.c \ ../Core/Src/stm32g0xx_it.c \ @@ -13,6 +14,7 @@ C_SRCS += \ ../Core/Src/system_stm32g0xx.c C_DEPS += \ +./Core/Src/RFID.d \ ./Core/Src/main.d \ ./Core/Src/stm32g0xx_hal_msp.d \ ./Core/Src/stm32g0xx_it.d \ @@ -21,6 +23,7 @@ C_DEPS += \ ./Core/Src/system_stm32g0xx.d OBJS += \ +./Core/Src/RFID.o \ ./Core/Src/main.o \ ./Core/Src/stm32g0xx_hal_msp.o \ ./Core/Src/stm32g0xx_it.o \ @@ -36,7 +39,7 @@ Core/Src/%.o Core/Src/%.su Core/Src/%.cyclo: ../Core/Src/%.c Core/Src/subdir.mk clean: clean-Core-2f-Src clean-Core-2f-Src: - -$(RM) ./Core/Src/main.cyclo ./Core/Src/main.d ./Core/Src/main.o ./Core/Src/main.su ./Core/Src/stm32g0xx_hal_msp.cyclo ./Core/Src/stm32g0xx_hal_msp.d ./Core/Src/stm32g0xx_hal_msp.o ./Core/Src/stm32g0xx_hal_msp.su ./Core/Src/stm32g0xx_it.cyclo ./Core/Src/stm32g0xx_it.d ./Core/Src/stm32g0xx_it.o ./Core/Src/stm32g0xx_it.su ./Core/Src/syscalls.cyclo ./Core/Src/syscalls.d ./Core/Src/syscalls.o ./Core/Src/syscalls.su ./Core/Src/sysmem.cyclo ./Core/Src/sysmem.d ./Core/Src/sysmem.o ./Core/Src/sysmem.su ./Core/Src/system_stm32g0xx.cyclo ./Core/Src/system_stm32g0xx.d ./Core/Src/system_stm32g0xx.o ./Core/Src/system_stm32g0xx.su + -$(RM) ./Core/Src/RFID.cyclo ./Core/Src/RFID.d ./Core/Src/RFID.o ./Core/Src/RFID.su ./Core/Src/main.cyclo ./Core/Src/main.d ./Core/Src/main.o ./Core/Src/main.su ./Core/Src/stm32g0xx_hal_msp.cyclo ./Core/Src/stm32g0xx_hal_msp.d ./Core/Src/stm32g0xx_hal_msp.o ./Core/Src/stm32g0xx_hal_msp.su ./Core/Src/stm32g0xx_it.cyclo ./Core/Src/stm32g0xx_it.d ./Core/Src/stm32g0xx_it.o ./Core/Src/stm32g0xx_it.su ./Core/Src/syscalls.cyclo ./Core/Src/syscalls.d ./Core/Src/syscalls.o ./Core/Src/syscalls.su ./Core/Src/sysmem.cyclo ./Core/Src/sysmem.d ./Core/Src/sysmem.o ./Core/Src/sysmem.su ./Core/Src/system_stm32g0xx.cyclo ./Core/Src/system_stm32g0xx.d ./Core/Src/system_stm32g0xx.o ./Core/Src/system_stm32g0xx.su .PHONY: clean-Core-2f-Src diff --git a/Debug/blk_box_bc.elf b/Debug/blk_box_bc.elf index a7243e10e5df82c666b7b3ad744daca6abe37369..63f2d62b5784382247a443b102571e6a0a0cfb3a 100644 GIT binary patch delta 202216 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%0Dr4Kp#QMXtQtu6r$-IuPhD$$prT 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 delta 191388 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 a_i6f8;99~@vE1iEYvB564J04`^?w0D)E@@` diff --git a/Debug/blk_box_bc.list b/Debug/blk_box_bc.list index e868516..713f1ec 100644 --- a/Debug/blk_box_bc.list +++ b/Debug/blk_box_bc.list @@ -5,47 +5,47 @@ Sections: Idx Name Size VMA LMA File off Algn 0 .isr_vector 000000b8 08000000 08000000 00001000 2**0 CONTENTS, ALLOC, LOAD, READONLY, DATA - 1 .text 00005e20 080000b8 080000b8 000010b8 2**2 + 1 .text 00006144 080000b8 080000b8 000010b8 2**2 CONTENTS, ALLOC, LOAD, READONLY, CODE - 2 .rodata 00000104 08005ed8 08005ed8 00006ed8 2**2 + 2 .rodata 00000100 080061fc 080061fc 000071fc 2**2 CONTENTS, ALLOC, LOAD, READONLY, DATA - 3 .ARM.extab 00000000 08005fdc 08005fdc 00007068 2**0 + 3 .ARM.extab 00000000 080062fc 080062fc 00008068 2**0 CONTENTS - 4 .ARM 00000000 08005fdc 08005fdc 00007068 2**0 + 4 .ARM 00000000 080062fc 080062fc 00008068 2**0 CONTENTS - 5 .preinit_array 00000000 08005fdc 08005fdc 00007068 2**0 + 5 .preinit_array 00000000 080062fc 080062fc 00008068 2**0 CONTENTS, ALLOC, LOAD, DATA - 6 .init_array 00000004 08005fdc 08005fdc 00006fdc 2**2 + 6 .init_array 00000004 080062fc 080062fc 000072fc 2**2 CONTENTS, ALLOC, LOAD, READONLY, DATA - 7 .fini_array 00000004 08005fe0 08005fe0 00006fe0 2**2 + 7 .fini_array 00000004 08006300 08006300 00007300 2**2 CONTENTS, ALLOC, LOAD, READONLY, DATA - 8 .data 00000068 20000000 08005fe4 00007000 2**2 + 8 .data 00000068 20000000 08006304 00008000 2**2 CONTENTS, ALLOC, LOAD, DATA - 9 .bss 000002d0 20000068 0800604c 00007068 2**2 + 9 .bss 000002c0 20000068 0800636c 00008068 2**2 ALLOC - 10 ._user_heap_stack 00000600 20000338 0800604c 00007338 2**0 + 10 ._user_heap_stack 00000600 20000328 0800636c 00008328 2**0 ALLOC - 11 .ARM.attributes 00000028 00000000 00000000 00007068 2**0 + 11 .ARM.attributes 00000028 00000000 00000000 00008068 2**0 CONTENTS, READONLY - 12 .debug_info 00010ce5 00000000 00000000 00007090 2**0 + 12 .debug_info 00011938 00000000 00000000 00008090 2**0 CONTENTS, READONLY, DEBUGGING, OCTETS - 13 .debug_abbrev 00002787 00000000 00000000 00017d75 2**0 + 13 .debug_abbrev 00002a98 00000000 00000000 000199c8 2**0 CONTENTS, READONLY, DEBUGGING, OCTETS - 14 .debug_aranges 00000e38 00000000 00000000 0001a500 2**3 + 14 .debug_aranges 00000ec8 00000000 00000000 0001c460 2**3 CONTENTS, READONLY, DEBUGGING, OCTETS - 15 .debug_rnglists 00000b1c 00000000 00000000 0001b338 2**0 + 15 .debug_rnglists 00000b85 00000000 00000000 0001d328 2**0 CONTENTS, READONLY, DEBUGGING, OCTETS - 16 .debug_macro 0001704e 00000000 00000000 0001be54 2**0 + 16 .debug_macro 000175a0 00000000 00000000 0001dead 2**0 CONTENTS, READONLY, DEBUGGING, OCTETS - 17 .debug_line 0001368d 00000000 00000000 00032ea2 2**0 + 17 .debug_line 000142e2 00000000 00000000 0003544d 2**0 CONTENTS, READONLY, DEBUGGING, OCTETS - 18 .debug_str 0008b486 00000000 00000000 0004652f 2**0 + 18 .debug_str 0008bf65 00000000 00000000 0004972f 2**0 CONTENTS, READONLY, DEBUGGING, OCTETS - 19 .comment 00000043 00000000 00000000 000d19b5 2**0 + 19 .comment 00000043 00000000 00000000 000d5694 2**0 CONTENTS, READONLY - 20 .debug_frame 00003a48 00000000 00000000 000d19f8 2**2 + 20 .debug_frame 00003c38 00000000 00000000 000d56d8 2**2 CONTENTS, READONLY, DEBUGGING, OCTETS - 21 .debug_line_str 00000066 00000000 00000000 000d5440 2**0 + 21 .debug_line_str 00000066 00000000 00000000 000d9310 2**0 CONTENTS, READONLY, DEBUGGING, OCTETS Disassembly of section .text: @@ -67,7 +67,7 @@ Disassembly of section .text: 80000d2: bd10 pop {r4, pc} 80000d4: 20000068 .word 0x20000068 80000d8: 00000000 .word 0x00000000 - 80000dc: 08005ec0 .word 0x08005ec0 + 80000dc: 080061e4 .word 0x080061e4 080000e0 : 80000e0: 4b04 ldr r3, [pc, #16] @ (80000f4 ) @@ -82,7 +82,7 @@ Disassembly of section .text: 80000f2: 46c0 nop @ (mov r8, r8) 80000f4: 00000000 .word 0x00000000 80000f8: 2000006c .word 0x2000006c - 80000fc: 08005ec0 .word 0x08005ec0 + 80000fc: 080061e4 .word 0x080061e4 08000100 <__gnu_thumb1_case_shi>: 8000100: b403 push {r0, r1} @@ -478,15971 +478,16564 @@ Disassembly of section .text: 80003fc: 4770 bx lr 80003fe: 46c0 nop @ (mov r8, r8) -08000400
: +08000400 : +bool rc522_request(uint8_t reqMode, uint8_t *tagType); + +bool rc522_antiColl(uint8_t* serNum); + +void spi_cs_rfid_write(bool state) +{ + 8000400: b580 push {r7, lr} + 8000402: b082 sub sp, #8 + 8000404: af00 add r7, sp, #0 + 8000406: 0002 movs r2, r0 + 8000408: 1dfb adds r3, r7, #7 + 800040a: 701a strb r2, [r3, #0] + HAL_GPIO_WritePin(RFID_CS_GPIO_Port, RFID_CS_Pin, state); + 800040c: 1dfb adds r3, r7, #7 + 800040e: 781a ldrb r2, [r3, #0] + 8000410: 23a0 movs r3, #160 @ 0xa0 + 8000412: 05db lsls r3, r3, #23 + 8000414: 2110 movs r1, #16 + 8000416: 0018 movs r0, r3 + 8000418: f001 fc24 bl 8001c64 +} + 800041c: 46c0 nop @ (mov r8, r8) + 800041e: 46bd mov sp, r7 + 8000420: b002 add sp, #8 + 8000422: bd80 pop {r7, pc} + +08000424 : + +uint8_t rc522_regRead8(uint8_t reg) +{ + 8000424: b590 push {r4, r7, lr} + 8000426: b085 sub sp, #20 + 8000428: af00 add r7, sp, #0 + 800042a: 0002 movs r2, r0 + 800042c: 1dfb adds r3, r7, #7 + 800042e: 701a strb r2, [r3, #0] + spi_cs_rfid_write(0); + 8000430: 2000 movs r0, #0 + 8000432: f7ff ffe5 bl 8000400 + reg = ((reg << 1) & 0x7E) | 0x80; + 8000436: 1dfb adds r3, r7, #7 + 8000438: 781b ldrb r3, [r3, #0] + 800043a: 005b lsls r3, r3, #1 + 800043c: b25b sxtb r3, r3 + 800043e: 227e movs r2, #126 @ 0x7e + 8000440: 4013 ands r3, r2 + 8000442: b25b sxtb r3, r3 + 8000444: 2280 movs r2, #128 @ 0x80 + 8000446: 4252 negs r2, r2 + 8000448: 4313 orrs r3, r2 + 800044a: b25b sxtb r3, r3 + 800044c: b2da uxtb r2, r3 + 800044e: 1dfb adds r3, r7, #7 + 8000450: 701a strb r2, [r3, #0] +// spi1_transmit(®, 1); + // TODO: change to interrupting or something. + HAL_SPI_Transmit(&hspi1, ®, 1, 1000); + 8000452: 23fa movs r3, #250 @ 0xfa + 8000454: 009b lsls r3, r3, #2 + 8000456: 1df9 adds r1, r7, #7 + 8000458: 480c ldr r0, [pc, #48] @ (800048c ) + 800045a: 2201 movs r2, #1 + 800045c: f003 faac bl 80039b8 + uint8_t dataRd=0; + 8000460: 210f movs r1, #15 + 8000462: 187b adds r3, r7, r1 + 8000464: 2200 movs r2, #0 + 8000466: 701a strb r2, [r3, #0] + HAL_SPI_Receive(&hspi1, &dataRd, 1, 1000); + 8000468: 23fa movs r3, #250 @ 0xfa + 800046a: 009b lsls r3, r3, #2 + 800046c: 000c movs r4, r1 + 800046e: 1879 adds r1, r7, r1 + 8000470: 4806 ldr r0, [pc, #24] @ (800048c ) + 8000472: 2201 movs r2, #1 + 8000474: f003 fc00 bl 8003c78 +// spi1_receive(&dataRd, 1); + spi_cs_rfid_write(1); + 8000478: 2001 movs r0, #1 + 800047a: f7ff ffc1 bl 8000400 + return dataRd; + 800047e: 193b adds r3, r7, r4 + 8000480: 781b ldrb r3, [r3, #0] +} + 8000482: 0018 movs r0, r3 + 8000484: 46bd mov sp, r7 + 8000486: b005 add sp, #20 + 8000488: bd90 pop {r4, r7, pc} + 800048a: 46c0 nop @ (mov r8, r8) + 800048c: 200000d8 .word 0x200000d8 + +08000490 : + +/** + * @brief write register + */ +void rc522_regWrite8(uint8_t reg, uint8_t data8) +{ + 8000490: b580 push {r7, lr} + 8000492: b084 sub sp, #16 + 8000494: af00 add r7, sp, #0 + 8000496: 0002 movs r2, r0 + 8000498: 1dfb adds r3, r7, #7 + 800049a: 701a strb r2, [r3, #0] + 800049c: 1dbb adds r3, r7, #6 + 800049e: 1c0a adds r2, r1, #0 + 80004a0: 701a strb r2, [r3, #0] + spi_cs_rfid_write(0); + 80004a2: 2000 movs r0, #0 + 80004a4: f7ff ffac bl 8000400 + uint8_t txData[2] = {0x7E&(reg << 1), data8}; + 80004a8: 1dfb adds r3, r7, #7 + 80004aa: 781b ldrb r3, [r3, #0] + 80004ac: 005b lsls r3, r3, #1 + 80004ae: b2db uxtb r3, r3 + 80004b0: 227e movs r2, #126 @ 0x7e + 80004b2: 4013 ands r3, r2 + 80004b4: b2da uxtb r2, r3 + 80004b6: 210c movs r1, #12 + 80004b8: 187b adds r3, r7, r1 + 80004ba: 701a strb r2, [r3, #0] + 80004bc: 187b adds r3, r7, r1 + 80004be: 1dba adds r2, r7, #6 + 80004c0: 7812 ldrb r2, [r2, #0] + 80004c2: 705a strb r2, [r3, #1] +// spi1_transmit(txData, 2); + HAL_SPI_Transmit(&hspi1, (uint8_t*)&txData, 2, 1000); + 80004c4: 23fa movs r3, #250 @ 0xfa + 80004c6: 009b lsls r3, r3, #2 + 80004c8: 1879 adds r1, r7, r1 + 80004ca: 4805 ldr r0, [pc, #20] @ (80004e0 ) + 80004cc: 2202 movs r2, #2 + 80004ce: f003 fa73 bl 80039b8 + spi_cs_rfid_write(1); + 80004d2: 2001 movs r0, #1 + 80004d4: f7ff ff94 bl 8000400 +} + 80004d8: 46c0 nop @ (mov r8, r8) + 80004da: 46bd mov sp, r7 + 80004dc: b004 add sp, #16 + 80004de: bd80 pop {r7, pc} + 80004e0: 200000d8 .word 0x200000d8 + +080004e4 : + +/** + * @brief set bit + */ +void rc522_setBit(uint8_t reg, uint8_t mask) +{ + 80004e4: b580 push {r7, lr} + 80004e6: b082 sub sp, #8 + 80004e8: af00 add r7, sp, #0 + 80004ea: 0002 movs r2, r0 + 80004ec: 1dfb adds r3, r7, #7 + 80004ee: 701a strb r2, [r3, #0] + 80004f0: 1dbb adds r3, r7, #6 + 80004f2: 1c0a adds r2, r1, #0 + 80004f4: 701a strb r2, [r3, #0] + rc522_regWrite8(reg, rc522_regRead8(reg)|mask); + 80004f6: 1dfb adds r3, r7, #7 + 80004f8: 781b ldrb r3, [r3, #0] + 80004fa: 0018 movs r0, r3 + 80004fc: f7ff ff92 bl 8000424 + 8000500: 0003 movs r3, r0 + 8000502: 001a movs r2, r3 + 8000504: 1dbb adds r3, r7, #6 + 8000506: 781b ldrb r3, [r3, #0] + 8000508: 4313 orrs r3, r2 + 800050a: b2da uxtb r2, r3 + 800050c: 1dfb adds r3, r7, #7 + 800050e: 781b ldrb r3, [r3, #0] + 8000510: 0011 movs r1, r2 + 8000512: 0018 movs r0, r3 + 8000514: f7ff ffbc bl 8000490 +} + 8000518: 46c0 nop @ (mov r8, r8) + 800051a: 46bd mov sp, r7 + 800051c: b002 add sp, #8 + 800051e: bd80 pop {r7, pc} + +08000520 : + +/** + * @brief clear bit + */ +void rc522_clearBit(uint8_t reg, uint8_t mask) +{ + 8000520: b580 push {r7, lr} + 8000522: b082 sub sp, #8 + 8000524: af00 add r7, sp, #0 + 8000526: 0002 movs r2, r0 + 8000528: 1dfb adds r3, r7, #7 + 800052a: 701a strb r2, [r3, #0] + 800052c: 1dbb adds r3, r7, #6 + 800052e: 1c0a adds r2, r1, #0 + 8000530: 701a strb r2, [r3, #0] + rc522_regWrite8(reg, rc522_regRead8(reg)&(~mask)); + 8000532: 1dfb adds r3, r7, #7 + 8000534: 781b ldrb r3, [r3, #0] + 8000536: 0018 movs r0, r3 + 8000538: f7ff ff74 bl 8000424 + 800053c: 0003 movs r3, r0 + 800053e: b25b sxtb r3, r3 + 8000540: 1dba adds r2, r7, #6 + 8000542: 7812 ldrb r2, [r2, #0] + 8000544: b252 sxtb r2, r2 + 8000546: 43d2 mvns r2, r2 + 8000548: b252 sxtb r2, r2 + 800054a: 4013 ands r3, r2 + 800054c: b25b sxtb r3, r3 + 800054e: b2da uxtb r2, r3 + 8000550: 1dfb adds r3, r7, #7 + 8000552: 781b ldrb r3, [r3, #0] + 8000554: 0011 movs r1, r2 + 8000556: 0018 movs r0, r3 + 8000558: f7ff ff9a bl 8000490 +} + 800055c: 46c0 nop @ (mov r8, r8) + 800055e: 46bd mov sp, r7 + 8000560: b002 add sp, #8 + 8000562: bd80 pop {r7, pc} + +08000564 : + +/** + * @brief reset function + */ +void rc522_reset(void) +{ + 8000564: b580 push {r7, lr} + 8000566: af00 add r7, sp, #0 + rc522_regWrite8(0x01, 0x0F); + 8000568: 210f movs r1, #15 + 800056a: 2001 movs r0, #1 + 800056c: f7ff ff90 bl 8000490 +} + 8000570: 46c0 nop @ (mov r8, r8) + 8000572: 46bd mov sp, r7 + 8000574: bd80 pop {r7, pc} + +08000576 : + +/** + * @brief Antenna ON + */ +void rc522_antennaON(void) +{ + 8000576: b590 push {r4, r7, lr} + 8000578: b083 sub sp, #12 + 800057a: af00 add r7, sp, #0 + uint8_t temp; + + temp = rc522_regRead8(MFRC522_REG_TX_CONTROL); + 800057c: 1dfc adds r4, r7, #7 + 800057e: 2014 movs r0, #20 + 8000580: f7ff ff50 bl 8000424 + 8000584: 0003 movs r3, r0 + 8000586: 7023 strb r3, [r4, #0] + if (!(temp & 0x03)) { + 8000588: 1dfb adds r3, r7, #7 + 800058a: 781b ldrb r3, [r3, #0] + 800058c: 2203 movs r2, #3 + 800058e: 4013 ands r3, r2 + 8000590: d103 bne.n 800059a + rc522_setBit(MFRC522_REG_TX_CONTROL, 0x03); + 8000592: 2103 movs r1, #3 + 8000594: 2014 movs r0, #20 + 8000596: f7ff ffa5 bl 80004e4 + } +} + 800059a: 46c0 nop @ (mov r8, r8) + 800059c: 46bd mov sp, r7 + 800059e: b003 add sp, #12 + 80005a0: bd90 pop {r4, r7, pc} + +080005a2 : + +/** + * @brief Check card + */ +bool rc522_checkCard(uint8_t *id) +{ + 80005a2: b5b0 push {r4, r5, r7, lr} + 80005a4: b084 sub sp, #16 + 80005a6: af00 add r7, sp, #0 + 80005a8: 6078 str r0, [r7, #4] + bool status=false; + 80005aa: 250f movs r5, #15 + 80005ac: 197b adds r3, r7, r5 + 80005ae: 2200 movs r2, #0 + 80005b0: 701a strb r2, [r3, #0] + //Find cards, return card type + status = rc522_request(PICC_REQIDL, id); + 80005b2: 197c adds r4, r7, r5 + 80005b4: 687b ldr r3, [r7, #4] + 80005b6: 0019 movs r1, r3 + 80005b8: 2026 movs r0, #38 @ 0x26 + 80005ba: f000 f816 bl 80005ea + 80005be: 0003 movs r3, r0 + 80005c0: 7023 strb r3, [r4, #0] + if (status == true) { + 80005c2: 197b adds r3, r7, r5 + 80005c4: 781b ldrb r3, [r3, #0] + 80005c6: 2b00 cmp r3, #0 + 80005c8: d006 beq.n 80005d8 + //Card detected + //Anti-collision, return card serial number 4 bytes + status = rc522_antiColl(id); + 80005ca: 197c adds r4, r7, r5 + 80005cc: 687b ldr r3, [r7, #4] + 80005ce: 0018 movs r0, r3 + 80005d0: f000 f998 bl 8000904 + 80005d4: 0003 movs r3, r0 + 80005d6: 7023 strb r3, [r4, #0] + } + rc522_halt(); //Command card into hibernation + 80005d8: f000 f9e9 bl 80009ae + + return status; + 80005dc: 230f movs r3, #15 + 80005de: 18fb adds r3, r7, r3 + 80005e0: 781b ldrb r3, [r3, #0] +} + 80005e2: 0018 movs r0, r3 + 80005e4: 46bd mov sp, r7 + 80005e6: b004 add sp, #16 + 80005e8: bdb0 pop {r4, r5, r7, pc} + +080005ea : + +/** + * @brief Request function + */ +bool rc522_request(uint8_t reqMode, uint8_t *tagType) +{ + 80005ea: b5f0 push {r4, r5, r6, r7, lr} + 80005ec: b087 sub sp, #28 + 80005ee: af02 add r7, sp, #8 + 80005f0: 0002 movs r2, r0 + 80005f2: 6039 str r1, [r7, #0] + 80005f4: 1dfb adds r3, r7, #7 + 80005f6: 701a strb r2, [r3, #0] + bool status=false; + 80005f8: 250f movs r5, #15 + 80005fa: 197b adds r3, r7, r5 + 80005fc: 2200 movs r2, #0 + 80005fe: 701a strb r2, [r3, #0] + uint16_t backBits; + rc522_regWrite8(MFRC522_REG_BIT_FRAMING, 0x07); + 8000600: 2107 movs r1, #7 + 8000602: 200d movs r0, #13 + 8000604: f7ff ff44 bl 8000490 + tagType[0] = reqMode; + 8000608: 683b ldr r3, [r7, #0] + 800060a: 1dfa adds r2, r7, #7 + 800060c: 7812 ldrb r2, [r2, #0] + 800060e: 701a strb r2, [r3, #0] + status = rc522_toCard(PCD_TRANSCEIVE, tagType, 1, tagType, &backBits); + 8000610: 197c adds r4, r7, r5 + 8000612: 683a ldr r2, [r7, #0] + 8000614: 6839 ldr r1, [r7, #0] + 8000616: 260c movs r6, #12 + 8000618: 19bb adds r3, r7, r6 + 800061a: 9300 str r3, [sp, #0] + 800061c: 0013 movs r3, r2 + 800061e: 2201 movs r2, #1 + 8000620: 200c movs r0, #12 + 8000622: f000 f819 bl 8000658 + 8000626: 0003 movs r3, r0 + 8000628: 7023 strb r3, [r4, #0] + if ((status != true) || (backBits != 0x10)) { + 800062a: 197b adds r3, r7, r5 + 800062c: 781b ldrb r3, [r3, #0] + 800062e: 2201 movs r2, #1 + 8000630: 4053 eors r3, r2 + 8000632: b2db uxtb r3, r3 + 8000634: 2b00 cmp r3, #0 + 8000636: d103 bne.n 8000640 + 8000638: 19bb adds r3, r7, r6 + 800063a: 881b ldrh r3, [r3, #0] + 800063c: 2b10 cmp r3, #16 + 800063e: d003 beq.n 8000648 + status = false; + 8000640: 230f movs r3, #15 + 8000642: 18fb adds r3, r7, r3 + 8000644: 2200 movs r2, #0 + 8000646: 701a strb r2, [r3, #0] + } + return status; + 8000648: 230f movs r3, #15 + 800064a: 18fb adds r3, r7, r3 + 800064c: 781b ldrb r3, [r3, #0] +} + 800064e: 0018 movs r0, r3 + 8000650: 46bd mov sp, r7 + 8000652: b005 add sp, #20 + 8000654: bdf0 pop {r4, r5, r6, r7, pc} + ... + +08000658 : + uint8_t command, + uint8_t* sendData, + uint8_t sendLen, + uint8_t* backData, + uint16_t* backLen) +{ + 8000658: b5b0 push {r4, r5, r7, lr} + 800065a: b088 sub sp, #32 + 800065c: af00 add r7, sp, #0 + 800065e: 60b9 str r1, [r7, #8] + 8000660: 0011 movs r1, r2 + 8000662: 607b str r3, [r7, #4] + 8000664: 240f movs r4, #15 + 8000666: 193b adds r3, r7, r4 + 8000668: 1c02 adds r2, r0, #0 + 800066a: 701a strb r2, [r3, #0] + 800066c: 230e movs r3, #14 + 800066e: 18fb adds r3, r7, r3 + 8000670: 1c0a adds r2, r1, #0 + 8000672: 701a strb r2, [r3, #0] + bool status = false; + 8000674: 231f movs r3, #31 + 8000676: 18fb adds r3, r7, r3 + 8000678: 2200 movs r2, #0 + 800067a: 701a strb r2, [r3, #0] + uint8_t irqEn = 0x00; + 800067c: 211e movs r1, #30 + 800067e: 187b adds r3, r7, r1 + 8000680: 2200 movs r2, #0 + 8000682: 701a strb r2, [r3, #0] + uint8_t waitIRq = 0x00; + 8000684: 201d movs r0, #29 + 8000686: 183b adds r3, r7, r0 + 8000688: 2200 movs r2, #0 + 800068a: 701a strb r2, [r3, #0] + uint8_t lastBits; + uint8_t n; + uint16_t i; + + switch (command) { + 800068c: 193b adds r3, r7, r4 + 800068e: 781b ldrb r3, [r3, #0] + 8000690: 2b0c cmp r3, #12 + 8000692: d008 beq.n 80006a6 + 8000694: 2b0e cmp r3, #14 + 8000696: d10f bne.n 80006b8 + case PCD_AUTHENT: { + irqEn = 0x12; + 8000698: 187b adds r3, r7, r1 + 800069a: 2212 movs r2, #18 + 800069c: 701a strb r2, [r3, #0] + waitIRq = 0x10; + 800069e: 183b adds r3, r7, r0 + 80006a0: 2210 movs r2, #16 + 80006a2: 701a strb r2, [r3, #0] + break; + 80006a4: e009 b.n 80006ba + } + case PCD_TRANSCEIVE: { + irqEn = 0x77; + 80006a6: 231e movs r3, #30 + 80006a8: 18fb adds r3, r7, r3 + 80006aa: 2277 movs r2, #119 @ 0x77 + 80006ac: 701a strb r2, [r3, #0] + waitIRq = 0x30; + 80006ae: 231d movs r3, #29 + 80006b0: 18fb adds r3, r7, r3 + 80006b2: 2230 movs r2, #48 @ 0x30 + 80006b4: 701a strb r2, [r3, #0] + break; + 80006b6: e000 b.n 80006ba + } + default: + break; + 80006b8: 46c0 nop @ (mov r8, r8) + } + + rc522_regWrite8(MFRC522_REG_COMM_IE_N, irqEn | 0x80); + 80006ba: 231e movs r3, #30 + 80006bc: 18fb adds r3, r7, r3 + 80006be: 781b ldrb r3, [r3, #0] + 80006c0: 2280 movs r2, #128 @ 0x80 + 80006c2: 4252 negs r2, r2 + 80006c4: 4313 orrs r3, r2 + 80006c6: b2db uxtb r3, r3 + 80006c8: 0019 movs r1, r3 + 80006ca: 2002 movs r0, #2 + 80006cc: f7ff fee0 bl 8000490 + rc522_clearBit(MFRC522_REG_COMM_IRQ, 0x80); + 80006d0: 2180 movs r1, #128 @ 0x80 + 80006d2: 2004 movs r0, #4 + 80006d4: f7ff ff24 bl 8000520 + rc522_setBit(MFRC522_REG_FIFO_LEVEL, 0x80); + 80006d8: 2180 movs r1, #128 @ 0x80 + 80006da: 200a movs r0, #10 + 80006dc: f7ff ff02 bl 80004e4 + + rc522_regWrite8(MFRC522_REG_COMMAND, PCD_IDLE); + 80006e0: 2100 movs r1, #0 + 80006e2: 2001 movs r0, #1 + 80006e4: f7ff fed4 bl 8000490 + + //Writing data to the FIFO + for (i = 0; i < sendLen; i++) { + 80006e8: 231a movs r3, #26 + 80006ea: 18fb adds r3, r7, r3 + 80006ec: 2200 movs r2, #0 + 80006ee: 801a strh r2, [r3, #0] + 80006f0: e00e b.n 8000710 + rc522_regWrite8(MFRC522_REG_FIFO_DATA, sendData[i]); + 80006f2: 241a movs r4, #26 + 80006f4: 193b adds r3, r7, r4 + 80006f6: 881b ldrh r3, [r3, #0] + 80006f8: 68ba ldr r2, [r7, #8] + 80006fa: 18d3 adds r3, r2, r3 + 80006fc: 781b ldrb r3, [r3, #0] + 80006fe: 0019 movs r1, r3 + 8000700: 2009 movs r0, #9 + 8000702: f7ff fec5 bl 8000490 + for (i = 0; i < sendLen; i++) { + 8000706: 193b adds r3, r7, r4 + 8000708: 881a ldrh r2, [r3, #0] + 800070a: 193b adds r3, r7, r4 + 800070c: 3201 adds r2, #1 + 800070e: 801a strh r2, [r3, #0] + 8000710: 230e movs r3, #14 + 8000712: 18fb adds r3, r7, r3 + 8000714: 781b ldrb r3, [r3, #0] + 8000716: b29b uxth r3, r3 + 8000718: 221a movs r2, #26 + 800071a: 18ba adds r2, r7, r2 + 800071c: 8812 ldrh r2, [r2, #0] + 800071e: 429a cmp r2, r3 + 8000720: d3e7 bcc.n 80006f2 + } + + //Execute the command + rc522_regWrite8(MFRC522_REG_COMMAND, command); + 8000722: 240f movs r4, #15 + 8000724: 193b adds r3, r7, r4 + 8000726: 781b ldrb r3, [r3, #0] + 8000728: 0019 movs r1, r3 + 800072a: 2001 movs r0, #1 + 800072c: f7ff feb0 bl 8000490 + if (command == PCD_TRANSCEIVE) { + 8000730: 193b adds r3, r7, r4 + 8000732: 781b ldrb r3, [r3, #0] + 8000734: 2b0c cmp r3, #12 + 8000736: d103 bne.n 8000740 + rc522_setBit(MFRC522_REG_BIT_FRAMING, 0x80); //StartSend=1,transmission of data starts + 8000738: 2180 movs r1, #128 @ 0x80 + 800073a: 200d movs r0, #13 + 800073c: f7ff fed2 bl 80004e4 + } + + //Waiting to receive data to complete + i = 100; //i according to the clock frequency adjustment, the operator M1 card maximum waiting time 25ms??? + 8000740: 231a movs r3, #26 + 8000742: 18fb adds r3, r7, r3 + 8000744: 2264 movs r2, #100 @ 0x64 + 8000746: 801a strh r2, [r3, #0] + do { + //CommIrqReg[7..0] + //Set1 TxIRq RxIRq IdleIRq HiAlerIRq LoAlertIRq ErrIRq TimerIRq + n = rc522_regRead8(MFRC522_REG_COMM_IRQ); + 8000748: 251c movs r5, #28 + 800074a: 197c adds r4, r7, r5 + 800074c: 2004 movs r0, #4 + 800074e: f7ff fe69 bl 8000424 + 8000752: 0003 movs r3, r0 + 8000754: 7023 strb r3, [r4, #0] + i--; + 8000756: 211a movs r1, #26 + 8000758: 187b adds r3, r7, r1 + 800075a: 881a ldrh r2, [r3, #0] + 800075c: 187b adds r3, r7, r1 + 800075e: 3a01 subs r2, #1 + 8000760: 801a strh r2, [r3, #0] + } while ((i!=0) && !(n&0x01) && !(n&waitIRq)); + 8000762: 187b adds r3, r7, r1 + 8000764: 881b ldrh r3, [r3, #0] + 8000766: 2b00 cmp r3, #0 + 8000768: d00d beq.n 8000786 + 800076a: 197b adds r3, r7, r5 + 800076c: 781b ldrb r3, [r3, #0] + 800076e: 2201 movs r2, #1 + 8000770: 4013 ands r3, r2 + 8000772: d108 bne.n 8000786 + 8000774: 197b adds r3, r7, r5 + 8000776: 221d movs r2, #29 + 8000778: 18ba adds r2, r7, r2 + 800077a: 781b ldrb r3, [r3, #0] + 800077c: 7812 ldrb r2, [r2, #0] + 800077e: 4013 ands r3, r2 + 8000780: b2db uxtb r3, r3 + 8000782: 2b00 cmp r3, #0 + 8000784: d0e0 beq.n 8000748 + + rc522_clearBit(MFRC522_REG_BIT_FRAMING, 0x80); //StartSend=0 + 8000786: 2180 movs r1, #128 @ 0x80 + 8000788: 200d movs r0, #13 + 800078a: f7ff fec9 bl 8000520 + + if (i != 0) { + 800078e: 231a movs r3, #26 + 8000790: 18fb adds r3, r7, r3 + 8000792: 881b ldrh r3, [r3, #0] + 8000794: 2b00 cmp r3, #0 + 8000796: d100 bne.n 800079a + 8000798: e0a7 b.n 80008ea + if (!(rc522_regRead8(MFRC522_REG_ERROR) & 0x1B)) { + 800079a: 2006 movs r0, #6 + 800079c: f7ff fe42 bl 8000424 + 80007a0: 0003 movs r3, r0 + 80007a2: 001a movs r2, r3 + 80007a4: 231b movs r3, #27 + 80007a6: 4013 ands r3, r2 + 80007a8: d000 beq.n 80007ac + 80007aa: e096 b.n 80008da + status = true; + 80007ac: 211f movs r1, #31 + 80007ae: 187b adds r3, r7, r1 + 80007b0: 2201 movs r2, #1 + 80007b2: 701a strb r2, [r3, #0] + if (n & irqEn & 0x01) { + 80007b4: 231c movs r3, #28 + 80007b6: 18fb adds r3, r7, r3 + 80007b8: 221e movs r2, #30 + 80007ba: 18ba adds r2, r7, r2 + 80007bc: 781b ldrb r3, [r3, #0] + 80007be: 7812 ldrb r2, [r2, #0] + 80007c0: 4013 ands r3, r2 + 80007c2: b2db uxtb r3, r3 + 80007c4: 001a movs r2, r3 + 80007c6: 2301 movs r3, #1 + 80007c8: 4013 ands r3, r2 + 80007ca: d002 beq.n 80007d2 + status = false; + 80007cc: 187b adds r3, r7, r1 + 80007ce: 2200 movs r2, #0 + 80007d0: 701a strb r2, [r3, #0] + } + + if (command == PCD_TRANSCEIVE) { + 80007d2: 230f movs r3, #15 + 80007d4: 18fb adds r3, r7, r3 + 80007d6: 781b ldrb r3, [r3, #0] + 80007d8: 2b0c cmp r3, #12 + 80007da: d000 beq.n 80007de + 80007dc: e085 b.n 80008ea + n = rc522_regRead8(MFRC522_REG_FIFO_LEVEL); + 80007de: 251c movs r5, #28 + 80007e0: 197c adds r4, r7, r5 + 80007e2: 200a movs r0, #10 + 80007e4: f7ff fe1e bl 8000424 + 80007e8: 0003 movs r3, r0 + 80007ea: 7023 strb r3, [r4, #0] + uint8_t l = n; + 80007ec: 2319 movs r3, #25 + 80007ee: 18fb adds r3, r7, r3 + 80007f0: 002c movs r4, r5 + 80007f2: 193a adds r2, r7, r4 + 80007f4: 7812 ldrb r2, [r2, #0] + 80007f6: 701a strb r2, [r3, #0] + lastBits = rc522_regRead8(MFRC522_REG_CONTROL) & 0x07; + 80007f8: 200c movs r0, #12 + 80007fa: f7ff fe13 bl 8000424 + 80007fe: 0003 movs r3, r0 + 8000800: 0019 movs r1, r3 + 8000802: 2018 movs r0, #24 + 8000804: 183b adds r3, r7, r0 + 8000806: 2207 movs r2, #7 + 8000808: 400a ands r2, r1 + 800080a: 701a strb r2, [r3, #0] + if (lastBits) { + 800080c: 0001 movs r1, r0 + 800080e: 187b adds r3, r7, r1 + 8000810: 781b ldrb r3, [r3, #0] + 8000812: 2b00 cmp r3, #0 + 8000814: d00d beq.n 8000832 + *backLen = (n - 1) * 8 + lastBits; + 8000816: 193b adds r3, r7, r4 + 8000818: 781b ldrb r3, [r3, #0] + 800081a: 3b01 subs r3, #1 + 800081c: b29b uxth r3, r3 + 800081e: 00db lsls r3, r3, #3 + 8000820: b29a uxth r2, r3 + 8000822: 187b adds r3, r7, r1 + 8000824: 781b ldrb r3, [r3, #0] + 8000826: b29b uxth r3, r3 + 8000828: 18d3 adds r3, r2, r3 + 800082a: b29a uxth r2, r3 + 800082c: 6b3b ldr r3, [r7, #48] @ 0x30 + 800082e: 801a strh r2, [r3, #0] + 8000830: e007 b.n 8000842 + } else { + *backLen = n * 8; + 8000832: 231c movs r3, #28 + 8000834: 18fb adds r3, r7, r3 + 8000836: 781b ldrb r3, [r3, #0] + 8000838: b29b uxth r3, r3 + 800083a: 00db lsls r3, r3, #3 + 800083c: b29a uxth r2, r3 + 800083e: 6b3b ldr r3, [r7, #48] @ 0x30 + 8000840: 801a strh r2, [r3, #0] + } + + if (n == 0) { + 8000842: 221c movs r2, #28 + 8000844: 18bb adds r3, r7, r2 + 8000846: 781b ldrb r3, [r3, #0] + 8000848: 2b00 cmp r3, #0 + 800084a: d102 bne.n 8000852 + n = 1; + 800084c: 18bb adds r3, r7, r2 + 800084e: 2201 movs r2, #1 + 8000850: 701a strb r2, [r3, #0] + } + if (n > MFRC522_MAX_LEN) { + 8000852: 221c movs r2, #28 + 8000854: 18bb adds r3, r7, r2 + 8000856: 781b ldrb r3, [r3, #0] + 8000858: 2b10 cmp r3, #16 + 800085a: d902 bls.n 8000862 + n = MFRC522_MAX_LEN; + 800085c: 18bb adds r3, r7, r2 + 800085e: 2210 movs r2, #16 + 8000860: 701a strb r2, [r3, #0] + } + + //Reading the received data in FIFO + for (i = 0; i < n; i++) { + 8000862: 231a movs r3, #26 + 8000864: 18fb adds r3, r7, r3 + 8000866: 2200 movs r2, #0 + 8000868: 801a strh r2, [r3, #0] + 800086a: e020 b.n 80008ae + uint8_t d = rc522_regRead8(MFRC522_REG_FIFO_DATA); + 800086c: 2517 movs r5, #23 + 800086e: 197c adds r4, r7, r5 + 8000870: 2009 movs r0, #9 + 8000872: f7ff fdd7 bl 8000424 + 8000876: 0003 movs r3, r0 + 8000878: 7023 strb r3, [r4, #0] + if (l == 4) + 800087a: 2319 movs r3, #25 + 800087c: 18fb adds r3, r7, r3 + 800087e: 781b ldrb r3, [r3, #0] + 8000880: 2b04 cmp r3, #4 + 8000882: d106 bne.n 8000892 + printf("%02x ", d); + 8000884: 197b adds r3, r7, r5 + 8000886: 781a ldrb r2, [r3, #0] + 8000888: 4b1b ldr r3, [pc, #108] @ (80008f8 ) + 800088a: 0011 movs r1, r2 + 800088c: 0018 movs r0, r3 + 800088e: f004 fdab bl 80053e8 + backData[i] = d; + 8000892: 211a movs r1, #26 + 8000894: 187b adds r3, r7, r1 + 8000896: 881b ldrh r3, [r3, #0] + 8000898: 687a ldr r2, [r7, #4] + 800089a: 18d3 adds r3, r2, r3 + 800089c: 2217 movs r2, #23 + 800089e: 18ba adds r2, r7, r2 + 80008a0: 7812 ldrb r2, [r2, #0] + 80008a2: 701a strb r2, [r3, #0] + for (i = 0; i < n; i++) { + 80008a4: 187b adds r3, r7, r1 + 80008a6: 881a ldrh r2, [r3, #0] + 80008a8: 187b adds r3, r7, r1 + 80008aa: 3201 adds r2, #1 + 80008ac: 801a strh r2, [r3, #0] + 80008ae: 231c movs r3, #28 + 80008b0: 18fb adds r3, r7, r3 + 80008b2: 781b ldrb r3, [r3, #0] + 80008b4: b29b uxth r3, r3 + 80008b6: 221a movs r2, #26 + 80008b8: 18ba adds r2, r7, r2 + 80008ba: 8812 ldrh r2, [r2, #0] + 80008bc: 429a cmp r2, r3 + 80008be: d3d5 bcc.n 800086c + } + if (l==4) + 80008c0: 2319 movs r3, #25 + 80008c2: 18fb adds r3, r7, r3 + 80008c4: 781b ldrb r3, [r3, #0] + 80008c6: 2b04 cmp r3, #4 + 80008c8: d103 bne.n 80008d2 + printf("\r\n"); + 80008ca: 4b0c ldr r3, [pc, #48] @ (80008fc ) + 80008cc: 0018 movs r0, r3 + 80008ce: f004 fdf1 bl 80054b4 + return status; + 80008d2: 231f movs r3, #31 + 80008d4: 18fb adds r3, r7, r3 + 80008d6: 781b ldrb r3, [r3, #0] + 80008d8: e00a b.n 80008f0 + } + } else { + printf("error\r\n"); + 80008da: 4b09 ldr r3, [pc, #36] @ (8000900 ) + 80008dc: 0018 movs r0, r3 + 80008de: f004 fde9 bl 80054b4 + status = false; + 80008e2: 231f movs r3, #31 + 80008e4: 18fb adds r3, r7, r3 + 80008e6: 2200 movs r2, #0 + 80008e8: 701a strb r2, [r3, #0] + } + } + + return status; + 80008ea: 231f movs r3, #31 + 80008ec: 18fb adds r3, r7, r3 + 80008ee: 781b ldrb r3, [r3, #0] +} + 80008f0: 0018 movs r0, r3 + 80008f2: 46bd mov sp, r7 + 80008f4: b008 add sp, #32 + 80008f6: bdb0 pop {r4, r5, r7, pc} + 80008f8: 080061fc .word 0x080061fc + 80008fc: 08006204 .word 0x08006204 + 8000900: 08006208 .word 0x08006208 + +08000904 : + +bool rc522_antiColl(uint8_t* serNum) +{ + 8000904: b5b0 push {r4, r5, r7, lr} + 8000906: b086 sub sp, #24 + 8000908: af02 add r7, sp, #8 + 800090a: 6078 str r0, [r7, #4] + bool status; + uint8_t i; + uint8_t serNumCheck = 0; + 800090c: 230d movs r3, #13 + 800090e: 18fb adds r3, r7, r3 + 8000910: 2200 movs r2, #0 + 8000912: 701a strb r2, [r3, #0] + uint16_t unLen; + //for (i = 0; i < 4; i++) +// printf("Anticoll In %d: 0x%02x\r\n", i, serNum[i]); + + + rc522_regWrite8(MFRC522_REG_BIT_FRAMING, 0x00); //TxLastBists = BitFramingReg[2..0] + 8000914: 2100 movs r1, #0 + 8000916: 200d movs r0, #13 + 8000918: f7ff fdba bl 8000490 + + serNum[0] = PICC_ANTICOLL; + 800091c: 687b ldr r3, [r7, #4] + 800091e: 2293 movs r2, #147 @ 0x93 + 8000920: 701a strb r2, [r3, #0] + serNum[1] = 0x20; + 8000922: 687b ldr r3, [r7, #4] + 8000924: 3301 adds r3, #1 + 8000926: 2220 movs r2, #32 + 8000928: 701a strb r2, [r3, #0] + status = rc522_toCard(PCD_TRANSCEIVE, serNum, 2, serNum, &unLen); + 800092a: 250f movs r5, #15 + 800092c: 197c adds r4, r7, r5 + 800092e: 687a ldr r2, [r7, #4] + 8000930: 6879 ldr r1, [r7, #4] + 8000932: 230a movs r3, #10 + 8000934: 18fb adds r3, r7, r3 + 8000936: 9300 str r3, [sp, #0] + 8000938: 0013 movs r3, r2 + 800093a: 2202 movs r2, #2 + 800093c: 200c movs r0, #12 + 800093e: f7ff fe8b bl 8000658 + 8000942: 0003 movs r3, r0 + 8000944: 7023 strb r3, [r4, #0] + + //for (i = 0; i < 4; i++) +// printf("Anticoll ToCard %d: 0x%02x\r\n", i, serNum[i]); + + if (status == true) { + 8000946: 197b adds r3, r7, r5 + 8000948: 781b ldrb r3, [r3, #0] + 800094a: 2b00 cmp r3, #0 + 800094c: d028 beq.n 80009a0 + //Check card serial number + for (i = 0; i < 4; i++) { + 800094e: 230e movs r3, #14 + 8000950: 18fb adds r3, r7, r3 + 8000952: 2200 movs r2, #0 + 8000954: 701a strb r2, [r3, #0] + 8000956: e010 b.n 800097a + serNumCheck ^= serNum[i]; + 8000958: 200e movs r0, #14 + 800095a: 183b adds r3, r7, r0 + 800095c: 781b ldrb r3, [r3, #0] + 800095e: 687a ldr r2, [r7, #4] + 8000960: 18d3 adds r3, r2, r3 + 8000962: 7819 ldrb r1, [r3, #0] + 8000964: 220d movs r2, #13 + 8000966: 18bb adds r3, r7, r2 + 8000968: 18ba adds r2, r7, r2 + 800096a: 7812 ldrb r2, [r2, #0] + 800096c: 404a eors r2, r1 + 800096e: 701a strb r2, [r3, #0] + for (i = 0; i < 4; i++) { + 8000970: 183b adds r3, r7, r0 + 8000972: 781a ldrb r2, [r3, #0] + 8000974: 183b adds r3, r7, r0 + 8000976: 3201 adds r2, #1 + 8000978: 701a strb r2, [r3, #0] + 800097a: 220e movs r2, #14 + 800097c: 18bb adds r3, r7, r2 + 800097e: 781b ldrb r3, [r3, #0] + 8000980: 2b03 cmp r3, #3 + 8000982: d9e9 bls.n 8000958 + } + if (serNumCheck != serNum[i]) { + 8000984: 18bb adds r3, r7, r2 + 8000986: 781b ldrb r3, [r3, #0] + 8000988: 687a ldr r2, [r7, #4] + 800098a: 18d3 adds r3, r2, r3 + 800098c: 781b ldrb r3, [r3, #0] + 800098e: 220d movs r2, #13 + 8000990: 18ba adds r2, r7, r2 + 8000992: 7812 ldrb r2, [r2, #0] + 8000994: 429a cmp r2, r3 + 8000996: d003 beq.n 80009a0 + status = false; + 8000998: 230f movs r3, #15 + 800099a: 18fb adds r3, r7, r3 + 800099c: 2200 movs r2, #0 + 800099e: 701a strb r2, [r3, #0] + } + } + return status; + 80009a0: 230f movs r3, #15 + 80009a2: 18fb adds r3, r7, r3 + 80009a4: 781b ldrb r3, [r3, #0] +} + 80009a6: 0018 movs r0, r3 + 80009a8: 46bd mov sp, r7 + 80009aa: b004 add sp, #16 + 80009ac: bdb0 pop {r4, r5, r7, pc} + +080009ae : + +void rc522_halt(void) +{ + 80009ae: b580 push {r7, lr} + 80009b0: b084 sub sp, #16 + 80009b2: af02 add r7, sp, #8 + uint16_t unLen; + uint8_t buff[4]; + + buff[0] = PICC_HALT; + 80009b4: 003b movs r3, r7 + 80009b6: 2250 movs r2, #80 @ 0x50 + 80009b8: 701a strb r2, [r3, #0] + buff[1] = 0; + 80009ba: 003b movs r3, r7 + 80009bc: 2200 movs r2, #0 + 80009be: 705a strb r2, [r3, #1] + rc522_calculateCRC(buff, 2, &buff[2]); + 80009c0: 003b movs r3, r7 + 80009c2: 1c9a adds r2, r3, #2 + 80009c4: 003b movs r3, r7 + 80009c6: 2102 movs r1, #2 + 80009c8: 0018 movs r0, r3 + 80009ca: f000 f80d bl 80009e8 + + rc522_toCard(PCD_TRANSCEIVE, buff, 4, buff, &unLen); + 80009ce: 003a movs r2, r7 + 80009d0: 0039 movs r1, r7 + 80009d2: 1dbb adds r3, r7, #6 + 80009d4: 9300 str r3, [sp, #0] + 80009d6: 0013 movs r3, r2 + 80009d8: 2204 movs r2, #4 + 80009da: 200c movs r0, #12 + 80009dc: f7ff fe3c bl 8000658 +} + 80009e0: 46c0 nop @ (mov r8, r8) + 80009e2: 46bd mov sp, r7 + 80009e4: b002 add sp, #8 + 80009e6: bd80 pop {r7, pc} + +080009e8 : + +void rc522_calculateCRC(uint8_t* pIndata, uint8_t len, uint8_t* pOutData) +{ + 80009e8: b5b0 push {r4, r5, r7, lr} + 80009ea: b086 sub sp, #24 + 80009ec: af00 add r7, sp, #0 + 80009ee: 60f8 str r0, [r7, #12] + 80009f0: 607a str r2, [r7, #4] + 80009f2: 230b movs r3, #11 + 80009f4: 18fb adds r3, r7, r3 + 80009f6: 1c0a adds r2, r1, #0 + 80009f8: 701a strb r2, [r3, #0] + uint8_t i, n; + + rc522_clearBit(MFRC522_REG_DIV_IRQ, 0x04); //CRCIrq = 0 + 80009fa: 2104 movs r1, #4 + 80009fc: 2005 movs r0, #5 + 80009fe: f7ff fd8f bl 8000520 + rc522_setBit(MFRC522_REG_FIFO_LEVEL, 0x80); //Clear the FIFO pointer + 8000a02: 2180 movs r1, #128 @ 0x80 + 8000a04: 200a movs r0, #10 + 8000a06: f7ff fd6d bl 80004e4 + //Write_MFRC522(CommandReg, PCD_IDLE); + + //Writing data to the FIFO + for (i = 0; i < len; i++) { + 8000a0a: 2317 movs r3, #23 + 8000a0c: 18fb adds r3, r7, r3 + 8000a0e: 2200 movs r2, #0 + 8000a10: 701a strb r2, [r3, #0] + 8000a12: e00e b.n 8000a32 + rc522_regWrite8(MFRC522_REG_FIFO_DATA, *(pIndata+i)); + 8000a14: 2417 movs r4, #23 + 8000a16: 193b adds r3, r7, r4 + 8000a18: 781b ldrb r3, [r3, #0] + 8000a1a: 68fa ldr r2, [r7, #12] + 8000a1c: 18d3 adds r3, r2, r3 + 8000a1e: 781b ldrb r3, [r3, #0] + 8000a20: 0019 movs r1, r3 + 8000a22: 2009 movs r0, #9 + 8000a24: f7ff fd34 bl 8000490 + for (i = 0; i < len; i++) { + 8000a28: 193b adds r3, r7, r4 + 8000a2a: 781a ldrb r2, [r3, #0] + 8000a2c: 193b adds r3, r7, r4 + 8000a2e: 3201 adds r2, #1 + 8000a30: 701a strb r2, [r3, #0] + 8000a32: 2417 movs r4, #23 + 8000a34: 193a adds r2, r7, r4 + 8000a36: 230b movs r3, #11 + 8000a38: 18fb adds r3, r7, r3 + 8000a3a: 7812 ldrb r2, [r2, #0] + 8000a3c: 781b ldrb r3, [r3, #0] + 8000a3e: 429a cmp r2, r3 + 8000a40: d3e8 bcc.n 8000a14 + } + rc522_regWrite8(MFRC522_REG_COMMAND, PCD_CALCCRC); + 8000a42: 2103 movs r1, #3 + 8000a44: 2001 movs r0, #1 + 8000a46: f7ff fd23 bl 8000490 + + //Wait CRC calculation is complete + i = 0xFF; + 8000a4a: 193b adds r3, r7, r4 + 8000a4c: 22ff movs r2, #255 @ 0xff + 8000a4e: 701a strb r2, [r3, #0] + do { + n = rc522_regRead8(MFRC522_REG_DIV_IRQ); + 8000a50: 2516 movs r5, #22 + 8000a52: 197c adds r4, r7, r5 + 8000a54: 2005 movs r0, #5 + 8000a56: f7ff fce5 bl 8000424 + 8000a5a: 0003 movs r3, r0 + 8000a5c: 7023 strb r3, [r4, #0] + i--; + 8000a5e: 2117 movs r1, #23 + 8000a60: 187b adds r3, r7, r1 + 8000a62: 781a ldrb r2, [r3, #0] + 8000a64: 187b adds r3, r7, r1 + 8000a66: 3a01 subs r2, #1 + 8000a68: 701a strb r2, [r3, #0] + } while ((i!=0) && !(n&0x04)); //CRCIrq = 1 + 8000a6a: 187b adds r3, r7, r1 + 8000a6c: 781b ldrb r3, [r3, #0] + 8000a6e: 2b00 cmp r3, #0 + 8000a70: d004 beq.n 8000a7c + 8000a72: 197b adds r3, r7, r5 + 8000a74: 781b ldrb r3, [r3, #0] + 8000a76: 2204 movs r2, #4 + 8000a78: 4013 ands r3, r2 + 8000a7a: d0e9 beq.n 8000a50 + + //Read CRC calculation result + pOutData[0] = rc522_regRead8(MFRC522_REG_CRC_RESULT_L); + 8000a7c: 2022 movs r0, #34 @ 0x22 + 8000a7e: f7ff fcd1 bl 8000424 + 8000a82: 0003 movs r3, r0 + 8000a84: 001a movs r2, r3 + 8000a86: 687b ldr r3, [r7, #4] + 8000a88: 701a strb r2, [r3, #0] + pOutData[1] = rc522_regRead8(MFRC522_REG_CRC_RESULT_M); + 8000a8a: 687b ldr r3, [r7, #4] + 8000a8c: 1c5c adds r4, r3, #1 + 8000a8e: 2021 movs r0, #33 @ 0x21 + 8000a90: f7ff fcc8 bl 8000424 + 8000a94: 0003 movs r3, r0 + 8000a96: 7023 strb r3, [r4, #0] +} + 8000a98: 46c0 nop @ (mov r8, r8) + 8000a9a: 46bd mov sp, r7 + 8000a9c: b006 add sp, #24 + 8000a9e: bdb0 pop {r4, r5, r7, pc} + +08000aa0 : + } + return true; +} + +void rc522_init(void) +{ + 8000aa0: b580 push {r7, lr} + 8000aa2: af00 add r7, sp, #0 + * SPI -> SPI + * PA8 ->RST + * PB0 ->CS + * */ + + HAL_GPIO_WritePin(RFID_RST_GPIO_Port, RFID_RST_Pin, 0); + 8000aa4: 4b15 ldr r3, [pc, #84] @ (8000afc ) + 8000aa6: 2200 movs r2, #0 + 8000aa8: 2104 movs r1, #4 + 8000aaa: 0018 movs r0, r3 + 8000aac: f001 f8da bl 8001c64 + HAL_GPIO_WritePin(RFID_RST_GPIO_Port, RFID_RST_Pin, 1); + 8000ab0: 4b12 ldr r3, [pc, #72] @ (8000afc ) + 8000ab2: 2201 movs r2, #1 + 8000ab4: 2104 movs r1, #4 + 8000ab6: 0018 movs r0, r3 + 8000ab8: f001 f8d4 bl 8001c64 + rc522_reset(); + 8000abc: f7ff fd52 bl 8000564 + + rc522_regWrite8(MFRC522_REG_T_MODE, 0x80); + 8000ac0: 2180 movs r1, #128 @ 0x80 + 8000ac2: 202a movs r0, #42 @ 0x2a + 8000ac4: f7ff fce4 bl 8000490 + rc522_regWrite8(MFRC522_REG_T_PRESCALER, 0xA9); + 8000ac8: 21a9 movs r1, #169 @ 0xa9 + 8000aca: 202b movs r0, #43 @ 0x2b + 8000acc: f7ff fce0 bl 8000490 + rc522_regWrite8(MFRC522_REG_T_RELOAD_L, 0xE8); + 8000ad0: 21e8 movs r1, #232 @ 0xe8 + 8000ad2: 202d movs r0, #45 @ 0x2d + 8000ad4: f7ff fcdc bl 8000490 + rc522_regWrite8(MFRC522_REG_T_RELOAD_H, 0x03); + 8000ad8: 2103 movs r1, #3 + 8000ada: 202c movs r0, #44 @ 0x2c + 8000adc: f7ff fcd8 bl 8000490 + + + rc522_regWrite8(MFRC522_REG_TX_AUTO, 0x40); + 8000ae0: 2140 movs r1, #64 @ 0x40 + 8000ae2: 2015 movs r0, #21 + 8000ae4: f7ff fcd4 bl 8000490 + rc522_regWrite8(MFRC522_REG_MODE, 0x3D); + 8000ae8: 213d movs r1, #61 @ 0x3d + 8000aea: 2011 movs r0, #17 + 8000aec: f7ff fcd0 bl 8000490 + + rc522_antennaON(); //Open the antenna + 8000af0: f7ff fd41 bl 8000576 +} + 8000af4: 46c0 nop @ (mov r8, r8) + 8000af6: 46bd mov sp, r7 + 8000af8: bd80 pop {r7, pc} + 8000afa: 46c0 nop @ (mov r8, r8) + 8000afc: 50000400 .word 0x50000400 + +08000b00
: /** * @brief The application entry point. * @retval int */ int main(void) { - 8000400: b5f0 push {r4, r5, r6, r7, lr} - 8000402: 46c6 mov lr, r8 - 8000404: b500 push {lr} - 8000406: b086 sub sp, #24 - 8000408: af06 add r7, sp, #24 + 8000b00: b590 push {r4, r7, lr} + 8000b02: b085 sub sp, #20 + 8000b04: af02 add r7, sp, #8 /* USER CODE END 1 */ /* MCU Configuration--------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); - 800040a: f001 f813 bl 8001434 + 8000b06: f000 fd35 bl 8001574 /* USER CODE BEGIN Init */ /* USER CODE END Init */ /* Configure the system clock */ SystemClock_Config(); - 800040e: f000 f861 bl 80004d4 + 8000b0a: f000 f835 bl 8000b78 /* USER CODE BEGIN SysInit */ /* USER CODE END SysInit */ /* Initialize all configured peripherals */ MX_GPIO_Init(); - 8000412: f000 f96d bl 80006f0 + 8000b0e: f000 f941 bl 8000d94 MX_I2C1_Init(); - 8000416: f000 f89f bl 8000558 + 8000b12: f000 f873 bl 8000bfc MX_SPI1_Init(); - 800041a: f000 f8dd bl 80005d8 + 8000b16: f000 f8b1 bl 8000c7c MX_USART2_UART_Init(); - 800041e: f000 f919 bl 8000654 + 8000b1a: f000 f8ed bl 8000cf8 /* USER CODE BEGIN 2 */ init_keypad(); - 8000422: f000 fabb bl 800099c + 8000b1e: f000 faa9 bl 8001074 init_buttons(); - 8000426: f000 fadb bl 80009e0 + 8000b22: f000 fac9 bl 80010b8 + rc522_init(); + 8000b26: f7ff ffbb bl 8000aa0 printf("Hello, world!\r\n"); - 800042a: 4b22 ldr r3, [pc, #136] @ (80004b4 ) - 800042c: 0018 movs r0, r3 - 800042e: f004 feaf bl 8005190 + 8000b2a: 4b11 ldr r3, [pc, #68] @ (8000b70 ) + 8000b2c: 0018 movs r0, r3 + 8000b2e: f004 fcc1 bl 80054b4 + /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ + uint8_t rfid_id[4] = {0}; + 8000b32: 1d3b adds r3, r7, #4 + 8000b34: 2200 movs r2, #0 + 8000b36: 601a str r2, [r3, #0] while (1) { - HAL_Delay(100); - 8000432: 2064 movs r0, #100 @ 0x64 - 8000434: f001 f884 bl 8001540 - scan_keypad(); - 8000438: f000 faf0 bl 8000a1c - scan_buttons(); - 800043c: f000 fc7a bl 8000d34 -// printBinary(keypad_state); - printf("s: %d\r\n", keypad_state); - 8000440: 4b1d ldr r3, [pc, #116] @ (80004b8 ) - 8000442: 881b ldrh r3, [r3, #0] - 8000444: 001a movs r2, r3 - 8000446: 4b1d ldr r3, [pc, #116] @ (80004bc ) - 8000448: 0011 movs r1, r2 - 800044a: 0018 movs r0, r3 - 800044c: f004 fe3a bl 80050c4 - printf("r: %d\r\n", recv_cnt); - 8000450: 4b1b ldr r3, [pc, #108] @ (80004c0 ) - 8000452: 881b ldrh r3, [r3, #0] - 8000454: 001a movs r2, r3 - 8000456: 4b1b ldr r3, [pc, #108] @ (80004c4 ) - 8000458: 0011 movs r1, r2 - 800045a: 0018 movs r0, r3 - 800045c: f004 fe32 bl 80050c4 - printf("d: %d %d %d %d, %d %d %d %d\r\n", data[0], data[1], data[2], data[3], data[4], data[5], data[6], data[7]); - 8000460: 4b19 ldr r3, [pc, #100] @ (80004c8 ) - 8000462: 781b ldrb r3, [r3, #0] - 8000464: 001e movs r6, r3 - 8000466: 4b18 ldr r3, [pc, #96] @ (80004c8 ) - 8000468: 785b ldrb r3, [r3, #1] - 800046a: 469c mov ip, r3 - 800046c: 4b16 ldr r3, [pc, #88] @ (80004c8 ) - 800046e: 789b ldrb r3, [r3, #2] - 8000470: 4698 mov r8, r3 - 8000472: 4b15 ldr r3, [pc, #84] @ (80004c8 ) - 8000474: 78db ldrb r3, [r3, #3] - 8000476: 001a movs r2, r3 - 8000478: 4b13 ldr r3, [pc, #76] @ (80004c8 ) - 800047a: 791b ldrb r3, [r3, #4] - 800047c: 0019 movs r1, r3 - 800047e: 4b12 ldr r3, [pc, #72] @ (80004c8 ) - 8000480: 795b ldrb r3, [r3, #5] - 8000482: 001c movs r4, r3 - 8000484: 4b10 ldr r3, [pc, #64] @ (80004c8 ) - 8000486: 799b ldrb r3, [r3, #6] - 8000488: 001d movs r5, r3 - 800048a: 4b0f ldr r3, [pc, #60] @ (80004c8 ) - 800048c: 79db ldrb r3, [r3, #7] - 800048e: 480f ldr r0, [pc, #60] @ (80004cc ) - 8000490: 9304 str r3, [sp, #16] - 8000492: 9503 str r5, [sp, #12] - 8000494: 9402 str r4, [sp, #8] - 8000496: 9101 str r1, [sp, #4] - 8000498: 9200 str r2, [sp, #0] - 800049a: 4643 mov r3, r8 - 800049c: 4662 mov r2, ip - 800049e: 0031 movs r1, r6 - 80004a0: f004 fe10 bl 80050c4 - HAL_I2C_Slave_Receive_IT(&hi2c1, (uint8_t*)&data, 8); - 80004a4: 4908 ldr r1, [pc, #32] @ (80004c8 ) - 80004a6: 4b0a ldr r3, [pc, #40] @ (80004d0 ) - 80004a8: 2208 movs r2, #8 - 80004aa: 0018 movs r0, r3 - 80004ac: f001 fc1a bl 8001ce4 - HAL_Delay(100); - 80004b0: 46c0 nop @ (mov r8, r8) - 80004b2: e7be b.n 8000432 - 80004b4: 08005ee0 .word 0x08005ee0 - 80004b8: 200001d2 .word 0x200001d2 - 80004bc: 08005ef0 .word 0x08005ef0 - 80004c0: 200001e0 .word 0x200001e0 - 80004c4: 08005ef8 .word 0x08005ef8 - 80004c8: 200001d8 .word 0x200001d8 - 80004cc: 08005f00 .word 0x08005f00 - 80004d0: 20000084 .word 0x20000084 + HAL_Delay(500); + 8000b38: 23fa movs r3, #250 @ 0xfa + 8000b3a: 005b lsls r3, r3, #1 + 8000b3c: 0018 movs r0, r3 + 8000b3e: f000 fd9f bl 8001680 +// printf("s: %d\r\n", keypad_state); +// printf("r: %d\r\n", recv_cnt); +// printf("d: %d %d %d %d, %d %d %d %d\r\n", data[0], data[1], data[2], data[3], data[4], data[5], data[6], data[7]); +// HAL_I2C_Slave_Receive_IT(&hi2c1, (uint8_t*)&data, 8); -080004d4 : + if(rc522_checkCard(rfid_id)) { + 8000b42: 1d3b adds r3, r7, #4 + 8000b44: 0018 movs r0, r3 + 8000b46: f7ff fd2c bl 80005a2 + 8000b4a: 1e03 subs r3, r0, #0 + 8000b4c: d0f4 beq.n 8000b38 + printf("0x%x 0x%x 0x%x 0x%x\r\n", rfid_id[0], rfid_id[1], rfid_id[2], rfid_id[3]); + 8000b4e: 1d3b adds r3, r7, #4 + 8000b50: 781b ldrb r3, [r3, #0] + 8000b52: 0019 movs r1, r3 + 8000b54: 1d3b adds r3, r7, #4 + 8000b56: 785b ldrb r3, [r3, #1] + 8000b58: 001a movs r2, r3 + 8000b5a: 1d3b adds r3, r7, #4 + 8000b5c: 789b ldrb r3, [r3, #2] + 8000b5e: 001c movs r4, r3 + 8000b60: 1d3b adds r3, r7, #4 + 8000b62: 78db ldrb r3, [r3, #3] + 8000b64: 4803 ldr r0, [pc, #12] @ (8000b74 ) + 8000b66: 9300 str r3, [sp, #0] + 8000b68: 0023 movs r3, r4 + 8000b6a: f004 fc3d bl 80053e8 + HAL_Delay(500); + 8000b6e: e7e3 b.n 8000b38 + 8000b70: 08006218 .word 0x08006218 + 8000b74: 08006228 .word 0x08006228 + +08000b78 : /** * @brief System Clock Configuration * @retval None */ void SystemClock_Config(void) { - 80004d4: b590 push {r4, r7, lr} - 80004d6: b093 sub sp, #76 @ 0x4c - 80004d8: af00 add r7, sp, #0 + 8000b78: b590 push {r4, r7, lr} + 8000b7a: b093 sub sp, #76 @ 0x4c + 8000b7c: af00 add r7, sp, #0 RCC_OscInitTypeDef RCC_OscInitStruct = {0}; - 80004da: 2414 movs r4, #20 - 80004dc: 193b adds r3, r7, r4 - 80004de: 0018 movs r0, r3 - 80004e0: 2334 movs r3, #52 @ 0x34 - 80004e2: 001a movs r2, r3 - 80004e4: 2100 movs r1, #0 - 80004e6: f004 ff49 bl 800537c + 8000b7e: 2414 movs r4, #20 + 8000b80: 193b adds r3, r7, r4 + 8000b82: 0018 movs r0, r3 + 8000b84: 2334 movs r3, #52 @ 0x34 + 8000b86: 001a movs r2, r3 + 8000b88: 2100 movs r1, #0 + 8000b8a: f004 fd89 bl 80056a0 RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; - 80004ea: 1d3b adds r3, r7, #4 - 80004ec: 0018 movs r0, r3 - 80004ee: 2310 movs r3, #16 - 80004f0: 001a movs r2, r3 - 80004f2: 2100 movs r1, #0 - 80004f4: f004 ff42 bl 800537c + 8000b8e: 1d3b adds r3, r7, #4 + 8000b90: 0018 movs r0, r3 + 8000b92: 2310 movs r3, #16 + 8000b94: 001a movs r2, r3 + 8000b96: 2100 movs r1, #0 + 8000b98: f004 fd82 bl 80056a0 /** Configure the main internal regulator output voltage */ HAL_PWREx_ControlVoltageScaling(PWR_REGULATOR_VOLTAGE_SCALE1); - 80004f8: 2380 movs r3, #128 @ 0x80 - 80004fa: 009b lsls r3, r3, #2 - 80004fc: 0018 movs r0, r3 - 80004fe: f003 f83f bl 8003580 + 8000b9c: 2380 movs r3, #128 @ 0x80 + 8000b9e: 009b lsls r3, r3, #2 + 8000ba0: 0018 movs r0, r3 + 8000ba2: f002 f817 bl 8002bd4 /** Initializes the RCC Oscillators according to the specified parameters * in the RCC_OscInitTypeDef structure. */ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; - 8000502: 193b adds r3, r7, r4 - 8000504: 2201 movs r2, #1 - 8000506: 601a str r2, [r3, #0] + 8000ba6: 193b adds r3, r7, r4 + 8000ba8: 2201 movs r2, #1 + 8000baa: 601a str r2, [r3, #0] RCC_OscInitStruct.HSEState = RCC_HSE_ON; - 8000508: 193b adds r3, r7, r4 - 800050a: 2280 movs r2, #128 @ 0x80 - 800050c: 0252 lsls r2, r2, #9 - 800050e: 605a str r2, [r3, #4] + 8000bac: 193b adds r3, r7, r4 + 8000bae: 2280 movs r2, #128 @ 0x80 + 8000bb0: 0252 lsls r2, r2, #9 + 8000bb2: 605a str r2, [r3, #4] RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE; - 8000510: 193b adds r3, r7, r4 - 8000512: 2200 movs r2, #0 - 8000514: 61da str r2, [r3, #28] + 8000bb4: 193b adds r3, r7, r4 + 8000bb6: 2200 movs r2, #0 + 8000bb8: 61da str r2, [r3, #28] if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) - 8000516: 193b adds r3, r7, r4 - 8000518: 0018 movs r0, r3 - 800051a: f003 f87d bl 8003618 - 800051e: 1e03 subs r3, r0, #0 - 8000520: d001 beq.n 8000526 + 8000bba: 193b adds r3, r7, r4 + 8000bbc: 0018 movs r0, r3 + 8000bbe: f002 f855 bl 8002c6c + 8000bc2: 1e03 subs r3, r0, #0 + 8000bc4: d001 beq.n 8000bca { Error_Handler(); - 8000522: f000 fd47 bl 8000fb4 + 8000bc6: f000 fa95 bl 80010f4 } /** Initializes the CPU, AHB and APB buses clocks */ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK - 8000526: 1d3b adds r3, r7, #4 - 8000528: 2207 movs r2, #7 - 800052a: 601a str r2, [r3, #0] + 8000bca: 1d3b adds r3, r7, #4 + 8000bcc: 2207 movs r2, #7 + 8000bce: 601a str r2, [r3, #0] |RCC_CLOCKTYPE_PCLK1; RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSE; - 800052c: 1d3b adds r3, r7, #4 - 800052e: 2201 movs r2, #1 - 8000530: 605a str r2, [r3, #4] + 8000bd0: 1d3b adds r3, r7, #4 + 8000bd2: 2201 movs r2, #1 + 8000bd4: 605a str r2, [r3, #4] RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; - 8000532: 1d3b adds r3, r7, #4 - 8000534: 2200 movs r2, #0 - 8000536: 609a str r2, [r3, #8] + 8000bd6: 1d3b adds r3, r7, #4 + 8000bd8: 2200 movs r2, #0 + 8000bda: 609a str r2, [r3, #8] RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; - 8000538: 1d3b adds r3, r7, #4 - 800053a: 2200 movs r2, #0 - 800053c: 60da str r2, [r3, #12] + 8000bdc: 1d3b adds r3, r7, #4 + 8000bde: 2200 movs r2, #0 + 8000be0: 60da str r2, [r3, #12] if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK) - 800053e: 1d3b adds r3, r7, #4 - 8000540: 2100 movs r1, #0 - 8000542: 0018 movs r0, r3 - 8000544: f003 fb78 bl 8003c38 - 8000548: 1e03 subs r3, r0, #0 - 800054a: d001 beq.n 8000550 + 8000be2: 1d3b adds r3, r7, #4 + 8000be4: 2100 movs r1, #0 + 8000be6: 0018 movs r0, r3 + 8000be8: f002 fb50 bl 800328c + 8000bec: 1e03 subs r3, r0, #0 + 8000bee: d001 beq.n 8000bf4 { Error_Handler(); - 800054c: f000 fd32 bl 8000fb4 + 8000bf0: f000 fa80 bl 80010f4 } } - 8000550: 46c0 nop @ (mov r8, r8) - 8000552: 46bd mov sp, r7 - 8000554: b013 add sp, #76 @ 0x4c - 8000556: bd90 pop {r4, r7, pc} + 8000bf4: 46c0 nop @ (mov r8, r8) + 8000bf6: 46bd mov sp, r7 + 8000bf8: b013 add sp, #76 @ 0x4c + 8000bfa: bd90 pop {r4, r7, pc} -08000558 : +08000bfc : * @brief I2C1 Initialization Function * @param None * @retval None */ static void MX_I2C1_Init(void) { - 8000558: b580 push {r7, lr} - 800055a: af00 add r7, sp, #0 + 8000bfc: b580 push {r7, lr} + 8000bfe: af00 add r7, sp, #0 /* USER CODE END I2C1_Init 0 */ /* USER CODE BEGIN I2C1_Init 1 */ /* USER CODE END I2C1_Init 1 */ hi2c1.Instance = I2C1; - 800055c: 4b1b ldr r3, [pc, #108] @ (80005cc ) - 800055e: 4a1c ldr r2, [pc, #112] @ (80005d0 ) - 8000560: 601a str r2, [r3, #0] + 8000c00: 4b1b ldr r3, [pc, #108] @ (8000c70 ) + 8000c02: 4a1c ldr r2, [pc, #112] @ (8000c74 ) + 8000c04: 601a str r2, [r3, #0] hi2c1.Init.Timing = 0x2000090E; - 8000562: 4b1a ldr r3, [pc, #104] @ (80005cc ) - 8000564: 4a1b ldr r2, [pc, #108] @ (80005d4 ) - 8000566: 605a str r2, [r3, #4] + 8000c06: 4b1a ldr r3, [pc, #104] @ (8000c70 ) + 8000c08: 4a1b ldr r2, [pc, #108] @ (8000c78 ) + 8000c0a: 605a str r2, [r3, #4] hi2c1.Init.OwnAddress1 = 252; - 8000568: 4b18 ldr r3, [pc, #96] @ (80005cc ) - 800056a: 22fc movs r2, #252 @ 0xfc - 800056c: 609a str r2, [r3, #8] + 8000c0c: 4b18 ldr r3, [pc, #96] @ (8000c70 ) + 8000c0e: 22fc movs r2, #252 @ 0xfc + 8000c10: 609a str r2, [r3, #8] hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; - 800056e: 4b17 ldr r3, [pc, #92] @ (80005cc ) - 8000570: 2201 movs r2, #1 - 8000572: 60da str r2, [r3, #12] + 8000c12: 4b17 ldr r3, [pc, #92] @ (8000c70 ) + 8000c14: 2201 movs r2, #1 + 8000c16: 60da str r2, [r3, #12] hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; - 8000574: 4b15 ldr r3, [pc, #84] @ (80005cc ) - 8000576: 2200 movs r2, #0 - 8000578: 611a str r2, [r3, #16] + 8000c18: 4b15 ldr r3, [pc, #84] @ (8000c70 ) + 8000c1a: 2200 movs r2, #0 + 8000c1c: 611a str r2, [r3, #16] hi2c1.Init.OwnAddress2 = 0; - 800057a: 4b14 ldr r3, [pc, #80] @ (80005cc ) - 800057c: 2200 movs r2, #0 - 800057e: 615a str r2, [r3, #20] + 8000c1e: 4b14 ldr r3, [pc, #80] @ (8000c70 ) + 8000c20: 2200 movs r2, #0 + 8000c22: 615a str r2, [r3, #20] hi2c1.Init.OwnAddress2Masks = I2C_OA2_NOMASK; - 8000580: 4b12 ldr r3, [pc, #72] @ (80005cc ) - 8000582: 2200 movs r2, #0 - 8000584: 619a str r2, [r3, #24] + 8000c24: 4b12 ldr r3, [pc, #72] @ (8000c70 ) + 8000c26: 2200 movs r2, #0 + 8000c28: 619a str r2, [r3, #24] hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; - 8000586: 4b11 ldr r3, [pc, #68] @ (80005cc ) - 8000588: 2200 movs r2, #0 - 800058a: 61da str r2, [r3, #28] + 8000c2a: 4b11 ldr r3, [pc, #68] @ (8000c70 ) + 8000c2c: 2200 movs r2, #0 + 8000c2e: 61da str r2, [r3, #28] hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; - 800058c: 4b0f ldr r3, [pc, #60] @ (80005cc ) - 800058e: 2200 movs r2, #0 - 8000590: 621a str r2, [r3, #32] + 8000c30: 4b0f ldr r3, [pc, #60] @ (8000c70 ) + 8000c32: 2200 movs r2, #0 + 8000c34: 621a str r2, [r3, #32] if (HAL_I2C_Init(&hi2c1) != HAL_OK) - 8000592: 4b0e ldr r3, [pc, #56] @ (80005cc ) - 8000594: 0018 movs r0, r3 - 8000596: f001 faff bl 8001b98 - 800059a: 1e03 subs r3, r0, #0 - 800059c: d001 beq.n 80005a2 + 8000c36: 4b0e ldr r3, [pc, #56] @ (8000c70 ) + 8000c38: 0018 movs r0, r3 + 8000c3a: f001 f831 bl 8001ca0 + 8000c3e: 1e03 subs r3, r0, #0 + 8000c40: d001 beq.n 8000c46 { Error_Handler(); - 800059e: f000 fd09 bl 8000fb4 + 8000c42: f000 fa57 bl 80010f4 } /** Configure Analogue filter */ if (HAL_I2CEx_ConfigAnalogFilter(&hi2c1, I2C_ANALOGFILTER_ENABLE) != HAL_OK) - 80005a2: 4b0a ldr r3, [pc, #40] @ (80005cc ) - 80005a4: 2100 movs r1, #0 - 80005a6: 0018 movs r0, r3 - 80005a8: f002 ff52 bl 8003450 - 80005ac: 1e03 subs r3, r0, #0 - 80005ae: d001 beq.n 80005b4 + 8000c46: 4b0a ldr r3, [pc, #40] @ (8000c70 ) + 8000c48: 2100 movs r1, #0 + 8000c4a: 0018 movs r0, r3 + 8000c4c: f001 ff2a bl 8002aa4 + 8000c50: 1e03 subs r3, r0, #0 + 8000c52: d001 beq.n 8000c58 { Error_Handler(); - 80005b0: f000 fd00 bl 8000fb4 + 8000c54: f000 fa4e bl 80010f4 } /** Configure Digital filter */ if (HAL_I2CEx_ConfigDigitalFilter(&hi2c1, 0) != HAL_OK) - 80005b4: 4b05 ldr r3, [pc, #20] @ (80005cc ) - 80005b6: 2100 movs r1, #0 - 80005b8: 0018 movs r0, r3 - 80005ba: f002 ff95 bl 80034e8 - 80005be: 1e03 subs r3, r0, #0 - 80005c0: d001 beq.n 80005c6 + 8000c58: 4b05 ldr r3, [pc, #20] @ (8000c70 ) + 8000c5a: 2100 movs r1, #0 + 8000c5c: 0018 movs r0, r3 + 8000c5e: f001 ff6d bl 8002b3c + 8000c62: 1e03 subs r3, r0, #0 + 8000c64: d001 beq.n 8000c6a { Error_Handler(); - 80005c2: f000 fcf7 bl 8000fb4 + 8000c66: f000 fa45 bl 80010f4 } /* USER CODE BEGIN I2C1_Init 2 */ /* USER CODE END I2C1_Init 2 */ } - 80005c6: 46c0 nop @ (mov r8, r8) - 80005c8: 46bd mov sp, r7 - 80005ca: bd80 pop {r7, pc} - 80005cc: 20000084 .word 0x20000084 - 80005d0: 40005400 .word 0x40005400 - 80005d4: 2000090e .word 0x2000090e + 8000c6a: 46c0 nop @ (mov r8, r8) + 8000c6c: 46bd mov sp, r7 + 8000c6e: bd80 pop {r7, pc} + 8000c70: 20000084 .word 0x20000084 + 8000c74: 40005400 .word 0x40005400 + 8000c78: 2000090e .word 0x2000090e -080005d8 : +08000c7c : * @brief SPI1 Initialization Function * @param None * @retval None */ static void MX_SPI1_Init(void) { - 80005d8: b580 push {r7, lr} - 80005da: af00 add r7, sp, #0 + 8000c7c: b580 push {r7, lr} + 8000c7e: af00 add r7, sp, #0 /* USER CODE BEGIN SPI1_Init 1 */ /* USER CODE END SPI1_Init 1 */ /* SPI1 parameter configuration*/ hspi1.Instance = SPI1; - 80005dc: 4b1b ldr r3, [pc, #108] @ (800064c ) - 80005de: 4a1c ldr r2, [pc, #112] @ (8000650 ) - 80005e0: 601a str r2, [r3, #0] + 8000c80: 4b1b ldr r3, [pc, #108] @ (8000cf0 ) + 8000c82: 4a1c ldr r2, [pc, #112] @ (8000cf4 ) + 8000c84: 601a str r2, [r3, #0] hspi1.Init.Mode = SPI_MODE_MASTER; - 80005e2: 4b1a ldr r3, [pc, #104] @ (800064c ) - 80005e4: 2282 movs r2, #130 @ 0x82 - 80005e6: 0052 lsls r2, r2, #1 - 80005e8: 605a str r2, [r3, #4] + 8000c86: 4b1a ldr r3, [pc, #104] @ (8000cf0 ) + 8000c88: 2282 movs r2, #130 @ 0x82 + 8000c8a: 0052 lsls r2, r2, #1 + 8000c8c: 605a str r2, [r3, #4] hspi1.Init.Direction = SPI_DIRECTION_2LINES; - 80005ea: 4b18 ldr r3, [pc, #96] @ (800064c ) - 80005ec: 2200 movs r2, #0 - 80005ee: 609a str r2, [r3, #8] - hspi1.Init.DataSize = SPI_DATASIZE_4BIT; - 80005f0: 4b16 ldr r3, [pc, #88] @ (800064c ) - 80005f2: 22c0 movs r2, #192 @ 0xc0 - 80005f4: 0092 lsls r2, r2, #2 - 80005f6: 60da str r2, [r3, #12] + 8000c8e: 4b18 ldr r3, [pc, #96] @ (8000cf0 ) + 8000c90: 2200 movs r2, #0 + 8000c92: 609a str r2, [r3, #8] + hspi1.Init.DataSize = SPI_DATASIZE_8BIT; + 8000c94: 4b16 ldr r3, [pc, #88] @ (8000cf0 ) + 8000c96: 22e0 movs r2, #224 @ 0xe0 + 8000c98: 00d2 lsls r2, r2, #3 + 8000c9a: 60da str r2, [r3, #12] hspi1.Init.CLKPolarity = SPI_POLARITY_LOW; - 80005f8: 4b14 ldr r3, [pc, #80] @ (800064c ) - 80005fa: 2200 movs r2, #0 - 80005fc: 611a str r2, [r3, #16] + 8000c9c: 4b14 ldr r3, [pc, #80] @ (8000cf0 ) + 8000c9e: 2200 movs r2, #0 + 8000ca0: 611a str r2, [r3, #16] hspi1.Init.CLKPhase = SPI_PHASE_1EDGE; - 80005fe: 4b13 ldr r3, [pc, #76] @ (800064c ) - 8000600: 2200 movs r2, #0 - 8000602: 615a str r2, [r3, #20] - hspi1.Init.NSS = SPI_NSS_HARD_OUTPUT; - 8000604: 4b11 ldr r3, [pc, #68] @ (800064c ) - 8000606: 2280 movs r2, #128 @ 0x80 - 8000608: 02d2 lsls r2, r2, #11 - 800060a: 619a str r2, [r3, #24] + 8000ca2: 4b13 ldr r3, [pc, #76] @ (8000cf0 ) + 8000ca4: 2200 movs r2, #0 + 8000ca6: 615a str r2, [r3, #20] + hspi1.Init.NSS = SPI_NSS_SOFT; + 8000ca8: 4b11 ldr r3, [pc, #68] @ (8000cf0 ) + 8000caa: 2280 movs r2, #128 @ 0x80 + 8000cac: 0092 lsls r2, r2, #2 + 8000cae: 619a str r2, [r3, #24] hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2; - 800060c: 4b0f ldr r3, [pc, #60] @ (800064c ) - 800060e: 2200 movs r2, #0 - 8000610: 61da str r2, [r3, #28] + 8000cb0: 4b0f ldr r3, [pc, #60] @ (8000cf0 ) + 8000cb2: 2200 movs r2, #0 + 8000cb4: 61da str r2, [r3, #28] hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB; - 8000612: 4b0e ldr r3, [pc, #56] @ (800064c ) - 8000614: 2200 movs r2, #0 - 8000616: 621a str r2, [r3, #32] + 8000cb6: 4b0e ldr r3, [pc, #56] @ (8000cf0 ) + 8000cb8: 2200 movs r2, #0 + 8000cba: 621a str r2, [r3, #32] hspi1.Init.TIMode = SPI_TIMODE_DISABLE; - 8000618: 4b0c ldr r3, [pc, #48] @ (800064c ) - 800061a: 2200 movs r2, #0 - 800061c: 625a str r2, [r3, #36] @ 0x24 + 8000cbc: 4b0c ldr r3, [pc, #48] @ (8000cf0 ) + 8000cbe: 2200 movs r2, #0 + 8000cc0: 625a str r2, [r3, #36] @ 0x24 hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; - 800061e: 4b0b ldr r3, [pc, #44] @ (800064c ) - 8000620: 2200 movs r2, #0 - 8000622: 629a str r2, [r3, #40] @ 0x28 + 8000cc2: 4b0b ldr r3, [pc, #44] @ (8000cf0 ) + 8000cc4: 2200 movs r2, #0 + 8000cc6: 629a str r2, [r3, #40] @ 0x28 hspi1.Init.CRCPolynomial = 7; - 8000624: 4b09 ldr r3, [pc, #36] @ (800064c ) - 8000626: 2207 movs r2, #7 - 8000628: 62da str r2, [r3, #44] @ 0x2c + 8000cc8: 4b09 ldr r3, [pc, #36] @ (8000cf0 ) + 8000cca: 2207 movs r2, #7 + 8000ccc: 62da str r2, [r3, #44] @ 0x2c hspi1.Init.CRCLength = SPI_CRC_LENGTH_DATASIZE; - 800062a: 4b08 ldr r3, [pc, #32] @ (800064c ) - 800062c: 2200 movs r2, #0 - 800062e: 631a str r2, [r3, #48] @ 0x30 + 8000cce: 4b08 ldr r3, [pc, #32] @ (8000cf0 ) + 8000cd0: 2200 movs r2, #0 + 8000cd2: 631a str r2, [r3, #48] @ 0x30 hspi1.Init.NSSPMode = SPI_NSS_PULSE_ENABLE; - 8000630: 4b06 ldr r3, [pc, #24] @ (800064c ) - 8000632: 2208 movs r2, #8 - 8000634: 635a str r2, [r3, #52] @ 0x34 + 8000cd4: 4b06 ldr r3, [pc, #24] @ (8000cf0 ) + 8000cd6: 2208 movs r2, #8 + 8000cd8: 635a str r2, [r3, #52] @ 0x34 if (HAL_SPI_Init(&hspi1) != HAL_OK) - 8000636: 4b05 ldr r3, [pc, #20] @ (800064c ) - 8000638: 0018 movs r0, r3 - 800063a: f003 fddb bl 80041f4 - 800063e: 1e03 subs r3, r0, #0 - 8000640: d001 beq.n 8000646 + 8000cda: 4b05 ldr r3, [pc, #20] @ (8000cf0 ) + 8000cdc: 0018 movs r0, r3 + 8000cde: f002 fdb3 bl 8003848 + 8000ce2: 1e03 subs r3, r0, #0 + 8000ce4: d001 beq.n 8000cea { Error_Handler(); - 8000642: f000 fcb7 bl 8000fb4 + 8000ce6: f000 fa05 bl 80010f4 } /* USER CODE BEGIN SPI1_Init 2 */ /* USER CODE END SPI1_Init 2 */ } - 8000646: 46c0 nop @ (mov r8, r8) - 8000648: 46bd mov sp, r7 - 800064a: bd80 pop {r7, pc} - 800064c: 200000d8 .word 0x200000d8 - 8000650: 40013000 .word 0x40013000 + 8000cea: 46c0 nop @ (mov r8, r8) + 8000cec: 46bd mov sp, r7 + 8000cee: bd80 pop {r7, pc} + 8000cf0: 200000d8 .word 0x200000d8 + 8000cf4: 40013000 .word 0x40013000 -08000654 : +08000cf8 : * @brief USART2 Initialization Function * @param None * @retval None */ static void MX_USART2_UART_Init(void) { - 8000654: b580 push {r7, lr} - 8000656: af00 add r7, sp, #0 + 8000cf8: b580 push {r7, lr} + 8000cfa: af00 add r7, sp, #0 /* USER CODE END USART2_Init 0 */ /* USER CODE BEGIN USART2_Init 1 */ /* USER CODE END USART2_Init 1 */ huart2.Instance = USART2; - 8000658: 4b23 ldr r3, [pc, #140] @ (80006e8 ) - 800065a: 4a24 ldr r2, [pc, #144] @ (80006ec ) - 800065c: 601a str r2, [r3, #0] + 8000cfc: 4b23 ldr r3, [pc, #140] @ (8000d8c ) + 8000cfe: 4a24 ldr r2, [pc, #144] @ (8000d90 ) + 8000d00: 601a str r2, [r3, #0] huart2.Init.BaudRate = 115200; - 800065e: 4b22 ldr r3, [pc, #136] @ (80006e8 ) - 8000660: 22e1 movs r2, #225 @ 0xe1 - 8000662: 0252 lsls r2, r2, #9 - 8000664: 605a str r2, [r3, #4] + 8000d02: 4b22 ldr r3, [pc, #136] @ (8000d8c ) + 8000d04: 22e1 movs r2, #225 @ 0xe1 + 8000d06: 0252 lsls r2, r2, #9 + 8000d08: 605a str r2, [r3, #4] huart2.Init.WordLength = UART_WORDLENGTH_8B; - 8000666: 4b20 ldr r3, [pc, #128] @ (80006e8 ) - 8000668: 2200 movs r2, #0 - 800066a: 609a str r2, [r3, #8] + 8000d0a: 4b20 ldr r3, [pc, #128] @ (8000d8c ) + 8000d0c: 2200 movs r2, #0 + 8000d0e: 609a str r2, [r3, #8] huart2.Init.StopBits = UART_STOPBITS_1; - 800066c: 4b1e ldr r3, [pc, #120] @ (80006e8 ) - 800066e: 2200 movs r2, #0 - 8000670: 60da str r2, [r3, #12] + 8000d10: 4b1e ldr r3, [pc, #120] @ (8000d8c ) + 8000d12: 2200 movs r2, #0 + 8000d14: 60da str r2, [r3, #12] huart2.Init.Parity = UART_PARITY_NONE; - 8000672: 4b1d ldr r3, [pc, #116] @ (80006e8 ) - 8000674: 2200 movs r2, #0 - 8000676: 611a str r2, [r3, #16] + 8000d16: 4b1d ldr r3, [pc, #116] @ (8000d8c ) + 8000d18: 2200 movs r2, #0 + 8000d1a: 611a str r2, [r3, #16] huart2.Init.Mode = UART_MODE_TX_RX; - 8000678: 4b1b ldr r3, [pc, #108] @ (80006e8 ) - 800067a: 220c movs r2, #12 - 800067c: 615a str r2, [r3, #20] + 8000d1c: 4b1b ldr r3, [pc, #108] @ (8000d8c ) + 8000d1e: 220c movs r2, #12 + 8000d20: 615a str r2, [r3, #20] huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE; - 800067e: 4b1a ldr r3, [pc, #104] @ (80006e8 ) - 8000680: 2200 movs r2, #0 - 8000682: 619a str r2, [r3, #24] + 8000d22: 4b1a ldr r3, [pc, #104] @ (8000d8c ) + 8000d24: 2200 movs r2, #0 + 8000d26: 619a str r2, [r3, #24] huart2.Init.OverSampling = UART_OVERSAMPLING_16; - 8000684: 4b18 ldr r3, [pc, #96] @ (80006e8 ) - 8000686: 2200 movs r2, #0 - 8000688: 61da str r2, [r3, #28] + 8000d28: 4b18 ldr r3, [pc, #96] @ (8000d8c ) + 8000d2a: 2200 movs r2, #0 + 8000d2c: 61da str r2, [r3, #28] huart2.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE; - 800068a: 4b17 ldr r3, [pc, #92] @ (80006e8 ) - 800068c: 2200 movs r2, #0 - 800068e: 621a str r2, [r3, #32] + 8000d2e: 4b17 ldr r3, [pc, #92] @ (8000d8c ) + 8000d30: 2200 movs r2, #0 + 8000d32: 621a str r2, [r3, #32] huart2.Init.ClockPrescaler = UART_PRESCALER_DIV1; - 8000690: 4b15 ldr r3, [pc, #84] @ (80006e8 ) - 8000692: 2200 movs r2, #0 - 8000694: 625a str r2, [r3, #36] @ 0x24 + 8000d34: 4b15 ldr r3, [pc, #84] @ (8000d8c ) + 8000d36: 2200 movs r2, #0 + 8000d38: 625a str r2, [r3, #36] @ 0x24 huart2.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT; - 8000696: 4b14 ldr r3, [pc, #80] @ (80006e8 ) - 8000698: 2200 movs r2, #0 - 800069a: 629a str r2, [r3, #40] @ 0x28 + 8000d3a: 4b14 ldr r3, [pc, #80] @ (8000d8c ) + 8000d3c: 2200 movs r2, #0 + 8000d3e: 629a str r2, [r3, #40] @ 0x28 if (HAL_UART_Init(&huart2) != HAL_OK) - 800069c: 4b12 ldr r3, [pc, #72] @ (80006e8 ) - 800069e: 0018 movs r0, r3 - 80006a0: f003 fe60 bl 8004364 - 80006a4: 1e03 subs r3, r0, #0 - 80006a6: d001 beq.n 80006ac + 8000d40: 4b12 ldr r3, [pc, #72] @ (8000d8c ) + 8000d42: 0018 movs r0, r3 + 8000d44: f003 fca0 bl 8004688 + 8000d48: 1e03 subs r3, r0, #0 + 8000d4a: d001 beq.n 8000d50 { Error_Handler(); - 80006a8: f000 fc84 bl 8000fb4 + 8000d4c: f000 f9d2 bl 80010f4 } if (HAL_UARTEx_SetTxFifoThreshold(&huart2, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK) - 80006ac: 4b0e ldr r3, [pc, #56] @ (80006e8 ) - 80006ae: 2100 movs r1, #0 - 80006b0: 0018 movs r0, r3 - 80006b2: f004 fb63 bl 8004d7c - 80006b6: 1e03 subs r3, r0, #0 - 80006b8: d001 beq.n 80006be + 8000d50: 4b0e ldr r3, [pc, #56] @ (8000d8c ) + 8000d52: 2100 movs r1, #0 + 8000d54: 0018 movs r0, r3 + 8000d56: f004 f9a3 bl 80050a0 + 8000d5a: 1e03 subs r3, r0, #0 + 8000d5c: d001 beq.n 8000d62 { Error_Handler(); - 80006ba: f000 fc7b bl 8000fb4 + 8000d5e: f000 f9c9 bl 80010f4 } if (HAL_UARTEx_SetRxFifoThreshold(&huart2, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK) - 80006be: 4b0a ldr r3, [pc, #40] @ (80006e8 ) - 80006c0: 2100 movs r1, #0 - 80006c2: 0018 movs r0, r3 - 80006c4: f004 fb9a bl 8004dfc - 80006c8: 1e03 subs r3, r0, #0 - 80006ca: d001 beq.n 80006d0 + 8000d62: 4b0a ldr r3, [pc, #40] @ (8000d8c ) + 8000d64: 2100 movs r1, #0 + 8000d66: 0018 movs r0, r3 + 8000d68: f004 f9da bl 8005120 + 8000d6c: 1e03 subs r3, r0, #0 + 8000d6e: d001 beq.n 8000d74 { Error_Handler(); - 80006cc: f000 fc72 bl 8000fb4 + 8000d70: f000 f9c0 bl 80010f4 } if (HAL_UARTEx_DisableFifoMode(&huart2) != HAL_OK) - 80006d0: 4b05 ldr r3, [pc, #20] @ (80006e8 ) - 80006d2: 0018 movs r0, r3 - 80006d4: f004 fb18 bl 8004d08 - 80006d8: 1e03 subs r3, r0, #0 - 80006da: d001 beq.n 80006e0 + 8000d74: 4b05 ldr r3, [pc, #20] @ (8000d8c ) + 8000d76: 0018 movs r0, r3 + 8000d78: f004 f958 bl 800502c + 8000d7c: 1e03 subs r3, r0, #0 + 8000d7e: d001 beq.n 8000d84 { Error_Handler(); - 80006dc: f000 fc6a bl 8000fb4 + 8000d80: f000 f9b8 bl 80010f4 } /* USER CODE BEGIN USART2_Init 2 */ /* USER CODE END USART2_Init 2 */ } - 80006e0: 46c0 nop @ (mov r8, r8) - 80006e2: 46bd mov sp, r7 - 80006e4: bd80 pop {r7, pc} - 80006e6: 46c0 nop @ (mov r8, r8) - 80006e8: 2000013c .word 0x2000013c - 80006ec: 40004400 .word 0x40004400 + 8000d84: 46c0 nop @ (mov r8, r8) + 8000d86: 46bd mov sp, r7 + 8000d88: bd80 pop {r7, pc} + 8000d8a: 46c0 nop @ (mov r8, r8) + 8000d8c: 2000013c .word 0x2000013c + 8000d90: 40004400 .word 0x40004400 -080006f0 : +08000d94 : * @brief GPIO Initialization Function * @param None * @retval None */ static void MX_GPIO_Init(void) { - 80006f0: b590 push {r4, r7, lr} - 80006f2: b08b sub sp, #44 @ 0x2c - 80006f4: af00 add r7, sp, #0 + 8000d94: b590 push {r4, r7, lr} + 8000d96: b08b sub sp, #44 @ 0x2c + 8000d98: af00 add r7, sp, #0 GPIO_InitTypeDef GPIO_InitStruct = {0}; - 80006f6: 2414 movs r4, #20 - 80006f8: 193b adds r3, r7, r4 - 80006fa: 0018 movs r0, r3 - 80006fc: 2314 movs r3, #20 - 80006fe: 001a movs r2, r3 - 8000700: 2100 movs r1, #0 - 8000702: f004 fe3b bl 800537c + 8000d9a: 2414 movs r4, #20 + 8000d9c: 193b adds r3, r7, r4 + 8000d9e: 0018 movs r0, r3 + 8000da0: 2314 movs r3, #20 + 8000da2: 001a movs r2, r3 + 8000da4: 2100 movs r1, #0 + 8000da6: f004 fc7b bl 80056a0 /* USER CODE BEGIN MX_GPIO_Init_1 */ /* USER CODE END MX_GPIO_Init_1 */ /* GPIO Ports Clock Enable */ __HAL_RCC_GPIOF_CLK_ENABLE(); - 8000706: 4b8e ldr r3, [pc, #568] @ (8000940 ) - 8000708: 6b5a ldr r2, [r3, #52] @ 0x34 - 800070a: 4b8d ldr r3, [pc, #564] @ (8000940 ) - 800070c: 2120 movs r1, #32 - 800070e: 430a orrs r2, r1 - 8000710: 635a str r2, [r3, #52] @ 0x34 - 8000712: 4b8b ldr r3, [pc, #556] @ (8000940 ) - 8000714: 6b5b ldr r3, [r3, #52] @ 0x34 - 8000716: 2220 movs r2, #32 - 8000718: 4013 ands r3, r2 - 800071a: 613b str r3, [r7, #16] - 800071c: 693b ldr r3, [r7, #16] + 8000daa: 4b9b ldr r3, [pc, #620] @ (8001018 ) + 8000dac: 6b5a ldr r2, [r3, #52] @ 0x34 + 8000dae: 4b9a ldr r3, [pc, #616] @ (8001018 ) + 8000db0: 2120 movs r1, #32 + 8000db2: 430a orrs r2, r1 + 8000db4: 635a str r2, [r3, #52] @ 0x34 + 8000db6: 4b98 ldr r3, [pc, #608] @ (8001018 ) + 8000db8: 6b5b ldr r3, [r3, #52] @ 0x34 + 8000dba: 2220 movs r2, #32 + 8000dbc: 4013 ands r3, r2 + 8000dbe: 613b str r3, [r7, #16] + 8000dc0: 693b ldr r3, [r7, #16] __HAL_RCC_GPIOA_CLK_ENABLE(); - 800071e: 4b88 ldr r3, [pc, #544] @ (8000940 ) - 8000720: 6b5a ldr r2, [r3, #52] @ 0x34 - 8000722: 4b87 ldr r3, [pc, #540] @ (8000940 ) - 8000724: 2101 movs r1, #1 - 8000726: 430a orrs r2, r1 - 8000728: 635a str r2, [r3, #52] @ 0x34 - 800072a: 4b85 ldr r3, [pc, #532] @ (8000940 ) - 800072c: 6b5b ldr r3, [r3, #52] @ 0x34 - 800072e: 2201 movs r2, #1 - 8000730: 4013 ands r3, r2 - 8000732: 60fb str r3, [r7, #12] - 8000734: 68fb ldr r3, [r7, #12] + 8000dc2: 4b95 ldr r3, [pc, #596] @ (8001018 ) + 8000dc4: 6b5a ldr r2, [r3, #52] @ 0x34 + 8000dc6: 4b94 ldr r3, [pc, #592] @ (8001018 ) + 8000dc8: 2101 movs r1, #1 + 8000dca: 430a orrs r2, r1 + 8000dcc: 635a str r2, [r3, #52] @ 0x34 + 8000dce: 4b92 ldr r3, [pc, #584] @ (8001018 ) + 8000dd0: 6b5b ldr r3, [r3, #52] @ 0x34 + 8000dd2: 2201 movs r2, #1 + 8000dd4: 4013 ands r3, r2 + 8000dd6: 60fb str r3, [r7, #12] + 8000dd8: 68fb ldr r3, [r7, #12] __HAL_RCC_GPIOB_CLK_ENABLE(); - 8000736: 4b82 ldr r3, [pc, #520] @ (8000940 ) - 8000738: 6b5a ldr r2, [r3, #52] @ 0x34 - 800073a: 4b81 ldr r3, [pc, #516] @ (8000940 ) - 800073c: 2102 movs r1, #2 - 800073e: 430a orrs r2, r1 - 8000740: 635a str r2, [r3, #52] @ 0x34 - 8000742: 4b7f ldr r3, [pc, #508] @ (8000940 ) - 8000744: 6b5b ldr r3, [r3, #52] @ 0x34 - 8000746: 2202 movs r2, #2 - 8000748: 4013 ands r3, r2 - 800074a: 60bb str r3, [r7, #8] - 800074c: 68bb ldr r3, [r7, #8] + 8000dda: 4b8f ldr r3, [pc, #572] @ (8001018 ) + 8000ddc: 6b5a ldr r2, [r3, #52] @ 0x34 + 8000dde: 4b8e ldr r3, [pc, #568] @ (8001018 ) + 8000de0: 2102 movs r1, #2 + 8000de2: 430a orrs r2, r1 + 8000de4: 635a str r2, [r3, #52] @ 0x34 + 8000de6: 4b8c ldr r3, [pc, #560] @ (8001018 ) + 8000de8: 6b5b ldr r3, [r3, #52] @ 0x34 + 8000dea: 2202 movs r2, #2 + 8000dec: 4013 ands r3, r2 + 8000dee: 60bb str r3, [r7, #8] + 8000df0: 68bb ldr r3, [r7, #8] __HAL_RCC_GPIOC_CLK_ENABLE(); - 800074e: 4b7c ldr r3, [pc, #496] @ (8000940 ) - 8000750: 6b5a ldr r2, [r3, #52] @ 0x34 - 8000752: 4b7b ldr r3, [pc, #492] @ (8000940 ) - 8000754: 2104 movs r1, #4 - 8000756: 430a orrs r2, r1 - 8000758: 635a str r2, [r3, #52] @ 0x34 - 800075a: 4b79 ldr r3, [pc, #484] @ (8000940 ) - 800075c: 6b5b ldr r3, [r3, #52] @ 0x34 - 800075e: 2204 movs r2, #4 - 8000760: 4013 ands r3, r2 - 8000762: 607b str r3, [r7, #4] - 8000764: 687b ldr r3, [r7, #4] + 8000df2: 4b89 ldr r3, [pc, #548] @ (8001018 ) + 8000df4: 6b5a ldr r2, [r3, #52] @ 0x34 + 8000df6: 4b88 ldr r3, [pc, #544] @ (8001018 ) + 8000df8: 2104 movs r1, #4 + 8000dfa: 430a orrs r2, r1 + 8000dfc: 635a str r2, [r3, #52] @ 0x34 + 8000dfe: 4b86 ldr r3, [pc, #536] @ (8001018 ) + 8000e00: 6b5b ldr r3, [r3, #52] @ 0x34 + 8000e02: 2204 movs r2, #4 + 8000e04: 4013 ands r3, r2 + 8000e06: 607b str r3, [r7, #4] + 8000e08: 687b ldr r3, [r7, #4] __HAL_RCC_GPIOD_CLK_ENABLE(); - 8000766: 4b76 ldr r3, [pc, #472] @ (8000940 ) - 8000768: 6b5a ldr r2, [r3, #52] @ 0x34 - 800076a: 4b75 ldr r3, [pc, #468] @ (8000940 ) - 800076c: 2108 movs r1, #8 - 800076e: 430a orrs r2, r1 - 8000770: 635a str r2, [r3, #52] @ 0x34 - 8000772: 4b73 ldr r3, [pc, #460] @ (8000940 ) - 8000774: 6b5b ldr r3, [r3, #52] @ 0x34 - 8000776: 2208 movs r2, #8 - 8000778: 4013 ands r3, r2 - 800077a: 603b str r3, [r7, #0] - 800077c: 683b ldr r3, [r7, #0] + 8000e0a: 4b83 ldr r3, [pc, #524] @ (8001018 ) + 8000e0c: 6b5a ldr r2, [r3, #52] @ 0x34 + 8000e0e: 4b82 ldr r3, [pc, #520] @ (8001018 ) + 8000e10: 2108 movs r1, #8 + 8000e12: 430a orrs r2, r1 + 8000e14: 635a str r2, [r3, #52] @ 0x34 + 8000e16: 4b80 ldr r3, [pc, #512] @ (8001018 ) + 8000e18: 6b5b ldr r3, [r3, #52] @ 0x34 + 8000e1a: 2208 movs r2, #8 + 8000e1c: 4013 ands r3, r2 + 8000e1e: 603b str r3, [r7, #0] + 8000e20: 683b ldr r3, [r7, #0] + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(RFID_CS_GPIO_Port, RFID_CS_Pin, GPIO_PIN_RESET); + 8000e22: 23a0 movs r3, #160 @ 0xa0 + 8000e24: 05db lsls r3, r3, #23 + 8000e26: 2200 movs r2, #0 + 8000e28: 2110 movs r1, #16 + 8000e2a: 0018 movs r0, r3 + 8000e2c: f000 ff1a bl 8001c64 /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(RFID_RST_GPIO_Port, RFID_RST_Pin, GPIO_PIN_RESET); - 800077e: 4b71 ldr r3, [pc, #452] @ (8000944 ) - 8000780: 2200 movs r2, #0 - 8000782: 2104 movs r1, #4 - 8000784: 0018 movs r0, r3 - 8000786: f001 f9ea bl 8001b5e + 8000e30: 4b7a ldr r3, [pc, #488] @ (800101c ) + 8000e32: 2200 movs r2, #0 + 8000e34: 2104 movs r1, #4 + 8000e36: 0018 movs r0, r3 + 8000e38: f000 ff14 bl 8001c64 /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(GPIOB, COL1_Pin|KP_C2_Pin|KP_C3_Pin|KP_C4_Pin, GPIO_PIN_SET); - 800078a: 496f ldr r1, [pc, #444] @ (8000948 ) - 800078c: 4b6d ldr r3, [pc, #436] @ (8000944 ) - 800078e: 2201 movs r2, #1 - 8000790: 0018 movs r0, r3 - 8000792: f001 f9e4 bl 8001b5e + 8000e3c: 4978 ldr r1, [pc, #480] @ (8001020 ) + 8000e3e: 4b77 ldr r3, [pc, #476] @ (800101c ) + 8000e40: 2201 movs r2, #1 + 8000e42: 0018 movs r0, r3 + 8000e44: f000 ff0e bl 8001c64 /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(COL2_GPIO_Port, COL2_Pin, GPIO_PIN_SET); - 8000796: 2380 movs r3, #128 @ 0x80 - 8000798: 0059 lsls r1, r3, #1 - 800079a: 23a0 movs r3, #160 @ 0xa0 - 800079c: 05db lsls r3, r3, #23 - 800079e: 2201 movs r2, #1 - 80007a0: 0018 movs r0, r3 - 80007a2: f001 f9dc bl 8001b5e + 8000e48: 2380 movs r3, #128 @ 0x80 + 8000e4a: 0059 lsls r1, r3, #1 + 8000e4c: 23a0 movs r3, #160 @ 0xa0 + 8000e4e: 05db lsls r3, r3, #23 + 8000e50: 2201 movs r2, #1 + 8000e52: 0018 movs r0, r3 + 8000e54: f000 ff06 bl 8001c64 /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(GPIOD, COL3_Pin|KP_C1_Pin, GPIO_PIN_SET); - 80007a6: 4b69 ldr r3, [pc, #420] @ (800094c ) - 80007a8: 2201 movs r2, #1 - 80007aa: 210a movs r1, #10 - 80007ac: 0018 movs r0, r3 - 80007ae: f001 f9d6 bl 8001b5e + 8000e58: 4b72 ldr r3, [pc, #456] @ (8001024 ) + 8000e5a: 2201 movs r2, #1 + 8000e5c: 210a movs r1, #10 + 8000e5e: 0018 movs r0, r3 + 8000e60: f000 ff00 bl 8001c64 /*Configure GPIO pin : INT_Pin */ GPIO_InitStruct.Pin = INT_Pin; - 80007b2: 193b adds r3, r7, r4 - 80007b4: 2202 movs r2, #2 - 80007b6: 601a str r2, [r3, #0] + 8000e64: 193b adds r3, r7, r4 + 8000e66: 2202 movs r2, #2 + 8000e68: 601a str r2, [r3, #0] GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 80007b8: 193b adds r3, r7, r4 - 80007ba: 2202 movs r2, #2 - 80007bc: 605a str r2, [r3, #4] + 8000e6a: 193b adds r3, r7, r4 + 8000e6c: 2202 movs r2, #2 + 8000e6e: 605a str r2, [r3, #4] GPIO_InitStruct.Pull = GPIO_NOPULL; - 80007be: 193b adds r3, r7, r4 - 80007c0: 2200 movs r2, #0 - 80007c2: 609a str r2, [r3, #8] + 8000e70: 193b adds r3, r7, r4 + 8000e72: 2200 movs r2, #0 + 8000e74: 609a str r2, [r3, #8] GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 80007c4: 193b adds r3, r7, r4 - 80007c6: 2200 movs r2, #0 - 80007c8: 60da str r2, [r3, #12] + 8000e76: 193b adds r3, r7, r4 + 8000e78: 2200 movs r2, #0 + 8000e7a: 60da str r2, [r3, #12] GPIO_InitStruct.Alternate = GPIO_AF7_EVENTOUT; - 80007ca: 193b adds r3, r7, r4 - 80007cc: 2207 movs r2, #7 - 80007ce: 611a str r2, [r3, #16] + 8000e7c: 193b adds r3, r7, r4 + 8000e7e: 2207 movs r2, #7 + 8000e80: 611a str r2, [r3, #16] HAL_GPIO_Init(INT_GPIO_Port, &GPIO_InitStruct); - 80007d0: 193a adds r2, r7, r4 - 80007d2: 23a0 movs r3, #160 @ 0xa0 - 80007d4: 05db lsls r3, r3, #23 - 80007d6: 0011 movs r1, r2 - 80007d8: 0018 movs r0, r3 - 80007da: f001 f83f bl 800185c + 8000e82: 193a adds r2, r7, r4 + 8000e84: 23a0 movs r3, #160 @ 0xa0 + 8000e86: 05db lsls r3, r3, #23 + 8000e88: 0011 movs r1, r2 + 8000e8a: 0018 movs r0, r3 + 8000e8c: f000 fd86 bl 800199c + + /*Configure GPIO pin : RFID_CS_Pin */ + GPIO_InitStruct.Pin = RFID_CS_Pin; + 8000e90: 193b adds r3, r7, r4 + 8000e92: 2210 movs r2, #16 + 8000e94: 601a str r2, [r3, #0] + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + 8000e96: 193b adds r3, r7, r4 + 8000e98: 2201 movs r2, #1 + 8000e9a: 605a str r2, [r3, #4] + GPIO_InitStruct.Pull = GPIO_NOPULL; + 8000e9c: 193b adds r3, r7, r4 + 8000e9e: 2200 movs r2, #0 + 8000ea0: 609a str r2, [r3, #8] + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + 8000ea2: 193b adds r3, r7, r4 + 8000ea4: 2200 movs r2, #0 + 8000ea6: 60da str r2, [r3, #12] + HAL_GPIO_Init(RFID_CS_GPIO_Port, &GPIO_InitStruct); + 8000ea8: 193a adds r2, r7, r4 + 8000eaa: 23a0 movs r3, #160 @ 0xa0 + 8000eac: 05db lsls r3, r3, #23 + 8000eae: 0011 movs r1, r2 + 8000eb0: 0018 movs r0, r3 + 8000eb2: f000 fd73 bl 800199c /*Configure GPIO pins : HALL_Pin CLOSE_Pin */ GPIO_InitStruct.Pin = HALL_Pin|CLOSE_Pin; - 80007de: 193b adds r3, r7, r4 - 80007e0: 2203 movs r2, #3 - 80007e2: 601a str r2, [r3, #0] + 8000eb6: 193b adds r3, r7, r4 + 8000eb8: 2203 movs r2, #3 + 8000eba: 601a str r2, [r3, #0] GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; - 80007e4: 193b adds r3, r7, r4 - 80007e6: 2203 movs r2, #3 - 80007e8: 605a str r2, [r3, #4] + 8000ebc: 193b adds r3, r7, r4 + 8000ebe: 2203 movs r2, #3 + 8000ec0: 605a str r2, [r3, #4] GPIO_InitStruct.Pull = GPIO_NOPULL; - 80007ea: 193b adds r3, r7, r4 - 80007ec: 2200 movs r2, #0 - 80007ee: 609a str r2, [r3, #8] + 8000ec2: 193b adds r3, r7, r4 + 8000ec4: 2200 movs r2, #0 + 8000ec6: 609a str r2, [r3, #8] HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); - 80007f0: 193b adds r3, r7, r4 - 80007f2: 4a54 ldr r2, [pc, #336] @ (8000944 ) - 80007f4: 0019 movs r1, r3 - 80007f6: 0010 movs r0, r2 - 80007f8: f001 f830 bl 800185c + 8000ec8: 193b adds r3, r7, r4 + 8000eca: 4a54 ldr r2, [pc, #336] @ (800101c ) + 8000ecc: 0019 movs r1, r3 + 8000ece: 0010 movs r0, r2 + 8000ed0: f000 fd64 bl 800199c /*Configure GPIO pin : RFID_RST_Pin */ GPIO_InitStruct.Pin = RFID_RST_Pin; - 80007fc: 193b adds r3, r7, r4 - 80007fe: 2204 movs r2, #4 - 8000800: 601a str r2, [r3, #0] + 8000ed4: 193b adds r3, r7, r4 + 8000ed6: 2204 movs r2, #4 + 8000ed8: 601a str r2, [r3, #0] GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; - 8000802: 193b adds r3, r7, r4 - 8000804: 2201 movs r2, #1 - 8000806: 605a str r2, [r3, #4] + 8000eda: 193b adds r3, r7, r4 + 8000edc: 2201 movs r2, #1 + 8000ede: 605a str r2, [r3, #4] GPIO_InitStruct.Pull = GPIO_NOPULL; - 8000808: 193b adds r3, r7, r4 - 800080a: 2200 movs r2, #0 - 800080c: 609a str r2, [r3, #8] + 8000ee0: 193b adds r3, r7, r4 + 8000ee2: 2200 movs r2, #0 + 8000ee4: 609a str r2, [r3, #8] GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 800080e: 193b adds r3, r7, r4 - 8000810: 2200 movs r2, #0 - 8000812: 60da str r2, [r3, #12] + 8000ee6: 193b adds r3, r7, r4 + 8000ee8: 2200 movs r2, #0 + 8000eea: 60da str r2, [r3, #12] HAL_GPIO_Init(RFID_RST_GPIO_Port, &GPIO_InitStruct); - 8000814: 193b adds r3, r7, r4 - 8000816: 4a4b ldr r2, [pc, #300] @ (8000944 ) - 8000818: 0019 movs r1, r3 - 800081a: 0010 movs r0, r2 - 800081c: f001 f81e bl 800185c + 8000eec: 193b adds r3, r7, r4 + 8000eee: 4a4b ldr r2, [pc, #300] @ (800101c ) + 8000ef0: 0019 movs r1, r3 + 8000ef2: 0010 movs r0, r2 + 8000ef4: f000 fd52 bl 800199c /*Configure GPIO pins : SWT1_Pin SWT2_Pin */ GPIO_InitStruct.Pin = SWT1_Pin|SWT2_Pin; - 8000820: 0021 movs r1, r4 - 8000822: 187b adds r3, r7, r1 - 8000824: 22c0 movs r2, #192 @ 0xc0 - 8000826: 0112 lsls r2, r2, #4 - 8000828: 601a str r2, [r3, #0] + 8000ef8: 0021 movs r1, r4 + 8000efa: 187b adds r3, r7, r1 + 8000efc: 22c0 movs r2, #192 @ 0xc0 + 8000efe: 0112 lsls r2, r2, #4 + 8000f00: 601a str r2, [r3, #0] GPIO_InitStruct.Mode = GPIO_MODE_INPUT; - 800082a: 000c movs r4, r1 - 800082c: 193b adds r3, r7, r4 - 800082e: 2200 movs r2, #0 - 8000830: 605a str r2, [r3, #4] + 8000f02: 000c movs r4, r1 + 8000f04: 193b adds r3, r7, r4 + 8000f06: 2200 movs r2, #0 + 8000f08: 605a str r2, [r3, #4] GPIO_InitStruct.Pull = GPIO_NOPULL; - 8000832: 193b adds r3, r7, r4 - 8000834: 2200 movs r2, #0 - 8000836: 609a str r2, [r3, #8] + 8000f0a: 193b adds r3, r7, r4 + 8000f0c: 2200 movs r2, #0 + 8000f0e: 609a str r2, [r3, #8] HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); - 8000838: 193b adds r3, r7, r4 - 800083a: 4a42 ldr r2, [pc, #264] @ (8000944 ) - 800083c: 0019 movs r1, r3 - 800083e: 0010 movs r0, r2 - 8000840: f001 f80c bl 800185c + 8000f10: 193b adds r3, r7, r4 + 8000f12: 4a42 ldr r2, [pc, #264] @ (800101c ) + 8000f14: 0019 movs r1, r3 + 8000f16: 0010 movs r0, r2 + 8000f18: f000 fd40 bl 800199c /*Configure GPIO pins : COL1_Pin KP_C2_Pin KP_C3_Pin KP_C4_Pin */ GPIO_InitStruct.Pin = COL1_Pin|KP_C2_Pin|KP_C3_Pin|KP_C4_Pin; - 8000844: 193b adds r3, r7, r4 - 8000846: 4a40 ldr r2, [pc, #256] @ (8000948 ) - 8000848: 601a str r2, [r3, #0] + 8000f1c: 193b adds r3, r7, r4 + 8000f1e: 4a40 ldr r2, [pc, #256] @ (8001020 ) + 8000f20: 601a str r2, [r3, #0] GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_OD; - 800084a: 193b adds r3, r7, r4 - 800084c: 2211 movs r2, #17 - 800084e: 605a str r2, [r3, #4] + 8000f22: 193b adds r3, r7, r4 + 8000f24: 2211 movs r2, #17 + 8000f26: 605a str r2, [r3, #4] GPIO_InitStruct.Pull = GPIO_NOPULL; - 8000850: 193b adds r3, r7, r4 - 8000852: 2200 movs r2, #0 - 8000854: 609a str r2, [r3, #8] + 8000f28: 193b adds r3, r7, r4 + 8000f2a: 2200 movs r2, #0 + 8000f2c: 609a str r2, [r3, #8] GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 8000856: 193b adds r3, r7, r4 - 8000858: 2200 movs r2, #0 - 800085a: 60da str r2, [r3, #12] + 8000f2e: 193b adds r3, r7, r4 + 8000f30: 2200 movs r2, #0 + 8000f32: 60da str r2, [r3, #12] HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); - 800085c: 193b adds r3, r7, r4 - 800085e: 4a39 ldr r2, [pc, #228] @ (8000944 ) - 8000860: 0019 movs r1, r3 - 8000862: 0010 movs r0, r2 - 8000864: f000 fffa bl 800185c + 8000f34: 193b adds r3, r7, r4 + 8000f36: 4a39 ldr r2, [pc, #228] @ (800101c ) + 8000f38: 0019 movs r1, r3 + 8000f3a: 0010 movs r0, r2 + 8000f3c: f000 fd2e bl 800199c /*Configure GPIO pin : COL2_Pin */ GPIO_InitStruct.Pin = COL2_Pin; - 8000868: 0021 movs r1, r4 - 800086a: 187b adds r3, r7, r1 - 800086c: 2280 movs r2, #128 @ 0x80 - 800086e: 0052 lsls r2, r2, #1 - 8000870: 601a str r2, [r3, #0] + 8000f40: 0021 movs r1, r4 + 8000f42: 187b adds r3, r7, r1 + 8000f44: 2280 movs r2, #128 @ 0x80 + 8000f46: 0052 lsls r2, r2, #1 + 8000f48: 601a str r2, [r3, #0] GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_OD; - 8000872: 000c movs r4, r1 - 8000874: 193b adds r3, r7, r4 - 8000876: 2211 movs r2, #17 - 8000878: 605a str r2, [r3, #4] + 8000f4a: 000c movs r4, r1 + 8000f4c: 193b adds r3, r7, r4 + 8000f4e: 2211 movs r2, #17 + 8000f50: 605a str r2, [r3, #4] GPIO_InitStruct.Pull = GPIO_NOPULL; - 800087a: 193b adds r3, r7, r4 - 800087c: 2200 movs r2, #0 - 800087e: 609a str r2, [r3, #8] + 8000f52: 193b adds r3, r7, r4 + 8000f54: 2200 movs r2, #0 + 8000f56: 609a str r2, [r3, #8] GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 8000880: 193b adds r3, r7, r4 - 8000882: 2200 movs r2, #0 - 8000884: 60da str r2, [r3, #12] + 8000f58: 193b adds r3, r7, r4 + 8000f5a: 2200 movs r2, #0 + 8000f5c: 60da str r2, [r3, #12] HAL_GPIO_Init(COL2_GPIO_Port, &GPIO_InitStruct); - 8000886: 193a adds r2, r7, r4 - 8000888: 23a0 movs r3, #160 @ 0xa0 - 800088a: 05db lsls r3, r3, #23 - 800088c: 0011 movs r1, r2 - 800088e: 0018 movs r0, r3 - 8000890: f000 ffe4 bl 800185c + 8000f5e: 193a adds r2, r7, r4 + 8000f60: 23a0 movs r3, #160 @ 0xa0 + 8000f62: 05db lsls r3, r3, #23 + 8000f64: 0011 movs r1, r2 + 8000f66: 0018 movs r0, r3 + 8000f68: f000 fd18 bl 800199c /*Configure GPIO pins : SWT3_Pin SWT4_Pin */ GPIO_InitStruct.Pin = SWT3_Pin|SWT4_Pin; - 8000894: 193b adds r3, r7, r4 - 8000896: 22c0 movs r2, #192 @ 0xc0 - 8000898: 601a str r2, [r3, #0] + 8000f6c: 193b adds r3, r7, r4 + 8000f6e: 22c0 movs r2, #192 @ 0xc0 + 8000f70: 601a str r2, [r3, #0] GPIO_InitStruct.Mode = GPIO_MODE_INPUT; - 800089a: 193b adds r3, r7, r4 - 800089c: 2200 movs r2, #0 - 800089e: 605a str r2, [r3, #4] + 8000f72: 193b adds r3, r7, r4 + 8000f74: 2200 movs r2, #0 + 8000f76: 605a str r2, [r3, #4] GPIO_InitStruct.Pull = GPIO_NOPULL; - 80008a0: 193b adds r3, r7, r4 - 80008a2: 2200 movs r2, #0 - 80008a4: 609a str r2, [r3, #8] + 8000f78: 193b adds r3, r7, r4 + 8000f7a: 2200 movs r2, #0 + 8000f7c: 609a str r2, [r3, #8] HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); - 80008a6: 193b adds r3, r7, r4 - 80008a8: 4a29 ldr r2, [pc, #164] @ (8000950 ) - 80008aa: 0019 movs r1, r3 - 80008ac: 0010 movs r0, r2 - 80008ae: f000 ffd5 bl 800185c + 8000f7e: 193b adds r3, r7, r4 + 8000f80: 4a29 ldr r2, [pc, #164] @ (8001028 ) + 8000f82: 0019 movs r1, r3 + 8000f84: 0010 movs r0, r2 + 8000f86: f000 fd09 bl 800199c /*Configure GPIO pins : ROW1_Pin ROW2_Pin ROW3_Pin */ GPIO_InitStruct.Pin = ROW1_Pin|ROW2_Pin|ROW3_Pin; - 80008b2: 193b adds r3, r7, r4 - 80008b4: 2298 movs r2, #152 @ 0x98 - 80008b6: 0212 lsls r2, r2, #8 - 80008b8: 601a str r2, [r3, #0] + 8000f8a: 193b adds r3, r7, r4 + 8000f8c: 2298 movs r2, #152 @ 0x98 + 8000f8e: 0212 lsls r2, r2, #8 + 8000f90: 601a str r2, [r3, #0] GPIO_InitStruct.Mode = GPIO_MODE_INPUT; - 80008ba: 193b adds r3, r7, r4 - 80008bc: 2200 movs r2, #0 - 80008be: 605a str r2, [r3, #4] + 8000f92: 193b adds r3, r7, r4 + 8000f94: 2200 movs r2, #0 + 8000f96: 605a str r2, [r3, #4] GPIO_InitStruct.Pull = GPIO_PULLUP; - 80008c0: 193b adds r3, r7, r4 - 80008c2: 2201 movs r2, #1 - 80008c4: 609a str r2, [r3, #8] + 8000f98: 193b adds r3, r7, r4 + 8000f9a: 2201 movs r2, #1 + 8000f9c: 609a str r2, [r3, #8] HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - 80008c6: 193a adds r2, r7, r4 - 80008c8: 23a0 movs r3, #160 @ 0xa0 - 80008ca: 05db lsls r3, r3, #23 - 80008cc: 0011 movs r1, r2 - 80008ce: 0018 movs r0, r3 - 80008d0: f000 ffc4 bl 800185c + 8000f9e: 193a adds r2, r7, r4 + 8000fa0: 23a0 movs r3, #160 @ 0xa0 + 8000fa2: 05db lsls r3, r3, #23 + 8000fa4: 0011 movs r1, r2 + 8000fa6: 0018 movs r0, r3 + 8000fa8: f000 fcf8 bl 800199c /*Configure GPIO pins : ROW4_Pin TOUCH_Pin */ GPIO_InitStruct.Pin = ROW4_Pin|TOUCH_Pin; - 80008d4: 193b adds r3, r7, r4 - 80008d6: 2205 movs r2, #5 - 80008d8: 601a str r2, [r3, #0] + 8000fac: 193b adds r3, r7, r4 + 8000fae: 2205 movs r2, #5 + 8000fb0: 601a str r2, [r3, #0] GPIO_InitStruct.Mode = GPIO_MODE_INPUT; - 80008da: 193b adds r3, r7, r4 - 80008dc: 2200 movs r2, #0 - 80008de: 605a str r2, [r3, #4] + 8000fb2: 193b adds r3, r7, r4 + 8000fb4: 2200 movs r2, #0 + 8000fb6: 605a str r2, [r3, #4] GPIO_InitStruct.Pull = GPIO_NOPULL; - 80008e0: 193b adds r3, r7, r4 - 80008e2: 2200 movs r2, #0 - 80008e4: 609a str r2, [r3, #8] + 8000fb8: 193b adds r3, r7, r4 + 8000fba: 2200 movs r2, #0 + 8000fbc: 609a str r2, [r3, #8] HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); - 80008e6: 193b adds r3, r7, r4 - 80008e8: 4a18 ldr r2, [pc, #96] @ (800094c ) - 80008ea: 0019 movs r1, r3 - 80008ec: 0010 movs r0, r2 - 80008ee: f000 ffb5 bl 800185c + 8000fbe: 193b adds r3, r7, r4 + 8000fc0: 4a18 ldr r2, [pc, #96] @ (8001024 ) + 8000fc2: 0019 movs r1, r3 + 8000fc4: 0010 movs r0, r2 + 8000fc6: f000 fce9 bl 800199c /*Configure GPIO pins : COL3_Pin KP_C1_Pin */ GPIO_InitStruct.Pin = COL3_Pin|KP_C1_Pin; - 80008f2: 193b adds r3, r7, r4 - 80008f4: 220a movs r2, #10 - 80008f6: 601a str r2, [r3, #0] + 8000fca: 193b adds r3, r7, r4 + 8000fcc: 220a movs r2, #10 + 8000fce: 601a str r2, [r3, #0] GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_OD; - 80008f8: 193b adds r3, r7, r4 - 80008fa: 2211 movs r2, #17 - 80008fc: 605a str r2, [r3, #4] + 8000fd0: 193b adds r3, r7, r4 + 8000fd2: 2211 movs r2, #17 + 8000fd4: 605a str r2, [r3, #4] GPIO_InitStruct.Pull = GPIO_NOPULL; - 80008fe: 193b adds r3, r7, r4 - 8000900: 2200 movs r2, #0 - 8000902: 609a str r2, [r3, #8] + 8000fd6: 193b adds r3, r7, r4 + 8000fd8: 2200 movs r2, #0 + 8000fda: 609a str r2, [r3, #8] GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 8000904: 193b adds r3, r7, r4 - 8000906: 2200 movs r2, #0 - 8000908: 60da str r2, [r3, #12] + 8000fdc: 193b adds r3, r7, r4 + 8000fde: 2200 movs r2, #0 + 8000fe0: 60da str r2, [r3, #12] HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); - 800090a: 193b adds r3, r7, r4 - 800090c: 4a0f ldr r2, [pc, #60] @ (800094c ) - 800090e: 0019 movs r1, r3 - 8000910: 0010 movs r0, r2 - 8000912: f000 ffa3 bl 800185c + 8000fe2: 193b adds r3, r7, r4 + 8000fe4: 4a0f ldr r2, [pc, #60] @ (8001024 ) + 8000fe6: 0019 movs r1, r3 + 8000fe8: 0010 movs r0, r2 + 8000fea: f000 fcd7 bl 800199c /*Configure GPIO pins : KP_R1_Pin KP_R2_Pin KP_R3_Pin KP_R4_Pin */ GPIO_InitStruct.Pin = KP_R1_Pin|KP_R2_Pin|KP_R3_Pin|KP_R4_Pin; - 8000916: 0021 movs r1, r4 - 8000918: 187b adds r3, r7, r1 - 800091a: 22f0 movs r2, #240 @ 0xf0 - 800091c: 0092 lsls r2, r2, #2 - 800091e: 601a str r2, [r3, #0] + 8000fee: 0021 movs r1, r4 + 8000ff0: 187b adds r3, r7, r1 + 8000ff2: 22f0 movs r2, #240 @ 0xf0 + 8000ff4: 0092 lsls r2, r2, #2 + 8000ff6: 601a str r2, [r3, #0] GPIO_InitStruct.Mode = GPIO_MODE_INPUT; - 8000920: 187b adds r3, r7, r1 - 8000922: 2200 movs r2, #0 - 8000924: 605a str r2, [r3, #4] + 8000ff8: 187b adds r3, r7, r1 + 8000ffa: 2200 movs r2, #0 + 8000ffc: 605a str r2, [r3, #4] GPIO_InitStruct.Pull = GPIO_PULLUP; - 8000926: 187b adds r3, r7, r1 - 8000928: 2201 movs r2, #1 - 800092a: 609a str r2, [r3, #8] + 8000ffe: 187b adds r3, r7, r1 + 8001000: 2201 movs r2, #1 + 8001002: 609a str r2, [r3, #8] HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); - 800092c: 187b adds r3, r7, r1 - 800092e: 4a05 ldr r2, [pc, #20] @ (8000944 ) - 8000930: 0019 movs r1, r3 - 8000932: 0010 movs r0, r2 - 8000934: f000 ff92 bl 800185c + 8001004: 187b adds r3, r7, r1 + 8001006: 4a05 ldr r2, [pc, #20] @ (800101c ) + 8001008: 0019 movs r1, r3 + 800100a: 0010 movs r0, r2 + 800100c: f000 fcc6 bl 800199c /* USER CODE BEGIN MX_GPIO_Init_2 */ /* USER CODE END MX_GPIO_Init_2 */ } - 8000938: 46c0 nop @ (mov r8, r8) - 800093a: 46bd mov sp, r7 - 800093c: b00b add sp, #44 @ 0x2c - 800093e: bd90 pop {r4, r7, pc} - 8000940: 40021000 .word 0x40021000 - 8000944: 50000400 .word 0x50000400 - 8000948: 00008038 .word 0x00008038 - 800094c: 50000c00 .word 0x50000c00 - 8000950: 50000800 .word 0x50000800 + 8001010: 46c0 nop @ (mov r8, r8) + 8001012: 46bd mov sp, r7 + 8001014: b00b add sp, #44 @ 0x2c + 8001016: bd90 pop {r4, r7, pc} + 8001018: 40021000 .word 0x40021000 + 800101c: 50000400 .word 0x50000400 + 8001020: 00008038 .word 0x00008038 + 8001024: 50000c00 .word 0x50000c00 + 8001028: 50000800 .word 0x50000800 -08000954 <__io_putchar>: +0800102c <__io_putchar>: /* USER CODE BEGIN 4 */ PUTCHAR_PROTOTYPE { - 8000954: b580 push {r7, lr} - 8000956: b082 sub sp, #8 - 8000958: af00 add r7, sp, #0 - 800095a: 6078 str r0, [r7, #4] + 800102c: b580 push {r7, lr} + 800102e: b082 sub sp, #8 + 8001030: af00 add r7, sp, #0 + 8001032: 6078 str r0, [r7, #4] /* Place your implementation of fputc here */ /* e.g. write a character to the USART1 and Loop until the end of transmission */ HAL_UART_Transmit(&huart2, (uint8_t *)&ch, 1, 0xFFFF); - 800095c: 4b05 ldr r3, [pc, #20] @ (8000974 <__io_putchar+0x20>) - 800095e: 1d39 adds r1, r7, #4 - 8000960: 4805 ldr r0, [pc, #20] @ (8000978 <__io_putchar+0x24>) - 8000962: 2201 movs r2, #1 - 8000964: f003 fd54 bl 8004410 + 8001034: 4b05 ldr r3, [pc, #20] @ (800104c <__io_putchar+0x20>) + 8001036: 1d39 adds r1, r7, #4 + 8001038: 4805 ldr r0, [pc, #20] @ (8001050 <__io_putchar+0x24>) + 800103a: 2201 movs r2, #1 + 800103c: f003 fb7a bl 8004734 return ch; - 8000968: 687b ldr r3, [r7, #4] + 8001040: 687b ldr r3, [r7, #4] } - 800096a: 0018 movs r0, r3 - 800096c: 46bd mov sp, r7 - 800096e: b002 add sp, #8 - 8000970: bd80 pop {r7, pc} - 8000972: 46c0 nop @ (mov r8, r8) - 8000974: 0000ffff .word 0x0000ffff - 8000978: 2000013c .word 0x2000013c + 8001042: 0018 movs r0, r3 + 8001044: 46bd mov sp, r7 + 8001046: b002 add sp, #8 + 8001048: bd80 pop {r7, pc} + 800104a: 46c0 nop @ (mov r8, r8) + 800104c: 0000ffff .word 0x0000ffff + 8001050: 2000013c .word 0x2000013c -0800097c : +08001054 : void HAL_I2C_SlaveRxCpltCallback(I2C_HandleTypeDef* hi2c) { - 800097c: b580 push {r7, lr} - 800097e: b082 sub sp, #8 - 8000980: af00 add r7, sp, #0 - 8000982: 6078 str r0, [r7, #4] + 8001054: b580 push {r7, lr} + 8001056: b082 sub sp, #8 + 8001058: af00 add r7, sp, #0 + 800105a: 6078 str r0, [r7, #4] recv_cnt += 1; - 8000984: 4b04 ldr r3, [pc, #16] @ (8000998 ) - 8000986: 881b ldrh r3, [r3, #0] - 8000988: 3301 adds r3, #1 - 800098a: b29a uxth r2, r3 - 800098c: 4b02 ldr r3, [pc, #8] @ (8000998 ) - 800098e: 801a strh r2, [r3, #0] + 800105c: 4b04 ldr r3, [pc, #16] @ (8001070 ) + 800105e: 881b ldrh r3, [r3, #0] + 8001060: 3301 adds r3, #1 + 8001062: b29a uxth r2, r3 + 8001064: 4b02 ldr r3, [pc, #8] @ (8001070 ) + 8001066: 801a strh r2, [r3, #0] } - 8000990: 46c0 nop @ (mov r8, r8) - 8000992: 46bd mov sp, r7 - 8000994: b002 add sp, #8 - 8000996: bd80 pop {r7, pc} - 8000998: 200001e0 .word 0x200001e0 + 8001068: 46c0 nop @ (mov r8, r8) + 800106a: 46bd mov sp, r7 + 800106c: b002 add sp, #8 + 800106e: bd80 pop {r7, pc} + 8001070: 200001d0 .word 0x200001d0 -0800099c : +08001074 : void init_keypad(void) { - 800099c: b580 push {r7, lr} - 800099e: af00 add r7, sp, #0 + 8001074: b580 push {r7, lr} + 8001076: af00 add r7, sp, #0 HAL_GPIO_WritePin(KP_C1_GPIO_Port, KP_C1_Pin, GPIO_PIN_SET); - 80009a0: 4b0d ldr r3, [pc, #52] @ (80009d8 ) - 80009a2: 2201 movs r2, #1 - 80009a4: 2108 movs r1, #8 - 80009a6: 0018 movs r0, r3 - 80009a8: f001 f8d9 bl 8001b5e + 8001078: 4b0d ldr r3, [pc, #52] @ (80010b0 ) + 800107a: 2201 movs r2, #1 + 800107c: 2108 movs r1, #8 + 800107e: 0018 movs r0, r3 + 8001080: f000 fdf0 bl 8001c64 HAL_GPIO_WritePin(KP_C2_GPIO_Port, KP_C2_Pin, GPIO_PIN_SET); - 80009ac: 4b0b ldr r3, [pc, #44] @ (80009dc ) - 80009ae: 2201 movs r2, #1 - 80009b0: 2108 movs r1, #8 - 80009b2: 0018 movs r0, r3 - 80009b4: f001 f8d3 bl 8001b5e + 8001084: 4b0b ldr r3, [pc, #44] @ (80010b4 ) + 8001086: 2201 movs r2, #1 + 8001088: 2108 movs r1, #8 + 800108a: 0018 movs r0, r3 + 800108c: f000 fdea bl 8001c64 HAL_GPIO_WritePin(KP_C3_GPIO_Port, KP_C3_Pin, GPIO_PIN_SET); - 80009b8: 4b08 ldr r3, [pc, #32] @ (80009dc ) - 80009ba: 2201 movs r2, #1 - 80009bc: 2110 movs r1, #16 - 80009be: 0018 movs r0, r3 - 80009c0: f001 f8cd bl 8001b5e + 8001090: 4b08 ldr r3, [pc, #32] @ (80010b4 ) + 8001092: 2201 movs r2, #1 + 8001094: 2110 movs r1, #16 + 8001096: 0018 movs r0, r3 + 8001098: f000 fde4 bl 8001c64 HAL_GPIO_WritePin(KP_C4_GPIO_Port, KP_C4_Pin, GPIO_PIN_SET); - 80009c4: 4b05 ldr r3, [pc, #20] @ (80009dc ) - 80009c6: 2201 movs r2, #1 - 80009c8: 2120 movs r1, #32 - 80009ca: 0018 movs r0, r3 - 80009cc: f001 f8c7 bl 8001b5e + 800109c: 4b05 ldr r3, [pc, #20] @ (80010b4 ) + 800109e: 2201 movs r2, #1 + 80010a0: 2120 movs r1, #32 + 80010a2: 0018 movs r0, r3 + 80010a4: f000 fdde bl 8001c64 } - 80009d0: 46c0 nop @ (mov r8, r8) - 80009d2: 46bd mov sp, r7 - 80009d4: bd80 pop {r7, pc} - 80009d6: 46c0 nop @ (mov r8, r8) - 80009d8: 50000c00 .word 0x50000c00 - 80009dc: 50000400 .word 0x50000400 + 80010a8: 46c0 nop @ (mov r8, r8) + 80010aa: 46bd mov sp, r7 + 80010ac: bd80 pop {r7, pc} + 80010ae: 46c0 nop @ (mov r8, r8) + 80010b0: 50000c00 .word 0x50000c00 + 80010b4: 50000400 .word 0x50000400 -080009e0 : +080010b8 : void init_buttons(void) { - 80009e0: b580 push {r7, lr} - 80009e2: af00 add r7, sp, #0 + 80010b8: b580 push {r7, lr} + 80010ba: af00 add r7, sp, #0 HAL_GPIO_WritePin(COL1_GPIO_Port, COL1_Pin, GPIO_PIN_SET); - 80009e4: 2380 movs r3, #128 @ 0x80 - 80009e6: 021b lsls r3, r3, #8 - 80009e8: 480a ldr r0, [pc, #40] @ (8000a14 ) - 80009ea: 2201 movs r2, #1 - 80009ec: 0019 movs r1, r3 - 80009ee: f001 f8b6 bl 8001b5e + 80010bc: 2380 movs r3, #128 @ 0x80 + 80010be: 021b lsls r3, r3, #8 + 80010c0: 480a ldr r0, [pc, #40] @ (80010ec ) + 80010c2: 2201 movs r2, #1 + 80010c4: 0019 movs r1, r3 + 80010c6: f000 fdcd bl 8001c64 HAL_GPIO_WritePin(COL2_GPIO_Port, COL2_Pin, GPIO_PIN_SET); - 80009f2: 2380 movs r3, #128 @ 0x80 - 80009f4: 0059 lsls r1, r3, #1 - 80009f6: 23a0 movs r3, #160 @ 0xa0 - 80009f8: 05db lsls r3, r3, #23 - 80009fa: 2201 movs r2, #1 - 80009fc: 0018 movs r0, r3 - 80009fe: f001 f8ae bl 8001b5e + 80010ca: 2380 movs r3, #128 @ 0x80 + 80010cc: 0059 lsls r1, r3, #1 + 80010ce: 23a0 movs r3, #160 @ 0xa0 + 80010d0: 05db lsls r3, r3, #23 + 80010d2: 2201 movs r2, #1 + 80010d4: 0018 movs r0, r3 + 80010d6: f000 fdc5 bl 8001c64 HAL_GPIO_WritePin(COL3_GPIO_Port, COL3_Pin, GPIO_PIN_SET); - 8000a02: 4b05 ldr r3, [pc, #20] @ (8000a18 ) - 8000a04: 2201 movs r2, #1 - 8000a06: 2102 movs r1, #2 - 8000a08: 0018 movs r0, r3 - 8000a0a: f001 f8a8 bl 8001b5e + 80010da: 4b05 ldr r3, [pc, #20] @ (80010f0 ) + 80010dc: 2201 movs r2, #1 + 80010de: 2102 movs r1, #2 + 80010e0: 0018 movs r0, r3 + 80010e2: f000 fdbf bl 8001c64 } - 8000a0e: 46c0 nop @ (mov r8, r8) - 8000a10: 46bd mov sp, r7 - 8000a12: bd80 pop {r7, pc} - 8000a14: 50000400 .word 0x50000400 - 8000a18: 50000c00 .word 0x50000c00 + 80010e6: 46c0 nop @ (mov r8, r8) + 80010e8: 46bd mov sp, r7 + 80010ea: bd80 pop {r7, pc} + 80010ec: 50000400 .word 0x50000400 + 80010f0: 50000c00 .word 0x50000c00 -08000a1c : - -void scan_keypad(void) -{ - 8000a1c: b580 push {r7, lr} - 8000a1e: af00 add r7, sp, #0 - old_keypad_state = keypad_state; - 8000a20: 4bc0 ldr r3, [pc, #768] @ (8000d24 ) - 8000a22: 881a ldrh r2, [r3, #0] - 8000a24: 4bc0 ldr r3, [pc, #768] @ (8000d28 ) - 8000a26: 801a strh r2, [r3, #0] - keypad_state = 0; - 8000a28: 4bbe ldr r3, [pc, #760] @ (8000d24 ) - 8000a2a: 2200 movs r2, #0 - 8000a2c: 801a strh r2, [r3, #0] - - HAL_GPIO_WritePin(KP_C1_GPIO_Port, KP_C1_Pin, GPIO_PIN_RESET); - 8000a2e: 4bbf ldr r3, [pc, #764] @ (8000d2c ) - 8000a30: 2200 movs r2, #0 - 8000a32: 2108 movs r1, #8 - 8000a34: 0018 movs r0, r3 - 8000a36: f001 f892 bl 8001b5e - keypad_state |= (HAL_GPIO_ReadPin(KP_R1_GPIO_Port, KP_R1_Pin) == GPIO_PIN_RESET) << 0; - 8000a3a: 4bbd ldr r3, [pc, #756] @ (8000d30 ) - 8000a3c: 2140 movs r1, #64 @ 0x40 - 8000a3e: 0018 movs r0, r3 - 8000a40: f001 f870 bl 8001b24 - 8000a44: 0003 movs r3, r0 - 8000a46: 425a negs r2, r3 - 8000a48: 4153 adcs r3, r2 - 8000a4a: b2db uxtb r3, r3 - 8000a4c: b21a sxth r2, r3 - 8000a4e: 4bb5 ldr r3, [pc, #724] @ (8000d24 ) - 8000a50: 881b ldrh r3, [r3, #0] - 8000a52: b21b sxth r3, r3 - 8000a54: 4313 orrs r3, r2 - 8000a56: b21b sxth r3, r3 - 8000a58: b29a uxth r2, r3 - 8000a5a: 4bb2 ldr r3, [pc, #712] @ (8000d24 ) - 8000a5c: 801a strh r2, [r3, #0] - keypad_state |= (HAL_GPIO_ReadPin(KP_R2_GPIO_Port, KP_R2_Pin) == GPIO_PIN_RESET) << 1; - 8000a5e: 4bb4 ldr r3, [pc, #720] @ (8000d30 ) - 8000a60: 2180 movs r1, #128 @ 0x80 - 8000a62: 0018 movs r0, r3 - 8000a64: f001 f85e bl 8001b24 - 8000a68: 1e03 subs r3, r0, #0 - 8000a6a: d101 bne.n 8000a70 - 8000a6c: 2302 movs r3, #2 - 8000a6e: e000 b.n 8000a72 - 8000a70: 2300 movs r3, #0 - 8000a72: b21a sxth r2, r3 - 8000a74: 4bab ldr r3, [pc, #684] @ (8000d24 ) - 8000a76: 881b ldrh r3, [r3, #0] - 8000a78: b21b sxth r3, r3 - 8000a7a: 4313 orrs r3, r2 - 8000a7c: b21b sxth r3, r3 - 8000a7e: b29a uxth r2, r3 - 8000a80: 4ba8 ldr r3, [pc, #672] @ (8000d24 ) - 8000a82: 801a strh r2, [r3, #0] - keypad_state |= (HAL_GPIO_ReadPin(KP_R3_GPIO_Port, KP_R3_Pin) == GPIO_PIN_RESET) << 2; - 8000a84: 2380 movs r3, #128 @ 0x80 - 8000a86: 005b lsls r3, r3, #1 - 8000a88: 4aa9 ldr r2, [pc, #676] @ (8000d30 ) - 8000a8a: 0019 movs r1, r3 - 8000a8c: 0010 movs r0, r2 - 8000a8e: f001 f849 bl 8001b24 - 8000a92: 1e03 subs r3, r0, #0 - 8000a94: d101 bne.n 8000a9a - 8000a96: 2304 movs r3, #4 - 8000a98: e000 b.n 8000a9c - 8000a9a: 2300 movs r3, #0 - 8000a9c: b21a sxth r2, r3 - 8000a9e: 4ba1 ldr r3, [pc, #644] @ (8000d24 ) - 8000aa0: 881b ldrh r3, [r3, #0] - 8000aa2: b21b sxth r3, r3 - 8000aa4: 4313 orrs r3, r2 - 8000aa6: b21b sxth r3, r3 - 8000aa8: b29a uxth r2, r3 - 8000aaa: 4b9e ldr r3, [pc, #632] @ (8000d24 ) - 8000aac: 801a strh r2, [r3, #0] - keypad_state |= (HAL_GPIO_ReadPin(KP_R4_GPIO_Port, KP_R4_Pin) == GPIO_PIN_RESET) << 3; - 8000aae: 2380 movs r3, #128 @ 0x80 - 8000ab0: 009b lsls r3, r3, #2 - 8000ab2: 4a9f ldr r2, [pc, #636] @ (8000d30 ) - 8000ab4: 0019 movs r1, r3 - 8000ab6: 0010 movs r0, r2 - 8000ab8: f001 f834 bl 8001b24 - 8000abc: 1e03 subs r3, r0, #0 - 8000abe: d101 bne.n 8000ac4 - 8000ac0: 2308 movs r3, #8 - 8000ac2: e000 b.n 8000ac6 - 8000ac4: 2300 movs r3, #0 - 8000ac6: b21a sxth r2, r3 - 8000ac8: 4b96 ldr r3, [pc, #600] @ (8000d24 ) - 8000aca: 881b ldrh r3, [r3, #0] - 8000acc: b21b sxth r3, r3 - 8000ace: 4313 orrs r3, r2 - 8000ad0: b21b sxth r3, r3 - 8000ad2: b29a uxth r2, r3 - 8000ad4: 4b93 ldr r3, [pc, #588] @ (8000d24 ) - 8000ad6: 801a strh r2, [r3, #0] - HAL_GPIO_WritePin(KP_C1_GPIO_Port, KP_C1_Pin, GPIO_PIN_SET); - 8000ad8: 4b94 ldr r3, [pc, #592] @ (8000d2c ) - 8000ada: 2201 movs r2, #1 - 8000adc: 2108 movs r1, #8 - 8000ade: 0018 movs r0, r3 - 8000ae0: f001 f83d bl 8001b5e - - HAL_GPIO_WritePin(KP_C2_GPIO_Port, KP_C2_Pin, GPIO_PIN_RESET); - 8000ae4: 4b92 ldr r3, [pc, #584] @ (8000d30 ) - 8000ae6: 2200 movs r2, #0 - 8000ae8: 2108 movs r1, #8 - 8000aea: 0018 movs r0, r3 - 8000aec: f001 f837 bl 8001b5e - keypad_state |= (HAL_GPIO_ReadPin(KP_R1_GPIO_Port, KP_R1_Pin) == GPIO_PIN_RESET) << 4; - 8000af0: 4b8f ldr r3, [pc, #572] @ (8000d30 ) - 8000af2: 2140 movs r1, #64 @ 0x40 - 8000af4: 0018 movs r0, r3 - 8000af6: f001 f815 bl 8001b24 - 8000afa: 1e03 subs r3, r0, #0 - 8000afc: d101 bne.n 8000b02 - 8000afe: 2310 movs r3, #16 - 8000b00: e000 b.n 8000b04 - 8000b02: 2300 movs r3, #0 - 8000b04: b21a sxth r2, r3 - 8000b06: 4b87 ldr r3, [pc, #540] @ (8000d24 ) - 8000b08: 881b ldrh r3, [r3, #0] - 8000b0a: b21b sxth r3, r3 - 8000b0c: 4313 orrs r3, r2 - 8000b0e: b21b sxth r3, r3 - 8000b10: b29a uxth r2, r3 - 8000b12: 4b84 ldr r3, [pc, #528] @ (8000d24 ) - 8000b14: 801a strh r2, [r3, #0] - keypad_state |= (HAL_GPIO_ReadPin(KP_R2_GPIO_Port, KP_R2_Pin) == GPIO_PIN_RESET) << 5; - 8000b16: 4b86 ldr r3, [pc, #536] @ (8000d30 ) - 8000b18: 2180 movs r1, #128 @ 0x80 - 8000b1a: 0018 movs r0, r3 - 8000b1c: f001 f802 bl 8001b24 - 8000b20: 1e03 subs r3, r0, #0 - 8000b22: d101 bne.n 8000b28 - 8000b24: 2320 movs r3, #32 - 8000b26: e000 b.n 8000b2a - 8000b28: 2300 movs r3, #0 - 8000b2a: b21a sxth r2, r3 - 8000b2c: 4b7d ldr r3, [pc, #500] @ (8000d24 ) - 8000b2e: 881b ldrh r3, [r3, #0] - 8000b30: b21b sxth r3, r3 - 8000b32: 4313 orrs r3, r2 - 8000b34: b21b sxth r3, r3 - 8000b36: b29a uxth r2, r3 - 8000b38: 4b7a ldr r3, [pc, #488] @ (8000d24 ) - 8000b3a: 801a strh r2, [r3, #0] - keypad_state |= (HAL_GPIO_ReadPin(KP_R3_GPIO_Port, KP_R3_Pin) == GPIO_PIN_RESET) << 6; - 8000b3c: 2380 movs r3, #128 @ 0x80 - 8000b3e: 005b lsls r3, r3, #1 - 8000b40: 4a7b ldr r2, [pc, #492] @ (8000d30 ) - 8000b42: 0019 movs r1, r3 - 8000b44: 0010 movs r0, r2 - 8000b46: f000 ffed bl 8001b24 - 8000b4a: 1e03 subs r3, r0, #0 - 8000b4c: d101 bne.n 8000b52 - 8000b4e: 2340 movs r3, #64 @ 0x40 - 8000b50: e000 b.n 8000b54 - 8000b52: 2300 movs r3, #0 - 8000b54: b21a sxth r2, r3 - 8000b56: 4b73 ldr r3, [pc, #460] @ (8000d24 ) - 8000b58: 881b ldrh r3, [r3, #0] - 8000b5a: b21b sxth r3, r3 - 8000b5c: 4313 orrs r3, r2 - 8000b5e: b21b sxth r3, r3 - 8000b60: b29a uxth r2, r3 - 8000b62: 4b70 ldr r3, [pc, #448] @ (8000d24 ) - 8000b64: 801a strh r2, [r3, #0] - keypad_state |= (HAL_GPIO_ReadPin(KP_R4_GPIO_Port, KP_R4_Pin) == GPIO_PIN_RESET) << 7; - 8000b66: 2380 movs r3, #128 @ 0x80 - 8000b68: 009b lsls r3, r3, #2 - 8000b6a: 4a71 ldr r2, [pc, #452] @ (8000d30 ) - 8000b6c: 0019 movs r1, r3 - 8000b6e: 0010 movs r0, r2 - 8000b70: f000 ffd8 bl 8001b24 - 8000b74: 1e03 subs r3, r0, #0 - 8000b76: d101 bne.n 8000b7c - 8000b78: 2380 movs r3, #128 @ 0x80 - 8000b7a: e000 b.n 8000b7e - 8000b7c: 2300 movs r3, #0 - 8000b7e: b21a sxth r2, r3 - 8000b80: 4b68 ldr r3, [pc, #416] @ (8000d24 ) - 8000b82: 881b ldrh r3, [r3, #0] - 8000b84: b21b sxth r3, r3 - 8000b86: 4313 orrs r3, r2 - 8000b88: b21b sxth r3, r3 - 8000b8a: b29a uxth r2, r3 - 8000b8c: 4b65 ldr r3, [pc, #404] @ (8000d24 ) - 8000b8e: 801a strh r2, [r3, #0] - HAL_GPIO_WritePin(KP_C2_GPIO_Port, KP_C2_Pin, GPIO_PIN_SET); - 8000b90: 4b67 ldr r3, [pc, #412] @ (8000d30 ) - 8000b92: 2201 movs r2, #1 - 8000b94: 2108 movs r1, #8 - 8000b96: 0018 movs r0, r3 - 8000b98: f000 ffe1 bl 8001b5e - - HAL_GPIO_WritePin(KP_C3_GPIO_Port, KP_C3_Pin, GPIO_PIN_RESET); - 8000b9c: 4b64 ldr r3, [pc, #400] @ (8000d30 ) - 8000b9e: 2200 movs r2, #0 - 8000ba0: 2110 movs r1, #16 - 8000ba2: 0018 movs r0, r3 - 8000ba4: f000 ffdb bl 8001b5e - keypad_state |= (HAL_GPIO_ReadPin(KP_R1_GPIO_Port, KP_R1_Pin) == GPIO_PIN_RESET) << 8; - 8000ba8: 4b61 ldr r3, [pc, #388] @ (8000d30 ) - 8000baa: 2140 movs r1, #64 @ 0x40 - 8000bac: 0018 movs r0, r3 - 8000bae: f000 ffb9 bl 8001b24 - 8000bb2: 1e03 subs r3, r0, #0 - 8000bb4: d102 bne.n 8000bbc - 8000bb6: 2380 movs r3, #128 @ 0x80 - 8000bb8: 005b lsls r3, r3, #1 - 8000bba: e000 b.n 8000bbe - 8000bbc: 2300 movs r3, #0 - 8000bbe: b21a sxth r2, r3 - 8000bc0: 4b58 ldr r3, [pc, #352] @ (8000d24 ) - 8000bc2: 881b ldrh r3, [r3, #0] - 8000bc4: b21b sxth r3, r3 - 8000bc6: 4313 orrs r3, r2 - 8000bc8: b21b sxth r3, r3 - 8000bca: b29a uxth r2, r3 - 8000bcc: 4b55 ldr r3, [pc, #340] @ (8000d24 ) - 8000bce: 801a strh r2, [r3, #0] - keypad_state |= (HAL_GPIO_ReadPin(KP_R2_GPIO_Port, KP_R2_Pin) == GPIO_PIN_RESET) << 9; - 8000bd0: 4b57 ldr r3, [pc, #348] @ (8000d30 ) - 8000bd2: 2180 movs r1, #128 @ 0x80 - 8000bd4: 0018 movs r0, r3 - 8000bd6: f000 ffa5 bl 8001b24 - 8000bda: 1e03 subs r3, r0, #0 - 8000bdc: d102 bne.n 8000be4 - 8000bde: 2380 movs r3, #128 @ 0x80 - 8000be0: 009b lsls r3, r3, #2 - 8000be2: e000 b.n 8000be6 - 8000be4: 2300 movs r3, #0 - 8000be6: b21a sxth r2, r3 - 8000be8: 4b4e ldr r3, [pc, #312] @ (8000d24 ) - 8000bea: 881b ldrh r3, [r3, #0] - 8000bec: b21b sxth r3, r3 - 8000bee: 4313 orrs r3, r2 - 8000bf0: b21b sxth r3, r3 - 8000bf2: b29a uxth r2, r3 - 8000bf4: 4b4b ldr r3, [pc, #300] @ (8000d24 ) - 8000bf6: 801a strh r2, [r3, #0] - keypad_state |= (HAL_GPIO_ReadPin(KP_R3_GPIO_Port, KP_R3_Pin) == GPIO_PIN_RESET) << 10; - 8000bf8: 2380 movs r3, #128 @ 0x80 - 8000bfa: 005b lsls r3, r3, #1 - 8000bfc: 4a4c ldr r2, [pc, #304] @ (8000d30 ) - 8000bfe: 0019 movs r1, r3 - 8000c00: 0010 movs r0, r2 - 8000c02: f000 ff8f bl 8001b24 - 8000c06: 1e03 subs r3, r0, #0 - 8000c08: d102 bne.n 8000c10 - 8000c0a: 2380 movs r3, #128 @ 0x80 - 8000c0c: 00db lsls r3, r3, #3 - 8000c0e: e000 b.n 8000c12 - 8000c10: 2300 movs r3, #0 - 8000c12: b21a sxth r2, r3 - 8000c14: 4b43 ldr r3, [pc, #268] @ (8000d24 ) - 8000c16: 881b ldrh r3, [r3, #0] - 8000c18: b21b sxth r3, r3 - 8000c1a: 4313 orrs r3, r2 - 8000c1c: b21b sxth r3, r3 - 8000c1e: b29a uxth r2, r3 - 8000c20: 4b40 ldr r3, [pc, #256] @ (8000d24 ) - 8000c22: 801a strh r2, [r3, #0] - keypad_state |= (HAL_GPIO_ReadPin(KP_R4_GPIO_Port, KP_R4_Pin) == GPIO_PIN_RESET) << 11; - 8000c24: 2380 movs r3, #128 @ 0x80 - 8000c26: 009b lsls r3, r3, #2 - 8000c28: 4a41 ldr r2, [pc, #260] @ (8000d30 ) - 8000c2a: 0019 movs r1, r3 - 8000c2c: 0010 movs r0, r2 - 8000c2e: f000 ff79 bl 8001b24 - 8000c32: 1e03 subs r3, r0, #0 - 8000c34: d102 bne.n 8000c3c - 8000c36: 2380 movs r3, #128 @ 0x80 - 8000c38: 011b lsls r3, r3, #4 - 8000c3a: e000 b.n 8000c3e - 8000c3c: 2300 movs r3, #0 - 8000c3e: b21a sxth r2, r3 - 8000c40: 4b38 ldr r3, [pc, #224] @ (8000d24 ) - 8000c42: 881b ldrh r3, [r3, #0] - 8000c44: b21b sxth r3, r3 - 8000c46: 4313 orrs r3, r2 - 8000c48: b21b sxth r3, r3 - 8000c4a: b29a uxth r2, r3 - 8000c4c: 4b35 ldr r3, [pc, #212] @ (8000d24 ) - 8000c4e: 801a strh r2, [r3, #0] - HAL_GPIO_WritePin(KP_C3_GPIO_Port, KP_C3_Pin, GPIO_PIN_SET); - 8000c50: 4b37 ldr r3, [pc, #220] @ (8000d30 ) - 8000c52: 2201 movs r2, #1 - 8000c54: 2110 movs r1, #16 - 8000c56: 0018 movs r0, r3 - 8000c58: f000 ff81 bl 8001b5e - - HAL_GPIO_WritePin(KP_C4_GPIO_Port, KP_C4_Pin, GPIO_PIN_RESET); - 8000c5c: 4b34 ldr r3, [pc, #208] @ (8000d30 ) - 8000c5e: 2200 movs r2, #0 - 8000c60: 2120 movs r1, #32 - 8000c62: 0018 movs r0, r3 - 8000c64: f000 ff7b bl 8001b5e - keypad_state |= (HAL_GPIO_ReadPin(KP_R1_GPIO_Port, KP_R1_Pin) == GPIO_PIN_RESET) << 12; - 8000c68: 4b31 ldr r3, [pc, #196] @ (8000d30 ) - 8000c6a: 2140 movs r1, #64 @ 0x40 - 8000c6c: 0018 movs r0, r3 - 8000c6e: f000 ff59 bl 8001b24 - 8000c72: 1e03 subs r3, r0, #0 - 8000c74: d102 bne.n 8000c7c - 8000c76: 2380 movs r3, #128 @ 0x80 - 8000c78: 015b lsls r3, r3, #5 - 8000c7a: e000 b.n 8000c7e - 8000c7c: 2300 movs r3, #0 - 8000c7e: b21a sxth r2, r3 - 8000c80: 4b28 ldr r3, [pc, #160] @ (8000d24 ) - 8000c82: 881b ldrh r3, [r3, #0] - 8000c84: b21b sxth r3, r3 - 8000c86: 4313 orrs r3, r2 - 8000c88: b21b sxth r3, r3 - 8000c8a: b29a uxth r2, r3 - 8000c8c: 4b25 ldr r3, [pc, #148] @ (8000d24 ) - 8000c8e: 801a strh r2, [r3, #0] - keypad_state |= (HAL_GPIO_ReadPin(KP_R2_GPIO_Port, KP_R2_Pin) == GPIO_PIN_RESET) << 13; - 8000c90: 4b27 ldr r3, [pc, #156] @ (8000d30 ) - 8000c92: 2180 movs r1, #128 @ 0x80 - 8000c94: 0018 movs r0, r3 - 8000c96: f000 ff45 bl 8001b24 - 8000c9a: 1e03 subs r3, r0, #0 - 8000c9c: d102 bne.n 8000ca4 - 8000c9e: 2380 movs r3, #128 @ 0x80 - 8000ca0: 019b lsls r3, r3, #6 - 8000ca2: e000 b.n 8000ca6 - 8000ca4: 2300 movs r3, #0 - 8000ca6: b21a sxth r2, r3 - 8000ca8: 4b1e ldr r3, [pc, #120] @ (8000d24 ) - 8000caa: 881b ldrh r3, [r3, #0] - 8000cac: b21b sxth r3, r3 - 8000cae: 4313 orrs r3, r2 - 8000cb0: b21b sxth r3, r3 - 8000cb2: b29a uxth r2, r3 - 8000cb4: 4b1b ldr r3, [pc, #108] @ (8000d24 ) - 8000cb6: 801a strh r2, [r3, #0] - keypad_state |= (HAL_GPIO_ReadPin(KP_R3_GPIO_Port, KP_R3_Pin) == GPIO_PIN_RESET) << 14; - 8000cb8: 2380 movs r3, #128 @ 0x80 - 8000cba: 005b lsls r3, r3, #1 - 8000cbc: 4a1c ldr r2, [pc, #112] @ (8000d30 ) - 8000cbe: 0019 movs r1, r3 - 8000cc0: 0010 movs r0, r2 - 8000cc2: f000 ff2f bl 8001b24 - 8000cc6: 1e03 subs r3, r0, #0 - 8000cc8: d102 bne.n 8000cd0 - 8000cca: 2380 movs r3, #128 @ 0x80 - 8000ccc: 01db lsls r3, r3, #7 - 8000cce: e000 b.n 8000cd2 - 8000cd0: 2300 movs r3, #0 - 8000cd2: b21a sxth r2, r3 - 8000cd4: 4b13 ldr r3, [pc, #76] @ (8000d24 ) - 8000cd6: 881b ldrh r3, [r3, #0] - 8000cd8: b21b sxth r3, r3 - 8000cda: 4313 orrs r3, r2 - 8000cdc: b21b sxth r3, r3 - 8000cde: b29a uxth r2, r3 - 8000ce0: 4b10 ldr r3, [pc, #64] @ (8000d24 ) - 8000ce2: 801a strh r2, [r3, #0] - keypad_state |= (HAL_GPIO_ReadPin(KP_R4_GPIO_Port, KP_R4_Pin) == GPIO_PIN_RESET) << 15; - 8000ce4: 2380 movs r3, #128 @ 0x80 - 8000ce6: 009b lsls r3, r3, #2 - 8000ce8: 4a11 ldr r2, [pc, #68] @ (8000d30 ) - 8000cea: 0019 movs r1, r3 - 8000cec: 0010 movs r0, r2 - 8000cee: f000 ff19 bl 8001b24 - 8000cf2: 1e03 subs r3, r0, #0 - 8000cf4: d102 bne.n 8000cfc - 8000cf6: 2380 movs r3, #128 @ 0x80 - 8000cf8: 021b lsls r3, r3, #8 - 8000cfa: e000 b.n 8000cfe - 8000cfc: 2300 movs r3, #0 - 8000cfe: b21a sxth r2, r3 - 8000d00: 4b08 ldr r3, [pc, #32] @ (8000d24 ) - 8000d02: 881b ldrh r3, [r3, #0] - 8000d04: b21b sxth r3, r3 - 8000d06: 4313 orrs r3, r2 - 8000d08: b21b sxth r3, r3 - 8000d0a: b29a uxth r2, r3 - 8000d0c: 4b05 ldr r3, [pc, #20] @ (8000d24 ) - 8000d0e: 801a strh r2, [r3, #0] - HAL_GPIO_WritePin(KP_C4_GPIO_Port, KP_C4_Pin, GPIO_PIN_SET); - 8000d10: 4b07 ldr r3, [pc, #28] @ (8000d30 ) - 8000d12: 2201 movs r2, #1 - 8000d14: 2120 movs r1, #32 - 8000d16: 0018 movs r0, r3 - 8000d18: f000 ff21 bl 8001b5e -} - 8000d1c: 46c0 nop @ (mov r8, r8) - 8000d1e: 46bd mov sp, r7 - 8000d20: bd80 pop {r7, pc} - 8000d22: 46c0 nop @ (mov r8, r8) - 8000d24: 200001d2 .word 0x200001d2 - 8000d28: 200001d0 .word 0x200001d0 - 8000d2c: 50000c00 .word 0x50000c00 - 8000d30: 50000400 .word 0x50000400 - -08000d34 : - -void scan_buttons(void) -{ - 8000d34: b580 push {r7, lr} - 8000d36: af00 add r7, sp, #0 - old_button_state = button_state; - 8000d38: 4b9a ldr r3, [pc, #616] @ (8000fa4 ) - 8000d3a: 881a ldrh r2, [r3, #0] - 8000d3c: 4b9a ldr r3, [pc, #616] @ (8000fa8 ) - 8000d3e: 801a strh r2, [r3, #0] - button_state = 0; - 8000d40: 4b98 ldr r3, [pc, #608] @ (8000fa4 ) - 8000d42: 2200 movs r2, #0 - 8000d44: 801a strh r2, [r3, #0] - - HAL_GPIO_WritePin(COL1_GPIO_Port, COL1_Pin, GPIO_PIN_SET); - 8000d46: 2380 movs r3, #128 @ 0x80 - 8000d48: 021b lsls r3, r3, #8 - 8000d4a: 4898 ldr r0, [pc, #608] @ (8000fac ) - 8000d4c: 2201 movs r2, #1 - 8000d4e: 0019 movs r1, r3 - 8000d50: f000 ff05 bl 8001b5e - button_state |= (HAL_GPIO_ReadPin(ROW1_GPIO_Port, ROW1_Pin) == GPIO_PIN_RESET) << 0; - 8000d54: 2380 movs r3, #128 @ 0x80 - 8000d56: 011a lsls r2, r3, #4 - 8000d58: 23a0 movs r3, #160 @ 0xa0 - 8000d5a: 05db lsls r3, r3, #23 - 8000d5c: 0011 movs r1, r2 - 8000d5e: 0018 movs r0, r3 - 8000d60: f000 fee0 bl 8001b24 - 8000d64: 0003 movs r3, r0 - 8000d66: 425a negs r2, r3 - 8000d68: 4153 adcs r3, r2 - 8000d6a: b2db uxtb r3, r3 - 8000d6c: b21a sxth r2, r3 - 8000d6e: 4b8d ldr r3, [pc, #564] @ (8000fa4 ) - 8000d70: 881b ldrh r3, [r3, #0] - 8000d72: b21b sxth r3, r3 - 8000d74: 4313 orrs r3, r2 - 8000d76: b21b sxth r3, r3 - 8000d78: b29a uxth r2, r3 - 8000d7a: 4b8a ldr r3, [pc, #552] @ (8000fa4 ) - 8000d7c: 801a strh r2, [r3, #0] - button_state |= (HAL_GPIO_ReadPin(ROW2_GPIO_Port, ROW2_Pin) == GPIO_PIN_RESET) << 1; - 8000d7e: 2380 movs r3, #128 @ 0x80 - 8000d80: 015a lsls r2, r3, #5 - 8000d82: 23a0 movs r3, #160 @ 0xa0 - 8000d84: 05db lsls r3, r3, #23 - 8000d86: 0011 movs r1, r2 - 8000d88: 0018 movs r0, r3 - 8000d8a: f000 fecb bl 8001b24 - 8000d8e: 1e03 subs r3, r0, #0 - 8000d90: d101 bne.n 8000d96 - 8000d92: 2302 movs r3, #2 - 8000d94: e000 b.n 8000d98 - 8000d96: 2300 movs r3, #0 - 8000d98: b21a sxth r2, r3 - 8000d9a: 4b82 ldr r3, [pc, #520] @ (8000fa4 ) - 8000d9c: 881b ldrh r3, [r3, #0] - 8000d9e: b21b sxth r3, r3 - 8000da0: 4313 orrs r3, r2 - 8000da2: b21b sxth r3, r3 - 8000da4: b29a uxth r2, r3 - 8000da6: 4b7f ldr r3, [pc, #508] @ (8000fa4 ) - 8000da8: 801a strh r2, [r3, #0] - button_state |= (HAL_GPIO_ReadPin(ROW3_GPIO_Port, ROW3_Pin) == GPIO_PIN_RESET) << 2; - 8000daa: 2380 movs r3, #128 @ 0x80 - 8000dac: 021a lsls r2, r3, #8 - 8000dae: 23a0 movs r3, #160 @ 0xa0 - 8000db0: 05db lsls r3, r3, #23 - 8000db2: 0011 movs r1, r2 - 8000db4: 0018 movs r0, r3 - 8000db6: f000 feb5 bl 8001b24 - 8000dba: 1e03 subs r3, r0, #0 - 8000dbc: d101 bne.n 8000dc2 - 8000dbe: 2304 movs r3, #4 - 8000dc0: e000 b.n 8000dc4 - 8000dc2: 2300 movs r3, #0 - 8000dc4: b21a sxth r2, r3 - 8000dc6: 4b77 ldr r3, [pc, #476] @ (8000fa4 ) - 8000dc8: 881b ldrh r3, [r3, #0] - 8000dca: b21b sxth r3, r3 - 8000dcc: 4313 orrs r3, r2 - 8000dce: b21b sxth r3, r3 - 8000dd0: b29a uxth r2, r3 - 8000dd2: 4b74 ldr r3, [pc, #464] @ (8000fa4 ) - 8000dd4: 801a strh r2, [r3, #0] - button_state |= (HAL_GPIO_ReadPin(ROW4_GPIO_Port, ROW4_Pin) == GPIO_PIN_RESET) << 3; - 8000dd6: 4b76 ldr r3, [pc, #472] @ (8000fb0 ) - 8000dd8: 2101 movs r1, #1 - 8000dda: 0018 movs r0, r3 - 8000ddc: f000 fea2 bl 8001b24 - 8000de0: 1e03 subs r3, r0, #0 - 8000de2: d101 bne.n 8000de8 - 8000de4: 2308 movs r3, #8 - 8000de6: e000 b.n 8000dea - 8000de8: 2300 movs r3, #0 - 8000dea: b21a sxth r2, r3 - 8000dec: 4b6d ldr r3, [pc, #436] @ (8000fa4 ) - 8000dee: 881b ldrh r3, [r3, #0] - 8000df0: b21b sxth r3, r3 - 8000df2: 4313 orrs r3, r2 - 8000df4: b21b sxth r3, r3 - 8000df6: b29a uxth r2, r3 - 8000df8: 4b6a ldr r3, [pc, #424] @ (8000fa4 ) - 8000dfa: 801a strh r2, [r3, #0] - HAL_GPIO_WritePin(COL1_GPIO_Port, COL1_Pin, GPIO_PIN_RESET); - 8000dfc: 2380 movs r3, #128 @ 0x80 - 8000dfe: 021b lsls r3, r3, #8 - 8000e00: 486a ldr r0, [pc, #424] @ (8000fac ) - 8000e02: 2200 movs r2, #0 - 8000e04: 0019 movs r1, r3 - 8000e06: f000 feaa bl 8001b5e - - HAL_GPIO_WritePin(COL2_GPIO_Port, COL2_Pin, GPIO_PIN_SET); - 8000e0a: 2380 movs r3, #128 @ 0x80 - 8000e0c: 0059 lsls r1, r3, #1 - 8000e0e: 23a0 movs r3, #160 @ 0xa0 - 8000e10: 05db lsls r3, r3, #23 - 8000e12: 2201 movs r2, #1 - 8000e14: 0018 movs r0, r3 - 8000e16: f000 fea2 bl 8001b5e - button_state |= (HAL_GPIO_ReadPin(ROW1_GPIO_Port, ROW1_Pin) == GPIO_PIN_RESET) << 4; - 8000e1a: 2380 movs r3, #128 @ 0x80 - 8000e1c: 011a lsls r2, r3, #4 - 8000e1e: 23a0 movs r3, #160 @ 0xa0 - 8000e20: 05db lsls r3, r3, #23 - 8000e22: 0011 movs r1, r2 - 8000e24: 0018 movs r0, r3 - 8000e26: f000 fe7d bl 8001b24 - 8000e2a: 1e03 subs r3, r0, #0 - 8000e2c: d101 bne.n 8000e32 - 8000e2e: 2310 movs r3, #16 - 8000e30: e000 b.n 8000e34 - 8000e32: 2300 movs r3, #0 - 8000e34: b21a sxth r2, r3 - 8000e36: 4b5b ldr r3, [pc, #364] @ (8000fa4 ) - 8000e38: 881b ldrh r3, [r3, #0] - 8000e3a: b21b sxth r3, r3 - 8000e3c: 4313 orrs r3, r2 - 8000e3e: b21b sxth r3, r3 - 8000e40: b29a uxth r2, r3 - 8000e42: 4b58 ldr r3, [pc, #352] @ (8000fa4 ) - 8000e44: 801a strh r2, [r3, #0] - button_state |= (HAL_GPIO_ReadPin(ROW2_GPIO_Port, ROW2_Pin) == GPIO_PIN_RESET) << 5; - 8000e46: 2380 movs r3, #128 @ 0x80 - 8000e48: 015a lsls r2, r3, #5 - 8000e4a: 23a0 movs r3, #160 @ 0xa0 - 8000e4c: 05db lsls r3, r3, #23 - 8000e4e: 0011 movs r1, r2 - 8000e50: 0018 movs r0, r3 - 8000e52: f000 fe67 bl 8001b24 - 8000e56: 1e03 subs r3, r0, #0 - 8000e58: d101 bne.n 8000e5e - 8000e5a: 2320 movs r3, #32 - 8000e5c: e000 b.n 8000e60 - 8000e5e: 2300 movs r3, #0 - 8000e60: b21a sxth r2, r3 - 8000e62: 4b50 ldr r3, [pc, #320] @ (8000fa4 ) - 8000e64: 881b ldrh r3, [r3, #0] - 8000e66: b21b sxth r3, r3 - 8000e68: 4313 orrs r3, r2 - 8000e6a: b21b sxth r3, r3 - 8000e6c: b29a uxth r2, r3 - 8000e6e: 4b4d ldr r3, [pc, #308] @ (8000fa4 ) - 8000e70: 801a strh r2, [r3, #0] - button_state |= (HAL_GPIO_ReadPin(ROW3_GPIO_Port, ROW3_Pin) == GPIO_PIN_RESET) << 6; - 8000e72: 2380 movs r3, #128 @ 0x80 - 8000e74: 021a lsls r2, r3, #8 - 8000e76: 23a0 movs r3, #160 @ 0xa0 - 8000e78: 05db lsls r3, r3, #23 - 8000e7a: 0011 movs r1, r2 - 8000e7c: 0018 movs r0, r3 - 8000e7e: f000 fe51 bl 8001b24 - 8000e82: 1e03 subs r3, r0, #0 - 8000e84: d101 bne.n 8000e8a - 8000e86: 2340 movs r3, #64 @ 0x40 - 8000e88: e000 b.n 8000e8c - 8000e8a: 2300 movs r3, #0 - 8000e8c: b21a sxth r2, r3 - 8000e8e: 4b45 ldr r3, [pc, #276] @ (8000fa4 ) - 8000e90: 881b ldrh r3, [r3, #0] - 8000e92: b21b sxth r3, r3 - 8000e94: 4313 orrs r3, r2 - 8000e96: b21b sxth r3, r3 - 8000e98: b29a uxth r2, r3 - 8000e9a: 4b42 ldr r3, [pc, #264] @ (8000fa4 ) - 8000e9c: 801a strh r2, [r3, #0] - button_state |= (HAL_GPIO_ReadPin(ROW4_GPIO_Port, ROW4_Pin) == GPIO_PIN_RESET) << 7; - 8000e9e: 4b44 ldr r3, [pc, #272] @ (8000fb0 ) - 8000ea0: 2101 movs r1, #1 - 8000ea2: 0018 movs r0, r3 - 8000ea4: f000 fe3e bl 8001b24 - 8000ea8: 1e03 subs r3, r0, #0 - 8000eaa: d101 bne.n 8000eb0 - 8000eac: 2380 movs r3, #128 @ 0x80 - 8000eae: e000 b.n 8000eb2 - 8000eb0: 2300 movs r3, #0 - 8000eb2: b21a sxth r2, r3 - 8000eb4: 4b3b ldr r3, [pc, #236] @ (8000fa4 ) - 8000eb6: 881b ldrh r3, [r3, #0] - 8000eb8: b21b sxth r3, r3 - 8000eba: 4313 orrs r3, r2 - 8000ebc: b21b sxth r3, r3 - 8000ebe: b29a uxth r2, r3 - 8000ec0: 4b38 ldr r3, [pc, #224] @ (8000fa4 ) - 8000ec2: 801a strh r2, [r3, #0] - HAL_GPIO_WritePin(COL2_GPIO_Port, COL2_Pin, GPIO_PIN_RESET); - 8000ec4: 2380 movs r3, #128 @ 0x80 - 8000ec6: 0059 lsls r1, r3, #1 - 8000ec8: 23a0 movs r3, #160 @ 0xa0 - 8000eca: 05db lsls r3, r3, #23 - 8000ecc: 2200 movs r2, #0 - 8000ece: 0018 movs r0, r3 - 8000ed0: f000 fe45 bl 8001b5e - - HAL_GPIO_WritePin(COL3_GPIO_Port, COL3_Pin, GPIO_PIN_SET); - 8000ed4: 4b36 ldr r3, [pc, #216] @ (8000fb0 ) - 8000ed6: 2201 movs r2, #1 - 8000ed8: 2102 movs r1, #2 - 8000eda: 0018 movs r0, r3 - 8000edc: f000 fe3f bl 8001b5e - button_state |= (HAL_GPIO_ReadPin(ROW1_GPIO_Port, ROW1_Pin) == GPIO_PIN_RESET) << 8; - 8000ee0: 2380 movs r3, #128 @ 0x80 - 8000ee2: 011a lsls r2, r3, #4 - 8000ee4: 23a0 movs r3, #160 @ 0xa0 - 8000ee6: 05db lsls r3, r3, #23 - 8000ee8: 0011 movs r1, r2 - 8000eea: 0018 movs r0, r3 - 8000eec: f000 fe1a bl 8001b24 - 8000ef0: 1e03 subs r3, r0, #0 - 8000ef2: d102 bne.n 8000efa - 8000ef4: 2380 movs r3, #128 @ 0x80 - 8000ef6: 005b lsls r3, r3, #1 - 8000ef8: e000 b.n 8000efc - 8000efa: 2300 movs r3, #0 - 8000efc: b21a sxth r2, r3 - 8000efe: 4b29 ldr r3, [pc, #164] @ (8000fa4 ) - 8000f00: 881b ldrh r3, [r3, #0] - 8000f02: b21b sxth r3, r3 - 8000f04: 4313 orrs r3, r2 - 8000f06: b21b sxth r3, r3 - 8000f08: b29a uxth r2, r3 - 8000f0a: 4b26 ldr r3, [pc, #152] @ (8000fa4 ) - 8000f0c: 801a strh r2, [r3, #0] - button_state |= (HAL_GPIO_ReadPin(ROW2_GPIO_Port, ROW2_Pin) == GPIO_PIN_RESET) << 9; - 8000f0e: 2380 movs r3, #128 @ 0x80 - 8000f10: 015a lsls r2, r3, #5 - 8000f12: 23a0 movs r3, #160 @ 0xa0 - 8000f14: 05db lsls r3, r3, #23 - 8000f16: 0011 movs r1, r2 - 8000f18: 0018 movs r0, r3 - 8000f1a: f000 fe03 bl 8001b24 - 8000f1e: 1e03 subs r3, r0, #0 - 8000f20: d102 bne.n 8000f28 - 8000f22: 2380 movs r3, #128 @ 0x80 - 8000f24: 009b lsls r3, r3, #2 - 8000f26: e000 b.n 8000f2a - 8000f28: 2300 movs r3, #0 - 8000f2a: b21a sxth r2, r3 - 8000f2c: 4b1d ldr r3, [pc, #116] @ (8000fa4 ) - 8000f2e: 881b ldrh r3, [r3, #0] - 8000f30: b21b sxth r3, r3 - 8000f32: 4313 orrs r3, r2 - 8000f34: b21b sxth r3, r3 - 8000f36: b29a uxth r2, r3 - 8000f38: 4b1a ldr r3, [pc, #104] @ (8000fa4 ) - 8000f3a: 801a strh r2, [r3, #0] - button_state |= (HAL_GPIO_ReadPin(ROW3_GPIO_Port, ROW3_Pin) == GPIO_PIN_RESET) << 10; - 8000f3c: 2380 movs r3, #128 @ 0x80 - 8000f3e: 021a lsls r2, r3, #8 - 8000f40: 23a0 movs r3, #160 @ 0xa0 - 8000f42: 05db lsls r3, r3, #23 - 8000f44: 0011 movs r1, r2 - 8000f46: 0018 movs r0, r3 - 8000f48: f000 fdec bl 8001b24 - 8000f4c: 1e03 subs r3, r0, #0 - 8000f4e: d102 bne.n 8000f56 - 8000f50: 2380 movs r3, #128 @ 0x80 - 8000f52: 00db lsls r3, r3, #3 - 8000f54: e000 b.n 8000f58 - 8000f56: 2300 movs r3, #0 - 8000f58: b21a sxth r2, r3 - 8000f5a: 4b12 ldr r3, [pc, #72] @ (8000fa4 ) - 8000f5c: 881b ldrh r3, [r3, #0] - 8000f5e: b21b sxth r3, r3 - 8000f60: 4313 orrs r3, r2 - 8000f62: b21b sxth r3, r3 - 8000f64: b29a uxth r2, r3 - 8000f66: 4b0f ldr r3, [pc, #60] @ (8000fa4 ) - 8000f68: 801a strh r2, [r3, #0] - button_state |= (HAL_GPIO_ReadPin(ROW4_GPIO_Port, ROW4_Pin) == GPIO_PIN_RESET) << 11; - 8000f6a: 4b11 ldr r3, [pc, #68] @ (8000fb0 ) - 8000f6c: 2101 movs r1, #1 - 8000f6e: 0018 movs r0, r3 - 8000f70: f000 fdd8 bl 8001b24 - 8000f74: 1e03 subs r3, r0, #0 - 8000f76: d102 bne.n 8000f7e - 8000f78: 2380 movs r3, #128 @ 0x80 - 8000f7a: 011b lsls r3, r3, #4 - 8000f7c: e000 b.n 8000f80 - 8000f7e: 2300 movs r3, #0 - 8000f80: b21a sxth r2, r3 - 8000f82: 4b08 ldr r3, [pc, #32] @ (8000fa4 ) - 8000f84: 881b ldrh r3, [r3, #0] - 8000f86: b21b sxth r3, r3 - 8000f88: 4313 orrs r3, r2 - 8000f8a: b21b sxth r3, r3 - 8000f8c: b29a uxth r2, r3 - 8000f8e: 4b05 ldr r3, [pc, #20] @ (8000fa4 ) - 8000f90: 801a strh r2, [r3, #0] - HAL_GPIO_WritePin(COL3_GPIO_Port, COL3_Pin, GPIO_PIN_RESET); - 8000f92: 4b07 ldr r3, [pc, #28] @ (8000fb0 ) - 8000f94: 2200 movs r2, #0 - 8000f96: 2102 movs r1, #2 - 8000f98: 0018 movs r0, r3 - 8000f9a: f000 fde0 bl 8001b5e -} - 8000f9e: 46c0 nop @ (mov r8, r8) - 8000fa0: 46bd mov sp, r7 - 8000fa2: bd80 pop {r7, pc} - 8000fa4: 200001d6 .word 0x200001d6 - 8000fa8: 200001d4 .word 0x200001d4 - 8000fac: 50000400 .word 0x50000400 - 8000fb0: 50000c00 .word 0x50000c00 - -08000fb4 : +080010f4 : /** * @brief This function is executed in case of error occurrence. * @retval None */ void Error_Handler(void) { - 8000fb4: b580 push {r7, lr} - 8000fb6: af00 add r7, sp, #0 + 80010f4: b580 push {r7, lr} + 80010f6: af00 add r7, sp, #0 \details Disables IRQ interrupts by setting the I-bit in the CPSR. Can only be executed in Privileged modes. */ __STATIC_FORCEINLINE void __disable_irq(void) { __ASM volatile ("cpsid i" : : : "memory"); - 8000fb8: b672 cpsid i + 80010f8: b672 cpsid i } - 8000fba: 46c0 nop @ (mov r8, r8) + 80010fa: 46c0 nop @ (mov r8, r8) /* USER CODE BEGIN Error_Handler_Debug */ /* User can add his own implementation to report the HAL error return state */ __disable_irq(); while (1) - 8000fbc: 46c0 nop @ (mov r8, r8) - 8000fbe: e7fd b.n 8000fbc + 80010fc: 46c0 nop @ (mov r8, r8) + 80010fe: e7fd b.n 80010fc -08000fc0 : +08001100 : /* USER CODE END 0 */ /** * Initializes the Global MSP. */ void HAL_MspInit(void) { - 8000fc0: b580 push {r7, lr} - 8000fc2: b082 sub sp, #8 - 8000fc4: af00 add r7, sp, #0 + 8001100: b580 push {r7, lr} + 8001102: b082 sub sp, #8 + 8001104: af00 add r7, sp, #0 /* USER CODE BEGIN MspInit 0 */ /* USER CODE END MspInit 0 */ __HAL_RCC_SYSCFG_CLK_ENABLE(); - 8000fc6: 4b11 ldr r3, [pc, #68] @ (800100c ) - 8000fc8: 6c1a ldr r2, [r3, #64] @ 0x40 - 8000fca: 4b10 ldr r3, [pc, #64] @ (800100c ) - 8000fcc: 2101 movs r1, #1 - 8000fce: 430a orrs r2, r1 - 8000fd0: 641a str r2, [r3, #64] @ 0x40 - 8000fd2: 4b0e ldr r3, [pc, #56] @ (800100c ) - 8000fd4: 6c1b ldr r3, [r3, #64] @ 0x40 - 8000fd6: 2201 movs r2, #1 - 8000fd8: 4013 ands r3, r2 - 8000fda: 607b str r3, [r7, #4] - 8000fdc: 687b ldr r3, [r7, #4] + 8001106: 4b11 ldr r3, [pc, #68] @ (800114c ) + 8001108: 6c1a ldr r2, [r3, #64] @ 0x40 + 800110a: 4b10 ldr r3, [pc, #64] @ (800114c ) + 800110c: 2101 movs r1, #1 + 800110e: 430a orrs r2, r1 + 8001110: 641a str r2, [r3, #64] @ 0x40 + 8001112: 4b0e ldr r3, [pc, #56] @ (800114c ) + 8001114: 6c1b ldr r3, [r3, #64] @ 0x40 + 8001116: 2201 movs r2, #1 + 8001118: 4013 ands r3, r2 + 800111a: 607b str r3, [r7, #4] + 800111c: 687b ldr r3, [r7, #4] __HAL_RCC_PWR_CLK_ENABLE(); - 8000fde: 4b0b ldr r3, [pc, #44] @ (800100c ) - 8000fe0: 6bda ldr r2, [r3, #60] @ 0x3c - 8000fe2: 4b0a ldr r3, [pc, #40] @ (800100c ) - 8000fe4: 2180 movs r1, #128 @ 0x80 - 8000fe6: 0549 lsls r1, r1, #21 - 8000fe8: 430a orrs r2, r1 - 8000fea: 63da str r2, [r3, #60] @ 0x3c - 8000fec: 4b07 ldr r3, [pc, #28] @ (800100c ) - 8000fee: 6bda ldr r2, [r3, #60] @ 0x3c - 8000ff0: 2380 movs r3, #128 @ 0x80 - 8000ff2: 055b lsls r3, r3, #21 - 8000ff4: 4013 ands r3, r2 - 8000ff6: 603b str r3, [r7, #0] - 8000ff8: 683b ldr r3, [r7, #0] + 800111e: 4b0b ldr r3, [pc, #44] @ (800114c ) + 8001120: 6bda ldr r2, [r3, #60] @ 0x3c + 8001122: 4b0a ldr r3, [pc, #40] @ (800114c ) + 8001124: 2180 movs r1, #128 @ 0x80 + 8001126: 0549 lsls r1, r1, #21 + 8001128: 430a orrs r2, r1 + 800112a: 63da str r2, [r3, #60] @ 0x3c + 800112c: 4b07 ldr r3, [pc, #28] @ (800114c ) + 800112e: 6bda ldr r2, [r3, #60] @ 0x3c + 8001130: 2380 movs r3, #128 @ 0x80 + 8001132: 055b lsls r3, r3, #21 + 8001134: 4013 ands r3, r2 + 8001136: 603b str r3, [r7, #0] + 8001138: 683b ldr r3, [r7, #0] /* System interrupt init*/ /** Disable the internal Pull-Up in Dead Battery pins of UCPD peripheral */ HAL_SYSCFG_StrobeDBattpinsConfig(SYSCFG_CFGR1_UCPD1_STROBE | SYSCFG_CFGR1_UCPD2_STROBE); - 8000ffa: 23c0 movs r3, #192 @ 0xc0 - 8000ffc: 00db lsls r3, r3, #3 - 8000ffe: 0018 movs r0, r3 - 8001000: f000 fac2 bl 8001588 + 800113a: 23c0 movs r3, #192 @ 0xc0 + 800113c: 00db lsls r3, r3, #3 + 800113e: 0018 movs r0, r3 + 8001140: f000 fac2 bl 80016c8 /* USER CODE BEGIN MspInit 1 */ /* USER CODE END MspInit 1 */ } - 8001004: 46c0 nop @ (mov r8, r8) - 8001006: 46bd mov sp, r7 - 8001008: b002 add sp, #8 - 800100a: bd80 pop {r7, pc} - 800100c: 40021000 .word 0x40021000 + 8001144: 46c0 nop @ (mov r8, r8) + 8001146: 46bd mov sp, r7 + 8001148: b002 add sp, #8 + 800114a: bd80 pop {r7, pc} + 800114c: 40021000 .word 0x40021000 -08001010 : +08001150 : * This function configures the hardware resources used in this example * @param hi2c: I2C handle pointer * @retval None */ void HAL_I2C_MspInit(I2C_HandleTypeDef* hi2c) { - 8001010: b590 push {r4, r7, lr} - 8001012: b091 sub sp, #68 @ 0x44 - 8001014: af00 add r7, sp, #0 - 8001016: 6078 str r0, [r7, #4] + 8001150: b590 push {r4, r7, lr} + 8001152: b091 sub sp, #68 @ 0x44 + 8001154: af00 add r7, sp, #0 + 8001156: 6078 str r0, [r7, #4] GPIO_InitTypeDef GPIO_InitStruct = {0}; - 8001018: 232c movs r3, #44 @ 0x2c - 800101a: 18fb adds r3, r7, r3 - 800101c: 0018 movs r0, r3 - 800101e: 2314 movs r3, #20 - 8001020: 001a movs r2, r3 - 8001022: 2100 movs r1, #0 - 8001024: f004 f9aa bl 800537c + 8001158: 232c movs r3, #44 @ 0x2c + 800115a: 18fb adds r3, r7, r3 + 800115c: 0018 movs r0, r3 + 800115e: 2314 movs r3, #20 + 8001160: 001a movs r2, r3 + 8001162: 2100 movs r1, #0 + 8001164: f004 fa9c bl 80056a0 RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; - 8001028: 2410 movs r4, #16 - 800102a: 193b adds r3, r7, r4 - 800102c: 0018 movs r0, r3 - 800102e: 231c movs r3, #28 - 8001030: 001a movs r2, r3 - 8001032: 2100 movs r1, #0 - 8001034: f004 f9a2 bl 800537c + 8001168: 2410 movs r4, #16 + 800116a: 193b adds r3, r7, r4 + 800116c: 0018 movs r0, r3 + 800116e: 231c movs r3, #28 + 8001170: 001a movs r2, r3 + 8001172: 2100 movs r1, #0 + 8001174: f004 fa94 bl 80056a0 if(hi2c->Instance==I2C1) - 8001038: 687b ldr r3, [r7, #4] - 800103a: 681b ldr r3, [r3, #0] - 800103c: 4a27 ldr r2, [pc, #156] @ (80010dc ) - 800103e: 4293 cmp r3, r2 - 8001040: d147 bne.n 80010d2 + 8001178: 687b ldr r3, [r7, #4] + 800117a: 681b ldr r3, [r3, #0] + 800117c: 4a27 ldr r2, [pc, #156] @ (800121c ) + 800117e: 4293 cmp r3, r2 + 8001180: d147 bne.n 8001212 /* USER CODE END I2C1_MspInit 0 */ /** Initializes the peripherals clocks */ PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_I2C1; - 8001042: 193b adds r3, r7, r4 - 8001044: 2220 movs r2, #32 - 8001046: 601a str r2, [r3, #0] + 8001182: 193b adds r3, r7, r4 + 8001184: 2220 movs r2, #32 + 8001186: 601a str r2, [r3, #0] PeriphClkInit.I2c1ClockSelection = RCC_I2C1CLKSOURCE_PCLK1; - 8001048: 193b adds r3, r7, r4 - 800104a: 2200 movs r2, #0 - 800104c: 60da str r2, [r3, #12] + 8001188: 193b adds r3, r7, r4 + 800118a: 2200 movs r2, #0 + 800118c: 60da str r2, [r3, #12] if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) - 800104e: 193b adds r3, r7, r4 - 8001050: 0018 movs r0, r3 - 8001052: f002 ff9b bl 8003f8c - 8001056: 1e03 subs r3, r0, #0 - 8001058: d001 beq.n 800105e + 800118e: 193b adds r3, r7, r4 + 8001190: 0018 movs r0, r3 + 8001192: f002 fa25 bl 80035e0 + 8001196: 1e03 subs r3, r0, #0 + 8001198: d001 beq.n 800119e { Error_Handler(); - 800105a: f7ff ffab bl 8000fb4 + 800119a: f7ff ffab bl 80010f4 } __HAL_RCC_GPIOA_CLK_ENABLE(); - 800105e: 4b20 ldr r3, [pc, #128] @ (80010e0 ) - 8001060: 6b5a ldr r2, [r3, #52] @ 0x34 - 8001062: 4b1f ldr r3, [pc, #124] @ (80010e0 ) - 8001064: 2101 movs r1, #1 - 8001066: 430a orrs r2, r1 - 8001068: 635a str r2, [r3, #52] @ 0x34 - 800106a: 4b1d ldr r3, [pc, #116] @ (80010e0 ) - 800106c: 6b5b ldr r3, [r3, #52] @ 0x34 - 800106e: 2201 movs r2, #1 - 8001070: 4013 ands r3, r2 - 8001072: 60fb str r3, [r7, #12] - 8001074: 68fb ldr r3, [r7, #12] + 800119e: 4b20 ldr r3, [pc, #128] @ (8001220 ) + 80011a0: 6b5a ldr r2, [r3, #52] @ 0x34 + 80011a2: 4b1f ldr r3, [pc, #124] @ (8001220 ) + 80011a4: 2101 movs r1, #1 + 80011a6: 430a orrs r2, r1 + 80011a8: 635a str r2, [r3, #52] @ 0x34 + 80011aa: 4b1d ldr r3, [pc, #116] @ (8001220 ) + 80011ac: 6b5b ldr r3, [r3, #52] @ 0x34 + 80011ae: 2201 movs r2, #1 + 80011b0: 4013 ands r3, r2 + 80011b2: 60fb str r3, [r7, #12] + 80011b4: 68fb ldr r3, [r7, #12] /**I2C1 GPIO Configuration PA9 ------> I2C1_SCL PA10 ------> I2C1_SDA */ GPIO_InitStruct.Pin = GPIO_PIN_9|GPIO_PIN_10; - 8001076: 212c movs r1, #44 @ 0x2c - 8001078: 187b adds r3, r7, r1 - 800107a: 22c0 movs r2, #192 @ 0xc0 - 800107c: 00d2 lsls r2, r2, #3 - 800107e: 601a str r2, [r3, #0] + 80011b6: 212c movs r1, #44 @ 0x2c + 80011b8: 187b adds r3, r7, r1 + 80011ba: 22c0 movs r2, #192 @ 0xc0 + 80011bc: 00d2 lsls r2, r2, #3 + 80011be: 601a str r2, [r3, #0] GPIO_InitStruct.Mode = GPIO_MODE_AF_OD; - 8001080: 187b adds r3, r7, r1 - 8001082: 2212 movs r2, #18 - 8001084: 605a str r2, [r3, #4] + 80011c0: 187b adds r3, r7, r1 + 80011c2: 2212 movs r2, #18 + 80011c4: 605a str r2, [r3, #4] GPIO_InitStruct.Pull = GPIO_NOPULL; - 8001086: 187b adds r3, r7, r1 - 8001088: 2200 movs r2, #0 - 800108a: 609a str r2, [r3, #8] + 80011c6: 187b adds r3, r7, r1 + 80011c8: 2200 movs r2, #0 + 80011ca: 609a str r2, [r3, #8] GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 800108c: 187b adds r3, r7, r1 - 800108e: 2200 movs r2, #0 - 8001090: 60da str r2, [r3, #12] + 80011cc: 187b adds r3, r7, r1 + 80011ce: 2200 movs r2, #0 + 80011d0: 60da str r2, [r3, #12] GPIO_InitStruct.Alternate = GPIO_AF6_I2C1; - 8001092: 187b adds r3, r7, r1 - 8001094: 2206 movs r2, #6 - 8001096: 611a str r2, [r3, #16] + 80011d2: 187b adds r3, r7, r1 + 80011d4: 2206 movs r2, #6 + 80011d6: 611a str r2, [r3, #16] HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - 8001098: 187a adds r2, r7, r1 - 800109a: 23a0 movs r3, #160 @ 0xa0 - 800109c: 05db lsls r3, r3, #23 - 800109e: 0011 movs r1, r2 - 80010a0: 0018 movs r0, r3 - 80010a2: f000 fbdb bl 800185c + 80011d8: 187a adds r2, r7, r1 + 80011da: 23a0 movs r3, #160 @ 0xa0 + 80011dc: 05db lsls r3, r3, #23 + 80011de: 0011 movs r1, r2 + 80011e0: 0018 movs r0, r3 + 80011e2: f000 fbdb bl 800199c /* Peripheral clock enable */ __HAL_RCC_I2C1_CLK_ENABLE(); - 80010a6: 4b0e ldr r3, [pc, #56] @ (80010e0 ) - 80010a8: 6bda ldr r2, [r3, #60] @ 0x3c - 80010aa: 4b0d ldr r3, [pc, #52] @ (80010e0 ) - 80010ac: 2180 movs r1, #128 @ 0x80 - 80010ae: 0389 lsls r1, r1, #14 - 80010b0: 430a orrs r2, r1 - 80010b2: 63da str r2, [r3, #60] @ 0x3c - 80010b4: 4b0a ldr r3, [pc, #40] @ (80010e0 ) - 80010b6: 6bda ldr r2, [r3, #60] @ 0x3c - 80010b8: 2380 movs r3, #128 @ 0x80 - 80010ba: 039b lsls r3, r3, #14 - 80010bc: 4013 ands r3, r2 - 80010be: 60bb str r3, [r7, #8] - 80010c0: 68bb ldr r3, [r7, #8] + 80011e6: 4b0e ldr r3, [pc, #56] @ (8001220 ) + 80011e8: 6bda ldr r2, [r3, #60] @ 0x3c + 80011ea: 4b0d ldr r3, [pc, #52] @ (8001220 ) + 80011ec: 2180 movs r1, #128 @ 0x80 + 80011ee: 0389 lsls r1, r1, #14 + 80011f0: 430a orrs r2, r1 + 80011f2: 63da str r2, [r3, #60] @ 0x3c + 80011f4: 4b0a ldr r3, [pc, #40] @ (8001220 ) + 80011f6: 6bda ldr r2, [r3, #60] @ 0x3c + 80011f8: 2380 movs r3, #128 @ 0x80 + 80011fa: 039b lsls r3, r3, #14 + 80011fc: 4013 ands r3, r2 + 80011fe: 60bb str r3, [r7, #8] + 8001200: 68bb ldr r3, [r7, #8] /* I2C1 interrupt Init */ HAL_NVIC_SetPriority(I2C1_IRQn, 0, 0); - 80010c2: 2200 movs r2, #0 - 80010c4: 2100 movs r1, #0 - 80010c6: 2017 movs r0, #23 - 80010c8: f000 fb20 bl 800170c + 8001202: 2200 movs r2, #0 + 8001204: 2100 movs r1, #0 + 8001206: 2017 movs r0, #23 + 8001208: f000 fb20 bl 800184c HAL_NVIC_EnableIRQ(I2C1_IRQn); - 80010cc: 2017 movs r0, #23 - 80010ce: f000 fb32 bl 8001736 + 800120c: 2017 movs r0, #23 + 800120e: f000 fb32 bl 8001876 /* USER CODE BEGIN I2C1_MspInit 1 */ /* USER CODE END I2C1_MspInit 1 */ } } - 80010d2: 46c0 nop @ (mov r8, r8) - 80010d4: 46bd mov sp, r7 - 80010d6: b011 add sp, #68 @ 0x44 - 80010d8: bd90 pop {r4, r7, pc} - 80010da: 46c0 nop @ (mov r8, r8) - 80010dc: 40005400 .word 0x40005400 - 80010e0: 40021000 .word 0x40021000 + 8001212: 46c0 nop @ (mov r8, r8) + 8001214: 46bd mov sp, r7 + 8001216: b011 add sp, #68 @ 0x44 + 8001218: bd90 pop {r4, r7, pc} + 800121a: 46c0 nop @ (mov r8, r8) + 800121c: 40005400 .word 0x40005400 + 8001220: 40021000 .word 0x40021000 -080010e4 : +08001224 : * This function configures the hardware resources used in this example * @param hspi: SPI handle pointer * @retval None */ void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi) { - 80010e4: b590 push {r4, r7, lr} - 80010e6: b08b sub sp, #44 @ 0x2c - 80010e8: af00 add r7, sp, #0 - 80010ea: 6078 str r0, [r7, #4] + 8001224: b590 push {r4, r7, lr} + 8001226: b08b sub sp, #44 @ 0x2c + 8001228: af00 add r7, sp, #0 + 800122a: 6078 str r0, [r7, #4] GPIO_InitTypeDef GPIO_InitStruct = {0}; - 80010ec: 2414 movs r4, #20 - 80010ee: 193b adds r3, r7, r4 - 80010f0: 0018 movs r0, r3 - 80010f2: 2314 movs r3, #20 - 80010f4: 001a movs r2, r3 - 80010f6: 2100 movs r1, #0 - 80010f8: f004 f940 bl 800537c + 800122c: 2414 movs r4, #20 + 800122e: 193b adds r3, r7, r4 + 8001230: 0018 movs r0, r3 + 8001232: 2314 movs r3, #20 + 8001234: 001a movs r2, r3 + 8001236: 2100 movs r1, #0 + 8001238: f004 fa32 bl 80056a0 if(hspi->Instance==SPI1) - 80010fc: 687b ldr r3, [r7, #4] - 80010fe: 681b ldr r3, [r3, #0] - 8001100: 4a1b ldr r2, [pc, #108] @ (8001170 ) - 8001102: 4293 cmp r3, r2 - 8001104: d130 bne.n 8001168 + 800123c: 687b ldr r3, [r7, #4] + 800123e: 681b ldr r3, [r3, #0] + 8001240: 4a1b ldr r2, [pc, #108] @ (80012b0 ) + 8001242: 4293 cmp r3, r2 + 8001244: d130 bne.n 80012a8 { /* USER CODE BEGIN SPI1_MspInit 0 */ /* USER CODE END SPI1_MspInit 0 */ /* Peripheral clock enable */ __HAL_RCC_SPI1_CLK_ENABLE(); - 8001106: 4b1b ldr r3, [pc, #108] @ (8001174 ) - 8001108: 6c1a ldr r2, [r3, #64] @ 0x40 - 800110a: 4b1a ldr r3, [pc, #104] @ (8001174 ) - 800110c: 2180 movs r1, #128 @ 0x80 - 800110e: 0149 lsls r1, r1, #5 - 8001110: 430a orrs r2, r1 - 8001112: 641a str r2, [r3, #64] @ 0x40 - 8001114: 4b17 ldr r3, [pc, #92] @ (8001174 ) - 8001116: 6c1a ldr r2, [r3, #64] @ 0x40 - 8001118: 2380 movs r3, #128 @ 0x80 - 800111a: 015b lsls r3, r3, #5 - 800111c: 4013 ands r3, r2 - 800111e: 613b str r3, [r7, #16] - 8001120: 693b ldr r3, [r7, #16] + 8001246: 4b1b ldr r3, [pc, #108] @ (80012b4 ) + 8001248: 6c1a ldr r2, [r3, #64] @ 0x40 + 800124a: 4b1a ldr r3, [pc, #104] @ (80012b4 ) + 800124c: 2180 movs r1, #128 @ 0x80 + 800124e: 0149 lsls r1, r1, #5 + 8001250: 430a orrs r2, r1 + 8001252: 641a str r2, [r3, #64] @ 0x40 + 8001254: 4b17 ldr r3, [pc, #92] @ (80012b4 ) + 8001256: 6c1a ldr r2, [r3, #64] @ 0x40 + 8001258: 2380 movs r3, #128 @ 0x80 + 800125a: 015b lsls r3, r3, #5 + 800125c: 4013 ands r3, r2 + 800125e: 613b str r3, [r7, #16] + 8001260: 693b ldr r3, [r7, #16] __HAL_RCC_GPIOA_CLK_ENABLE(); - 8001122: 4b14 ldr r3, [pc, #80] @ (8001174 ) - 8001124: 6b5a ldr r2, [r3, #52] @ 0x34 - 8001126: 4b13 ldr r3, [pc, #76] @ (8001174 ) - 8001128: 2101 movs r1, #1 - 800112a: 430a orrs r2, r1 - 800112c: 635a str r2, [r3, #52] @ 0x34 - 800112e: 4b11 ldr r3, [pc, #68] @ (8001174 ) - 8001130: 6b5b ldr r3, [r3, #52] @ 0x34 - 8001132: 2201 movs r2, #1 - 8001134: 4013 ands r3, r2 - 8001136: 60fb str r3, [r7, #12] - 8001138: 68fb ldr r3, [r7, #12] - PA4 ------> SPI1_NSS + 8001262: 4b14 ldr r3, [pc, #80] @ (80012b4 ) + 8001264: 6b5a ldr r2, [r3, #52] @ 0x34 + 8001266: 4b13 ldr r3, [pc, #76] @ (80012b4 ) + 8001268: 2101 movs r1, #1 + 800126a: 430a orrs r2, r1 + 800126c: 635a str r2, [r3, #52] @ 0x34 + 800126e: 4b11 ldr r3, [pc, #68] @ (80012b4 ) + 8001270: 6b5b ldr r3, [r3, #52] @ 0x34 + 8001272: 2201 movs r2, #1 + 8001274: 4013 ands r3, r2 + 8001276: 60fb str r3, [r7, #12] + 8001278: 68fb ldr r3, [r7, #12] + /**SPI1 GPIO Configuration PA5 ------> SPI1_SCK PA6 ------> SPI1_MISO PA7 ------> SPI1_MOSI */ - GPIO_InitStruct.Pin = GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7; - 800113a: 0021 movs r1, r4 - 800113c: 187b adds r3, r7, r1 - 800113e: 22f0 movs r2, #240 @ 0xf0 - 8001140: 601a str r2, [r3, #0] + GPIO_InitStruct.Pin = GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7; + 800127a: 0021 movs r1, r4 + 800127c: 187b adds r3, r7, r1 + 800127e: 22e0 movs r2, #224 @ 0xe0 + 8001280: 601a str r2, [r3, #0] GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 8001142: 187b adds r3, r7, r1 - 8001144: 2202 movs r2, #2 - 8001146: 605a str r2, [r3, #4] + 8001282: 187b adds r3, r7, r1 + 8001284: 2202 movs r2, #2 + 8001286: 605a str r2, [r3, #4] GPIO_InitStruct.Pull = GPIO_NOPULL; - 8001148: 187b adds r3, r7, r1 - 800114a: 2200 movs r2, #0 - 800114c: 609a str r2, [r3, #8] + 8001288: 187b adds r3, r7, r1 + 800128a: 2200 movs r2, #0 + 800128c: 609a str r2, [r3, #8] GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 800114e: 187b adds r3, r7, r1 - 8001150: 2200 movs r2, #0 - 8001152: 60da str r2, [r3, #12] + 800128e: 187b adds r3, r7, r1 + 8001290: 2200 movs r2, #0 + 8001292: 60da str r2, [r3, #12] GPIO_InitStruct.Alternate = GPIO_AF0_SPI1; - 8001154: 187b adds r3, r7, r1 - 8001156: 2200 movs r2, #0 - 8001158: 611a str r2, [r3, #16] + 8001294: 187b adds r3, r7, r1 + 8001296: 2200 movs r2, #0 + 8001298: 611a str r2, [r3, #16] HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - 800115a: 187a adds r2, r7, r1 - 800115c: 23a0 movs r3, #160 @ 0xa0 - 800115e: 05db lsls r3, r3, #23 - 8001160: 0011 movs r1, r2 - 8001162: 0018 movs r0, r3 - 8001164: f000 fb7a bl 800185c + 800129a: 187a adds r2, r7, r1 + 800129c: 23a0 movs r3, #160 @ 0xa0 + 800129e: 05db lsls r3, r3, #23 + 80012a0: 0011 movs r1, r2 + 80012a2: 0018 movs r0, r3 + 80012a4: f000 fb7a bl 800199c /* USER CODE BEGIN SPI1_MspInit 1 */ /* USER CODE END SPI1_MspInit 1 */ } } - 8001168: 46c0 nop @ (mov r8, r8) - 800116a: 46bd mov sp, r7 - 800116c: b00b add sp, #44 @ 0x2c - 800116e: bd90 pop {r4, r7, pc} - 8001170: 40013000 .word 0x40013000 - 8001174: 40021000 .word 0x40021000 + 80012a8: 46c0 nop @ (mov r8, r8) + 80012aa: 46bd mov sp, r7 + 80012ac: b00b add sp, #44 @ 0x2c + 80012ae: bd90 pop {r4, r7, pc} + 80012b0: 40013000 .word 0x40013000 + 80012b4: 40021000 .word 0x40021000 -08001178 : +080012b8 : * This function configures the hardware resources used in this example * @param huart: UART handle pointer * @retval None */ void HAL_UART_MspInit(UART_HandleTypeDef* huart) { - 8001178: b590 push {r4, r7, lr} - 800117a: b091 sub sp, #68 @ 0x44 - 800117c: af00 add r7, sp, #0 - 800117e: 6078 str r0, [r7, #4] + 80012b8: b590 push {r4, r7, lr} + 80012ba: b091 sub sp, #68 @ 0x44 + 80012bc: af00 add r7, sp, #0 + 80012be: 6078 str r0, [r7, #4] GPIO_InitTypeDef GPIO_InitStruct = {0}; - 8001180: 232c movs r3, #44 @ 0x2c - 8001182: 18fb adds r3, r7, r3 - 8001184: 0018 movs r0, r3 - 8001186: 2314 movs r3, #20 - 8001188: 001a movs r2, r3 - 800118a: 2100 movs r1, #0 - 800118c: f004 f8f6 bl 800537c + 80012c0: 232c movs r3, #44 @ 0x2c + 80012c2: 18fb adds r3, r7, r3 + 80012c4: 0018 movs r0, r3 + 80012c6: 2314 movs r3, #20 + 80012c8: 001a movs r2, r3 + 80012ca: 2100 movs r1, #0 + 80012cc: f004 f9e8 bl 80056a0 RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; - 8001190: 2410 movs r4, #16 - 8001192: 193b adds r3, r7, r4 - 8001194: 0018 movs r0, r3 - 8001196: 231c movs r3, #28 - 8001198: 001a movs r2, r3 - 800119a: 2100 movs r1, #0 - 800119c: f004 f8ee bl 800537c + 80012d0: 2410 movs r4, #16 + 80012d2: 193b adds r3, r7, r4 + 80012d4: 0018 movs r0, r3 + 80012d6: 231c movs r3, #28 + 80012d8: 001a movs r2, r3 + 80012da: 2100 movs r1, #0 + 80012dc: f004 f9e0 bl 80056a0 if(huart->Instance==USART2) - 80011a0: 687b ldr r3, [r7, #4] - 80011a2: 681b ldr r3, [r3, #0] - 80011a4: 4a22 ldr r2, [pc, #136] @ (8001230 ) - 80011a6: 4293 cmp r3, r2 - 80011a8: d13e bne.n 8001228 + 80012e0: 687b ldr r3, [r7, #4] + 80012e2: 681b ldr r3, [r3, #0] + 80012e4: 4a22 ldr r2, [pc, #136] @ (8001370 ) + 80012e6: 4293 cmp r3, r2 + 80012e8: d13e bne.n 8001368 /* USER CODE END USART2_MspInit 0 */ /** Initializes the peripherals clocks */ PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USART2; - 80011aa: 193b adds r3, r7, r4 - 80011ac: 2202 movs r2, #2 - 80011ae: 601a str r2, [r3, #0] + 80012ea: 193b adds r3, r7, r4 + 80012ec: 2202 movs r2, #2 + 80012ee: 601a str r2, [r3, #0] PeriphClkInit.Usart2ClockSelection = RCC_USART2CLKSOURCE_PCLK1; - 80011b0: 193b adds r3, r7, r4 - 80011b2: 2200 movs r2, #0 - 80011b4: 609a str r2, [r3, #8] + 80012f0: 193b adds r3, r7, r4 + 80012f2: 2200 movs r2, #0 + 80012f4: 609a str r2, [r3, #8] if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) - 80011b6: 193b adds r3, r7, r4 - 80011b8: 0018 movs r0, r3 - 80011ba: f002 fee7 bl 8003f8c - 80011be: 1e03 subs r3, r0, #0 - 80011c0: d001 beq.n 80011c6 + 80012f6: 193b adds r3, r7, r4 + 80012f8: 0018 movs r0, r3 + 80012fa: f002 f971 bl 80035e0 + 80012fe: 1e03 subs r3, r0, #0 + 8001300: d001 beq.n 8001306 { Error_Handler(); - 80011c2: f7ff fef7 bl 8000fb4 + 8001302: f7ff fef7 bl 80010f4 } /* Peripheral clock enable */ __HAL_RCC_USART2_CLK_ENABLE(); - 80011c6: 4b1b ldr r3, [pc, #108] @ (8001234 ) - 80011c8: 6bda ldr r2, [r3, #60] @ 0x3c - 80011ca: 4b1a ldr r3, [pc, #104] @ (8001234 ) - 80011cc: 2180 movs r1, #128 @ 0x80 - 80011ce: 0289 lsls r1, r1, #10 - 80011d0: 430a orrs r2, r1 - 80011d2: 63da str r2, [r3, #60] @ 0x3c - 80011d4: 4b17 ldr r3, [pc, #92] @ (8001234 ) - 80011d6: 6bda ldr r2, [r3, #60] @ 0x3c - 80011d8: 2380 movs r3, #128 @ 0x80 - 80011da: 029b lsls r3, r3, #10 - 80011dc: 4013 ands r3, r2 - 80011de: 60fb str r3, [r7, #12] - 80011e0: 68fb ldr r3, [r7, #12] + 8001306: 4b1b ldr r3, [pc, #108] @ (8001374 ) + 8001308: 6bda ldr r2, [r3, #60] @ 0x3c + 800130a: 4b1a ldr r3, [pc, #104] @ (8001374 ) + 800130c: 2180 movs r1, #128 @ 0x80 + 800130e: 0289 lsls r1, r1, #10 + 8001310: 430a orrs r2, r1 + 8001312: 63da str r2, [r3, #60] @ 0x3c + 8001314: 4b17 ldr r3, [pc, #92] @ (8001374 ) + 8001316: 6bda ldr r2, [r3, #60] @ 0x3c + 8001318: 2380 movs r3, #128 @ 0x80 + 800131a: 029b lsls r3, r3, #10 + 800131c: 4013 ands r3, r2 + 800131e: 60fb str r3, [r7, #12] + 8001320: 68fb ldr r3, [r7, #12] __HAL_RCC_GPIOA_CLK_ENABLE(); - 80011e2: 4b14 ldr r3, [pc, #80] @ (8001234 ) - 80011e4: 6b5a ldr r2, [r3, #52] @ 0x34 - 80011e6: 4b13 ldr r3, [pc, #76] @ (8001234 ) - 80011e8: 2101 movs r1, #1 - 80011ea: 430a orrs r2, r1 - 80011ec: 635a str r2, [r3, #52] @ 0x34 - 80011ee: 4b11 ldr r3, [pc, #68] @ (8001234 ) - 80011f0: 6b5b ldr r3, [r3, #52] @ 0x34 - 80011f2: 2201 movs r2, #1 - 80011f4: 4013 ands r3, r2 - 80011f6: 60bb str r3, [r7, #8] - 80011f8: 68bb ldr r3, [r7, #8] + 8001322: 4b14 ldr r3, [pc, #80] @ (8001374 ) + 8001324: 6b5a ldr r2, [r3, #52] @ 0x34 + 8001326: 4b13 ldr r3, [pc, #76] @ (8001374 ) + 8001328: 2101 movs r1, #1 + 800132a: 430a orrs r2, r1 + 800132c: 635a str r2, [r3, #52] @ 0x34 + 800132e: 4b11 ldr r3, [pc, #68] @ (8001374 ) + 8001330: 6b5b ldr r3, [r3, #52] @ 0x34 + 8001332: 2201 movs r2, #1 + 8001334: 4013 ands r3, r2 + 8001336: 60bb str r3, [r7, #8] + 8001338: 68bb ldr r3, [r7, #8] /**USART2 GPIO Configuration PA2 ------> USART2_TX PA3 ------> USART2_RX */ GPIO_InitStruct.Pin = GPIO_PIN_2|GPIO_PIN_3; - 80011fa: 212c movs r1, #44 @ 0x2c - 80011fc: 187b adds r3, r7, r1 - 80011fe: 220c movs r2, #12 - 8001200: 601a str r2, [r3, #0] + 800133a: 212c movs r1, #44 @ 0x2c + 800133c: 187b adds r3, r7, r1 + 800133e: 220c movs r2, #12 + 8001340: 601a str r2, [r3, #0] GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 8001202: 187b adds r3, r7, r1 - 8001204: 2202 movs r2, #2 - 8001206: 605a str r2, [r3, #4] + 8001342: 187b adds r3, r7, r1 + 8001344: 2202 movs r2, #2 + 8001346: 605a str r2, [r3, #4] GPIO_InitStruct.Pull = GPIO_NOPULL; - 8001208: 187b adds r3, r7, r1 - 800120a: 2200 movs r2, #0 - 800120c: 609a str r2, [r3, #8] + 8001348: 187b adds r3, r7, r1 + 800134a: 2200 movs r2, #0 + 800134c: 609a str r2, [r3, #8] GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 800120e: 187b adds r3, r7, r1 - 8001210: 2200 movs r2, #0 - 8001212: 60da str r2, [r3, #12] + 800134e: 187b adds r3, r7, r1 + 8001350: 2200 movs r2, #0 + 8001352: 60da str r2, [r3, #12] GPIO_InitStruct.Alternate = GPIO_AF1_USART2; - 8001214: 187b adds r3, r7, r1 - 8001216: 2201 movs r2, #1 - 8001218: 611a str r2, [r3, #16] + 8001354: 187b adds r3, r7, r1 + 8001356: 2201 movs r2, #1 + 8001358: 611a str r2, [r3, #16] HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - 800121a: 187a adds r2, r7, r1 - 800121c: 23a0 movs r3, #160 @ 0xa0 - 800121e: 05db lsls r3, r3, #23 - 8001220: 0011 movs r1, r2 - 8001222: 0018 movs r0, r3 - 8001224: f000 fb1a bl 800185c + 800135a: 187a adds r2, r7, r1 + 800135c: 23a0 movs r3, #160 @ 0xa0 + 800135e: 05db lsls r3, r3, #23 + 8001360: 0011 movs r1, r2 + 8001362: 0018 movs r0, r3 + 8001364: f000 fb1a bl 800199c /* USER CODE BEGIN USART2_MspInit 1 */ /* USER CODE END USART2_MspInit 1 */ } } - 8001228: 46c0 nop @ (mov r8, r8) - 800122a: 46bd mov sp, r7 - 800122c: b011 add sp, #68 @ 0x44 - 800122e: bd90 pop {r4, r7, pc} - 8001230: 40004400 .word 0x40004400 - 8001234: 40021000 .word 0x40021000 + 8001368: 46c0 nop @ (mov r8, r8) + 800136a: 46bd mov sp, r7 + 800136c: b011 add sp, #68 @ 0x44 + 800136e: bd90 pop {r4, r7, pc} + 8001370: 40004400 .word 0x40004400 + 8001374: 40021000 .word 0x40021000 -08001238 : +08001378 : /******************************************************************************/ /** * @brief This function handles Non maskable interrupt. */ void NMI_Handler(void) { - 8001238: b580 push {r7, lr} - 800123a: af00 add r7, sp, #0 + 8001378: b580 push {r7, lr} + 800137a: af00 add r7, sp, #0 /* USER CODE BEGIN NonMaskableInt_IRQn 0 */ /* USER CODE END NonMaskableInt_IRQn 0 */ /* USER CODE BEGIN NonMaskableInt_IRQn 1 */ while (1) - 800123c: 46c0 nop @ (mov r8, r8) - 800123e: e7fd b.n 800123c + 800137c: 46c0 nop @ (mov r8, r8) + 800137e: e7fd b.n 800137c -08001240 : +08001380 : /** * @brief This function handles Hard fault interrupt. */ void HardFault_Handler(void) { - 8001240: b580 push {r7, lr} - 8001242: af00 add r7, sp, #0 + 8001380: b580 push {r7, lr} + 8001382: af00 add r7, sp, #0 /* USER CODE BEGIN HardFault_IRQn 0 */ /* USER CODE END HardFault_IRQn 0 */ while (1) - 8001244: 46c0 nop @ (mov r8, r8) - 8001246: e7fd b.n 8001244 + 8001384: 46c0 nop @ (mov r8, r8) + 8001386: e7fd b.n 8001384 -08001248 : +08001388 : /** * @brief This function handles System service call via SWI instruction. */ void SVC_Handler(void) { - 8001248: b580 push {r7, lr} - 800124a: af00 add r7, sp, #0 + 8001388: b580 push {r7, lr} + 800138a: af00 add r7, sp, #0 /* USER CODE END SVC_IRQn 0 */ /* USER CODE BEGIN SVC_IRQn 1 */ /* USER CODE END SVC_IRQn 1 */ } - 800124c: 46c0 nop @ (mov r8, r8) - 800124e: 46bd mov sp, r7 - 8001250: bd80 pop {r7, pc} + 800138c: 46c0 nop @ (mov r8, r8) + 800138e: 46bd mov sp, r7 + 8001390: bd80 pop {r7, pc} -08001252 : +08001392 : /** * @brief This function handles Pendable request for system service. */ void PendSV_Handler(void) { - 8001252: b580 push {r7, lr} - 8001254: af00 add r7, sp, #0 + 8001392: b580 push {r7, lr} + 8001394: af00 add r7, sp, #0 /* USER CODE END PendSV_IRQn 0 */ /* USER CODE BEGIN PendSV_IRQn 1 */ /* USER CODE END PendSV_IRQn 1 */ } - 8001256: 46c0 nop @ (mov r8, r8) - 8001258: 46bd mov sp, r7 - 800125a: bd80 pop {r7, pc} + 8001396: 46c0 nop @ (mov r8, r8) + 8001398: 46bd mov sp, r7 + 800139a: bd80 pop {r7, pc} -0800125c : +0800139c : /** * @brief This function handles System tick timer. */ void SysTick_Handler(void) { - 800125c: b580 push {r7, lr} - 800125e: af00 add r7, sp, #0 + 800139c: b580 push {r7, lr} + 800139e: af00 add r7, sp, #0 /* USER CODE BEGIN SysTick_IRQn 0 */ /* USER CODE END SysTick_IRQn 0 */ HAL_IncTick(); - 8001260: f000 f952 bl 8001508 + 80013a0: f000 f952 bl 8001648 /* USER CODE BEGIN SysTick_IRQn 1 */ /* USER CODE END SysTick_IRQn 1 */ } - 8001264: 46c0 nop @ (mov r8, r8) - 8001266: 46bd mov sp, r7 - 8001268: bd80 pop {r7, pc} + 80013a4: 46c0 nop @ (mov r8, r8) + 80013a6: 46bd mov sp, r7 + 80013a8: bd80 pop {r7, pc} ... -0800126c : +080013ac : /** * @brief This function handles I2C1 event global interrupt / I2C1 wake-up interrupt through EXTI line 23. */ void I2C1_IRQHandler(void) { - 800126c: b580 push {r7, lr} - 800126e: af00 add r7, sp, #0 + 80013ac: b580 push {r7, lr} + 80013ae: af00 add r7, sp, #0 /* USER CODE BEGIN I2C1_IRQn 0 */ /* USER CODE END I2C1_IRQn 0 */ if (hi2c1.Instance->ISR & (I2C_FLAG_BERR | I2C_FLAG_ARLO | I2C_FLAG_OVR)) { - 8001270: 4b09 ldr r3, [pc, #36] @ (8001298 ) - 8001272: 681b ldr r3, [r3, #0] - 8001274: 699a ldr r2, [r3, #24] - 8001276: 23e0 movs r3, #224 @ 0xe0 - 8001278: 00db lsls r3, r3, #3 - 800127a: 4013 ands r3, r2 - 800127c: d004 beq.n 8001288 + 80013b0: 4b09 ldr r3, [pc, #36] @ (80013d8 ) + 80013b2: 681b ldr r3, [r3, #0] + 80013b4: 699a ldr r2, [r3, #24] + 80013b6: 23e0 movs r3, #224 @ 0xe0 + 80013b8: 00db lsls r3, r3, #3 + 80013ba: 4013 ands r3, r2 + 80013bc: d004 beq.n 80013c8 HAL_I2C_ER_IRQHandler(&hi2c1); - 800127e: 4b06 ldr r3, [pc, #24] @ (8001298 ) - 8001280: 0018 movs r0, r3 - 8001282: f000 fd9f bl 8001dc4 + 80013be: 4b06 ldr r3, [pc, #24] @ (80013d8 ) + 80013c0: 0018 movs r0, r3 + 80013c2: f000 fd2d bl 8001e20 HAL_I2C_EV_IRQHandler(&hi2c1); } /* USER CODE BEGIN I2C1_IRQn 1 */ /* USER CODE END I2C1_IRQn 1 */ } - 8001286: e003 b.n 8001290 + 80013c6: e003 b.n 80013d0 HAL_I2C_EV_IRQHandler(&hi2c1); - 8001288: 4b03 ldr r3, [pc, #12] @ (8001298 ) - 800128a: 0018 movs r0, r3 - 800128c: f000 fd80 bl 8001d90 + 80013c8: 4b03 ldr r3, [pc, #12] @ (80013d8 ) + 80013ca: 0018 movs r0, r3 + 80013cc: f000 fd0e bl 8001dec } - 8001290: 46c0 nop @ (mov r8, r8) - 8001292: 46bd mov sp, r7 - 8001294: bd80 pop {r7, pc} - 8001296: 46c0 nop @ (mov r8, r8) - 8001298: 20000084 .word 0x20000084 + 80013d0: 46c0 nop @ (mov r8, r8) + 80013d2: 46bd mov sp, r7 + 80013d4: bd80 pop {r7, pc} + 80013d6: 46c0 nop @ (mov r8, r8) + 80013d8: 20000084 .word 0x20000084 -0800129c <_read>: +080013dc <_read>: _kill(status, -1); while (1) {} /* Make sure we hang here */ } __attribute__((weak)) int _read(int file, char *ptr, int len) { - 800129c: b580 push {r7, lr} - 800129e: b086 sub sp, #24 - 80012a0: af00 add r7, sp, #0 - 80012a2: 60f8 str r0, [r7, #12] - 80012a4: 60b9 str r1, [r7, #8] - 80012a6: 607a str r2, [r7, #4] + 80013dc: b580 push {r7, lr} + 80013de: b086 sub sp, #24 + 80013e0: af00 add r7, sp, #0 + 80013e2: 60f8 str r0, [r7, #12] + 80013e4: 60b9 str r1, [r7, #8] + 80013e6: 607a str r2, [r7, #4] (void)file; int DataIdx; for (DataIdx = 0; DataIdx < len; DataIdx++) - 80012a8: 2300 movs r3, #0 - 80012aa: 617b str r3, [r7, #20] - 80012ac: e00a b.n 80012c4 <_read+0x28> + 80013e8: 2300 movs r3, #0 + 80013ea: 617b str r3, [r7, #20] + 80013ec: e00a b.n 8001404 <_read+0x28> { *ptr++ = __io_getchar(); - 80012ae: e000 b.n 80012b2 <_read+0x16> - 80012b0: bf00 nop - 80012b2: 0001 movs r1, r0 - 80012b4: 68bb ldr r3, [r7, #8] - 80012b6: 1c5a adds r2, r3, #1 - 80012b8: 60ba str r2, [r7, #8] - 80012ba: b2ca uxtb r2, r1 - 80012bc: 701a strb r2, [r3, #0] + 80013ee: e000 b.n 80013f2 <_read+0x16> + 80013f0: bf00 nop + 80013f2: 0001 movs r1, r0 + 80013f4: 68bb ldr r3, [r7, #8] + 80013f6: 1c5a adds r2, r3, #1 + 80013f8: 60ba str r2, [r7, #8] + 80013fa: b2ca uxtb r2, r1 + 80013fc: 701a strb r2, [r3, #0] for (DataIdx = 0; DataIdx < len; DataIdx++) - 80012be: 697b ldr r3, [r7, #20] - 80012c0: 3301 adds r3, #1 - 80012c2: 617b str r3, [r7, #20] - 80012c4: 697a ldr r2, [r7, #20] - 80012c6: 687b ldr r3, [r7, #4] - 80012c8: 429a cmp r2, r3 - 80012ca: dbf0 blt.n 80012ae <_read+0x12> + 80013fe: 697b ldr r3, [r7, #20] + 8001400: 3301 adds r3, #1 + 8001402: 617b str r3, [r7, #20] + 8001404: 697a ldr r2, [r7, #20] + 8001406: 687b ldr r3, [r7, #4] + 8001408: 429a cmp r2, r3 + 800140a: dbf0 blt.n 80013ee <_read+0x12> } return len; - 80012cc: 687b ldr r3, [r7, #4] + 800140c: 687b ldr r3, [r7, #4] } - 80012ce: 0018 movs r0, r3 - 80012d0: 46bd mov sp, r7 - 80012d2: b006 add sp, #24 - 80012d4: bd80 pop {r7, pc} + 800140e: 0018 movs r0, r3 + 8001410: 46bd mov sp, r7 + 8001412: b006 add sp, #24 + 8001414: bd80 pop {r7, pc} -080012d6 <_write>: +08001416 <_write>: __attribute__((weak)) int _write(int file, char *ptr, int len) { - 80012d6: b580 push {r7, lr} - 80012d8: b086 sub sp, #24 - 80012da: af00 add r7, sp, #0 - 80012dc: 60f8 str r0, [r7, #12] - 80012de: 60b9 str r1, [r7, #8] - 80012e0: 607a str r2, [r7, #4] + 8001416: b580 push {r7, lr} + 8001418: b086 sub sp, #24 + 800141a: af00 add r7, sp, #0 + 800141c: 60f8 str r0, [r7, #12] + 800141e: 60b9 str r1, [r7, #8] + 8001420: 607a str r2, [r7, #4] (void)file; int DataIdx; for (DataIdx = 0; DataIdx < len; DataIdx++) - 80012e2: 2300 movs r3, #0 - 80012e4: 617b str r3, [r7, #20] - 80012e6: e009 b.n 80012fc <_write+0x26> + 8001422: 2300 movs r3, #0 + 8001424: 617b str r3, [r7, #20] + 8001426: e009 b.n 800143c <_write+0x26> { __io_putchar(*ptr++); - 80012e8: 68bb ldr r3, [r7, #8] - 80012ea: 1c5a adds r2, r3, #1 - 80012ec: 60ba str r2, [r7, #8] - 80012ee: 781b ldrb r3, [r3, #0] - 80012f0: 0018 movs r0, r3 - 80012f2: f7ff fb2f bl 8000954 <__io_putchar> + 8001428: 68bb ldr r3, [r7, #8] + 800142a: 1c5a adds r2, r3, #1 + 800142c: 60ba str r2, [r7, #8] + 800142e: 781b ldrb r3, [r3, #0] + 8001430: 0018 movs r0, r3 + 8001432: f7ff fdfb bl 800102c <__io_putchar> for (DataIdx = 0; DataIdx < len; DataIdx++) - 80012f6: 697b ldr r3, [r7, #20] - 80012f8: 3301 adds r3, #1 - 80012fa: 617b str r3, [r7, #20] - 80012fc: 697a ldr r2, [r7, #20] - 80012fe: 687b ldr r3, [r7, #4] - 8001300: 429a cmp r2, r3 - 8001302: dbf1 blt.n 80012e8 <_write+0x12> + 8001436: 697b ldr r3, [r7, #20] + 8001438: 3301 adds r3, #1 + 800143a: 617b str r3, [r7, #20] + 800143c: 697a ldr r2, [r7, #20] + 800143e: 687b ldr r3, [r7, #4] + 8001440: 429a cmp r2, r3 + 8001442: dbf1 blt.n 8001428 <_write+0x12> } return len; - 8001304: 687b ldr r3, [r7, #4] + 8001444: 687b ldr r3, [r7, #4] } - 8001306: 0018 movs r0, r3 - 8001308: 46bd mov sp, r7 - 800130a: b006 add sp, #24 - 800130c: bd80 pop {r7, pc} + 8001446: 0018 movs r0, r3 + 8001448: 46bd mov sp, r7 + 800144a: b006 add sp, #24 + 800144c: bd80 pop {r7, pc} -0800130e <_close>: +0800144e <_close>: int _close(int file) { - 800130e: b580 push {r7, lr} - 8001310: b082 sub sp, #8 - 8001312: af00 add r7, sp, #0 - 8001314: 6078 str r0, [r7, #4] + 800144e: b580 push {r7, lr} + 8001450: b082 sub sp, #8 + 8001452: af00 add r7, sp, #0 + 8001454: 6078 str r0, [r7, #4] (void)file; return -1; - 8001316: 2301 movs r3, #1 - 8001318: 425b negs r3, r3 + 8001456: 2301 movs r3, #1 + 8001458: 425b negs r3, r3 } - 800131a: 0018 movs r0, r3 - 800131c: 46bd mov sp, r7 - 800131e: b002 add sp, #8 - 8001320: bd80 pop {r7, pc} + 800145a: 0018 movs r0, r3 + 800145c: 46bd mov sp, r7 + 800145e: b002 add sp, #8 + 8001460: bd80 pop {r7, pc} -08001322 <_fstat>: +08001462 <_fstat>: int _fstat(int file, struct stat *st) { - 8001322: b580 push {r7, lr} - 8001324: b082 sub sp, #8 - 8001326: af00 add r7, sp, #0 - 8001328: 6078 str r0, [r7, #4] - 800132a: 6039 str r1, [r7, #0] + 8001462: b580 push {r7, lr} + 8001464: b082 sub sp, #8 + 8001466: af00 add r7, sp, #0 + 8001468: 6078 str r0, [r7, #4] + 800146a: 6039 str r1, [r7, #0] (void)file; st->st_mode = S_IFCHR; - 800132c: 683b ldr r3, [r7, #0] - 800132e: 2280 movs r2, #128 @ 0x80 - 8001330: 0192 lsls r2, r2, #6 - 8001332: 605a str r2, [r3, #4] + 800146c: 683b ldr r3, [r7, #0] + 800146e: 2280 movs r2, #128 @ 0x80 + 8001470: 0192 lsls r2, r2, #6 + 8001472: 605a str r2, [r3, #4] return 0; - 8001334: 2300 movs r3, #0 + 8001474: 2300 movs r3, #0 } - 8001336: 0018 movs r0, r3 - 8001338: 46bd mov sp, r7 - 800133a: b002 add sp, #8 - 800133c: bd80 pop {r7, pc} + 8001476: 0018 movs r0, r3 + 8001478: 46bd mov sp, r7 + 800147a: b002 add sp, #8 + 800147c: bd80 pop {r7, pc} -0800133e <_isatty>: +0800147e <_isatty>: int _isatty(int file) { - 800133e: b580 push {r7, lr} - 8001340: b082 sub sp, #8 - 8001342: af00 add r7, sp, #0 - 8001344: 6078 str r0, [r7, #4] + 800147e: b580 push {r7, lr} + 8001480: b082 sub sp, #8 + 8001482: af00 add r7, sp, #0 + 8001484: 6078 str r0, [r7, #4] (void)file; return 1; - 8001346: 2301 movs r3, #1 + 8001486: 2301 movs r3, #1 } - 8001348: 0018 movs r0, r3 - 800134a: 46bd mov sp, r7 - 800134c: b002 add sp, #8 - 800134e: bd80 pop {r7, pc} + 8001488: 0018 movs r0, r3 + 800148a: 46bd mov sp, r7 + 800148c: b002 add sp, #8 + 800148e: bd80 pop {r7, pc} -08001350 <_lseek>: +08001490 <_lseek>: int _lseek(int file, int ptr, int dir) { - 8001350: b580 push {r7, lr} - 8001352: b084 sub sp, #16 - 8001354: af00 add r7, sp, #0 - 8001356: 60f8 str r0, [r7, #12] - 8001358: 60b9 str r1, [r7, #8] - 800135a: 607a str r2, [r7, #4] + 8001490: b580 push {r7, lr} + 8001492: b084 sub sp, #16 + 8001494: af00 add r7, sp, #0 + 8001496: 60f8 str r0, [r7, #12] + 8001498: 60b9 str r1, [r7, #8] + 800149a: 607a str r2, [r7, #4] (void)file; (void)ptr; (void)dir; return 0; - 800135c: 2300 movs r3, #0 + 800149c: 2300 movs r3, #0 } - 800135e: 0018 movs r0, r3 - 8001360: 46bd mov sp, r7 - 8001362: b004 add sp, #16 - 8001364: bd80 pop {r7, pc} + 800149e: 0018 movs r0, r3 + 80014a0: 46bd mov sp, r7 + 80014a2: b004 add sp, #16 + 80014a4: bd80 pop {r7, pc} ... -08001368 <_sbrk>: +080014a8 <_sbrk>: * * @param incr Memory size * @return Pointer to allocated memory */ void *_sbrk(ptrdiff_t incr) { - 8001368: b580 push {r7, lr} - 800136a: b086 sub sp, #24 - 800136c: af00 add r7, sp, #0 - 800136e: 6078 str r0, [r7, #4] + 80014a8: b580 push {r7, lr} + 80014aa: b086 sub sp, #24 + 80014ac: af00 add r7, sp, #0 + 80014ae: 6078 str r0, [r7, #4] extern uint8_t _end; /* Symbol defined in the linker script */ extern uint8_t _estack; /* Symbol defined in the linker script */ extern uint32_t _Min_Stack_Size; /* Symbol defined in the linker script */ const uint32_t stack_limit = (uint32_t)&_estack - (uint32_t)&_Min_Stack_Size; - 8001370: 4a14 ldr r2, [pc, #80] @ (80013c4 <_sbrk+0x5c>) - 8001372: 4b15 ldr r3, [pc, #84] @ (80013c8 <_sbrk+0x60>) - 8001374: 1ad3 subs r3, r2, r3 - 8001376: 617b str r3, [r7, #20] + 80014b0: 4a14 ldr r2, [pc, #80] @ (8001504 <_sbrk+0x5c>) + 80014b2: 4b15 ldr r3, [pc, #84] @ (8001508 <_sbrk+0x60>) + 80014b4: 1ad3 subs r3, r2, r3 + 80014b6: 617b str r3, [r7, #20] const uint8_t *max_heap = (uint8_t *)stack_limit; - 8001378: 697b ldr r3, [r7, #20] - 800137a: 613b str r3, [r7, #16] + 80014b8: 697b ldr r3, [r7, #20] + 80014ba: 613b str r3, [r7, #16] uint8_t *prev_heap_end; /* Initialize heap end at first call */ if (NULL == __sbrk_heap_end) - 800137c: 4b13 ldr r3, [pc, #76] @ (80013cc <_sbrk+0x64>) - 800137e: 681b ldr r3, [r3, #0] - 8001380: 2b00 cmp r3, #0 - 8001382: d102 bne.n 800138a <_sbrk+0x22> + 80014bc: 4b13 ldr r3, [pc, #76] @ (800150c <_sbrk+0x64>) + 80014be: 681b ldr r3, [r3, #0] + 80014c0: 2b00 cmp r3, #0 + 80014c2: d102 bne.n 80014ca <_sbrk+0x22> { __sbrk_heap_end = &_end; - 8001384: 4b11 ldr r3, [pc, #68] @ (80013cc <_sbrk+0x64>) - 8001386: 4a12 ldr r2, [pc, #72] @ (80013d0 <_sbrk+0x68>) - 8001388: 601a str r2, [r3, #0] + 80014c4: 4b11 ldr r3, [pc, #68] @ (800150c <_sbrk+0x64>) + 80014c6: 4a12 ldr r2, [pc, #72] @ (8001510 <_sbrk+0x68>) + 80014c8: 601a str r2, [r3, #0] } /* Protect heap from growing into the reserved MSP stack */ if (__sbrk_heap_end + incr > max_heap) - 800138a: 4b10 ldr r3, [pc, #64] @ (80013cc <_sbrk+0x64>) - 800138c: 681a ldr r2, [r3, #0] - 800138e: 687b ldr r3, [r7, #4] - 8001390: 18d3 adds r3, r2, r3 - 8001392: 693a ldr r2, [r7, #16] - 8001394: 429a cmp r2, r3 - 8001396: d207 bcs.n 80013a8 <_sbrk+0x40> + 80014ca: 4b10 ldr r3, [pc, #64] @ (800150c <_sbrk+0x64>) + 80014cc: 681a ldr r2, [r3, #0] + 80014ce: 687b ldr r3, [r7, #4] + 80014d0: 18d3 adds r3, r2, r3 + 80014d2: 693a ldr r2, [r7, #16] + 80014d4: 429a cmp r2, r3 + 80014d6: d207 bcs.n 80014e8 <_sbrk+0x40> { errno = ENOMEM; - 8001398: f004 f846 bl 8005428 <__errno> - 800139c: 0003 movs r3, r0 - 800139e: 220c movs r2, #12 - 80013a0: 601a str r2, [r3, #0] + 80014d8: f004 f938 bl 800574c <__errno> + 80014dc: 0003 movs r3, r0 + 80014de: 220c movs r2, #12 + 80014e0: 601a str r2, [r3, #0] return (void *)-1; - 80013a2: 2301 movs r3, #1 - 80013a4: 425b negs r3, r3 - 80013a6: e009 b.n 80013bc <_sbrk+0x54> + 80014e2: 2301 movs r3, #1 + 80014e4: 425b negs r3, r3 + 80014e6: e009 b.n 80014fc <_sbrk+0x54> } prev_heap_end = __sbrk_heap_end; - 80013a8: 4b08 ldr r3, [pc, #32] @ (80013cc <_sbrk+0x64>) - 80013aa: 681b ldr r3, [r3, #0] - 80013ac: 60fb str r3, [r7, #12] + 80014e8: 4b08 ldr r3, [pc, #32] @ (800150c <_sbrk+0x64>) + 80014ea: 681b ldr r3, [r3, #0] + 80014ec: 60fb str r3, [r7, #12] __sbrk_heap_end += incr; - 80013ae: 4b07 ldr r3, [pc, #28] @ (80013cc <_sbrk+0x64>) - 80013b0: 681a ldr r2, [r3, #0] - 80013b2: 687b ldr r3, [r7, #4] - 80013b4: 18d2 adds r2, r2, r3 - 80013b6: 4b05 ldr r3, [pc, #20] @ (80013cc <_sbrk+0x64>) - 80013b8: 601a str r2, [r3, #0] + 80014ee: 4b07 ldr r3, [pc, #28] @ (800150c <_sbrk+0x64>) + 80014f0: 681a ldr r2, [r3, #0] + 80014f2: 687b ldr r3, [r7, #4] + 80014f4: 18d2 adds r2, r2, r3 + 80014f6: 4b05 ldr r3, [pc, #20] @ (800150c <_sbrk+0x64>) + 80014f8: 601a str r2, [r3, #0] return (void *)prev_heap_end; - 80013ba: 68fb ldr r3, [r7, #12] + 80014fa: 68fb ldr r3, [r7, #12] } - 80013bc: 0018 movs r0, r3 - 80013be: 46bd mov sp, r7 - 80013c0: b006 add sp, #24 - 80013c2: bd80 pop {r7, pc} - 80013c4: 20009000 .word 0x20009000 - 80013c8: 00000400 .word 0x00000400 - 80013cc: 200001e4 .word 0x200001e4 - 80013d0: 20000338 .word 0x20000338 + 80014fc: 0018 movs r0, r3 + 80014fe: 46bd mov sp, r7 + 8001500: b006 add sp, #24 + 8001502: bd80 pop {r7, pc} + 8001504: 20009000 .word 0x20009000 + 8001508: 00000400 .word 0x00000400 + 800150c: 200001d4 .word 0x200001d4 + 8001510: 20000328 .word 0x20000328 -080013d4 : +08001514 : * @brief Setup the microcontroller system. * @param None * @retval None */ void SystemInit(void) { - 80013d4: b580 push {r7, lr} - 80013d6: af00 add r7, sp, #0 + 8001514: b580 push {r7, lr} + 8001516: af00 add r7, sp, #0 /* Configure the Vector Table location -------------------------------------*/ #if defined(USER_VECT_TAB_ADDRESS) SCB->VTOR = VECT_TAB_BASE_ADDRESS | VECT_TAB_OFFSET; /* Vector Table Relocation */ #endif /* USER_VECT_TAB_ADDRESS */ } - 80013d8: 46c0 nop @ (mov r8, r8) - 80013da: 46bd mov sp, r7 - 80013dc: bd80 pop {r7, pc} + 8001518: 46c0 nop @ (mov r8, r8) + 800151a: 46bd mov sp, r7 + 800151c: bd80 pop {r7, pc} ... -080013e0 : +08001520 : .section .text.Reset_Handler .weak Reset_Handler .type Reset_Handler, %function Reset_Handler: ldr r0, =_estack - 80013e0: 480d ldr r0, [pc, #52] @ (8001418 ) + 8001520: 480d ldr r0, [pc, #52] @ (8001558 ) mov sp, r0 /* set stack pointer */ - 80013e2: 4685 mov sp, r0 + 8001522: 4685 mov sp, r0 /* Call the clock system initialization function.*/ bl SystemInit - 80013e4: f7ff fff6 bl 80013d4 + 8001524: f7ff fff6 bl 8001514 /* Copy the data segment initializers from flash to SRAM */ ldr r0, =_sdata - 80013e8: 480c ldr r0, [pc, #48] @ (800141c ) + 8001528: 480c ldr r0, [pc, #48] @ (800155c ) ldr r1, =_edata - 80013ea: 490d ldr r1, [pc, #52] @ (8001420 ) + 800152a: 490d ldr r1, [pc, #52] @ (8001560 ) ldr r2, =_sidata - 80013ec: 4a0d ldr r2, [pc, #52] @ (8001424 ) + 800152c: 4a0d ldr r2, [pc, #52] @ (8001564 ) movs r3, #0 - 80013ee: 2300 movs r3, #0 + 800152e: 2300 movs r3, #0 b LoopCopyDataInit - 80013f0: e002 b.n 80013f8 + 8001530: e002 b.n 8001538 -080013f2 : +08001532 : CopyDataInit: ldr r4, [r2, r3] - 80013f2: 58d4 ldr r4, [r2, r3] + 8001532: 58d4 ldr r4, [r2, r3] str r4, [r0, r3] - 80013f4: 50c4 str r4, [r0, r3] + 8001534: 50c4 str r4, [r0, r3] adds r3, r3, #4 - 80013f6: 3304 adds r3, #4 + 8001536: 3304 adds r3, #4 -080013f8 : +08001538 : LoopCopyDataInit: adds r4, r0, r3 - 80013f8: 18c4 adds r4, r0, r3 + 8001538: 18c4 adds r4, r0, r3 cmp r4, r1 - 80013fa: 428c cmp r4, r1 + 800153a: 428c cmp r4, r1 bcc CopyDataInit - 80013fc: d3f9 bcc.n 80013f2 + 800153c: d3f9 bcc.n 8001532 /* Zero fill the bss segment. */ ldr r2, =_sbss - 80013fe: 4a0a ldr r2, [pc, #40] @ (8001428 ) + 800153e: 4a0a ldr r2, [pc, #40] @ (8001568 ) ldr r4, =_ebss - 8001400: 4c0a ldr r4, [pc, #40] @ (800142c ) + 8001540: 4c0a ldr r4, [pc, #40] @ (800156c ) movs r3, #0 - 8001402: 2300 movs r3, #0 + 8001542: 2300 movs r3, #0 b LoopFillZerobss - 8001404: e001 b.n 800140a + 8001544: e001 b.n 800154a -08001406 : +08001546 : FillZerobss: str r3, [r2] - 8001406: 6013 str r3, [r2, #0] + 8001546: 6013 str r3, [r2, #0] adds r2, r2, #4 - 8001408: 3204 adds r2, #4 + 8001548: 3204 adds r2, #4 -0800140a : +0800154a : LoopFillZerobss: cmp r2, r4 - 800140a: 42a2 cmp r2, r4 + 800154a: 42a2 cmp r2, r4 bcc FillZerobss - 800140c: d3fb bcc.n 8001406 + 800154c: d3fb bcc.n 8001546 /* Call static constructors */ bl __libc_init_array - 800140e: f004 f811 bl 8005434 <__libc_init_array> + 800154e: f004 f903 bl 8005758 <__libc_init_array> /* Call the application s entry point.*/ bl main - 8001412: f7fe fff5 bl 8000400
+ 8001552: f7ff fad5 bl 8000b00
-08001416 : +08001556 : LoopForever: b LoopForever - 8001416: e7fe b.n 8001416 + 8001556: e7fe b.n 8001556 ldr r0, =_estack - 8001418: 20009000 .word 0x20009000 + 8001558: 20009000 .word 0x20009000 ldr r0, =_sdata - 800141c: 20000000 .word 0x20000000 + 800155c: 20000000 .word 0x20000000 ldr r1, =_edata - 8001420: 20000068 .word 0x20000068 + 8001560: 20000068 .word 0x20000068 ldr r2, =_sidata - 8001424: 08005fe4 .word 0x08005fe4 + 8001564: 08006304 .word 0x08006304 ldr r2, =_sbss - 8001428: 20000068 .word 0x20000068 + 8001568: 20000068 .word 0x20000068 ldr r4, =_ebss - 800142c: 20000338 .word 0x20000338 + 800156c: 20000328 .word 0x20000328 -08001430 : +08001570 : * @retval None */ .section .text.Default_Handler,"ax",%progbits Default_Handler: Infinite_Loop: b Infinite_Loop - 8001430: e7fe b.n 8001430 + 8001570: e7fe b.n 8001570 ... -08001434 : +08001574 : * each 1ms in the SysTick_Handler() interrupt handler. * * @retval HAL status */ HAL_StatusTypeDef HAL_Init(void) { - 8001434: b580 push {r7, lr} - 8001436: b082 sub sp, #8 - 8001438: af00 add r7, sp, #0 + 8001574: b580 push {r7, lr} + 8001576: b082 sub sp, #8 + 8001578: af00 add r7, sp, #0 HAL_StatusTypeDef status = HAL_OK; - 800143a: 1dfb adds r3, r7, #7 - 800143c: 2200 movs r2, #0 - 800143e: 701a strb r2, [r3, #0] + 800157a: 1dfb adds r3, r7, #7 + 800157c: 2200 movs r2, #0 + 800157e: 701a strb r2, [r3, #0] #if (INSTRUCTION_CACHE_ENABLE == 0U) __HAL_FLASH_INSTRUCTION_CACHE_DISABLE(); #endif /* INSTRUCTION_CACHE_ENABLE */ #if (PREFETCH_ENABLE != 0U) __HAL_FLASH_PREFETCH_BUFFER_ENABLE(); - 8001440: 4b0b ldr r3, [pc, #44] @ (8001470 ) - 8001442: 681a ldr r2, [r3, #0] - 8001444: 4b0a ldr r3, [pc, #40] @ (8001470 ) - 8001446: 2180 movs r1, #128 @ 0x80 - 8001448: 0049 lsls r1, r1, #1 - 800144a: 430a orrs r2, r1 - 800144c: 601a str r2, [r3, #0] + 8001580: 4b0b ldr r3, [pc, #44] @ (80015b0 ) + 8001582: 681a ldr r2, [r3, #0] + 8001584: 4b0a ldr r3, [pc, #40] @ (80015b0 ) + 8001586: 2180 movs r1, #128 @ 0x80 + 8001588: 0049 lsls r1, r1, #1 + 800158a: 430a orrs r2, r1 + 800158c: 601a str r2, [r3, #0] #endif /* PREFETCH_ENABLE */ /* Use SysTick as time base source and configure 1ms tick (default clock after Reset is HSI) */ if (HAL_InitTick(TICK_INT_PRIORITY) != HAL_OK) - 800144e: 2003 movs r0, #3 - 8001450: f000 f810 bl 8001474 - 8001454: 1e03 subs r3, r0, #0 - 8001456: d003 beq.n 8001460 + 800158e: 2003 movs r0, #3 + 8001590: f000 f810 bl 80015b4 + 8001594: 1e03 subs r3, r0, #0 + 8001596: d003 beq.n 80015a0 { status = HAL_ERROR; - 8001458: 1dfb adds r3, r7, #7 - 800145a: 2201 movs r2, #1 - 800145c: 701a strb r2, [r3, #0] - 800145e: e001 b.n 8001464 + 8001598: 1dfb adds r3, r7, #7 + 800159a: 2201 movs r2, #1 + 800159c: 701a strb r2, [r3, #0] + 800159e: e001 b.n 80015a4 } else { /* Init the low level hardware */ HAL_MspInit(); - 8001460: f7ff fdae bl 8000fc0 + 80015a0: f7ff fdae bl 8001100 } /* Return function status */ return status; - 8001464: 1dfb adds r3, r7, #7 - 8001466: 781b ldrb r3, [r3, #0] + 80015a4: 1dfb adds r3, r7, #7 + 80015a6: 781b ldrb r3, [r3, #0] } - 8001468: 0018 movs r0, r3 - 800146a: 46bd mov sp, r7 - 800146c: b002 add sp, #8 - 800146e: bd80 pop {r7, pc} - 8001470: 40022000 .word 0x40022000 + 80015a8: 0018 movs r0, r3 + 80015aa: 46bd mov sp, r7 + 80015ac: b002 add sp, #8 + 80015ae: bd80 pop {r7, pc} + 80015b0: 40022000 .word 0x40022000 -08001474 : +080015b4 : * implementation in user file. * @param TickPriority Tick interrupt priority. * @retval HAL status */ __weak HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority) { - 8001474: b590 push {r4, r7, lr} - 8001476: b085 sub sp, #20 - 8001478: af00 add r7, sp, #0 - 800147a: 6078 str r0, [r7, #4] + 80015b4: b590 push {r4, r7, lr} + 80015b6: b085 sub sp, #20 + 80015b8: af00 add r7, sp, #0 + 80015ba: 6078 str r0, [r7, #4] HAL_StatusTypeDef status = HAL_OK; - 800147c: 230f movs r3, #15 - 800147e: 18fb adds r3, r7, r3 - 8001480: 2200 movs r2, #0 - 8001482: 701a strb r2, [r3, #0] + 80015bc: 230f movs r3, #15 + 80015be: 18fb adds r3, r7, r3 + 80015c0: 2200 movs r2, #0 + 80015c2: 701a strb r2, [r3, #0] /* Check uwTickFreq for MisraC 2012 (even if uwTickFreq is a enum type that doesn't take the value zero)*/ if ((uint32_t)uwTickFreq != 0U) - 8001484: 4b1d ldr r3, [pc, #116] @ (80014fc ) - 8001486: 781b ldrb r3, [r3, #0] - 8001488: 2b00 cmp r3, #0 - 800148a: d02b beq.n 80014e4 + 80015c4: 4b1d ldr r3, [pc, #116] @ (800163c ) + 80015c6: 781b ldrb r3, [r3, #0] + 80015c8: 2b00 cmp r3, #0 + 80015ca: d02b beq.n 8001624 { /*Configure the SysTick to have interrupt in 1ms time basis*/ if (HAL_SYSTICK_Config(SystemCoreClock / (1000U /(uint32_t)uwTickFreq)) == 0U) - 800148c: 4b1c ldr r3, [pc, #112] @ (8001500 ) - 800148e: 681c ldr r4, [r3, #0] - 8001490: 4b1a ldr r3, [pc, #104] @ (80014fc ) - 8001492: 781b ldrb r3, [r3, #0] - 8001494: 0019 movs r1, r3 - 8001496: 23fa movs r3, #250 @ 0xfa - 8001498: 0098 lsls r0, r3, #2 - 800149a: f7fe fe3b bl 8000114 <__udivsi3> - 800149e: 0003 movs r3, r0 - 80014a0: 0019 movs r1, r3 - 80014a2: 0020 movs r0, r4 - 80014a4: f7fe fe36 bl 8000114 <__udivsi3> - 80014a8: 0003 movs r3, r0 - 80014aa: 0018 movs r0, r3 - 80014ac: f000 f953 bl 8001756 - 80014b0: 1e03 subs r3, r0, #0 - 80014b2: d112 bne.n 80014da + 80015cc: 4b1c ldr r3, [pc, #112] @ (8001640 ) + 80015ce: 681c ldr r4, [r3, #0] + 80015d0: 4b1a ldr r3, [pc, #104] @ (800163c ) + 80015d2: 781b ldrb r3, [r3, #0] + 80015d4: 0019 movs r1, r3 + 80015d6: 23fa movs r3, #250 @ 0xfa + 80015d8: 0098 lsls r0, r3, #2 + 80015da: f7fe fd9b bl 8000114 <__udivsi3> + 80015de: 0003 movs r3, r0 + 80015e0: 0019 movs r1, r3 + 80015e2: 0020 movs r0, r4 + 80015e4: f7fe fd96 bl 8000114 <__udivsi3> + 80015e8: 0003 movs r3, r0 + 80015ea: 0018 movs r0, r3 + 80015ec: f000 f953 bl 8001896 + 80015f0: 1e03 subs r3, r0, #0 + 80015f2: d112 bne.n 800161a { /* Configure the SysTick IRQ priority */ if (TickPriority < (1UL << __NVIC_PRIO_BITS)) - 80014b4: 687b ldr r3, [r7, #4] - 80014b6: 2b03 cmp r3, #3 - 80014b8: d80a bhi.n 80014d0 + 80015f4: 687b ldr r3, [r7, #4] + 80015f6: 2b03 cmp r3, #3 + 80015f8: d80a bhi.n 8001610 { HAL_NVIC_SetPriority(SysTick_IRQn, TickPriority, 0U); - 80014ba: 6879 ldr r1, [r7, #4] - 80014bc: 2301 movs r3, #1 - 80014be: 425b negs r3, r3 - 80014c0: 2200 movs r2, #0 - 80014c2: 0018 movs r0, r3 - 80014c4: f000 f922 bl 800170c + 80015fa: 6879 ldr r1, [r7, #4] + 80015fc: 2301 movs r3, #1 + 80015fe: 425b negs r3, r3 + 8001600: 2200 movs r2, #0 + 8001602: 0018 movs r0, r3 + 8001604: f000 f922 bl 800184c uwTickPrio = TickPriority; - 80014c8: 4b0e ldr r3, [pc, #56] @ (8001504 ) - 80014ca: 687a ldr r2, [r7, #4] - 80014cc: 601a str r2, [r3, #0] - 80014ce: e00d b.n 80014ec + 8001608: 4b0e ldr r3, [pc, #56] @ (8001644 ) + 800160a: 687a ldr r2, [r7, #4] + 800160c: 601a str r2, [r3, #0] + 800160e: e00d b.n 800162c } else { status = HAL_ERROR; - 80014d0: 230f movs r3, #15 - 80014d2: 18fb adds r3, r7, r3 - 80014d4: 2201 movs r2, #1 - 80014d6: 701a strb r2, [r3, #0] - 80014d8: e008 b.n 80014ec + 8001610: 230f movs r3, #15 + 8001612: 18fb adds r3, r7, r3 + 8001614: 2201 movs r2, #1 + 8001616: 701a strb r2, [r3, #0] + 8001618: e008 b.n 800162c } } else { status = HAL_ERROR; - 80014da: 230f movs r3, #15 - 80014dc: 18fb adds r3, r7, r3 - 80014de: 2201 movs r2, #1 - 80014e0: 701a strb r2, [r3, #0] - 80014e2: e003 b.n 80014ec + 800161a: 230f movs r3, #15 + 800161c: 18fb adds r3, r7, r3 + 800161e: 2201 movs r2, #1 + 8001620: 701a strb r2, [r3, #0] + 8001622: e003 b.n 800162c } } else { status = HAL_ERROR; - 80014e4: 230f movs r3, #15 - 80014e6: 18fb adds r3, r7, r3 - 80014e8: 2201 movs r2, #1 - 80014ea: 701a strb r2, [r3, #0] + 8001624: 230f movs r3, #15 + 8001626: 18fb adds r3, r7, r3 + 8001628: 2201 movs r2, #1 + 800162a: 701a strb r2, [r3, #0] } /* Return function status */ return status; - 80014ec: 230f movs r3, #15 - 80014ee: 18fb adds r3, r7, r3 - 80014f0: 781b ldrb r3, [r3, #0] + 800162c: 230f movs r3, #15 + 800162e: 18fb adds r3, r7, r3 + 8001630: 781b ldrb r3, [r3, #0] } - 80014f2: 0018 movs r0, r3 - 80014f4: 46bd mov sp, r7 - 80014f6: b005 add sp, #20 - 80014f8: bd90 pop {r4, r7, pc} - 80014fa: 46c0 nop @ (mov r8, r8) - 80014fc: 20000008 .word 0x20000008 - 8001500: 20000000 .word 0x20000000 - 8001504: 20000004 .word 0x20000004 + 8001632: 0018 movs r0, r3 + 8001634: 46bd mov sp, r7 + 8001636: b005 add sp, #20 + 8001638: bd90 pop {r4, r7, pc} + 800163a: 46c0 nop @ (mov r8, r8) + 800163c: 20000008 .word 0x20000008 + 8001640: 20000000 .word 0x20000000 + 8001644: 20000004 .word 0x20000004 -08001508 : +08001648 : * @note This function is declared as __weak to be overwritten in case of other * implementations in user file. * @retval None */ __weak void HAL_IncTick(void) { - 8001508: b580 push {r7, lr} - 800150a: af00 add r7, sp, #0 + 8001648: b580 push {r7, lr} + 800164a: af00 add r7, sp, #0 uwTick += (uint32_t)uwTickFreq; - 800150c: 4b05 ldr r3, [pc, #20] @ (8001524 ) - 800150e: 781b ldrb r3, [r3, #0] - 8001510: 001a movs r2, r3 - 8001512: 4b05 ldr r3, [pc, #20] @ (8001528 ) - 8001514: 681b ldr r3, [r3, #0] - 8001516: 18d2 adds r2, r2, r3 - 8001518: 4b03 ldr r3, [pc, #12] @ (8001528 ) - 800151a: 601a str r2, [r3, #0] + 800164c: 4b05 ldr r3, [pc, #20] @ (8001664 ) + 800164e: 781b ldrb r3, [r3, #0] + 8001650: 001a movs r2, r3 + 8001652: 4b05 ldr r3, [pc, #20] @ (8001668 ) + 8001654: 681b ldr r3, [r3, #0] + 8001656: 18d2 adds r2, r2, r3 + 8001658: 4b03 ldr r3, [pc, #12] @ (8001668 ) + 800165a: 601a str r2, [r3, #0] } - 800151c: 46c0 nop @ (mov r8, r8) - 800151e: 46bd mov sp, r7 - 8001520: bd80 pop {r7, pc} - 8001522: 46c0 nop @ (mov r8, r8) - 8001524: 20000008 .word 0x20000008 - 8001528: 200001e8 .word 0x200001e8 + 800165c: 46c0 nop @ (mov r8, r8) + 800165e: 46bd mov sp, r7 + 8001660: bd80 pop {r7, pc} + 8001662: 46c0 nop @ (mov r8, r8) + 8001664: 20000008 .word 0x20000008 + 8001668: 200001d8 .word 0x200001d8 -0800152c : +0800166c : * @note This function is declared as __weak to be overwritten in case of other * implementations in user file. * @retval tick value */ __weak uint32_t HAL_GetTick(void) { - 800152c: b580 push {r7, lr} - 800152e: af00 add r7, sp, #0 + 800166c: b580 push {r7, lr} + 800166e: af00 add r7, sp, #0 return uwTick; - 8001530: 4b02 ldr r3, [pc, #8] @ (800153c ) - 8001532: 681b ldr r3, [r3, #0] + 8001670: 4b02 ldr r3, [pc, #8] @ (800167c ) + 8001672: 681b ldr r3, [r3, #0] } - 8001534: 0018 movs r0, r3 - 8001536: 46bd mov sp, r7 - 8001538: bd80 pop {r7, pc} - 800153a: 46c0 nop @ (mov r8, r8) - 800153c: 200001e8 .word 0x200001e8 + 8001674: 0018 movs r0, r3 + 8001676: 46bd mov sp, r7 + 8001678: bd80 pop {r7, pc} + 800167a: 46c0 nop @ (mov r8, r8) + 800167c: 200001d8 .word 0x200001d8 -08001540 : +08001680 : * implementations in user file. * @param Delay specifies the delay time length, in milliseconds. * @retval None */ __weak void HAL_Delay(uint32_t Delay) { - 8001540: b580 push {r7, lr} - 8001542: b084 sub sp, #16 - 8001544: af00 add r7, sp, #0 - 8001546: 6078 str r0, [r7, #4] + 8001680: b580 push {r7, lr} + 8001682: b084 sub sp, #16 + 8001684: af00 add r7, sp, #0 + 8001686: 6078 str r0, [r7, #4] uint32_t tickstart = HAL_GetTick(); - 8001548: f7ff fff0 bl 800152c - 800154c: 0003 movs r3, r0 - 800154e: 60bb str r3, [r7, #8] + 8001688: f7ff fff0 bl 800166c + 800168c: 0003 movs r3, r0 + 800168e: 60bb str r3, [r7, #8] uint32_t wait = Delay; - 8001550: 687b ldr r3, [r7, #4] - 8001552: 60fb str r3, [r7, #12] + 8001690: 687b ldr r3, [r7, #4] + 8001692: 60fb str r3, [r7, #12] /* Add a freq to guarantee minimum wait */ if (wait < HAL_MAX_DELAY) - 8001554: 68fb ldr r3, [r7, #12] - 8001556: 3301 adds r3, #1 - 8001558: d005 beq.n 8001566 + 8001694: 68fb ldr r3, [r7, #12] + 8001696: 3301 adds r3, #1 + 8001698: d005 beq.n 80016a6 { wait += (uint32_t)(uwTickFreq); - 800155a: 4b0a ldr r3, [pc, #40] @ (8001584 ) - 800155c: 781b ldrb r3, [r3, #0] - 800155e: 001a movs r2, r3 - 8001560: 68fb ldr r3, [r7, #12] - 8001562: 189b adds r3, r3, r2 - 8001564: 60fb str r3, [r7, #12] + 800169a: 4b0a ldr r3, [pc, #40] @ (80016c4 ) + 800169c: 781b ldrb r3, [r3, #0] + 800169e: 001a movs r2, r3 + 80016a0: 68fb ldr r3, [r7, #12] + 80016a2: 189b adds r3, r3, r2 + 80016a4: 60fb str r3, [r7, #12] } while ((HAL_GetTick() - tickstart) < wait) - 8001566: 46c0 nop @ (mov r8, r8) - 8001568: f7ff ffe0 bl 800152c - 800156c: 0002 movs r2, r0 - 800156e: 68bb ldr r3, [r7, #8] - 8001570: 1ad3 subs r3, r2, r3 - 8001572: 68fa ldr r2, [r7, #12] - 8001574: 429a cmp r2, r3 - 8001576: d8f7 bhi.n 8001568 + 80016a6: 46c0 nop @ (mov r8, r8) + 80016a8: f7ff ffe0 bl 800166c + 80016ac: 0002 movs r2, r0 + 80016ae: 68bb ldr r3, [r7, #8] + 80016b0: 1ad3 subs r3, r2, r3 + 80016b2: 68fa ldr r2, [r7, #12] + 80016b4: 429a cmp r2, r3 + 80016b6: d8f7 bhi.n 80016a8 { } } - 8001578: 46c0 nop @ (mov r8, r8) - 800157a: 46c0 nop @ (mov r8, r8) - 800157c: 46bd mov sp, r7 - 800157e: b004 add sp, #16 - 8001580: bd80 pop {r7, pc} - 8001582: 46c0 nop @ (mov r8, r8) - 8001584: 20000008 .word 0x20000008 + 80016b8: 46c0 nop @ (mov r8, r8) + 80016ba: 46c0 nop @ (mov r8, r8) + 80016bc: 46bd mov sp, r7 + 80016be: b004 add sp, #16 + 80016c0: bd80 pop {r7, pc} + 80016c2: 46c0 nop @ (mov r8, r8) + 80016c4: 20000008 .word 0x20000008 -08001588 : +080016c8 : * @arg @ref SYSCFG_UCPD1_STROBE * @arg @ref SYSCFG_UCPD2_STROBE * @retval None */ void HAL_SYSCFG_StrobeDBattpinsConfig(uint32_t ConfigDeadBattery) { - 8001588: b580 push {r7, lr} - 800158a: b082 sub sp, #8 - 800158c: af00 add r7, sp, #0 - 800158e: 6078 str r0, [r7, #4] + 80016c8: b580 push {r7, lr} + 80016ca: b082 sub sp, #8 + 80016cc: af00 add r7, sp, #0 + 80016ce: 6078 str r0, [r7, #4] assert_param(IS_SYSCFG_DBATT_CONFIG(ConfigDeadBattery)); /* Change strobe configuration of GPIO depending on UCPDx dead battery settings */ MODIFY_REG(SYSCFG->CFGR1, (SYSCFG_CFGR1_UCPD1_STROBE | SYSCFG_CFGR1_UCPD2_STROBE), ConfigDeadBattery); - 8001590: 4b06 ldr r3, [pc, #24] @ (80015ac ) - 8001592: 681b ldr r3, [r3, #0] - 8001594: 4a06 ldr r2, [pc, #24] @ (80015b0 ) - 8001596: 4013 ands r3, r2 - 8001598: 0019 movs r1, r3 - 800159a: 4b04 ldr r3, [pc, #16] @ (80015ac ) - 800159c: 687a ldr r2, [r7, #4] - 800159e: 430a orrs r2, r1 - 80015a0: 601a str r2, [r3, #0] + 80016d0: 4b06 ldr r3, [pc, #24] @ (80016ec ) + 80016d2: 681b ldr r3, [r3, #0] + 80016d4: 4a06 ldr r2, [pc, #24] @ (80016f0 ) + 80016d6: 4013 ands r3, r2 + 80016d8: 0019 movs r1, r3 + 80016da: 4b04 ldr r3, [pc, #16] @ (80016ec ) + 80016dc: 687a ldr r2, [r7, #4] + 80016de: 430a orrs r2, r1 + 80016e0: 601a str r2, [r3, #0] } - 80015a2: 46c0 nop @ (mov r8, r8) - 80015a4: 46bd mov sp, r7 - 80015a6: b002 add sp, #8 - 80015a8: bd80 pop {r7, pc} - 80015aa: 46c0 nop @ (mov r8, r8) - 80015ac: 40010000 .word 0x40010000 - 80015b0: fffff9ff .word 0xfffff9ff + 80016e2: 46c0 nop @ (mov r8, r8) + 80016e4: 46bd mov sp, r7 + 80016e6: b002 add sp, #8 + 80016e8: bd80 pop {r7, pc} + 80016ea: 46c0 nop @ (mov r8, r8) + 80016ec: 40010000 .word 0x40010000 + 80016f0: fffff9ff .word 0xfffff9ff -080015b4 <__NVIC_EnableIRQ>: +080016f4 <__NVIC_EnableIRQ>: \details Enables a device specific interrupt in the NVIC interrupt controller. \param [in] IRQn Device specific interrupt number. \note IRQn must not be negative. */ __STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) { - 80015b4: b580 push {r7, lr} - 80015b6: b082 sub sp, #8 - 80015b8: af00 add r7, sp, #0 - 80015ba: 0002 movs r2, r0 - 80015bc: 1dfb adds r3, r7, #7 - 80015be: 701a strb r2, [r3, #0] + 80016f4: b580 push {r7, lr} + 80016f6: b082 sub sp, #8 + 80016f8: af00 add r7, sp, #0 + 80016fa: 0002 movs r2, r0 + 80016fc: 1dfb adds r3, r7, #7 + 80016fe: 701a strb r2, [r3, #0] if ((int32_t)(IRQn) >= 0) - 80015c0: 1dfb adds r3, r7, #7 - 80015c2: 781b ldrb r3, [r3, #0] - 80015c4: 2b7f cmp r3, #127 @ 0x7f - 80015c6: d809 bhi.n 80015dc <__NVIC_EnableIRQ+0x28> + 8001700: 1dfb adds r3, r7, #7 + 8001702: 781b ldrb r3, [r3, #0] + 8001704: 2b7f cmp r3, #127 @ 0x7f + 8001706: d809 bhi.n 800171c <__NVIC_EnableIRQ+0x28> { __COMPILER_BARRIER(); NVIC->ISER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); - 80015c8: 1dfb adds r3, r7, #7 - 80015ca: 781b ldrb r3, [r3, #0] - 80015cc: 001a movs r2, r3 - 80015ce: 231f movs r3, #31 - 80015d0: 401a ands r2, r3 - 80015d2: 4b04 ldr r3, [pc, #16] @ (80015e4 <__NVIC_EnableIRQ+0x30>) - 80015d4: 2101 movs r1, #1 - 80015d6: 4091 lsls r1, r2 - 80015d8: 000a movs r2, r1 - 80015da: 601a str r2, [r3, #0] + 8001708: 1dfb adds r3, r7, #7 + 800170a: 781b ldrb r3, [r3, #0] + 800170c: 001a movs r2, r3 + 800170e: 231f movs r3, #31 + 8001710: 401a ands r2, r3 + 8001712: 4b04 ldr r3, [pc, #16] @ (8001724 <__NVIC_EnableIRQ+0x30>) + 8001714: 2101 movs r1, #1 + 8001716: 4091 lsls r1, r2 + 8001718: 000a movs r2, r1 + 800171a: 601a str r2, [r3, #0] __COMPILER_BARRIER(); } } - 80015dc: 46c0 nop @ (mov r8, r8) - 80015de: 46bd mov sp, r7 - 80015e0: b002 add sp, #8 - 80015e2: bd80 pop {r7, pc} - 80015e4: e000e100 .word 0xe000e100 + 800171c: 46c0 nop @ (mov r8, r8) + 800171e: 46bd mov sp, r7 + 8001720: b002 add sp, #8 + 8001722: bd80 pop {r7, pc} + 8001724: e000e100 .word 0xe000e100 -080015e8 <__NVIC_SetPriority>: +08001728 <__NVIC_SetPriority>: \param [in] IRQn Interrupt number. \param [in] priority Priority to set. \note The priority cannot be set for every processor exception. */ __STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) { - 80015e8: b590 push {r4, r7, lr} - 80015ea: b083 sub sp, #12 - 80015ec: af00 add r7, sp, #0 - 80015ee: 0002 movs r2, r0 - 80015f0: 6039 str r1, [r7, #0] - 80015f2: 1dfb adds r3, r7, #7 - 80015f4: 701a strb r2, [r3, #0] + 8001728: b590 push {r4, r7, lr} + 800172a: b083 sub sp, #12 + 800172c: af00 add r7, sp, #0 + 800172e: 0002 movs r2, r0 + 8001730: 6039 str r1, [r7, #0] + 8001732: 1dfb adds r3, r7, #7 + 8001734: 701a strb r2, [r3, #0] if ((int32_t)(IRQn) >= 0) - 80015f6: 1dfb adds r3, r7, #7 - 80015f8: 781b ldrb r3, [r3, #0] - 80015fa: 2b7f cmp r3, #127 @ 0x7f - 80015fc: d828 bhi.n 8001650 <__NVIC_SetPriority+0x68> + 8001736: 1dfb adds r3, r7, #7 + 8001738: 781b ldrb r3, [r3, #0] + 800173a: 2b7f cmp r3, #127 @ 0x7f + 800173c: d828 bhi.n 8001790 <__NVIC_SetPriority+0x68> { NVIC->IP[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IP[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | - 80015fe: 4a2f ldr r2, [pc, #188] @ (80016bc <__NVIC_SetPriority+0xd4>) - 8001600: 1dfb adds r3, r7, #7 - 8001602: 781b ldrb r3, [r3, #0] - 8001604: b25b sxtb r3, r3 - 8001606: 089b lsrs r3, r3, #2 - 8001608: 33c0 adds r3, #192 @ 0xc0 - 800160a: 009b lsls r3, r3, #2 - 800160c: 589b ldr r3, [r3, r2] - 800160e: 1dfa adds r2, r7, #7 - 8001610: 7812 ldrb r2, [r2, #0] - 8001612: 0011 movs r1, r2 - 8001614: 2203 movs r2, #3 - 8001616: 400a ands r2, r1 - 8001618: 00d2 lsls r2, r2, #3 - 800161a: 21ff movs r1, #255 @ 0xff - 800161c: 4091 lsls r1, r2 - 800161e: 000a movs r2, r1 - 8001620: 43d2 mvns r2, r2 - 8001622: 401a ands r2, r3 - 8001624: 0011 movs r1, r2 + 800173e: 4a2f ldr r2, [pc, #188] @ (80017fc <__NVIC_SetPriority+0xd4>) + 8001740: 1dfb adds r3, r7, #7 + 8001742: 781b ldrb r3, [r3, #0] + 8001744: b25b sxtb r3, r3 + 8001746: 089b lsrs r3, r3, #2 + 8001748: 33c0 adds r3, #192 @ 0xc0 + 800174a: 009b lsls r3, r3, #2 + 800174c: 589b ldr r3, [r3, r2] + 800174e: 1dfa adds r2, r7, #7 + 8001750: 7812 ldrb r2, [r2, #0] + 8001752: 0011 movs r1, r2 + 8001754: 2203 movs r2, #3 + 8001756: 400a ands r2, r1 + 8001758: 00d2 lsls r2, r2, #3 + 800175a: 21ff movs r1, #255 @ 0xff + 800175c: 4091 lsls r1, r2 + 800175e: 000a movs r2, r1 + 8001760: 43d2 mvns r2, r2 + 8001762: 401a ands r2, r3 + 8001764: 0011 movs r1, r2 (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); - 8001626: 683b ldr r3, [r7, #0] - 8001628: 019b lsls r3, r3, #6 - 800162a: 22ff movs r2, #255 @ 0xff - 800162c: 401a ands r2, r3 - 800162e: 1dfb adds r3, r7, #7 - 8001630: 781b ldrb r3, [r3, #0] - 8001632: 0018 movs r0, r3 - 8001634: 2303 movs r3, #3 - 8001636: 4003 ands r3, r0 - 8001638: 00db lsls r3, r3, #3 - 800163a: 409a lsls r2, r3 + 8001766: 683b ldr r3, [r7, #0] + 8001768: 019b lsls r3, r3, #6 + 800176a: 22ff movs r2, #255 @ 0xff + 800176c: 401a ands r2, r3 + 800176e: 1dfb adds r3, r7, #7 + 8001770: 781b ldrb r3, [r3, #0] + 8001772: 0018 movs r0, r3 + 8001774: 2303 movs r3, #3 + 8001776: 4003 ands r3, r0 + 8001778: 00db lsls r3, r3, #3 + 800177a: 409a lsls r2, r3 NVIC->IP[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IP[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | - 800163c: 481f ldr r0, [pc, #124] @ (80016bc <__NVIC_SetPriority+0xd4>) - 800163e: 1dfb adds r3, r7, #7 - 8001640: 781b ldrb r3, [r3, #0] - 8001642: b25b sxtb r3, r3 - 8001644: 089b lsrs r3, r3, #2 - 8001646: 430a orrs r2, r1 - 8001648: 33c0 adds r3, #192 @ 0xc0 - 800164a: 009b lsls r3, r3, #2 - 800164c: 501a str r2, [r3, r0] + 800177c: 481f ldr r0, [pc, #124] @ (80017fc <__NVIC_SetPriority+0xd4>) + 800177e: 1dfb adds r3, r7, #7 + 8001780: 781b ldrb r3, [r3, #0] + 8001782: b25b sxtb r3, r3 + 8001784: 089b lsrs r3, r3, #2 + 8001786: 430a orrs r2, r1 + 8001788: 33c0 adds r3, #192 @ 0xc0 + 800178a: 009b lsls r3, r3, #2 + 800178c: 501a str r2, [r3, r0] else { SCB->SHP[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); } } - 800164e: e031 b.n 80016b4 <__NVIC_SetPriority+0xcc> + 800178e: e031 b.n 80017f4 <__NVIC_SetPriority+0xcc> SCB->SHP[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | - 8001650: 4a1b ldr r2, [pc, #108] @ (80016c0 <__NVIC_SetPriority+0xd8>) - 8001652: 1dfb adds r3, r7, #7 - 8001654: 781b ldrb r3, [r3, #0] - 8001656: 0019 movs r1, r3 - 8001658: 230f movs r3, #15 - 800165a: 400b ands r3, r1 - 800165c: 3b08 subs r3, #8 - 800165e: 089b lsrs r3, r3, #2 - 8001660: 3306 adds r3, #6 - 8001662: 009b lsls r3, r3, #2 - 8001664: 18d3 adds r3, r2, r3 - 8001666: 3304 adds r3, #4 - 8001668: 681b ldr r3, [r3, #0] - 800166a: 1dfa adds r2, r7, #7 - 800166c: 7812 ldrb r2, [r2, #0] - 800166e: 0011 movs r1, r2 - 8001670: 2203 movs r2, #3 - 8001672: 400a ands r2, r1 - 8001674: 00d2 lsls r2, r2, #3 - 8001676: 21ff movs r1, #255 @ 0xff - 8001678: 4091 lsls r1, r2 - 800167a: 000a movs r2, r1 - 800167c: 43d2 mvns r2, r2 - 800167e: 401a ands r2, r3 - 8001680: 0011 movs r1, r2 + 8001790: 4a1b ldr r2, [pc, #108] @ (8001800 <__NVIC_SetPriority+0xd8>) + 8001792: 1dfb adds r3, r7, #7 + 8001794: 781b ldrb r3, [r3, #0] + 8001796: 0019 movs r1, r3 + 8001798: 230f movs r3, #15 + 800179a: 400b ands r3, r1 + 800179c: 3b08 subs r3, #8 + 800179e: 089b lsrs r3, r3, #2 + 80017a0: 3306 adds r3, #6 + 80017a2: 009b lsls r3, r3, #2 + 80017a4: 18d3 adds r3, r2, r3 + 80017a6: 3304 adds r3, #4 + 80017a8: 681b ldr r3, [r3, #0] + 80017aa: 1dfa adds r2, r7, #7 + 80017ac: 7812 ldrb r2, [r2, #0] + 80017ae: 0011 movs r1, r2 + 80017b0: 2203 movs r2, #3 + 80017b2: 400a ands r2, r1 + 80017b4: 00d2 lsls r2, r2, #3 + 80017b6: 21ff movs r1, #255 @ 0xff + 80017b8: 4091 lsls r1, r2 + 80017ba: 000a movs r2, r1 + 80017bc: 43d2 mvns r2, r2 + 80017be: 401a ands r2, r3 + 80017c0: 0011 movs r1, r2 (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); - 8001682: 683b ldr r3, [r7, #0] - 8001684: 019b lsls r3, r3, #6 - 8001686: 22ff movs r2, #255 @ 0xff - 8001688: 401a ands r2, r3 - 800168a: 1dfb adds r3, r7, #7 - 800168c: 781b ldrb r3, [r3, #0] - 800168e: 0018 movs r0, r3 - 8001690: 2303 movs r3, #3 - 8001692: 4003 ands r3, r0 - 8001694: 00db lsls r3, r3, #3 - 8001696: 409a lsls r2, r3 + 80017c2: 683b ldr r3, [r7, #0] + 80017c4: 019b lsls r3, r3, #6 + 80017c6: 22ff movs r2, #255 @ 0xff + 80017c8: 401a ands r2, r3 + 80017ca: 1dfb adds r3, r7, #7 + 80017cc: 781b ldrb r3, [r3, #0] + 80017ce: 0018 movs r0, r3 + 80017d0: 2303 movs r3, #3 + 80017d2: 4003 ands r3, r0 + 80017d4: 00db lsls r3, r3, #3 + 80017d6: 409a lsls r2, r3 SCB->SHP[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | - 8001698: 4809 ldr r0, [pc, #36] @ (80016c0 <__NVIC_SetPriority+0xd8>) - 800169a: 1dfb adds r3, r7, #7 - 800169c: 781b ldrb r3, [r3, #0] - 800169e: 001c movs r4, r3 - 80016a0: 230f movs r3, #15 - 80016a2: 4023 ands r3, r4 - 80016a4: 3b08 subs r3, #8 - 80016a6: 089b lsrs r3, r3, #2 - 80016a8: 430a orrs r2, r1 - 80016aa: 3306 adds r3, #6 - 80016ac: 009b lsls r3, r3, #2 - 80016ae: 18c3 adds r3, r0, r3 - 80016b0: 3304 adds r3, #4 - 80016b2: 601a str r2, [r3, #0] + 80017d8: 4809 ldr r0, [pc, #36] @ (8001800 <__NVIC_SetPriority+0xd8>) + 80017da: 1dfb adds r3, r7, #7 + 80017dc: 781b ldrb r3, [r3, #0] + 80017de: 001c movs r4, r3 + 80017e0: 230f movs r3, #15 + 80017e2: 4023 ands r3, r4 + 80017e4: 3b08 subs r3, #8 + 80017e6: 089b lsrs r3, r3, #2 + 80017e8: 430a orrs r2, r1 + 80017ea: 3306 adds r3, #6 + 80017ec: 009b lsls r3, r3, #2 + 80017ee: 18c3 adds r3, r0, r3 + 80017f0: 3304 adds r3, #4 + 80017f2: 601a str r2, [r3, #0] } - 80016b4: 46c0 nop @ (mov r8, r8) - 80016b6: 46bd mov sp, r7 - 80016b8: b003 add sp, #12 - 80016ba: bd90 pop {r4, r7, pc} - 80016bc: e000e100 .word 0xe000e100 - 80016c0: e000ed00 .word 0xe000ed00 + 80017f4: 46c0 nop @ (mov r8, r8) + 80017f6: 46bd mov sp, r7 + 80017f8: b003 add sp, #12 + 80017fa: bd90 pop {r4, r7, pc} + 80017fc: e000e100 .word 0xe000e100 + 8001800: e000ed00 .word 0xe000ed00 -080016c4 : +08001804 : \note When the variable __Vendor_SysTickConfig is set to 1, then the function SysTick_Config is not included. In this case, the file device.h must contain a vendor-specific implementation of this function. */ __STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) { - 80016c4: b580 push {r7, lr} - 80016c6: b082 sub sp, #8 - 80016c8: af00 add r7, sp, #0 - 80016ca: 6078 str r0, [r7, #4] + 8001804: b580 push {r7, lr} + 8001806: b082 sub sp, #8 + 8001808: af00 add r7, sp, #0 + 800180a: 6078 str r0, [r7, #4] if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) - 80016cc: 687b ldr r3, [r7, #4] - 80016ce: 1e5a subs r2, r3, #1 - 80016d0: 2380 movs r3, #128 @ 0x80 - 80016d2: 045b lsls r3, r3, #17 - 80016d4: 429a cmp r2, r3 - 80016d6: d301 bcc.n 80016dc + 800180c: 687b ldr r3, [r7, #4] + 800180e: 1e5a subs r2, r3, #1 + 8001810: 2380 movs r3, #128 @ 0x80 + 8001812: 045b lsls r3, r3, #17 + 8001814: 429a cmp r2, r3 + 8001816: d301 bcc.n 800181c { return (1UL); /* Reload value impossible */ - 80016d8: 2301 movs r3, #1 - 80016da: e010 b.n 80016fe + 8001818: 2301 movs r3, #1 + 800181a: e010 b.n 800183e } SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ - 80016dc: 4b0a ldr r3, [pc, #40] @ (8001708 ) - 80016de: 687a ldr r2, [r7, #4] - 80016e0: 3a01 subs r2, #1 - 80016e2: 605a str r2, [r3, #4] + 800181c: 4b0a ldr r3, [pc, #40] @ (8001848 ) + 800181e: 687a ldr r2, [r7, #4] + 8001820: 3a01 subs r2, #1 + 8001822: 605a str r2, [r3, #4] NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ - 80016e4: 2301 movs r3, #1 - 80016e6: 425b negs r3, r3 - 80016e8: 2103 movs r1, #3 - 80016ea: 0018 movs r0, r3 - 80016ec: f7ff ff7c bl 80015e8 <__NVIC_SetPriority> + 8001824: 2301 movs r3, #1 + 8001826: 425b negs r3, r3 + 8001828: 2103 movs r1, #3 + 800182a: 0018 movs r0, r3 + 800182c: f7ff ff7c bl 8001728 <__NVIC_SetPriority> SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ - 80016f0: 4b05 ldr r3, [pc, #20] @ (8001708 ) - 80016f2: 2200 movs r2, #0 - 80016f4: 609a str r2, [r3, #8] + 8001830: 4b05 ldr r3, [pc, #20] @ (8001848 ) + 8001832: 2200 movs r2, #0 + 8001834: 609a str r2, [r3, #8] SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | - 80016f6: 4b04 ldr r3, [pc, #16] @ (8001708 ) - 80016f8: 2207 movs r2, #7 - 80016fa: 601a str r2, [r3, #0] + 8001836: 4b04 ldr r3, [pc, #16] @ (8001848 ) + 8001838: 2207 movs r2, #7 + 800183a: 601a str r2, [r3, #0] SysTick_CTRL_TICKINT_Msk | SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ return (0UL); /* Function successful */ - 80016fc: 2300 movs r3, #0 + 800183c: 2300 movs r3, #0 } - 80016fe: 0018 movs r0, r3 - 8001700: 46bd mov sp, r7 - 8001702: b002 add sp, #8 - 8001704: bd80 pop {r7, pc} - 8001706: 46c0 nop @ (mov r8, r8) - 8001708: e000e010 .word 0xe000e010 + 800183e: 0018 movs r0, r3 + 8001840: 46bd mov sp, r7 + 8001842: b002 add sp, #8 + 8001844: bd80 pop {r7, pc} + 8001846: 46c0 nop @ (mov r8, r8) + 8001848: e000e010 .word 0xe000e010 -0800170c : +0800184c : * with stm32g0xx devices, this parameter is a dummy value and it is ignored, because * no subpriority supported in Cortex M0+ based products. * @retval None */ void HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority) { - 800170c: b580 push {r7, lr} - 800170e: b084 sub sp, #16 - 8001710: af00 add r7, sp, #0 - 8001712: 60b9 str r1, [r7, #8] - 8001714: 607a str r2, [r7, #4] - 8001716: 210f movs r1, #15 - 8001718: 187b adds r3, r7, r1 - 800171a: 1c02 adds r2, r0, #0 - 800171c: 701a strb r2, [r3, #0] + 800184c: b580 push {r7, lr} + 800184e: b084 sub sp, #16 + 8001850: af00 add r7, sp, #0 + 8001852: 60b9 str r1, [r7, #8] + 8001854: 607a str r2, [r7, #4] + 8001856: 210f movs r1, #15 + 8001858: 187b adds r3, r7, r1 + 800185a: 1c02 adds r2, r0, #0 + 800185c: 701a strb r2, [r3, #0] /* Prevent unused argument(s) compilation warning */ UNUSED(SubPriority); /* Check the parameters */ assert_param(IS_NVIC_PREEMPTION_PRIORITY(PreemptPriority)); NVIC_SetPriority(IRQn, PreemptPriority); - 800171e: 68ba ldr r2, [r7, #8] - 8001720: 187b adds r3, r7, r1 - 8001722: 781b ldrb r3, [r3, #0] - 8001724: b25b sxtb r3, r3 - 8001726: 0011 movs r1, r2 - 8001728: 0018 movs r0, r3 - 800172a: f7ff ff5d bl 80015e8 <__NVIC_SetPriority> + 800185e: 68ba ldr r2, [r7, #8] + 8001860: 187b adds r3, r7, r1 + 8001862: 781b ldrb r3, [r3, #0] + 8001864: b25b sxtb r3, r3 + 8001866: 0011 movs r1, r2 + 8001868: 0018 movs r0, r3 + 800186a: f7ff ff5d bl 8001728 <__NVIC_SetPriority> } - 800172e: 46c0 nop @ (mov r8, r8) - 8001730: 46bd mov sp, r7 - 8001732: b004 add sp, #16 - 8001734: bd80 pop {r7, pc} + 800186e: 46c0 nop @ (mov r8, r8) + 8001870: 46bd mov sp, r7 + 8001872: b004 add sp, #16 + 8001874: bd80 pop {r7, pc} -08001736 : +08001876 : * This parameter can be an enumerator of IRQn_Type enumeration * (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSIS device file (stm32g0xxxx.h)) * @retval None */ void HAL_NVIC_EnableIRQ(IRQn_Type IRQn) { - 8001736: b580 push {r7, lr} - 8001738: b082 sub sp, #8 - 800173a: af00 add r7, sp, #0 - 800173c: 0002 movs r2, r0 - 800173e: 1dfb adds r3, r7, #7 - 8001740: 701a strb r2, [r3, #0] + 8001876: b580 push {r7, lr} + 8001878: b082 sub sp, #8 + 800187a: af00 add r7, sp, #0 + 800187c: 0002 movs r2, r0 + 800187e: 1dfb adds r3, r7, #7 + 8001880: 701a strb r2, [r3, #0] /* Check the parameters */ assert_param(IS_NVIC_DEVICE_IRQ(IRQn)); /* Enable interrupt */ NVIC_EnableIRQ(IRQn); - 8001742: 1dfb adds r3, r7, #7 - 8001744: 781b ldrb r3, [r3, #0] - 8001746: b25b sxtb r3, r3 - 8001748: 0018 movs r0, r3 - 800174a: f7ff ff33 bl 80015b4 <__NVIC_EnableIRQ> + 8001882: 1dfb adds r3, r7, #7 + 8001884: 781b ldrb r3, [r3, #0] + 8001886: b25b sxtb r3, r3 + 8001888: 0018 movs r0, r3 + 800188a: f7ff ff33 bl 80016f4 <__NVIC_EnableIRQ> } - 800174e: 46c0 nop @ (mov r8, r8) - 8001750: 46bd mov sp, r7 - 8001752: b002 add sp, #8 - 8001754: bd80 pop {r7, pc} + 800188e: 46c0 nop @ (mov r8, r8) + 8001890: 46bd mov sp, r7 + 8001892: b002 add sp, #8 + 8001894: bd80 pop {r7, pc} -08001756 : +08001896 : * @param TicksNumb Specifies the ticks Number of ticks between two interrupts. * @retval status: - 0 Function succeeded. * - 1 Function failed. */ uint32_t HAL_SYSTICK_Config(uint32_t TicksNumb) { - 8001756: b580 push {r7, lr} - 8001758: b082 sub sp, #8 - 800175a: af00 add r7, sp, #0 - 800175c: 6078 str r0, [r7, #4] + 8001896: b580 push {r7, lr} + 8001898: b082 sub sp, #8 + 800189a: af00 add r7, sp, #0 + 800189c: 6078 str r0, [r7, #4] return SysTick_Config(TicksNumb); - 800175e: 687b ldr r3, [r7, #4] - 8001760: 0018 movs r0, r3 - 8001762: f7ff ffaf bl 80016c4 - 8001766: 0003 movs r3, r0 + 800189e: 687b ldr r3, [r7, #4] + 80018a0: 0018 movs r0, r3 + 80018a2: f7ff ffaf bl 8001804 + 80018a6: 0003 movs r3, r0 } - 8001768: 0018 movs r0, r3 - 800176a: 46bd mov sp, r7 - 800176c: b002 add sp, #8 - 800176e: bd80 pop {r7, pc} + 80018a8: 0018 movs r0, r3 + 80018aa: 46bd mov sp, r7 + 80018ac: b002 add sp, #8 + 80018ae: bd80 pop {r7, pc} -08001770 : +080018b0 : * @param hdma Pointer to a DMA_HandleTypeDef structure that contains * the configuration information for the specified DMA Channel. * @retval HAL status */ HAL_StatusTypeDef HAL_DMA_Abort_IT(DMA_HandleTypeDef *hdma) { - 8001770: b580 push {r7, lr} - 8001772: b084 sub sp, #16 - 8001774: af00 add r7, sp, #0 - 8001776: 6078 str r0, [r7, #4] + 80018b0: b580 push {r7, lr} + 80018b2: b084 sub sp, #16 + 80018b4: af00 add r7, sp, #0 + 80018b6: 6078 str r0, [r7, #4] HAL_StatusTypeDef status = HAL_OK; - 8001778: 210f movs r1, #15 - 800177a: 187b adds r3, r7, r1 - 800177c: 2200 movs r2, #0 - 800177e: 701a strb r2, [r3, #0] + 80018b8: 210f movs r1, #15 + 80018ba: 187b adds r3, r7, r1 + 80018bc: 2200 movs r2, #0 + 80018be: 701a strb r2, [r3, #0] if (hdma->State != HAL_DMA_STATE_BUSY) - 8001780: 687b ldr r3, [r7, #4] - 8001782: 2225 movs r2, #37 @ 0x25 - 8001784: 5c9b ldrb r3, [r3, r2] - 8001786: b2db uxtb r3, r3 - 8001788: 2b02 cmp r3, #2 - 800178a: d006 beq.n 800179a + 80018c0: 687b ldr r3, [r7, #4] + 80018c2: 2225 movs r2, #37 @ 0x25 + 80018c4: 5c9b ldrb r3, [r3, r2] + 80018c6: b2db uxtb r3, r3 + 80018c8: 2b02 cmp r3, #2 + 80018ca: d006 beq.n 80018da { /* no transfer ongoing */ hdma->ErrorCode = HAL_DMA_ERROR_NO_XFER; - 800178c: 687b ldr r3, [r7, #4] - 800178e: 2204 movs r2, #4 - 8001790: 63da str r2, [r3, #60] @ 0x3c + 80018cc: 687b ldr r3, [r7, #4] + 80018ce: 2204 movs r2, #4 + 80018d0: 63da str r2, [r3, #60] @ 0x3c status = HAL_ERROR; - 8001792: 187b adds r3, r7, r1 - 8001794: 2201 movs r2, #1 - 8001796: 701a strb r2, [r3, #0] - 8001798: e049 b.n 800182e + 80018d2: 187b adds r3, r7, r1 + 80018d4: 2201 movs r2, #1 + 80018d6: 701a strb r2, [r3, #0] + 80018d8: e049 b.n 800196e } else { /* Disable DMA IT */ __HAL_DMA_DISABLE_IT(hdma, (DMA_IT_TC | DMA_IT_HT | DMA_IT_TE)); - 800179a: 687b ldr r3, [r7, #4] - 800179c: 681b ldr r3, [r3, #0] - 800179e: 681a ldr r2, [r3, #0] - 80017a0: 687b ldr r3, [r7, #4] - 80017a2: 681b ldr r3, [r3, #0] - 80017a4: 210e movs r1, #14 - 80017a6: 438a bics r2, r1 - 80017a8: 601a str r2, [r3, #0] + 80018da: 687b ldr r3, [r7, #4] + 80018dc: 681b ldr r3, [r3, #0] + 80018de: 681a ldr r2, [r3, #0] + 80018e0: 687b ldr r3, [r7, #4] + 80018e2: 681b ldr r3, [r3, #0] + 80018e4: 210e movs r1, #14 + 80018e6: 438a bics r2, r1 + 80018e8: 601a str r2, [r3, #0] /* Disable the channel */ __HAL_DMA_DISABLE(hdma); - 80017aa: 687b ldr r3, [r7, #4] - 80017ac: 681b ldr r3, [r3, #0] - 80017ae: 681a ldr r2, [r3, #0] - 80017b0: 687b ldr r3, [r7, #4] - 80017b2: 681b ldr r3, [r3, #0] - 80017b4: 2101 movs r1, #1 - 80017b6: 438a bics r2, r1 - 80017b8: 601a str r2, [r3, #0] + 80018ea: 687b ldr r3, [r7, #4] + 80018ec: 681b ldr r3, [r3, #0] + 80018ee: 681a ldr r2, [r3, #0] + 80018f0: 687b ldr r3, [r7, #4] + 80018f2: 681b ldr r3, [r3, #0] + 80018f4: 2101 movs r1, #1 + 80018f6: 438a bics r2, r1 + 80018f8: 601a str r2, [r3, #0] /* disable the DMAMUX sync overrun IT*/ hdma->DMAmuxChannel->CCR &= ~DMAMUX_CxCR_SOIE; - 80017ba: 687b ldr r3, [r7, #4] - 80017bc: 6c5b ldr r3, [r3, #68] @ 0x44 - 80017be: 681a ldr r2, [r3, #0] - 80017c0: 687b ldr r3, [r7, #4] - 80017c2: 6c5b ldr r3, [r3, #68] @ 0x44 - 80017c4: 491d ldr r1, [pc, #116] @ (800183c ) - 80017c6: 400a ands r2, r1 - 80017c8: 601a str r2, [r3, #0] + 80018fa: 687b ldr r3, [r7, #4] + 80018fc: 6c5b ldr r3, [r3, #68] @ 0x44 + 80018fe: 681a ldr r2, [r3, #0] + 8001900: 687b ldr r3, [r7, #4] + 8001902: 6c5b ldr r3, [r3, #68] @ 0x44 + 8001904: 491d ldr r1, [pc, #116] @ (800197c ) + 8001906: 400a ands r2, r1 + 8001908: 601a str r2, [r3, #0] /* Clear all flags */ #if defined(DMA2) hdma->DmaBaseAddress->IFCR = (DMA_ISR_GIF1 << (hdma->ChannelIndex & 0x1CU)); #else __HAL_DMA_CLEAR_FLAG(hdma, ((DMA_FLAG_GI1) << (hdma->ChannelIndex & 0x1CU))); - 80017ca: 4b1d ldr r3, [pc, #116] @ (8001840 ) - 80017cc: 6859 ldr r1, [r3, #4] - 80017ce: 687b ldr r3, [r7, #4] - 80017d0: 6c1b ldr r3, [r3, #64] @ 0x40 - 80017d2: 221c movs r2, #28 - 80017d4: 4013 ands r3, r2 - 80017d6: 2201 movs r2, #1 - 80017d8: 409a lsls r2, r3 - 80017da: 4b19 ldr r3, [pc, #100] @ (8001840 ) - 80017dc: 430a orrs r2, r1 - 80017de: 605a str r2, [r3, #4] + 800190a: 4b1d ldr r3, [pc, #116] @ (8001980 ) + 800190c: 6859 ldr r1, [r3, #4] + 800190e: 687b ldr r3, [r7, #4] + 8001910: 6c1b ldr r3, [r3, #64] @ 0x40 + 8001912: 221c movs r2, #28 + 8001914: 4013 ands r3, r2 + 8001916: 2201 movs r2, #1 + 8001918: 409a lsls r2, r3 + 800191a: 4b19 ldr r3, [pc, #100] @ (8001980 ) + 800191c: 430a orrs r2, r1 + 800191e: 605a str r2, [r3, #4] #endif /* DMA2 */ /* Clear the DMAMUX synchro overrun flag */ hdma->DMAmuxChannelStatus->CFR = hdma->DMAmuxChannelStatusMask; - 80017e0: 687b ldr r3, [r7, #4] - 80017e2: 6c9b ldr r3, [r3, #72] @ 0x48 - 80017e4: 687a ldr r2, [r7, #4] - 80017e6: 6cd2 ldr r2, [r2, #76] @ 0x4c - 80017e8: 605a str r2, [r3, #4] + 8001920: 687b ldr r3, [r7, #4] + 8001922: 6c9b ldr r3, [r3, #72] @ 0x48 + 8001924: 687a ldr r2, [r7, #4] + 8001926: 6cd2 ldr r2, [r2, #76] @ 0x4c + 8001928: 605a str r2, [r3, #4] if (hdma->DMAmuxRequestGen != 0U) - 80017ea: 687b ldr r3, [r7, #4] - 80017ec: 6d1b ldr r3, [r3, #80] @ 0x50 - 80017ee: 2b00 cmp r3, #0 - 80017f0: d00c beq.n 800180c + 800192a: 687b ldr r3, [r7, #4] + 800192c: 6d1b ldr r3, [r3, #80] @ 0x50 + 800192e: 2b00 cmp r3, #0 + 8001930: d00c beq.n 800194c { /* if using DMAMUX request generator, disable the DMAMUX request generator overrun IT*/ /* disable the request gen overrun IT*/ hdma->DMAmuxRequestGen->RGCR &= ~DMAMUX_RGxCR_OIE; - 80017f2: 687b ldr r3, [r7, #4] - 80017f4: 6d1b ldr r3, [r3, #80] @ 0x50 - 80017f6: 681a ldr r2, [r3, #0] - 80017f8: 687b ldr r3, [r7, #4] - 80017fa: 6d1b ldr r3, [r3, #80] @ 0x50 - 80017fc: 490f ldr r1, [pc, #60] @ (800183c ) - 80017fe: 400a ands r2, r1 - 8001800: 601a str r2, [r3, #0] + 8001932: 687b ldr r3, [r7, #4] + 8001934: 6d1b ldr r3, [r3, #80] @ 0x50 + 8001936: 681a ldr r2, [r3, #0] + 8001938: 687b ldr r3, [r7, #4] + 800193a: 6d1b ldr r3, [r3, #80] @ 0x50 + 800193c: 490f ldr r1, [pc, #60] @ (800197c ) + 800193e: 400a ands r2, r1 + 8001940: 601a str r2, [r3, #0] /* Clear the DMAMUX request generator overrun flag */ hdma->DMAmuxRequestGenStatus->RGCFR = hdma->DMAmuxRequestGenStatusMask; - 8001802: 687b ldr r3, [r7, #4] - 8001804: 6d5b ldr r3, [r3, #84] @ 0x54 - 8001806: 687a ldr r2, [r7, #4] - 8001808: 6d92 ldr r2, [r2, #88] @ 0x58 - 800180a: 605a str r2, [r3, #4] + 8001942: 687b ldr r3, [r7, #4] + 8001944: 6d5b ldr r3, [r3, #84] @ 0x54 + 8001946: 687a ldr r2, [r7, #4] + 8001948: 6d92 ldr r2, [r2, #88] @ 0x58 + 800194a: 605a str r2, [r3, #4] } /* Change the DMA state */ hdma->State = HAL_DMA_STATE_READY; - 800180c: 687b ldr r3, [r7, #4] - 800180e: 2225 movs r2, #37 @ 0x25 - 8001810: 2101 movs r1, #1 - 8001812: 5499 strb r1, [r3, r2] + 800194c: 687b ldr r3, [r7, #4] + 800194e: 2225 movs r2, #37 @ 0x25 + 8001950: 2101 movs r1, #1 + 8001952: 5499 strb r1, [r3, r2] /* Process Unlocked */ __HAL_UNLOCK(hdma); - 8001814: 687b ldr r3, [r7, #4] - 8001816: 2224 movs r2, #36 @ 0x24 - 8001818: 2100 movs r1, #0 - 800181a: 5499 strb r1, [r3, r2] + 8001954: 687b ldr r3, [r7, #4] + 8001956: 2224 movs r2, #36 @ 0x24 + 8001958: 2100 movs r1, #0 + 800195a: 5499 strb r1, [r3, r2] /* Call User Abort callback */ if (hdma->XferAbortCallback != NULL) - 800181c: 687b ldr r3, [r7, #4] - 800181e: 6b9b ldr r3, [r3, #56] @ 0x38 - 8001820: 2b00 cmp r3, #0 - 8001822: d004 beq.n 800182e + 800195c: 687b ldr r3, [r7, #4] + 800195e: 6b9b ldr r3, [r3, #56] @ 0x38 + 8001960: 2b00 cmp r3, #0 + 8001962: d004 beq.n 800196e { hdma->XferAbortCallback(hdma); - 8001824: 687b ldr r3, [r7, #4] - 8001826: 6b9b ldr r3, [r3, #56] @ 0x38 - 8001828: 687a ldr r2, [r7, #4] - 800182a: 0010 movs r0, r2 - 800182c: 4798 blx r3 + 8001964: 687b ldr r3, [r7, #4] + 8001966: 6b9b ldr r3, [r3, #56] @ 0x38 + 8001968: 687a ldr r2, [r7, #4] + 800196a: 0010 movs r0, r2 + 800196c: 4798 blx r3 } } return status; - 800182e: 230f movs r3, #15 - 8001830: 18fb adds r3, r7, r3 - 8001832: 781b ldrb r3, [r3, #0] + 800196e: 230f movs r3, #15 + 8001970: 18fb adds r3, r7, r3 + 8001972: 781b ldrb r3, [r3, #0] } - 8001834: 0018 movs r0, r3 - 8001836: 46bd mov sp, r7 - 8001838: b004 add sp, #16 - 800183a: bd80 pop {r7, pc} - 800183c: fffffeff .word 0xfffffeff - 8001840: 40020000 .word 0x40020000 + 8001974: 0018 movs r0, r3 + 8001976: 46bd mov sp, r7 + 8001978: b004 add sp, #16 + 800197a: bd80 pop {r7, pc} + 800197c: fffffeff .word 0xfffffeff + 8001980: 40020000 .word 0x40020000 -08001844 : +08001984 : * @param hdma Pointer to a DMA_HandleTypeDef structure that contains * the configuration information for the specified DMA Channel. * @retval HAL state */ HAL_DMA_StateTypeDef HAL_DMA_GetState(DMA_HandleTypeDef *hdma) { - 8001844: b580 push {r7, lr} - 8001846: b082 sub sp, #8 - 8001848: af00 add r7, sp, #0 - 800184a: 6078 str r0, [r7, #4] + 8001984: b580 push {r7, lr} + 8001986: b082 sub sp, #8 + 8001988: af00 add r7, sp, #0 + 800198a: 6078 str r0, [r7, #4] /* Return DMA handle state */ return hdma->State; - 800184c: 687b ldr r3, [r7, #4] - 800184e: 2225 movs r2, #37 @ 0x25 - 8001850: 5c9b ldrb r3, [r3, r2] - 8001852: b2db uxtb r3, r3 + 800198c: 687b ldr r3, [r7, #4] + 800198e: 2225 movs r2, #37 @ 0x25 + 8001990: 5c9b ldrb r3, [r3, r2] + 8001992: b2db uxtb r3, r3 } - 8001854: 0018 movs r0, r3 - 8001856: 46bd mov sp, r7 - 8001858: b002 add sp, #8 - 800185a: bd80 pop {r7, pc} + 8001994: 0018 movs r0, r3 + 8001996: 46bd mov sp, r7 + 8001998: b002 add sp, #8 + 800199a: bd80 pop {r7, pc} -0800185c : +0800199c : * @param GPIO_Init pointer to a GPIO_InitTypeDef structure that contains * the configuration information for the specified GPIO peripheral. * @retval None */ void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init) { - 800185c: b580 push {r7, lr} - 800185e: b086 sub sp, #24 - 8001860: af00 add r7, sp, #0 - 8001862: 6078 str r0, [r7, #4] - 8001864: 6039 str r1, [r7, #0] + 800199c: b580 push {r7, lr} + 800199e: b086 sub sp, #24 + 80019a0: af00 add r7, sp, #0 + 80019a2: 6078 str r0, [r7, #4] + 80019a4: 6039 str r1, [r7, #0] uint32_t position = 0x00u; - 8001866: 2300 movs r3, #0 - 8001868: 617b str r3, [r7, #20] + 80019a6: 2300 movs r3, #0 + 80019a8: 617b str r3, [r7, #20] assert_param(IS_GPIO_ALL_INSTANCE(GPIOx)); assert_param(IS_GPIO_PIN(GPIO_Init->Pin)); assert_param(IS_GPIO_MODE(GPIO_Init->Mode)); /* Configure the port pins */ while (((GPIO_Init->Pin) >> position) != 0x00u) - 800186a: e147 b.n 8001afc + 80019aa: e147 b.n 8001c3c { /* Get current io position */ iocurrent = (GPIO_Init->Pin) & (1uL << position); - 800186c: 683b ldr r3, [r7, #0] - 800186e: 681b ldr r3, [r3, #0] - 8001870: 2101 movs r1, #1 - 8001872: 697a ldr r2, [r7, #20] - 8001874: 4091 lsls r1, r2 - 8001876: 000a movs r2, r1 - 8001878: 4013 ands r3, r2 - 800187a: 60fb str r3, [r7, #12] + 80019ac: 683b ldr r3, [r7, #0] + 80019ae: 681b ldr r3, [r3, #0] + 80019b0: 2101 movs r1, #1 + 80019b2: 697a ldr r2, [r7, #20] + 80019b4: 4091 lsls r1, r2 + 80019b6: 000a movs r2, r1 + 80019b8: 4013 ands r3, r2 + 80019ba: 60fb str r3, [r7, #12] if (iocurrent != 0x00u) - 800187c: 68fb ldr r3, [r7, #12] - 800187e: 2b00 cmp r3, #0 - 8001880: d100 bne.n 8001884 - 8001882: e138 b.n 8001af6 + 80019bc: 68fb ldr r3, [r7, #12] + 80019be: 2b00 cmp r3, #0 + 80019c0: d100 bne.n 80019c4 + 80019c2: e138 b.n 8001c36 { /*--------------------- GPIO Mode Configuration ------------------------*/ /* In case of Output or Alternate function mode selection */ if (((GPIO_Init->Mode & GPIO_MODE) == MODE_OUTPUT) || ((GPIO_Init->Mode & GPIO_MODE) == MODE_AF)) - 8001884: 683b ldr r3, [r7, #0] - 8001886: 685b ldr r3, [r3, #4] - 8001888: 2203 movs r2, #3 - 800188a: 4013 ands r3, r2 - 800188c: 2b01 cmp r3, #1 - 800188e: d005 beq.n 800189c - 8001890: 683b ldr r3, [r7, #0] - 8001892: 685b ldr r3, [r3, #4] - 8001894: 2203 movs r2, #3 - 8001896: 4013 ands r3, r2 - 8001898: 2b02 cmp r3, #2 - 800189a: d130 bne.n 80018fe + 80019c4: 683b ldr r3, [r7, #0] + 80019c6: 685b ldr r3, [r3, #4] + 80019c8: 2203 movs r2, #3 + 80019ca: 4013 ands r3, r2 + 80019cc: 2b01 cmp r3, #1 + 80019ce: d005 beq.n 80019dc + 80019d0: 683b ldr r3, [r7, #0] + 80019d2: 685b ldr r3, [r3, #4] + 80019d4: 2203 movs r2, #3 + 80019d6: 4013 ands r3, r2 + 80019d8: 2b02 cmp r3, #2 + 80019da: d130 bne.n 8001a3e { /* Check the Speed parameter */ assert_param(IS_GPIO_SPEED(GPIO_Init->Speed)); /* Configure the IO Speed */ temp = GPIOx->OSPEEDR; - 800189c: 687b ldr r3, [r7, #4] - 800189e: 689b ldr r3, [r3, #8] - 80018a0: 613b str r3, [r7, #16] + 80019dc: 687b ldr r3, [r7, #4] + 80019de: 689b ldr r3, [r3, #8] + 80019e0: 613b str r3, [r7, #16] temp &= ~(GPIO_OSPEEDR_OSPEED0 << (position * 2u)); - 80018a2: 697b ldr r3, [r7, #20] - 80018a4: 005b lsls r3, r3, #1 - 80018a6: 2203 movs r2, #3 - 80018a8: 409a lsls r2, r3 - 80018aa: 0013 movs r3, r2 - 80018ac: 43da mvns r2, r3 - 80018ae: 693b ldr r3, [r7, #16] - 80018b0: 4013 ands r3, r2 - 80018b2: 613b str r3, [r7, #16] - temp |= (GPIO_Init->Speed << (position * 2u)); - 80018b4: 683b ldr r3, [r7, #0] - 80018b6: 68da ldr r2, [r3, #12] - 80018b8: 697b ldr r3, [r7, #20] - 80018ba: 005b lsls r3, r3, #1 - 80018bc: 409a lsls r2, r3 - 80018be: 0013 movs r3, r2 - 80018c0: 693a ldr r2, [r7, #16] - 80018c2: 4313 orrs r3, r2 - 80018c4: 613b str r3, [r7, #16] - GPIOx->OSPEEDR = temp; - 80018c6: 687b ldr r3, [r7, #4] - 80018c8: 693a ldr r2, [r7, #16] - 80018ca: 609a str r2, [r3, #8] - - /* Configure the IO Output Type */ - temp = GPIOx->OTYPER; - 80018cc: 687b ldr r3, [r7, #4] - 80018ce: 685b ldr r3, [r3, #4] - 80018d0: 613b str r3, [r7, #16] - temp &= ~(GPIO_OTYPER_OT0 << position) ; - 80018d2: 2201 movs r2, #1 - 80018d4: 697b ldr r3, [r7, #20] - 80018d6: 409a lsls r2, r3 - 80018d8: 0013 movs r3, r2 - 80018da: 43da mvns r2, r3 - 80018dc: 693b ldr r3, [r7, #16] - 80018de: 4013 ands r3, r2 - 80018e0: 613b str r3, [r7, #16] - temp |= (((GPIO_Init->Mode & OUTPUT_TYPE) >> OUTPUT_TYPE_Pos) << position); - 80018e2: 683b ldr r3, [r7, #0] - 80018e4: 685b ldr r3, [r3, #4] - 80018e6: 091b lsrs r3, r3, #4 - 80018e8: 2201 movs r2, #1 - 80018ea: 401a ands r2, r3 - 80018ec: 697b ldr r3, [r7, #20] - 80018ee: 409a lsls r2, r3 - 80018f0: 0013 movs r3, r2 - 80018f2: 693a ldr r2, [r7, #16] - 80018f4: 4313 orrs r3, r2 - 80018f6: 613b str r3, [r7, #16] - GPIOx->OTYPER = temp; - 80018f8: 687b ldr r3, [r7, #4] - 80018fa: 693a ldr r2, [r7, #16] - 80018fc: 605a str r2, [r3, #4] - } - - if ((GPIO_Init->Mode & GPIO_MODE) != MODE_ANALOG) - 80018fe: 683b ldr r3, [r7, #0] - 8001900: 685b ldr r3, [r3, #4] - 8001902: 2203 movs r2, #3 - 8001904: 4013 ands r3, r2 - 8001906: 2b03 cmp r3, #3 - 8001908: d017 beq.n 800193a - { - /* Check the Pull parameter */ - assert_param(IS_GPIO_PULL(GPIO_Init->Pull)); - - /* Activate the Pull-up or Pull down resistor for the current IO */ - temp = GPIOx->PUPDR; - 800190a: 687b ldr r3, [r7, #4] - 800190c: 68db ldr r3, [r3, #12] - 800190e: 613b str r3, [r7, #16] - temp &= ~(GPIO_PUPDR_PUPD0 << (position * 2u)); - 8001910: 697b ldr r3, [r7, #20] - 8001912: 005b lsls r3, r3, #1 - 8001914: 2203 movs r2, #3 - 8001916: 409a lsls r2, r3 - 8001918: 0013 movs r3, r2 - 800191a: 43da mvns r2, r3 - 800191c: 693b ldr r3, [r7, #16] - 800191e: 4013 ands r3, r2 - 8001920: 613b str r3, [r7, #16] - temp |= ((GPIO_Init->Pull) << (position * 2u)); - 8001922: 683b ldr r3, [r7, #0] - 8001924: 689a ldr r2, [r3, #8] - 8001926: 697b ldr r3, [r7, #20] - 8001928: 005b lsls r3, r3, #1 - 800192a: 409a lsls r2, r3 - 800192c: 0013 movs r3, r2 - 800192e: 693a ldr r2, [r7, #16] - 8001930: 4313 orrs r3, r2 - 8001932: 613b str r3, [r7, #16] - GPIOx->PUPDR = temp; - 8001934: 687b ldr r3, [r7, #4] - 8001936: 693a ldr r2, [r7, #16] - 8001938: 60da str r2, [r3, #12] - } - - /* In case of Alternate function mode selection */ - if ((GPIO_Init->Mode & GPIO_MODE) == MODE_AF) - 800193a: 683b ldr r3, [r7, #0] - 800193c: 685b ldr r3, [r3, #4] - 800193e: 2203 movs r2, #3 - 8001940: 4013 ands r3, r2 - 8001942: 2b02 cmp r3, #2 - 8001944: d123 bne.n 800198e - /* Check the Alternate function parameters */ - assert_param(IS_GPIO_AF_INSTANCE(GPIOx)); - assert_param(IS_GPIO_AF(GPIO_Init->Alternate)); - - /* Configure Alternate function mapped with the current IO */ - temp = GPIOx->AFR[position >> 3u]; - 8001946: 697b ldr r3, [r7, #20] - 8001948: 08da lsrs r2, r3, #3 - 800194a: 687b ldr r3, [r7, #4] - 800194c: 3208 adds r2, #8 - 800194e: 0092 lsls r2, r2, #2 - 8001950: 58d3 ldr r3, [r2, r3] - 8001952: 613b str r3, [r7, #16] - temp &= ~(0xFu << ((position & 0x07u) * 4u)); - 8001954: 697b ldr r3, [r7, #20] - 8001956: 2207 movs r2, #7 - 8001958: 4013 ands r3, r2 - 800195a: 009b lsls r3, r3, #2 - 800195c: 220f movs r2, #15 - 800195e: 409a lsls r2, r3 - 8001960: 0013 movs r3, r2 - 8001962: 43da mvns r2, r3 - 8001964: 693b ldr r3, [r7, #16] - 8001966: 4013 ands r3, r2 - 8001968: 613b str r3, [r7, #16] - temp |= ((GPIO_Init->Alternate) << ((position & 0x07u) * 4u)); - 800196a: 683b ldr r3, [r7, #0] - 800196c: 691a ldr r2, [r3, #16] - 800196e: 697b ldr r3, [r7, #20] - 8001970: 2107 movs r1, #7 - 8001972: 400b ands r3, r1 - 8001974: 009b lsls r3, r3, #2 - 8001976: 409a lsls r2, r3 - 8001978: 0013 movs r3, r2 - 800197a: 693a ldr r2, [r7, #16] - 800197c: 4313 orrs r3, r2 - 800197e: 613b str r3, [r7, #16] - GPIOx->AFR[position >> 3u] = temp; - 8001980: 697b ldr r3, [r7, #20] - 8001982: 08da lsrs r2, r3, #3 - 8001984: 687b ldr r3, [r7, #4] - 8001986: 3208 adds r2, #8 - 8001988: 0092 lsls r2, r2, #2 - 800198a: 6939 ldr r1, [r7, #16] - 800198c: 50d1 str r1, [r2, r3] - } - - /* Configure IO Direction mode (Input, Output, Alternate or Analog) */ - temp = GPIOx->MODER; - 800198e: 687b ldr r3, [r7, #4] - 8001990: 681b ldr r3, [r3, #0] - 8001992: 613b str r3, [r7, #16] - temp &= ~(GPIO_MODER_MODE0 << (position * 2u)); - 8001994: 697b ldr r3, [r7, #20] - 8001996: 005b lsls r3, r3, #1 - 8001998: 2203 movs r2, #3 - 800199a: 409a lsls r2, r3 - 800199c: 0013 movs r3, r2 - 800199e: 43da mvns r2, r3 - 80019a0: 693b ldr r3, [r7, #16] - 80019a2: 4013 ands r3, r2 - 80019a4: 613b str r3, [r7, #16] - temp |= ((GPIO_Init->Mode & GPIO_MODE) << (position * 2u)); - 80019a6: 683b ldr r3, [r7, #0] - 80019a8: 685b ldr r3, [r3, #4] - 80019aa: 2203 movs r2, #3 - 80019ac: 401a ands r2, r3 - 80019ae: 697b ldr r3, [r7, #20] - 80019b0: 005b lsls r3, r3, #1 - 80019b2: 409a lsls r2, r3 - 80019b4: 0013 movs r3, r2 - 80019b6: 693a ldr r2, [r7, #16] - 80019b8: 4313 orrs r3, r2 - 80019ba: 613b str r3, [r7, #16] - GPIOx->MODER = temp; - 80019bc: 687b ldr r3, [r7, #4] - 80019be: 693a ldr r2, [r7, #16] - 80019c0: 601a str r2, [r3, #0] - - /*--------------------- EXTI Mode Configuration ------------------------*/ - /* Configure the External Interrupt or event for the current IO */ - if ((GPIO_Init->Mode & EXTI_MODE) != 0x00u) - 80019c2: 683b ldr r3, [r7, #0] - 80019c4: 685a ldr r2, [r3, #4] - 80019c6: 23c0 movs r3, #192 @ 0xc0 - 80019c8: 029b lsls r3, r3, #10 - 80019ca: 4013 ands r3, r2 - 80019cc: d100 bne.n 80019d0 - 80019ce: e092 b.n 8001af6 - { - temp = EXTI->EXTICR[position >> 2u]; - 80019d0: 4a50 ldr r2, [pc, #320] @ (8001b14 ) - 80019d2: 697b ldr r3, [r7, #20] - 80019d4: 089b lsrs r3, r3, #2 - 80019d6: 3318 adds r3, #24 - 80019d8: 009b lsls r3, r3, #2 - 80019da: 589b ldr r3, [r3, r2] - 80019dc: 613b str r3, [r7, #16] - temp &= ~(0x0FuL << (8u * (position & 0x03u))); - 80019de: 697b ldr r3, [r7, #20] - 80019e0: 2203 movs r2, #3 - 80019e2: 4013 ands r3, r2 - 80019e4: 00db lsls r3, r3, #3 - 80019e6: 220f movs r2, #15 + 80019e2: 697b ldr r3, [r7, #20] + 80019e4: 005b lsls r3, r3, #1 + 80019e6: 2203 movs r2, #3 80019e8: 409a lsls r2, r3 80019ea: 0013 movs r3, r2 80019ec: 43da mvns r2, r3 80019ee: 693b ldr r3, [r7, #16] 80019f0: 4013 ands r3, r2 80019f2: 613b str r3, [r7, #16] - temp |= (GPIO_GET_INDEX(GPIOx) << (8u * (position & 0x03u))); - 80019f4: 687a ldr r2, [r7, #4] - 80019f6: 23a0 movs r3, #160 @ 0xa0 - 80019f8: 05db lsls r3, r3, #23 - 80019fa: 429a cmp r2, r3 - 80019fc: d013 beq.n 8001a26 - 80019fe: 687b ldr r3, [r7, #4] - 8001a00: 4a45 ldr r2, [pc, #276] @ (8001b18 ) - 8001a02: 4293 cmp r3, r2 - 8001a04: d00d beq.n 8001a22 + temp |= (GPIO_Init->Speed << (position * 2u)); + 80019f4: 683b ldr r3, [r7, #0] + 80019f6: 68da ldr r2, [r3, #12] + 80019f8: 697b ldr r3, [r7, #20] + 80019fa: 005b lsls r3, r3, #1 + 80019fc: 409a lsls r2, r3 + 80019fe: 0013 movs r3, r2 + 8001a00: 693a ldr r2, [r7, #16] + 8001a02: 4313 orrs r3, r2 + 8001a04: 613b str r3, [r7, #16] + GPIOx->OSPEEDR = temp; 8001a06: 687b ldr r3, [r7, #4] - 8001a08: 4a44 ldr r2, [pc, #272] @ (8001b1c ) - 8001a0a: 4293 cmp r3, r2 - 8001a0c: d007 beq.n 8001a1e - 8001a0e: 687b ldr r3, [r7, #4] - 8001a10: 4a43 ldr r2, [pc, #268] @ (8001b20 ) - 8001a12: 4293 cmp r3, r2 - 8001a14: d101 bne.n 8001a1a - 8001a16: 2303 movs r3, #3 - 8001a18: e006 b.n 8001a28 - 8001a1a: 2305 movs r3, #5 - 8001a1c: e004 b.n 8001a28 - 8001a1e: 2302 movs r3, #2 - 8001a20: e002 b.n 8001a28 - 8001a22: 2301 movs r3, #1 - 8001a24: e000 b.n 8001a28 - 8001a26: 2300 movs r3, #0 - 8001a28: 697a ldr r2, [r7, #20] - 8001a2a: 2103 movs r1, #3 - 8001a2c: 400a ands r2, r1 - 8001a2e: 00d2 lsls r2, r2, #3 - 8001a30: 4093 lsls r3, r2 + 8001a08: 693a ldr r2, [r7, #16] + 8001a0a: 609a str r2, [r3, #8] + + /* Configure the IO Output Type */ + temp = GPIOx->OTYPER; + 8001a0c: 687b ldr r3, [r7, #4] + 8001a0e: 685b ldr r3, [r3, #4] + 8001a10: 613b str r3, [r7, #16] + temp &= ~(GPIO_OTYPER_OT0 << position) ; + 8001a12: 2201 movs r2, #1 + 8001a14: 697b ldr r3, [r7, #20] + 8001a16: 409a lsls r2, r3 + 8001a18: 0013 movs r3, r2 + 8001a1a: 43da mvns r2, r3 + 8001a1c: 693b ldr r3, [r7, #16] + 8001a1e: 4013 ands r3, r2 + 8001a20: 613b str r3, [r7, #16] + temp |= (((GPIO_Init->Mode & OUTPUT_TYPE) >> OUTPUT_TYPE_Pos) << position); + 8001a22: 683b ldr r3, [r7, #0] + 8001a24: 685b ldr r3, [r3, #4] + 8001a26: 091b lsrs r3, r3, #4 + 8001a28: 2201 movs r2, #1 + 8001a2a: 401a ands r2, r3 + 8001a2c: 697b ldr r3, [r7, #20] + 8001a2e: 409a lsls r2, r3 + 8001a30: 0013 movs r3, r2 8001a32: 693a ldr r2, [r7, #16] 8001a34: 4313 orrs r3, r2 8001a36: 613b str r3, [r7, #16] + GPIOx->OTYPER = temp; + 8001a38: 687b ldr r3, [r7, #4] + 8001a3a: 693a ldr r2, [r7, #16] + 8001a3c: 605a str r2, [r3, #4] + } + + if ((GPIO_Init->Mode & GPIO_MODE) != MODE_ANALOG) + 8001a3e: 683b ldr r3, [r7, #0] + 8001a40: 685b ldr r3, [r3, #4] + 8001a42: 2203 movs r2, #3 + 8001a44: 4013 ands r3, r2 + 8001a46: 2b03 cmp r3, #3 + 8001a48: d017 beq.n 8001a7a + { + /* Check the Pull parameter */ + assert_param(IS_GPIO_PULL(GPIO_Init->Pull)); + + /* Activate the Pull-up or Pull down resistor for the current IO */ + temp = GPIOx->PUPDR; + 8001a4a: 687b ldr r3, [r7, #4] + 8001a4c: 68db ldr r3, [r3, #12] + 8001a4e: 613b str r3, [r7, #16] + temp &= ~(GPIO_PUPDR_PUPD0 << (position * 2u)); + 8001a50: 697b ldr r3, [r7, #20] + 8001a52: 005b lsls r3, r3, #1 + 8001a54: 2203 movs r2, #3 + 8001a56: 409a lsls r2, r3 + 8001a58: 0013 movs r3, r2 + 8001a5a: 43da mvns r2, r3 + 8001a5c: 693b ldr r3, [r7, #16] + 8001a5e: 4013 ands r3, r2 + 8001a60: 613b str r3, [r7, #16] + temp |= ((GPIO_Init->Pull) << (position * 2u)); + 8001a62: 683b ldr r3, [r7, #0] + 8001a64: 689a ldr r2, [r3, #8] + 8001a66: 697b ldr r3, [r7, #20] + 8001a68: 005b lsls r3, r3, #1 + 8001a6a: 409a lsls r2, r3 + 8001a6c: 0013 movs r3, r2 + 8001a6e: 693a ldr r2, [r7, #16] + 8001a70: 4313 orrs r3, r2 + 8001a72: 613b str r3, [r7, #16] + GPIOx->PUPDR = temp; + 8001a74: 687b ldr r3, [r7, #4] + 8001a76: 693a ldr r2, [r7, #16] + 8001a78: 60da str r2, [r3, #12] + } + + /* In case of Alternate function mode selection */ + if ((GPIO_Init->Mode & GPIO_MODE) == MODE_AF) + 8001a7a: 683b ldr r3, [r7, #0] + 8001a7c: 685b ldr r3, [r3, #4] + 8001a7e: 2203 movs r2, #3 + 8001a80: 4013 ands r3, r2 + 8001a82: 2b02 cmp r3, #2 + 8001a84: d123 bne.n 8001ace + /* Check the Alternate function parameters */ + assert_param(IS_GPIO_AF_INSTANCE(GPIOx)); + assert_param(IS_GPIO_AF(GPIO_Init->Alternate)); + + /* Configure Alternate function mapped with the current IO */ + temp = GPIOx->AFR[position >> 3u]; + 8001a86: 697b ldr r3, [r7, #20] + 8001a88: 08da lsrs r2, r3, #3 + 8001a8a: 687b ldr r3, [r7, #4] + 8001a8c: 3208 adds r2, #8 + 8001a8e: 0092 lsls r2, r2, #2 + 8001a90: 58d3 ldr r3, [r2, r3] + 8001a92: 613b str r3, [r7, #16] + temp &= ~(0xFu << ((position & 0x07u) * 4u)); + 8001a94: 697b ldr r3, [r7, #20] + 8001a96: 2207 movs r2, #7 + 8001a98: 4013 ands r3, r2 + 8001a9a: 009b lsls r3, r3, #2 + 8001a9c: 220f movs r2, #15 + 8001a9e: 409a lsls r2, r3 + 8001aa0: 0013 movs r3, r2 + 8001aa2: 43da mvns r2, r3 + 8001aa4: 693b ldr r3, [r7, #16] + 8001aa6: 4013 ands r3, r2 + 8001aa8: 613b str r3, [r7, #16] + temp |= ((GPIO_Init->Alternate) << ((position & 0x07u) * 4u)); + 8001aaa: 683b ldr r3, [r7, #0] + 8001aac: 691a ldr r2, [r3, #16] + 8001aae: 697b ldr r3, [r7, #20] + 8001ab0: 2107 movs r1, #7 + 8001ab2: 400b ands r3, r1 + 8001ab4: 009b lsls r3, r3, #2 + 8001ab6: 409a lsls r2, r3 + 8001ab8: 0013 movs r3, r2 + 8001aba: 693a ldr r2, [r7, #16] + 8001abc: 4313 orrs r3, r2 + 8001abe: 613b str r3, [r7, #16] + GPIOx->AFR[position >> 3u] = temp; + 8001ac0: 697b ldr r3, [r7, #20] + 8001ac2: 08da lsrs r2, r3, #3 + 8001ac4: 687b ldr r3, [r7, #4] + 8001ac6: 3208 adds r2, #8 + 8001ac8: 0092 lsls r2, r2, #2 + 8001aca: 6939 ldr r1, [r7, #16] + 8001acc: 50d1 str r1, [r2, r3] + } + + /* Configure IO Direction mode (Input, Output, Alternate or Analog) */ + temp = GPIOx->MODER; + 8001ace: 687b ldr r3, [r7, #4] + 8001ad0: 681b ldr r3, [r3, #0] + 8001ad2: 613b str r3, [r7, #16] + temp &= ~(GPIO_MODER_MODE0 << (position * 2u)); + 8001ad4: 697b ldr r3, [r7, #20] + 8001ad6: 005b lsls r3, r3, #1 + 8001ad8: 2203 movs r2, #3 + 8001ada: 409a lsls r2, r3 + 8001adc: 0013 movs r3, r2 + 8001ade: 43da mvns r2, r3 + 8001ae0: 693b ldr r3, [r7, #16] + 8001ae2: 4013 ands r3, r2 + 8001ae4: 613b str r3, [r7, #16] + temp |= ((GPIO_Init->Mode & GPIO_MODE) << (position * 2u)); + 8001ae6: 683b ldr r3, [r7, #0] + 8001ae8: 685b ldr r3, [r3, #4] + 8001aea: 2203 movs r2, #3 + 8001aec: 401a ands r2, r3 + 8001aee: 697b ldr r3, [r7, #20] + 8001af0: 005b lsls r3, r3, #1 + 8001af2: 409a lsls r2, r3 + 8001af4: 0013 movs r3, r2 + 8001af6: 693a ldr r2, [r7, #16] + 8001af8: 4313 orrs r3, r2 + 8001afa: 613b str r3, [r7, #16] + GPIOx->MODER = temp; + 8001afc: 687b ldr r3, [r7, #4] + 8001afe: 693a ldr r2, [r7, #16] + 8001b00: 601a str r2, [r3, #0] + + /*--------------------- EXTI Mode Configuration ------------------------*/ + /* Configure the External Interrupt or event for the current IO */ + if ((GPIO_Init->Mode & EXTI_MODE) != 0x00u) + 8001b02: 683b ldr r3, [r7, #0] + 8001b04: 685a ldr r2, [r3, #4] + 8001b06: 23c0 movs r3, #192 @ 0xc0 + 8001b08: 029b lsls r3, r3, #10 + 8001b0a: 4013 ands r3, r2 + 8001b0c: d100 bne.n 8001b10 + 8001b0e: e092 b.n 8001c36 + { + temp = EXTI->EXTICR[position >> 2u]; + 8001b10: 4a50 ldr r2, [pc, #320] @ (8001c54 ) + 8001b12: 697b ldr r3, [r7, #20] + 8001b14: 089b lsrs r3, r3, #2 + 8001b16: 3318 adds r3, #24 + 8001b18: 009b lsls r3, r3, #2 + 8001b1a: 589b ldr r3, [r3, r2] + 8001b1c: 613b str r3, [r7, #16] + temp &= ~(0x0FuL << (8u * (position & 0x03u))); + 8001b1e: 697b ldr r3, [r7, #20] + 8001b20: 2203 movs r2, #3 + 8001b22: 4013 ands r3, r2 + 8001b24: 00db lsls r3, r3, #3 + 8001b26: 220f movs r2, #15 + 8001b28: 409a lsls r2, r3 + 8001b2a: 0013 movs r3, r2 + 8001b2c: 43da mvns r2, r3 + 8001b2e: 693b ldr r3, [r7, #16] + 8001b30: 4013 ands r3, r2 + 8001b32: 613b str r3, [r7, #16] + temp |= (GPIO_GET_INDEX(GPIOx) << (8u * (position & 0x03u))); + 8001b34: 687a ldr r2, [r7, #4] + 8001b36: 23a0 movs r3, #160 @ 0xa0 + 8001b38: 05db lsls r3, r3, #23 + 8001b3a: 429a cmp r2, r3 + 8001b3c: d013 beq.n 8001b66 + 8001b3e: 687b ldr r3, [r7, #4] + 8001b40: 4a45 ldr r2, [pc, #276] @ (8001c58 ) + 8001b42: 4293 cmp r3, r2 + 8001b44: d00d beq.n 8001b62 + 8001b46: 687b ldr r3, [r7, #4] + 8001b48: 4a44 ldr r2, [pc, #272] @ (8001c5c ) + 8001b4a: 4293 cmp r3, r2 + 8001b4c: d007 beq.n 8001b5e + 8001b4e: 687b ldr r3, [r7, #4] + 8001b50: 4a43 ldr r2, [pc, #268] @ (8001c60 ) + 8001b52: 4293 cmp r3, r2 + 8001b54: d101 bne.n 8001b5a + 8001b56: 2303 movs r3, #3 + 8001b58: e006 b.n 8001b68 + 8001b5a: 2305 movs r3, #5 + 8001b5c: e004 b.n 8001b68 + 8001b5e: 2302 movs r3, #2 + 8001b60: e002 b.n 8001b68 + 8001b62: 2301 movs r3, #1 + 8001b64: e000 b.n 8001b68 + 8001b66: 2300 movs r3, #0 + 8001b68: 697a ldr r2, [r7, #20] + 8001b6a: 2103 movs r1, #3 + 8001b6c: 400a ands r2, r1 + 8001b6e: 00d2 lsls r2, r2, #3 + 8001b70: 4093 lsls r3, r2 + 8001b72: 693a ldr r2, [r7, #16] + 8001b74: 4313 orrs r3, r2 + 8001b76: 613b str r3, [r7, #16] EXTI->EXTICR[position >> 2u] = temp; - 8001a38: 4936 ldr r1, [pc, #216] @ (8001b14 ) - 8001a3a: 697b ldr r3, [r7, #20] - 8001a3c: 089b lsrs r3, r3, #2 - 8001a3e: 3318 adds r3, #24 - 8001a40: 009b lsls r3, r3, #2 - 8001a42: 693a ldr r2, [r7, #16] - 8001a44: 505a str r2, [r3, r1] + 8001b78: 4936 ldr r1, [pc, #216] @ (8001c54 ) + 8001b7a: 697b ldr r3, [r7, #20] + 8001b7c: 089b lsrs r3, r3, #2 + 8001b7e: 3318 adds r3, #24 + 8001b80: 009b lsls r3, r3, #2 + 8001b82: 693a ldr r2, [r7, #16] + 8001b84: 505a str r2, [r3, r1] /* Clear Rising Falling edge configuration */ temp = EXTI->RTSR1; - 8001a46: 4b33 ldr r3, [pc, #204] @ (8001b14 ) - 8001a48: 681b ldr r3, [r3, #0] - 8001a4a: 613b str r3, [r7, #16] + 8001b86: 4b33 ldr r3, [pc, #204] @ (8001c54 ) + 8001b88: 681b ldr r3, [r3, #0] + 8001b8a: 613b str r3, [r7, #16] temp &= ~(iocurrent); - 8001a4c: 68fb ldr r3, [r7, #12] - 8001a4e: 43da mvns r2, r3 - 8001a50: 693b ldr r3, [r7, #16] - 8001a52: 4013 ands r3, r2 - 8001a54: 613b str r3, [r7, #16] + 8001b8c: 68fb ldr r3, [r7, #12] + 8001b8e: 43da mvns r2, r3 + 8001b90: 693b ldr r3, [r7, #16] + 8001b92: 4013 ands r3, r2 + 8001b94: 613b str r3, [r7, #16] if ((GPIO_Init->Mode & TRIGGER_RISING) != 0x00u) - 8001a56: 683b ldr r3, [r7, #0] - 8001a58: 685a ldr r2, [r3, #4] - 8001a5a: 2380 movs r3, #128 @ 0x80 - 8001a5c: 035b lsls r3, r3, #13 - 8001a5e: 4013 ands r3, r2 - 8001a60: d003 beq.n 8001a6a + 8001b96: 683b ldr r3, [r7, #0] + 8001b98: 685a ldr r2, [r3, #4] + 8001b9a: 2380 movs r3, #128 @ 0x80 + 8001b9c: 035b lsls r3, r3, #13 + 8001b9e: 4013 ands r3, r2 + 8001ba0: d003 beq.n 8001baa { temp |= iocurrent; - 8001a62: 693a ldr r2, [r7, #16] - 8001a64: 68fb ldr r3, [r7, #12] - 8001a66: 4313 orrs r3, r2 - 8001a68: 613b str r3, [r7, #16] + 8001ba2: 693a ldr r2, [r7, #16] + 8001ba4: 68fb ldr r3, [r7, #12] + 8001ba6: 4313 orrs r3, r2 + 8001ba8: 613b str r3, [r7, #16] } EXTI->RTSR1 = temp; - 8001a6a: 4b2a ldr r3, [pc, #168] @ (8001b14 ) - 8001a6c: 693a ldr r2, [r7, #16] - 8001a6e: 601a str r2, [r3, #0] + 8001baa: 4b2a ldr r3, [pc, #168] @ (8001c54 ) + 8001bac: 693a ldr r2, [r7, #16] + 8001bae: 601a str r2, [r3, #0] temp = EXTI->FTSR1; - 8001a70: 4b28 ldr r3, [pc, #160] @ (8001b14 ) - 8001a72: 685b ldr r3, [r3, #4] - 8001a74: 613b str r3, [r7, #16] + 8001bb0: 4b28 ldr r3, [pc, #160] @ (8001c54 ) + 8001bb2: 685b ldr r3, [r3, #4] + 8001bb4: 613b str r3, [r7, #16] temp &= ~(iocurrent); - 8001a76: 68fb ldr r3, [r7, #12] - 8001a78: 43da mvns r2, r3 - 8001a7a: 693b ldr r3, [r7, #16] - 8001a7c: 4013 ands r3, r2 - 8001a7e: 613b str r3, [r7, #16] + 8001bb6: 68fb ldr r3, [r7, #12] + 8001bb8: 43da mvns r2, r3 + 8001bba: 693b ldr r3, [r7, #16] + 8001bbc: 4013 ands r3, r2 + 8001bbe: 613b str r3, [r7, #16] if ((GPIO_Init->Mode & TRIGGER_FALLING) != 0x00u) - 8001a80: 683b ldr r3, [r7, #0] - 8001a82: 685a ldr r2, [r3, #4] - 8001a84: 2380 movs r3, #128 @ 0x80 - 8001a86: 039b lsls r3, r3, #14 - 8001a88: 4013 ands r3, r2 - 8001a8a: d003 beq.n 8001a94 + 8001bc0: 683b ldr r3, [r7, #0] + 8001bc2: 685a ldr r2, [r3, #4] + 8001bc4: 2380 movs r3, #128 @ 0x80 + 8001bc6: 039b lsls r3, r3, #14 + 8001bc8: 4013 ands r3, r2 + 8001bca: d003 beq.n 8001bd4 { temp |= iocurrent; - 8001a8c: 693a ldr r2, [r7, #16] - 8001a8e: 68fb ldr r3, [r7, #12] - 8001a90: 4313 orrs r3, r2 - 8001a92: 613b str r3, [r7, #16] + 8001bcc: 693a ldr r2, [r7, #16] + 8001bce: 68fb ldr r3, [r7, #12] + 8001bd0: 4313 orrs r3, r2 + 8001bd2: 613b str r3, [r7, #16] } EXTI->FTSR1 = temp; - 8001a94: 4b1f ldr r3, [pc, #124] @ (8001b14 ) - 8001a96: 693a ldr r2, [r7, #16] - 8001a98: 605a str r2, [r3, #4] + 8001bd4: 4b1f ldr r3, [pc, #124] @ (8001c54 ) + 8001bd6: 693a ldr r2, [r7, #16] + 8001bd8: 605a str r2, [r3, #4] /* Clear EXTI line configuration */ temp = EXTI->EMR1; - 8001a9a: 4a1e ldr r2, [pc, #120] @ (8001b14 ) - 8001a9c: 2384 movs r3, #132 @ 0x84 - 8001a9e: 58d3 ldr r3, [r2, r3] - 8001aa0: 613b str r3, [r7, #16] + 8001bda: 4a1e ldr r2, [pc, #120] @ (8001c54 ) + 8001bdc: 2384 movs r3, #132 @ 0x84 + 8001bde: 58d3 ldr r3, [r2, r3] + 8001be0: 613b str r3, [r7, #16] temp &= ~(iocurrent); - 8001aa2: 68fb ldr r3, [r7, #12] - 8001aa4: 43da mvns r2, r3 - 8001aa6: 693b ldr r3, [r7, #16] - 8001aa8: 4013 ands r3, r2 - 8001aaa: 613b str r3, [r7, #16] + 8001be2: 68fb ldr r3, [r7, #12] + 8001be4: 43da mvns r2, r3 + 8001be6: 693b ldr r3, [r7, #16] + 8001be8: 4013 ands r3, r2 + 8001bea: 613b str r3, [r7, #16] if ((GPIO_Init->Mode & EXTI_EVT) != 0x00u) - 8001aac: 683b ldr r3, [r7, #0] - 8001aae: 685a ldr r2, [r3, #4] - 8001ab0: 2380 movs r3, #128 @ 0x80 - 8001ab2: 029b lsls r3, r3, #10 - 8001ab4: 4013 ands r3, r2 - 8001ab6: d003 beq.n 8001ac0 + 8001bec: 683b ldr r3, [r7, #0] + 8001bee: 685a ldr r2, [r3, #4] + 8001bf0: 2380 movs r3, #128 @ 0x80 + 8001bf2: 029b lsls r3, r3, #10 + 8001bf4: 4013 ands r3, r2 + 8001bf6: d003 beq.n 8001c00 { temp |= iocurrent; - 8001ab8: 693a ldr r2, [r7, #16] - 8001aba: 68fb ldr r3, [r7, #12] - 8001abc: 4313 orrs r3, r2 - 8001abe: 613b str r3, [r7, #16] + 8001bf8: 693a ldr r2, [r7, #16] + 8001bfa: 68fb ldr r3, [r7, #12] + 8001bfc: 4313 orrs r3, r2 + 8001bfe: 613b str r3, [r7, #16] } EXTI->EMR1 = temp; - 8001ac0: 4914 ldr r1, [pc, #80] @ (8001b14 ) - 8001ac2: 2284 movs r2, #132 @ 0x84 - 8001ac4: 693b ldr r3, [r7, #16] - 8001ac6: 508b str r3, [r1, r2] + 8001c00: 4914 ldr r1, [pc, #80] @ (8001c54 ) + 8001c02: 2284 movs r2, #132 @ 0x84 + 8001c04: 693b ldr r3, [r7, #16] + 8001c06: 508b str r3, [r1, r2] temp = EXTI->IMR1; - 8001ac8: 4a12 ldr r2, [pc, #72] @ (8001b14 ) - 8001aca: 2380 movs r3, #128 @ 0x80 - 8001acc: 58d3 ldr r3, [r2, r3] - 8001ace: 613b str r3, [r7, #16] + 8001c08: 4a12 ldr r2, [pc, #72] @ (8001c54 ) + 8001c0a: 2380 movs r3, #128 @ 0x80 + 8001c0c: 58d3 ldr r3, [r2, r3] + 8001c0e: 613b str r3, [r7, #16] temp &= ~(iocurrent); - 8001ad0: 68fb ldr r3, [r7, #12] - 8001ad2: 43da mvns r2, r3 - 8001ad4: 693b ldr r3, [r7, #16] - 8001ad6: 4013 ands r3, r2 - 8001ad8: 613b str r3, [r7, #16] + 8001c10: 68fb ldr r3, [r7, #12] + 8001c12: 43da mvns r2, r3 + 8001c14: 693b ldr r3, [r7, #16] + 8001c16: 4013 ands r3, r2 + 8001c18: 613b str r3, [r7, #16] if ((GPIO_Init->Mode & EXTI_IT) != 0x00u) - 8001ada: 683b ldr r3, [r7, #0] - 8001adc: 685a ldr r2, [r3, #4] - 8001ade: 2380 movs r3, #128 @ 0x80 - 8001ae0: 025b lsls r3, r3, #9 - 8001ae2: 4013 ands r3, r2 - 8001ae4: d003 beq.n 8001aee + 8001c1a: 683b ldr r3, [r7, #0] + 8001c1c: 685a ldr r2, [r3, #4] + 8001c1e: 2380 movs r3, #128 @ 0x80 + 8001c20: 025b lsls r3, r3, #9 + 8001c22: 4013 ands r3, r2 + 8001c24: d003 beq.n 8001c2e { temp |= iocurrent; - 8001ae6: 693a ldr r2, [r7, #16] - 8001ae8: 68fb ldr r3, [r7, #12] - 8001aea: 4313 orrs r3, r2 - 8001aec: 613b str r3, [r7, #16] + 8001c26: 693a ldr r2, [r7, #16] + 8001c28: 68fb ldr r3, [r7, #12] + 8001c2a: 4313 orrs r3, r2 + 8001c2c: 613b str r3, [r7, #16] } EXTI->IMR1 = temp; - 8001aee: 4909 ldr r1, [pc, #36] @ (8001b14 ) - 8001af0: 2280 movs r2, #128 @ 0x80 - 8001af2: 693b ldr r3, [r7, #16] - 8001af4: 508b str r3, [r1, r2] + 8001c2e: 4909 ldr r1, [pc, #36] @ (8001c54 ) + 8001c30: 2280 movs r2, #128 @ 0x80 + 8001c32: 693b ldr r3, [r7, #16] + 8001c34: 508b str r3, [r1, r2] } } position++; - 8001af6: 697b ldr r3, [r7, #20] - 8001af8: 3301 adds r3, #1 - 8001afa: 617b str r3, [r7, #20] + 8001c36: 697b ldr r3, [r7, #20] + 8001c38: 3301 adds r3, #1 + 8001c3a: 617b str r3, [r7, #20] while (((GPIO_Init->Pin) >> position) != 0x00u) - 8001afc: 683b ldr r3, [r7, #0] - 8001afe: 681a ldr r2, [r3, #0] - 8001b00: 697b ldr r3, [r7, #20] - 8001b02: 40da lsrs r2, r3 - 8001b04: 1e13 subs r3, r2, #0 - 8001b06: d000 beq.n 8001b0a - 8001b08: e6b0 b.n 800186c + 8001c3c: 683b ldr r3, [r7, #0] + 8001c3e: 681a ldr r2, [r3, #0] + 8001c40: 697b ldr r3, [r7, #20] + 8001c42: 40da lsrs r2, r3 + 8001c44: 1e13 subs r3, r2, #0 + 8001c46: d000 beq.n 8001c4a + 8001c48: e6b0 b.n 80019ac } } - 8001b0a: 46c0 nop @ (mov r8, r8) - 8001b0c: 46c0 nop @ (mov r8, r8) - 8001b0e: 46bd mov sp, r7 - 8001b10: b006 add sp, #24 - 8001b12: bd80 pop {r7, pc} - 8001b14: 40021800 .word 0x40021800 - 8001b18: 50000400 .word 0x50000400 - 8001b1c: 50000800 .word 0x50000800 - 8001b20: 50000c00 .word 0x50000c00 + 8001c4a: 46c0 nop @ (mov r8, r8) + 8001c4c: 46c0 nop @ (mov r8, r8) + 8001c4e: 46bd mov sp, r7 + 8001c50: b006 add sp, #24 + 8001c52: bd80 pop {r7, pc} + 8001c54: 40021800 .word 0x40021800 + 8001c58: 50000400 .word 0x50000400 + 8001c5c: 50000800 .word 0x50000800 + 8001c60: 50000c00 .word 0x50000c00 -08001b24 : - * @param GPIO_Pin specifies the port bit to read. - * This parameter can be any combination of GPIO_Pin_x where x can be (0..15). - * @retval The input port pin value. - */ -GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin) -{ - 8001b24: b580 push {r7, lr} - 8001b26: b084 sub sp, #16 - 8001b28: af00 add r7, sp, #0 - 8001b2a: 6078 str r0, [r7, #4] - 8001b2c: 000a movs r2, r1 - 8001b2e: 1cbb adds r3, r7, #2 - 8001b30: 801a strh r2, [r3, #0] - GPIO_PinState bitstatus; - - /* Check the parameters */ - assert_param(IS_GPIO_PIN(GPIO_Pin)); - - if ((GPIOx->IDR & GPIO_Pin) != 0x00u) - 8001b32: 687b ldr r3, [r7, #4] - 8001b34: 691b ldr r3, [r3, #16] - 8001b36: 1cba adds r2, r7, #2 - 8001b38: 8812 ldrh r2, [r2, #0] - 8001b3a: 4013 ands r3, r2 - 8001b3c: d004 beq.n 8001b48 - { - bitstatus = GPIO_PIN_SET; - 8001b3e: 230f movs r3, #15 - 8001b40: 18fb adds r3, r7, r3 - 8001b42: 2201 movs r2, #1 - 8001b44: 701a strb r2, [r3, #0] - 8001b46: e003 b.n 8001b50 - } - else - { - bitstatus = GPIO_PIN_RESET; - 8001b48: 230f movs r3, #15 - 8001b4a: 18fb adds r3, r7, r3 - 8001b4c: 2200 movs r2, #0 - 8001b4e: 701a strb r2, [r3, #0] - } - return bitstatus; - 8001b50: 230f movs r3, #15 - 8001b52: 18fb adds r3, r7, r3 - 8001b54: 781b ldrb r3, [r3, #0] -} - 8001b56: 0018 movs r0, r3 - 8001b58: 46bd mov sp, r7 - 8001b5a: b004 add sp, #16 - 8001b5c: bd80 pop {r7, pc} - -08001b5e : +08001c64 : * @arg GPIO_PIN_RESET: to clear the port pin * @arg GPIO_PIN_SET: to set the port pin * @retval None */ void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState) { - 8001b5e: b580 push {r7, lr} - 8001b60: b082 sub sp, #8 - 8001b62: af00 add r7, sp, #0 - 8001b64: 6078 str r0, [r7, #4] - 8001b66: 0008 movs r0, r1 - 8001b68: 0011 movs r1, r2 - 8001b6a: 1cbb adds r3, r7, #2 - 8001b6c: 1c02 adds r2, r0, #0 - 8001b6e: 801a strh r2, [r3, #0] - 8001b70: 1c7b adds r3, r7, #1 - 8001b72: 1c0a adds r2, r1, #0 - 8001b74: 701a strb r2, [r3, #0] + 8001c64: b580 push {r7, lr} + 8001c66: b082 sub sp, #8 + 8001c68: af00 add r7, sp, #0 + 8001c6a: 6078 str r0, [r7, #4] + 8001c6c: 0008 movs r0, r1 + 8001c6e: 0011 movs r1, r2 + 8001c70: 1cbb adds r3, r7, #2 + 8001c72: 1c02 adds r2, r0, #0 + 8001c74: 801a strh r2, [r3, #0] + 8001c76: 1c7b adds r3, r7, #1 + 8001c78: 1c0a adds r2, r1, #0 + 8001c7a: 701a strb r2, [r3, #0] /* Check the parameters */ assert_param(IS_GPIO_PIN(GPIO_Pin)); assert_param(IS_GPIO_PIN_ACTION(PinState)); if (PinState != GPIO_PIN_RESET) - 8001b76: 1c7b adds r3, r7, #1 - 8001b78: 781b ldrb r3, [r3, #0] - 8001b7a: 2b00 cmp r3, #0 - 8001b7c: d004 beq.n 8001b88 + 8001c7c: 1c7b adds r3, r7, #1 + 8001c7e: 781b ldrb r3, [r3, #0] + 8001c80: 2b00 cmp r3, #0 + 8001c82: d004 beq.n 8001c8e { GPIOx->BSRR = (uint32_t)GPIO_Pin; - 8001b7e: 1cbb adds r3, r7, #2 - 8001b80: 881a ldrh r2, [r3, #0] - 8001b82: 687b ldr r3, [r7, #4] - 8001b84: 619a str r2, [r3, #24] + 8001c84: 1cbb adds r3, r7, #2 + 8001c86: 881a ldrh r2, [r3, #0] + 8001c88: 687b ldr r3, [r7, #4] + 8001c8a: 619a str r2, [r3, #24] } else { GPIOx->BRR = (uint32_t)GPIO_Pin; } } - 8001b86: e003 b.n 8001b90 + 8001c8c: e003 b.n 8001c96 GPIOx->BRR = (uint32_t)GPIO_Pin; - 8001b88: 1cbb adds r3, r7, #2 - 8001b8a: 881a ldrh r2, [r3, #0] - 8001b8c: 687b ldr r3, [r7, #4] - 8001b8e: 629a str r2, [r3, #40] @ 0x28 + 8001c8e: 1cbb adds r3, r7, #2 + 8001c90: 881a ldrh r2, [r3, #0] + 8001c92: 687b ldr r3, [r7, #4] + 8001c94: 629a str r2, [r3, #40] @ 0x28 } - 8001b90: 46c0 nop @ (mov r8, r8) - 8001b92: 46bd mov sp, r7 - 8001b94: b002 add sp, #8 - 8001b96: bd80 pop {r7, pc} + 8001c96: 46c0 nop @ (mov r8, r8) + 8001c98: 46bd mov sp, r7 + 8001c9a: b002 add sp, #8 + 8001c9c: bd80 pop {r7, pc} + ... -08001b98 : +08001ca0 : * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains * the configuration information for the specified I2C. * @retval HAL status */ HAL_StatusTypeDef HAL_I2C_Init(I2C_HandleTypeDef *hi2c) { - 8001b98: b580 push {r7, lr} - 8001b9a: b082 sub sp, #8 - 8001b9c: af00 add r7, sp, #0 - 8001b9e: 6078 str r0, [r7, #4] + 8001ca0: b580 push {r7, lr} + 8001ca2: b082 sub sp, #8 + 8001ca4: af00 add r7, sp, #0 + 8001ca6: 6078 str r0, [r7, #4] /* Check the I2C handle allocation */ if (hi2c == NULL) - 8001ba0: 687b ldr r3, [r7, #4] - 8001ba2: 2b00 cmp r3, #0 - 8001ba4: d101 bne.n 8001baa + 8001ca8: 687b ldr r3, [r7, #4] + 8001caa: 2b00 cmp r3, #0 + 8001cac: d101 bne.n 8001cb2 { return HAL_ERROR; - 8001ba6: 2301 movs r3, #1 - 8001ba8: e08f b.n 8001cca + 8001cae: 2301 movs r3, #1 + 8001cb0: e08f b.n 8001dd2 assert_param(IS_I2C_OWN_ADDRESS2(hi2c->Init.OwnAddress2)); assert_param(IS_I2C_OWN_ADDRESS2_MASK(hi2c->Init.OwnAddress2Masks)); assert_param(IS_I2C_GENERAL_CALL(hi2c->Init.GeneralCallMode)); assert_param(IS_I2C_NO_STRETCH(hi2c->Init.NoStretchMode)); if (hi2c->State == HAL_I2C_STATE_RESET) - 8001baa: 687b ldr r3, [r7, #4] - 8001bac: 2241 movs r2, #65 @ 0x41 - 8001bae: 5c9b ldrb r3, [r3, r2] - 8001bb0: b2db uxtb r3, r3 - 8001bb2: 2b00 cmp r3, #0 - 8001bb4: d107 bne.n 8001bc6 + 8001cb2: 687b ldr r3, [r7, #4] + 8001cb4: 2241 movs r2, #65 @ 0x41 + 8001cb6: 5c9b ldrb r3, [r3, r2] + 8001cb8: b2db uxtb r3, r3 + 8001cba: 2b00 cmp r3, #0 + 8001cbc: d107 bne.n 8001cce { /* Allocate lock resource and initialize it */ hi2c->Lock = HAL_UNLOCKED; - 8001bb6: 687b ldr r3, [r7, #4] - 8001bb8: 2240 movs r2, #64 @ 0x40 - 8001bba: 2100 movs r1, #0 - 8001bbc: 5499 strb r1, [r3, r2] + 8001cbe: 687b ldr r3, [r7, #4] + 8001cc0: 2240 movs r2, #64 @ 0x40 + 8001cc2: 2100 movs r1, #0 + 8001cc4: 5499 strb r1, [r3, r2] /* Init the low level hardware : GPIO, CLOCK, CORTEX...etc */ hi2c->MspInitCallback(hi2c); #else /* Init the low level hardware : GPIO, CLOCK, CORTEX...etc */ HAL_I2C_MspInit(hi2c); - 8001bbe: 687b ldr r3, [r7, #4] - 8001bc0: 0018 movs r0, r3 - 8001bc2: f7ff fa25 bl 8001010 + 8001cc6: 687b ldr r3, [r7, #4] + 8001cc8: 0018 movs r0, r3 + 8001cca: f7ff fa41 bl 8001150 #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ } hi2c->State = HAL_I2C_STATE_BUSY; - 8001bc6: 687b ldr r3, [r7, #4] - 8001bc8: 2241 movs r2, #65 @ 0x41 - 8001bca: 2124 movs r1, #36 @ 0x24 - 8001bcc: 5499 strb r1, [r3, r2] + 8001cce: 687b ldr r3, [r7, #4] + 8001cd0: 2241 movs r2, #65 @ 0x41 + 8001cd2: 2124 movs r1, #36 @ 0x24 + 8001cd4: 5499 strb r1, [r3, r2] /* Disable the selected I2C peripheral */ __HAL_I2C_DISABLE(hi2c); - 8001bce: 687b ldr r3, [r7, #4] - 8001bd0: 681b ldr r3, [r3, #0] - 8001bd2: 681a ldr r2, [r3, #0] - 8001bd4: 687b ldr r3, [r7, #4] - 8001bd6: 681b ldr r3, [r3, #0] - 8001bd8: 2101 movs r1, #1 - 8001bda: 438a bics r2, r1 - 8001bdc: 601a str r2, [r3, #0] + 8001cd6: 687b ldr r3, [r7, #4] + 8001cd8: 681b ldr r3, [r3, #0] + 8001cda: 681a ldr r2, [r3, #0] + 8001cdc: 687b ldr r3, [r7, #4] + 8001cde: 681b ldr r3, [r3, #0] + 8001ce0: 2101 movs r1, #1 + 8001ce2: 438a bics r2, r1 + 8001ce4: 601a str r2, [r3, #0] /*---------------------------- I2Cx TIMINGR Configuration ------------------*/ /* Configure I2Cx: Frequency range */ hi2c->Instance->TIMINGR = hi2c->Init.Timing & TIMING_CLEAR_MASK; - 8001bde: 687b ldr r3, [r7, #4] - 8001be0: 685a ldr r2, [r3, #4] - 8001be2: 687b ldr r3, [r7, #4] - 8001be4: 681b ldr r3, [r3, #0] - 8001be6: 493b ldr r1, [pc, #236] @ (8001cd4 ) - 8001be8: 400a ands r2, r1 - 8001bea: 611a str r2, [r3, #16] + 8001ce6: 687b ldr r3, [r7, #4] + 8001ce8: 685a ldr r2, [r3, #4] + 8001cea: 687b ldr r3, [r7, #4] + 8001cec: 681b ldr r3, [r3, #0] + 8001cee: 493b ldr r1, [pc, #236] @ (8001ddc ) + 8001cf0: 400a ands r2, r1 + 8001cf2: 611a str r2, [r3, #16] /*---------------------------- I2Cx OAR1 Configuration ---------------------*/ /* Disable Own Address1 before set the Own Address1 configuration */ hi2c->Instance->OAR1 &= ~I2C_OAR1_OA1EN; - 8001bec: 687b ldr r3, [r7, #4] - 8001bee: 681b ldr r3, [r3, #0] - 8001bf0: 689a ldr r2, [r3, #8] - 8001bf2: 687b ldr r3, [r7, #4] - 8001bf4: 681b ldr r3, [r3, #0] - 8001bf6: 4938 ldr r1, [pc, #224] @ (8001cd8 ) - 8001bf8: 400a ands r2, r1 - 8001bfa: 609a str r2, [r3, #8] + 8001cf4: 687b ldr r3, [r7, #4] + 8001cf6: 681b ldr r3, [r3, #0] + 8001cf8: 689a ldr r2, [r3, #8] + 8001cfa: 687b ldr r3, [r7, #4] + 8001cfc: 681b ldr r3, [r3, #0] + 8001cfe: 4938 ldr r1, [pc, #224] @ (8001de0 ) + 8001d00: 400a ands r2, r1 + 8001d02: 609a str r2, [r3, #8] /* Configure I2Cx: Own Address1 and ack own address1 mode */ if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_7BIT) - 8001bfc: 687b ldr r3, [r7, #4] - 8001bfe: 68db ldr r3, [r3, #12] - 8001c00: 2b01 cmp r3, #1 - 8001c02: d108 bne.n 8001c16 + 8001d04: 687b ldr r3, [r7, #4] + 8001d06: 68db ldr r3, [r3, #12] + 8001d08: 2b01 cmp r3, #1 + 8001d0a: d108 bne.n 8001d1e { hi2c->Instance->OAR1 = (I2C_OAR1_OA1EN | hi2c->Init.OwnAddress1); - 8001c04: 687b ldr r3, [r7, #4] - 8001c06: 689a ldr r2, [r3, #8] - 8001c08: 687b ldr r3, [r7, #4] - 8001c0a: 681b ldr r3, [r3, #0] - 8001c0c: 2180 movs r1, #128 @ 0x80 - 8001c0e: 0209 lsls r1, r1, #8 - 8001c10: 430a orrs r2, r1 - 8001c12: 609a str r2, [r3, #8] - 8001c14: e007 b.n 8001c26 + 8001d0c: 687b ldr r3, [r7, #4] + 8001d0e: 689a ldr r2, [r3, #8] + 8001d10: 687b ldr r3, [r7, #4] + 8001d12: 681b ldr r3, [r3, #0] + 8001d14: 2180 movs r1, #128 @ 0x80 + 8001d16: 0209 lsls r1, r1, #8 + 8001d18: 430a orrs r2, r1 + 8001d1a: 609a str r2, [r3, #8] + 8001d1c: e007 b.n 8001d2e } else /* I2C_ADDRESSINGMODE_10BIT */ { hi2c->Instance->OAR1 = (I2C_OAR1_OA1EN | I2C_OAR1_OA1MODE | hi2c->Init.OwnAddress1); - 8001c16: 687b ldr r3, [r7, #4] - 8001c18: 689a ldr r2, [r3, #8] - 8001c1a: 687b ldr r3, [r7, #4] - 8001c1c: 681b ldr r3, [r3, #0] - 8001c1e: 2184 movs r1, #132 @ 0x84 - 8001c20: 0209 lsls r1, r1, #8 - 8001c22: 430a orrs r2, r1 - 8001c24: 609a str r2, [r3, #8] + 8001d1e: 687b ldr r3, [r7, #4] + 8001d20: 689a ldr r2, [r3, #8] + 8001d22: 687b ldr r3, [r7, #4] + 8001d24: 681b ldr r3, [r3, #0] + 8001d26: 2184 movs r1, #132 @ 0x84 + 8001d28: 0209 lsls r1, r1, #8 + 8001d2a: 430a orrs r2, r1 + 8001d2c: 609a str r2, [r3, #8] } /*---------------------------- I2Cx CR2 Configuration ----------------------*/ /* Configure I2Cx: Addressing Master mode */ if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_10BIT) - 8001c26: 687b ldr r3, [r7, #4] - 8001c28: 68db ldr r3, [r3, #12] - 8001c2a: 2b02 cmp r3, #2 - 8001c2c: d109 bne.n 8001c42 + 8001d2e: 687b ldr r3, [r7, #4] + 8001d30: 68db ldr r3, [r3, #12] + 8001d32: 2b02 cmp r3, #2 + 8001d34: d109 bne.n 8001d4a { SET_BIT(hi2c->Instance->CR2, I2C_CR2_ADD10); - 8001c2e: 687b ldr r3, [r7, #4] - 8001c30: 681b ldr r3, [r3, #0] - 8001c32: 685a ldr r2, [r3, #4] - 8001c34: 687b ldr r3, [r7, #4] - 8001c36: 681b ldr r3, [r3, #0] - 8001c38: 2180 movs r1, #128 @ 0x80 - 8001c3a: 0109 lsls r1, r1, #4 - 8001c3c: 430a orrs r2, r1 - 8001c3e: 605a str r2, [r3, #4] - 8001c40: e007 b.n 8001c52 + 8001d36: 687b ldr r3, [r7, #4] + 8001d38: 681b ldr r3, [r3, #0] + 8001d3a: 685a ldr r2, [r3, #4] + 8001d3c: 687b ldr r3, [r7, #4] + 8001d3e: 681b ldr r3, [r3, #0] + 8001d40: 2180 movs r1, #128 @ 0x80 + 8001d42: 0109 lsls r1, r1, #4 + 8001d44: 430a orrs r2, r1 + 8001d46: 605a str r2, [r3, #4] + 8001d48: e007 b.n 8001d5a } else { /* Clear the I2C ADD10 bit */ CLEAR_BIT(hi2c->Instance->CR2, I2C_CR2_ADD10); - 8001c42: 687b ldr r3, [r7, #4] - 8001c44: 681b ldr r3, [r3, #0] - 8001c46: 685a ldr r2, [r3, #4] - 8001c48: 687b ldr r3, [r7, #4] - 8001c4a: 681b ldr r3, [r3, #0] - 8001c4c: 4923 ldr r1, [pc, #140] @ (8001cdc ) - 8001c4e: 400a ands r2, r1 - 8001c50: 605a str r2, [r3, #4] + 8001d4a: 687b ldr r3, [r7, #4] + 8001d4c: 681b ldr r3, [r3, #0] + 8001d4e: 685a ldr r2, [r3, #4] + 8001d50: 687b ldr r3, [r7, #4] + 8001d52: 681b ldr r3, [r3, #0] + 8001d54: 4923 ldr r1, [pc, #140] @ (8001de4 ) + 8001d56: 400a ands r2, r1 + 8001d58: 605a str r2, [r3, #4] } /* Enable the AUTOEND by default, and enable NACK (should be disable only during Slave process */ hi2c->Instance->CR2 |= (I2C_CR2_AUTOEND | I2C_CR2_NACK); - 8001c52: 687b ldr r3, [r7, #4] - 8001c54: 681b ldr r3, [r3, #0] - 8001c56: 685a ldr r2, [r3, #4] - 8001c58: 687b ldr r3, [r7, #4] - 8001c5a: 681b ldr r3, [r3, #0] - 8001c5c: 4920 ldr r1, [pc, #128] @ (8001ce0 ) - 8001c5e: 430a orrs r2, r1 - 8001c60: 605a str r2, [r3, #4] + 8001d5a: 687b ldr r3, [r7, #4] + 8001d5c: 681b ldr r3, [r3, #0] + 8001d5e: 685a ldr r2, [r3, #4] + 8001d60: 687b ldr r3, [r7, #4] + 8001d62: 681b ldr r3, [r3, #0] + 8001d64: 4920 ldr r1, [pc, #128] @ (8001de8 ) + 8001d66: 430a orrs r2, r1 + 8001d68: 605a str r2, [r3, #4] /*---------------------------- I2Cx OAR2 Configuration ---------------------*/ /* Disable Own Address2 before set the Own Address2 configuration */ hi2c->Instance->OAR2 &= ~I2C_DUALADDRESS_ENABLE; - 8001c62: 687b ldr r3, [r7, #4] - 8001c64: 681b ldr r3, [r3, #0] - 8001c66: 68da ldr r2, [r3, #12] - 8001c68: 687b ldr r3, [r7, #4] - 8001c6a: 681b ldr r3, [r3, #0] - 8001c6c: 491a ldr r1, [pc, #104] @ (8001cd8 ) - 8001c6e: 400a ands r2, r1 - 8001c70: 60da str r2, [r3, #12] + 8001d6a: 687b ldr r3, [r7, #4] + 8001d6c: 681b ldr r3, [r3, #0] + 8001d6e: 68da ldr r2, [r3, #12] + 8001d70: 687b ldr r3, [r7, #4] + 8001d72: 681b ldr r3, [r3, #0] + 8001d74: 491a ldr r1, [pc, #104] @ (8001de0 ) + 8001d76: 400a ands r2, r1 + 8001d78: 60da str r2, [r3, #12] /* Configure I2Cx: Dual mode and Own Address2 */ hi2c->Instance->OAR2 = (hi2c->Init.DualAddressMode | hi2c->Init.OwnAddress2 | \ - 8001c72: 687b ldr r3, [r7, #4] - 8001c74: 691a ldr r2, [r3, #16] - 8001c76: 687b ldr r3, [r7, #4] - 8001c78: 695b ldr r3, [r3, #20] - 8001c7a: 431a orrs r2, r3 - 8001c7c: 0011 movs r1, r2 + 8001d7a: 687b ldr r3, [r7, #4] + 8001d7c: 691a ldr r2, [r3, #16] + 8001d7e: 687b ldr r3, [r7, #4] + 8001d80: 695b ldr r3, [r3, #20] + 8001d82: 431a orrs r2, r3 + 8001d84: 0011 movs r1, r2 (hi2c->Init.OwnAddress2Masks << 8)); - 8001c7e: 687b ldr r3, [r7, #4] - 8001c80: 699b ldr r3, [r3, #24] - 8001c82: 021a lsls r2, r3, #8 + 8001d86: 687b ldr r3, [r7, #4] + 8001d88: 699b ldr r3, [r3, #24] + 8001d8a: 021a lsls r2, r3, #8 hi2c->Instance->OAR2 = (hi2c->Init.DualAddressMode | hi2c->Init.OwnAddress2 | \ - 8001c84: 687b ldr r3, [r7, #4] - 8001c86: 681b ldr r3, [r3, #0] - 8001c88: 430a orrs r2, r1 - 8001c8a: 60da str r2, [r3, #12] + 8001d8c: 687b ldr r3, [r7, #4] + 8001d8e: 681b ldr r3, [r3, #0] + 8001d90: 430a orrs r2, r1 + 8001d92: 60da str r2, [r3, #12] /*---------------------------- I2Cx CR1 Configuration ----------------------*/ /* Configure I2Cx: Generalcall and NoStretch mode */ hi2c->Instance->CR1 = (hi2c->Init.GeneralCallMode | hi2c->Init.NoStretchMode); - 8001c8c: 687b ldr r3, [r7, #4] - 8001c8e: 69d9 ldr r1, [r3, #28] - 8001c90: 687b ldr r3, [r7, #4] - 8001c92: 6a1a ldr r2, [r3, #32] - 8001c94: 687b ldr r3, [r7, #4] - 8001c96: 681b ldr r3, [r3, #0] - 8001c98: 430a orrs r2, r1 - 8001c9a: 601a str r2, [r3, #0] + 8001d94: 687b ldr r3, [r7, #4] + 8001d96: 69d9 ldr r1, [r3, #28] + 8001d98: 687b ldr r3, [r7, #4] + 8001d9a: 6a1a ldr r2, [r3, #32] + 8001d9c: 687b ldr r3, [r7, #4] + 8001d9e: 681b ldr r3, [r3, #0] + 8001da0: 430a orrs r2, r1 + 8001da2: 601a str r2, [r3, #0] /* Enable the selected I2C peripheral */ __HAL_I2C_ENABLE(hi2c); - 8001c9c: 687b ldr r3, [r7, #4] - 8001c9e: 681b ldr r3, [r3, #0] - 8001ca0: 681a ldr r2, [r3, #0] - 8001ca2: 687b ldr r3, [r7, #4] - 8001ca4: 681b ldr r3, [r3, #0] - 8001ca6: 2101 movs r1, #1 - 8001ca8: 430a orrs r2, r1 - 8001caa: 601a str r2, [r3, #0] + 8001da4: 687b ldr r3, [r7, #4] + 8001da6: 681b ldr r3, [r3, #0] + 8001da8: 681a ldr r2, [r3, #0] + 8001daa: 687b ldr r3, [r7, #4] + 8001dac: 681b ldr r3, [r3, #0] + 8001dae: 2101 movs r1, #1 + 8001db0: 430a orrs r2, r1 + 8001db2: 601a str r2, [r3, #0] hi2c->ErrorCode = HAL_I2C_ERROR_NONE; - 8001cac: 687b ldr r3, [r7, #4] - 8001cae: 2200 movs r2, #0 - 8001cb0: 645a str r2, [r3, #68] @ 0x44 + 8001db4: 687b ldr r3, [r7, #4] + 8001db6: 2200 movs r2, #0 + 8001db8: 645a str r2, [r3, #68] @ 0x44 hi2c->State = HAL_I2C_STATE_READY; - 8001cb2: 687b ldr r3, [r7, #4] - 8001cb4: 2241 movs r2, #65 @ 0x41 - 8001cb6: 2120 movs r1, #32 - 8001cb8: 5499 strb r1, [r3, r2] + 8001dba: 687b ldr r3, [r7, #4] + 8001dbc: 2241 movs r2, #65 @ 0x41 + 8001dbe: 2120 movs r1, #32 + 8001dc0: 5499 strb r1, [r3, r2] hi2c->PreviousState = I2C_STATE_NONE; - 8001cba: 687b ldr r3, [r7, #4] - 8001cbc: 2200 movs r2, #0 - 8001cbe: 631a str r2, [r3, #48] @ 0x30 + 8001dc2: 687b ldr r3, [r7, #4] + 8001dc4: 2200 movs r2, #0 + 8001dc6: 631a str r2, [r3, #48] @ 0x30 hi2c->Mode = HAL_I2C_MODE_NONE; - 8001cc0: 687b ldr r3, [r7, #4] - 8001cc2: 2242 movs r2, #66 @ 0x42 - 8001cc4: 2100 movs r1, #0 - 8001cc6: 5499 strb r1, [r3, r2] + 8001dc8: 687b ldr r3, [r7, #4] + 8001dca: 2242 movs r2, #66 @ 0x42 + 8001dcc: 2100 movs r1, #0 + 8001dce: 5499 strb r1, [r3, r2] return HAL_OK; - 8001cc8: 2300 movs r3, #0 + 8001dd0: 2300 movs r3, #0 } - 8001cca: 0018 movs r0, r3 - 8001ccc: 46bd mov sp, r7 - 8001cce: b002 add sp, #8 - 8001cd0: bd80 pop {r7, pc} - 8001cd2: 46c0 nop @ (mov r8, r8) - 8001cd4: f0ffffff .word 0xf0ffffff - 8001cd8: ffff7fff .word 0xffff7fff - 8001cdc: fffff7ff .word 0xfffff7ff - 8001ce0: 02008000 .word 0x02008000 + 8001dd2: 0018 movs r0, r3 + 8001dd4: 46bd mov sp, r7 + 8001dd6: b002 add sp, #8 + 8001dd8: bd80 pop {r7, pc} + 8001dda: 46c0 nop @ (mov r8, r8) + 8001ddc: f0ffffff .word 0xf0ffffff + 8001de0: ffff7fff .word 0xffff7fff + 8001de4: fffff7ff .word 0xfffff7ff + 8001de8: 02008000 .word 0x02008000 -08001ce4 : - * @param pData Pointer to data buffer - * @param Size Amount of data to be sent - * @retval HAL status - */ -HAL_StatusTypeDef HAL_I2C_Slave_Receive_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size) -{ - 8001ce4: b580 push {r7, lr} - 8001ce6: b084 sub sp, #16 - 8001ce8: af00 add r7, sp, #0 - 8001cea: 60f8 str r0, [r7, #12] - 8001cec: 60b9 str r1, [r7, #8] - 8001cee: 1dbb adds r3, r7, #6 - 8001cf0: 801a strh r2, [r3, #0] - if (hi2c->State == HAL_I2C_STATE_READY) - 8001cf2: 68fb ldr r3, [r7, #12] - 8001cf4: 2241 movs r2, #65 @ 0x41 - 8001cf6: 5c9b ldrb r3, [r3, r2] - 8001cf8: b2db uxtb r3, r3 - 8001cfa: 2b20 cmp r3, #32 - 8001cfc: d13b bne.n 8001d76 - { - /* Process Locked */ - __HAL_LOCK(hi2c); - 8001cfe: 68fb ldr r3, [r7, #12] - 8001d00: 2240 movs r2, #64 @ 0x40 - 8001d02: 5c9b ldrb r3, [r3, r2] - 8001d04: 2b01 cmp r3, #1 - 8001d06: d101 bne.n 8001d0c - 8001d08: 2302 movs r3, #2 - 8001d0a: e035 b.n 8001d78 - 8001d0c: 68fb ldr r3, [r7, #12] - 8001d0e: 2240 movs r2, #64 @ 0x40 - 8001d10: 2101 movs r1, #1 - 8001d12: 5499 strb r1, [r3, r2] - - hi2c->State = HAL_I2C_STATE_BUSY_RX; - 8001d14: 68fb ldr r3, [r7, #12] - 8001d16: 2241 movs r2, #65 @ 0x41 - 8001d18: 2122 movs r1, #34 @ 0x22 - 8001d1a: 5499 strb r1, [r3, r2] - hi2c->Mode = HAL_I2C_MODE_SLAVE; - 8001d1c: 68fb ldr r3, [r7, #12] - 8001d1e: 2242 movs r2, #66 @ 0x42 - 8001d20: 2120 movs r1, #32 - 8001d22: 5499 strb r1, [r3, r2] - hi2c->ErrorCode = HAL_I2C_ERROR_NONE; - 8001d24: 68fb ldr r3, [r7, #12] - 8001d26: 2200 movs r2, #0 - 8001d28: 645a str r2, [r3, #68] @ 0x44 - - /* Enable Address Acknowledge */ - hi2c->Instance->CR2 &= ~I2C_CR2_NACK; - 8001d2a: 68fb ldr r3, [r7, #12] - 8001d2c: 681b ldr r3, [r3, #0] - 8001d2e: 685a ldr r2, [r3, #4] - 8001d30: 68fb ldr r3, [r7, #12] - 8001d32: 681b ldr r3, [r3, #0] - 8001d34: 4912 ldr r1, [pc, #72] @ (8001d80 ) - 8001d36: 400a ands r2, r1 - 8001d38: 605a str r2, [r3, #4] - - /* Prepare transfer parameters */ - hi2c->pBuffPtr = pData; - 8001d3a: 68fb ldr r3, [r7, #12] - 8001d3c: 68ba ldr r2, [r7, #8] - 8001d3e: 625a str r2, [r3, #36] @ 0x24 - hi2c->XferCount = Size; - 8001d40: 68fb ldr r3, [r7, #12] - 8001d42: 1dba adds r2, r7, #6 - 8001d44: 8812 ldrh r2, [r2, #0] - 8001d46: 855a strh r2, [r3, #42] @ 0x2a - hi2c->XferSize = hi2c->XferCount; - 8001d48: 68fb ldr r3, [r7, #12] - 8001d4a: 8d5b ldrh r3, [r3, #42] @ 0x2a - 8001d4c: b29a uxth r2, r3 - 8001d4e: 68fb ldr r3, [r7, #12] - 8001d50: 851a strh r2, [r3, #40] @ 0x28 - hi2c->XferOptions = I2C_NO_OPTION_FRAME; - 8001d52: 68fb ldr r3, [r7, #12] - 8001d54: 4a0b ldr r2, [pc, #44] @ (8001d84 ) - 8001d56: 62da str r2, [r3, #44] @ 0x2c - hi2c->XferISR = I2C_Slave_ISR_IT; - 8001d58: 68fb ldr r3, [r7, #12] - 8001d5a: 4a0b ldr r2, [pc, #44] @ (8001d88 ) - 8001d5c: 635a str r2, [r3, #52] @ 0x34 - - /* Process Unlocked */ - __HAL_UNLOCK(hi2c); - 8001d5e: 68fb ldr r3, [r7, #12] - 8001d60: 2240 movs r2, #64 @ 0x40 - 8001d62: 2100 movs r1, #0 - 8001d64: 5499 strb r1, [r3, r2] - - /* Enable ERR, TC, STOP, NACK, RXI interrupt */ - /* possible to enable all of these */ - /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | - I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ - I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_LISTEN_IT); - 8001d66: 4a09 ldr r2, [pc, #36] @ (8001d8c ) - 8001d68: 68fb ldr r3, [r7, #12] - 8001d6a: 0011 movs r1, r2 - 8001d6c: 0018 movs r0, r3 - 8001d6e: f001 fa81 bl 8003274 - - return HAL_OK; - 8001d72: 2300 movs r3, #0 - 8001d74: e000 b.n 8001d78 - } - else - { - return HAL_BUSY; - 8001d76: 2302 movs r3, #2 - } -} - 8001d78: 0018 movs r0, r3 - 8001d7a: 46bd mov sp, r7 - 8001d7c: b004 add sp, #16 - 8001d7e: bd80 pop {r7, pc} - 8001d80: ffff7fff .word 0xffff7fff - 8001d84: ffff0000 .word 0xffff0000 - 8001d88: 08001f19 .word 0x08001f19 - 8001d8c: 00008002 .word 0x00008002 - -08001d90 : +08001dec : * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains * the configuration information for the specified I2C. * @retval None */ void HAL_I2C_EV_IRQHandler(I2C_HandleTypeDef *hi2c) /* Derogation MISRAC2012-Rule-8.13 */ { - 8001d90: b580 push {r7, lr} - 8001d92: b084 sub sp, #16 - 8001d94: af00 add r7, sp, #0 - 8001d96: 6078 str r0, [r7, #4] + 8001dec: b580 push {r7, lr} + 8001dee: b084 sub sp, #16 + 8001df0: af00 add r7, sp, #0 + 8001df2: 6078 str r0, [r7, #4] /* Get current IT Flags and IT sources value */ uint32_t itflags = READ_REG(hi2c->Instance->ISR); - 8001d98: 687b ldr r3, [r7, #4] - 8001d9a: 681b ldr r3, [r3, #0] - 8001d9c: 699b ldr r3, [r3, #24] - 8001d9e: 60fb str r3, [r7, #12] + 8001df4: 687b ldr r3, [r7, #4] + 8001df6: 681b ldr r3, [r3, #0] + 8001df8: 699b ldr r3, [r3, #24] + 8001dfa: 60fb str r3, [r7, #12] uint32_t itsources = READ_REG(hi2c->Instance->CR1); - 8001da0: 687b ldr r3, [r7, #4] - 8001da2: 681b ldr r3, [r3, #0] - 8001da4: 681b ldr r3, [r3, #0] - 8001da6: 60bb str r3, [r7, #8] + 8001dfc: 687b ldr r3, [r7, #4] + 8001dfe: 681b ldr r3, [r3, #0] + 8001e00: 681b ldr r3, [r3, #0] + 8001e02: 60bb str r3, [r7, #8] /* I2C events treatment -------------------------------------*/ if (hi2c->XferISR != NULL) - 8001da8: 687b ldr r3, [r7, #4] - 8001daa: 6b5b ldr r3, [r3, #52] @ 0x34 - 8001dac: 2b00 cmp r3, #0 - 8001dae: d005 beq.n 8001dbc + 8001e04: 687b ldr r3, [r7, #4] + 8001e06: 6b5b ldr r3, [r3, #52] @ 0x34 + 8001e08: 2b00 cmp r3, #0 + 8001e0a: d005 beq.n 8001e18 { hi2c->XferISR(hi2c, itflags, itsources); - 8001db0: 687b ldr r3, [r7, #4] - 8001db2: 6b5b ldr r3, [r3, #52] @ 0x34 - 8001db4: 68ba ldr r2, [r7, #8] - 8001db6: 68f9 ldr r1, [r7, #12] - 8001db8: 6878 ldr r0, [r7, #4] - 8001dba: 4798 blx r3 + 8001e0c: 687b ldr r3, [r7, #4] + 8001e0e: 6b5b ldr r3, [r3, #52] @ 0x34 + 8001e10: 68ba ldr r2, [r7, #8] + 8001e12: 68f9 ldr r1, [r7, #12] + 8001e14: 6878 ldr r0, [r7, #4] + 8001e16: 4798 blx r3 } } - 8001dbc: 46c0 nop @ (mov r8, r8) - 8001dbe: 46bd mov sp, r7 - 8001dc0: b004 add sp, #16 - 8001dc2: bd80 pop {r7, pc} + 8001e18: 46c0 nop @ (mov r8, r8) + 8001e1a: 46bd mov sp, r7 + 8001e1c: b004 add sp, #16 + 8001e1e: bd80 pop {r7, pc} -08001dc4 : +08001e20 : * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains * the configuration information for the specified I2C. * @retval None */ void HAL_I2C_ER_IRQHandler(I2C_HandleTypeDef *hi2c) { - 8001dc4: b580 push {r7, lr} - 8001dc6: b086 sub sp, #24 - 8001dc8: af00 add r7, sp, #0 - 8001dca: 6078 str r0, [r7, #4] + 8001e20: b580 push {r7, lr} + 8001e22: b086 sub sp, #24 + 8001e24: af00 add r7, sp, #0 + 8001e26: 6078 str r0, [r7, #4] uint32_t itflags = READ_REG(hi2c->Instance->ISR); - 8001dcc: 687b ldr r3, [r7, #4] - 8001dce: 681b ldr r3, [r3, #0] - 8001dd0: 699b ldr r3, [r3, #24] - 8001dd2: 617b str r3, [r7, #20] + 8001e28: 687b ldr r3, [r7, #4] + 8001e2a: 681b ldr r3, [r3, #0] + 8001e2c: 699b ldr r3, [r3, #24] + 8001e2e: 617b str r3, [r7, #20] uint32_t itsources = READ_REG(hi2c->Instance->CR1); - 8001dd4: 687b ldr r3, [r7, #4] - 8001dd6: 681b ldr r3, [r3, #0] - 8001dd8: 681b ldr r3, [r3, #0] - 8001dda: 613b str r3, [r7, #16] + 8001e30: 687b ldr r3, [r7, #4] + 8001e32: 681b ldr r3, [r3, #0] + 8001e34: 681b ldr r3, [r3, #0] + 8001e36: 613b str r3, [r7, #16] uint32_t tmperror; /* I2C Bus error interrupt occurred ------------------------------------*/ if ((I2C_CHECK_FLAG(itflags, I2C_FLAG_BERR) != RESET) && \ - 8001ddc: 697a ldr r2, [r7, #20] - 8001dde: 2380 movs r3, #128 @ 0x80 - 8001de0: 005b lsls r3, r3, #1 - 8001de2: 4013 ands r3, r2 - 8001de4: d00e beq.n 8001e04 + 8001e38: 697a ldr r2, [r7, #20] + 8001e3a: 2380 movs r3, #128 @ 0x80 + 8001e3c: 005b lsls r3, r3, #1 + 8001e3e: 4013 ands r3, r2 + 8001e40: d00e beq.n 8001e60 (I2C_CHECK_IT_SOURCE(itsources, I2C_IT_ERRI) != RESET)) - 8001de6: 693b ldr r3, [r7, #16] - 8001de8: 2280 movs r2, #128 @ 0x80 - 8001dea: 4013 ands r3, r2 + 8001e42: 693b ldr r3, [r7, #16] + 8001e44: 2280 movs r2, #128 @ 0x80 + 8001e46: 4013 ands r3, r2 if ((I2C_CHECK_FLAG(itflags, I2C_FLAG_BERR) != RESET) && \ - 8001dec: d00a beq.n 8001e04 + 8001e48: d00a beq.n 8001e60 { hi2c->ErrorCode |= HAL_I2C_ERROR_BERR; - 8001dee: 687b ldr r3, [r7, #4] - 8001df0: 6c5b ldr r3, [r3, #68] @ 0x44 - 8001df2: 2201 movs r2, #1 - 8001df4: 431a orrs r2, r3 - 8001df6: 687b ldr r3, [r7, #4] - 8001df8: 645a str r2, [r3, #68] @ 0x44 + 8001e4a: 687b ldr r3, [r7, #4] + 8001e4c: 6c5b ldr r3, [r3, #68] @ 0x44 + 8001e4e: 2201 movs r2, #1 + 8001e50: 431a orrs r2, r3 + 8001e52: 687b ldr r3, [r7, #4] + 8001e54: 645a str r2, [r3, #68] @ 0x44 /* Clear BERR flag */ __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_BERR); - 8001dfa: 687b ldr r3, [r7, #4] - 8001dfc: 681b ldr r3, [r3, #0] - 8001dfe: 2280 movs r2, #128 @ 0x80 - 8001e00: 0052 lsls r2, r2, #1 - 8001e02: 61da str r2, [r3, #28] + 8001e56: 687b ldr r3, [r7, #4] + 8001e58: 681b ldr r3, [r3, #0] + 8001e5a: 2280 movs r2, #128 @ 0x80 + 8001e5c: 0052 lsls r2, r2, #1 + 8001e5e: 61da str r2, [r3, #28] } /* I2C Over-Run/Under-Run interrupt occurred ----------------------------------------*/ if ((I2C_CHECK_FLAG(itflags, I2C_FLAG_OVR) != RESET) && \ - 8001e04: 697a ldr r2, [r7, #20] - 8001e06: 2380 movs r3, #128 @ 0x80 - 8001e08: 00db lsls r3, r3, #3 - 8001e0a: 4013 ands r3, r2 - 8001e0c: d00e beq.n 8001e2c + 8001e60: 697a ldr r2, [r7, #20] + 8001e62: 2380 movs r3, #128 @ 0x80 + 8001e64: 00db lsls r3, r3, #3 + 8001e66: 4013 ands r3, r2 + 8001e68: d00e beq.n 8001e88 (I2C_CHECK_IT_SOURCE(itsources, I2C_IT_ERRI) != RESET)) - 8001e0e: 693b ldr r3, [r7, #16] - 8001e10: 2280 movs r2, #128 @ 0x80 - 8001e12: 4013 ands r3, r2 + 8001e6a: 693b ldr r3, [r7, #16] + 8001e6c: 2280 movs r2, #128 @ 0x80 + 8001e6e: 4013 ands r3, r2 if ((I2C_CHECK_FLAG(itflags, I2C_FLAG_OVR) != RESET) && \ - 8001e14: d00a beq.n 8001e2c + 8001e70: d00a beq.n 8001e88 { hi2c->ErrorCode |= HAL_I2C_ERROR_OVR; - 8001e16: 687b ldr r3, [r7, #4] - 8001e18: 6c5b ldr r3, [r3, #68] @ 0x44 - 8001e1a: 2208 movs r2, #8 - 8001e1c: 431a orrs r2, r3 - 8001e1e: 687b ldr r3, [r7, #4] - 8001e20: 645a str r2, [r3, #68] @ 0x44 + 8001e72: 687b ldr r3, [r7, #4] + 8001e74: 6c5b ldr r3, [r3, #68] @ 0x44 + 8001e76: 2208 movs r2, #8 + 8001e78: 431a orrs r2, r3 + 8001e7a: 687b ldr r3, [r7, #4] + 8001e7c: 645a str r2, [r3, #68] @ 0x44 /* Clear OVR flag */ __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_OVR); - 8001e22: 687b ldr r3, [r7, #4] - 8001e24: 681b ldr r3, [r3, #0] - 8001e26: 2280 movs r2, #128 @ 0x80 - 8001e28: 00d2 lsls r2, r2, #3 - 8001e2a: 61da str r2, [r3, #28] + 8001e7e: 687b ldr r3, [r7, #4] + 8001e80: 681b ldr r3, [r3, #0] + 8001e82: 2280 movs r2, #128 @ 0x80 + 8001e84: 00d2 lsls r2, r2, #3 + 8001e86: 61da str r2, [r3, #28] } /* I2C Arbitration Loss error interrupt occurred -------------------------------------*/ if ((I2C_CHECK_FLAG(itflags, I2C_FLAG_ARLO) != RESET) && \ - 8001e2c: 697a ldr r2, [r7, #20] - 8001e2e: 2380 movs r3, #128 @ 0x80 - 8001e30: 009b lsls r3, r3, #2 - 8001e32: 4013 ands r3, r2 - 8001e34: d00e beq.n 8001e54 + 8001e88: 697a ldr r2, [r7, #20] + 8001e8a: 2380 movs r3, #128 @ 0x80 + 8001e8c: 009b lsls r3, r3, #2 + 8001e8e: 4013 ands r3, r2 + 8001e90: d00e beq.n 8001eb0 (I2C_CHECK_IT_SOURCE(itsources, I2C_IT_ERRI) != RESET)) - 8001e36: 693b ldr r3, [r7, #16] - 8001e38: 2280 movs r2, #128 @ 0x80 - 8001e3a: 4013 ands r3, r2 + 8001e92: 693b ldr r3, [r7, #16] + 8001e94: 2280 movs r2, #128 @ 0x80 + 8001e96: 4013 ands r3, r2 if ((I2C_CHECK_FLAG(itflags, I2C_FLAG_ARLO) != RESET) && \ - 8001e3c: d00a beq.n 8001e54 + 8001e98: d00a beq.n 8001eb0 { hi2c->ErrorCode |= HAL_I2C_ERROR_ARLO; - 8001e3e: 687b ldr r3, [r7, #4] - 8001e40: 6c5b ldr r3, [r3, #68] @ 0x44 - 8001e42: 2202 movs r2, #2 - 8001e44: 431a orrs r2, r3 - 8001e46: 687b ldr r3, [r7, #4] - 8001e48: 645a str r2, [r3, #68] @ 0x44 + 8001e9a: 687b ldr r3, [r7, #4] + 8001e9c: 6c5b ldr r3, [r3, #68] @ 0x44 + 8001e9e: 2202 movs r2, #2 + 8001ea0: 431a orrs r2, r3 + 8001ea2: 687b ldr r3, [r7, #4] + 8001ea4: 645a str r2, [r3, #68] @ 0x44 /* Clear ARLO flag */ __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ARLO); - 8001e4a: 687b ldr r3, [r7, #4] - 8001e4c: 681b ldr r3, [r3, #0] - 8001e4e: 2280 movs r2, #128 @ 0x80 - 8001e50: 0092 lsls r2, r2, #2 - 8001e52: 61da str r2, [r3, #28] + 8001ea6: 687b ldr r3, [r7, #4] + 8001ea8: 681b ldr r3, [r3, #0] + 8001eaa: 2280 movs r2, #128 @ 0x80 + 8001eac: 0092 lsls r2, r2, #2 + 8001eae: 61da str r2, [r3, #28] } /* Store current volatile hi2c->ErrorCode, misra rule */ tmperror = hi2c->ErrorCode; - 8001e54: 687b ldr r3, [r7, #4] - 8001e56: 6c5b ldr r3, [r3, #68] @ 0x44 - 8001e58: 60fb str r3, [r7, #12] + 8001eb0: 687b ldr r3, [r7, #4] + 8001eb2: 6c5b ldr r3, [r3, #68] @ 0x44 + 8001eb4: 60fb str r3, [r7, #12] /* Call the Error Callback in case of Error detected */ if ((tmperror & (HAL_I2C_ERROR_BERR | HAL_I2C_ERROR_OVR | HAL_I2C_ERROR_ARLO)) != HAL_I2C_ERROR_NONE) - 8001e5a: 68fb ldr r3, [r7, #12] - 8001e5c: 220b movs r2, #11 - 8001e5e: 4013 ands r3, r2 - 8001e60: d005 beq.n 8001e6e + 8001eb6: 68fb ldr r3, [r7, #12] + 8001eb8: 220b movs r2, #11 + 8001eba: 4013 ands r3, r2 + 8001ebc: d005 beq.n 8001eca { I2C_ITError(hi2c, tmperror); - 8001e62: 68fa ldr r2, [r7, #12] - 8001e64: 687b ldr r3, [r7, #4] - 8001e66: 0011 movs r1, r2 - 8001e68: 0018 movs r0, r3 - 8001e6a: f001 f85d bl 8002f28 + 8001ebe: 68fa ldr r2, [r7, #12] + 8001ec0: 687b ldr r3, [r7, #4] + 8001ec2: 0011 movs r1, r2 + 8001ec4: 0018 movs r0, r3 + 8001ec6: f000 fc1d bl 8002704 } } - 8001e6e: 46c0 nop @ (mov r8, r8) - 8001e70: 46bd mov sp, r7 - 8001e72: b006 add sp, #24 - 8001e74: bd80 pop {r7, pc} + 8001eca: 46c0 nop @ (mov r8, r8) + 8001ecc: 46bd mov sp, r7 + 8001ece: b006 add sp, #24 + 8001ed0: bd80 pop {r7, pc} -08001e76 : - * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains - * the configuration information for the specified I2C. - * @retval None - */ -__weak void HAL_I2C_MasterTxCpltCallback(I2C_HandleTypeDef *hi2c) -{ - 8001e76: b580 push {r7, lr} - 8001e78: b082 sub sp, #8 - 8001e7a: af00 add r7, sp, #0 - 8001e7c: 6078 str r0, [r7, #4] - UNUSED(hi2c); - - /* NOTE : This function should not be modified, when the callback is needed, - the HAL_I2C_MasterTxCpltCallback could be implemented in the user file - */ -} - 8001e7e: 46c0 nop @ (mov r8, r8) - 8001e80: 46bd mov sp, r7 - 8001e82: b002 add sp, #8 - 8001e84: bd80 pop {r7, pc} - -08001e86 : - * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains - * the configuration information for the specified I2C. - * @retval None - */ -__weak void HAL_I2C_MasterRxCpltCallback(I2C_HandleTypeDef *hi2c) -{ - 8001e86: b580 push {r7, lr} - 8001e88: b082 sub sp, #8 - 8001e8a: af00 add r7, sp, #0 - 8001e8c: 6078 str r0, [r7, #4] - UNUSED(hi2c); - - /* NOTE : This function should not be modified, when the callback is needed, - the HAL_I2C_MasterRxCpltCallback could be implemented in the user file - */ -} - 8001e8e: 46c0 nop @ (mov r8, r8) - 8001e90: 46bd mov sp, r7 - 8001e92: b002 add sp, #8 - 8001e94: bd80 pop {r7, pc} - -08001e96 : +08001ed2 : * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains * the configuration information for the specified I2C. * @retval None */ __weak void HAL_I2C_SlaveTxCpltCallback(I2C_HandleTypeDef *hi2c) { - 8001e96: b580 push {r7, lr} - 8001e98: b082 sub sp, #8 - 8001e9a: af00 add r7, sp, #0 - 8001e9c: 6078 str r0, [r7, #4] + 8001ed2: b580 push {r7, lr} + 8001ed4: b082 sub sp, #8 + 8001ed6: af00 add r7, sp, #0 + 8001ed8: 6078 str r0, [r7, #4] UNUSED(hi2c); /* NOTE : This function should not be modified, when the callback is needed, the HAL_I2C_SlaveTxCpltCallback could be implemented in the user file */ } - 8001e9e: 46c0 nop @ (mov r8, r8) - 8001ea0: 46bd mov sp, r7 - 8001ea2: b002 add sp, #8 - 8001ea4: bd80 pop {r7, pc} + 8001eda: 46c0 nop @ (mov r8, r8) + 8001edc: 46bd mov sp, r7 + 8001ede: b002 add sp, #8 + 8001ee0: bd80 pop {r7, pc} -08001ea6 : +08001ee2 : * @param TransferDirection Master request Transfer Direction (Write/Read), value of @ref I2C_XFERDIRECTION * @param AddrMatchCode Address Match Code * @retval None */ __weak void HAL_I2C_AddrCallback(I2C_HandleTypeDef *hi2c, uint8_t TransferDirection, uint16_t AddrMatchCode) { - 8001ea6: b580 push {r7, lr} - 8001ea8: b082 sub sp, #8 - 8001eaa: af00 add r7, sp, #0 - 8001eac: 6078 str r0, [r7, #4] - 8001eae: 0008 movs r0, r1 - 8001eb0: 0011 movs r1, r2 - 8001eb2: 1cfb adds r3, r7, #3 - 8001eb4: 1c02 adds r2, r0, #0 - 8001eb6: 701a strb r2, [r3, #0] - 8001eb8: 003b movs r3, r7 - 8001eba: 1c0a adds r2, r1, #0 - 8001ebc: 801a strh r2, [r3, #0] + 8001ee2: b580 push {r7, lr} + 8001ee4: b082 sub sp, #8 + 8001ee6: af00 add r7, sp, #0 + 8001ee8: 6078 str r0, [r7, #4] + 8001eea: 0008 movs r0, r1 + 8001eec: 0011 movs r1, r2 + 8001eee: 1cfb adds r3, r7, #3 + 8001ef0: 1c02 adds r2, r0, #0 + 8001ef2: 701a strb r2, [r3, #0] + 8001ef4: 003b movs r3, r7 + 8001ef6: 1c0a adds r2, r1, #0 + 8001ef8: 801a strh r2, [r3, #0] UNUSED(AddrMatchCode); /* NOTE : This function should not be modified, when the callback is needed, the HAL_I2C_AddrCallback() could be implemented in the user file */ } - 8001ebe: 46c0 nop @ (mov r8, r8) - 8001ec0: 46bd mov sp, r7 - 8001ec2: b002 add sp, #8 - 8001ec4: bd80 pop {r7, pc} + 8001efa: 46c0 nop @ (mov r8, r8) + 8001efc: 46bd mov sp, r7 + 8001efe: b002 add sp, #8 + 8001f00: bd80 pop {r7, pc} -08001ec6 : +08001f02 : * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains * the configuration information for the specified I2C. * @retval None */ __weak void HAL_I2C_ListenCpltCallback(I2C_HandleTypeDef *hi2c) { - 8001ec6: b580 push {r7, lr} - 8001ec8: b082 sub sp, #8 - 8001eca: af00 add r7, sp, #0 - 8001ecc: 6078 str r0, [r7, #4] + 8001f02: b580 push {r7, lr} + 8001f04: b082 sub sp, #8 + 8001f06: af00 add r7, sp, #0 + 8001f08: 6078 str r0, [r7, #4] UNUSED(hi2c); /* NOTE : This function should not be modified, when the callback is needed, the HAL_I2C_ListenCpltCallback() could be implemented in the user file */ } - 8001ece: 46c0 nop @ (mov r8, r8) - 8001ed0: 46bd mov sp, r7 - 8001ed2: b002 add sp, #8 - 8001ed4: bd80 pop {r7, pc} + 8001f0a: 46c0 nop @ (mov r8, r8) + 8001f0c: 46bd mov sp, r7 + 8001f0e: b002 add sp, #8 + 8001f10: bd80 pop {r7, pc} -08001ed6 : - * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains - * the configuration information for the specified I2C. - * @retval None - */ -__weak void HAL_I2C_MemTxCpltCallback(I2C_HandleTypeDef *hi2c) -{ - 8001ed6: b580 push {r7, lr} - 8001ed8: b082 sub sp, #8 - 8001eda: af00 add r7, sp, #0 - 8001edc: 6078 str r0, [r7, #4] - UNUSED(hi2c); - - /* NOTE : This function should not be modified, when the callback is needed, - the HAL_I2C_MemTxCpltCallback could be implemented in the user file - */ -} - 8001ede: 46c0 nop @ (mov r8, r8) - 8001ee0: 46bd mov sp, r7 - 8001ee2: b002 add sp, #8 - 8001ee4: bd80 pop {r7, pc} - -08001ee6 : - * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains - * the configuration information for the specified I2C. - * @retval None - */ -__weak void HAL_I2C_MemRxCpltCallback(I2C_HandleTypeDef *hi2c) -{ - 8001ee6: b580 push {r7, lr} - 8001ee8: b082 sub sp, #8 - 8001eea: af00 add r7, sp, #0 - 8001eec: 6078 str r0, [r7, #4] - UNUSED(hi2c); - - /* NOTE : This function should not be modified, when the callback is needed, - the HAL_I2C_MemRxCpltCallback could be implemented in the user file - */ -} - 8001eee: 46c0 nop @ (mov r8, r8) - 8001ef0: 46bd mov sp, r7 - 8001ef2: b002 add sp, #8 - 8001ef4: bd80 pop {r7, pc} - -08001ef6 : +08001f12 : * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains * the configuration information for the specified I2C. * @retval None */ __weak void HAL_I2C_ErrorCallback(I2C_HandleTypeDef *hi2c) { - 8001ef6: b580 push {r7, lr} - 8001ef8: b082 sub sp, #8 - 8001efa: af00 add r7, sp, #0 - 8001efc: 6078 str r0, [r7, #4] + 8001f12: b580 push {r7, lr} + 8001f14: b082 sub sp, #8 + 8001f16: af00 add r7, sp, #0 + 8001f18: 6078 str r0, [r7, #4] UNUSED(hi2c); /* NOTE : This function should not be modified, when the callback is needed, the HAL_I2C_ErrorCallback could be implemented in the user file */ } - 8001efe: 46c0 nop @ (mov r8, r8) - 8001f00: 46bd mov sp, r7 - 8001f02: b002 add sp, #8 - 8001f04: bd80 pop {r7, pc} + 8001f1a: 46c0 nop @ (mov r8, r8) + 8001f1c: 46bd mov sp, r7 + 8001f1e: b002 add sp, #8 + 8001f20: bd80 pop {r7, pc} -08001f06 : +08001f22 : * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains * the configuration information for the specified I2C. * @retval None */ __weak void HAL_I2C_AbortCpltCallback(I2C_HandleTypeDef *hi2c) { - 8001f06: b580 push {r7, lr} - 8001f08: b082 sub sp, #8 - 8001f0a: af00 add r7, sp, #0 - 8001f0c: 6078 str r0, [r7, #4] + 8001f22: b580 push {r7, lr} + 8001f24: b082 sub sp, #8 + 8001f26: af00 add r7, sp, #0 + 8001f28: 6078 str r0, [r7, #4] UNUSED(hi2c); /* NOTE : This function should not be modified, when the callback is needed, the HAL_I2C_AbortCpltCallback could be implemented in the user file */ } - 8001f0e: 46c0 nop @ (mov r8, r8) - 8001f10: 46bd mov sp, r7 - 8001f12: b002 add sp, #8 - 8001f14: bd80 pop {r7, pc} + 8001f2a: 46c0 nop @ (mov r8, r8) + 8001f2c: 46bd mov sp, r7 + 8001f2e: b002 add sp, #8 + 8001f30: bd80 pop {r7, pc} ... -08001f18 : +08001f34 : * @param ITSources Interrupt sources enabled. * @retval HAL status */ static HAL_StatusTypeDef I2C_Slave_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, uint32_t ITSources) { - 8001f18: b580 push {r7, lr} - 8001f1a: b086 sub sp, #24 - 8001f1c: af00 add r7, sp, #0 - 8001f1e: 60f8 str r0, [r7, #12] - 8001f20: 60b9 str r1, [r7, #8] - 8001f22: 607a str r2, [r7, #4] + 8001f34: b580 push {r7, lr} + 8001f36: b086 sub sp, #24 + 8001f38: af00 add r7, sp, #0 + 8001f3a: 60f8 str r0, [r7, #12] + 8001f3c: 60b9 str r1, [r7, #8] + 8001f3e: 607a str r2, [r7, #4] uint32_t tmpoptions = hi2c->XferOptions; - 8001f24: 68fb ldr r3, [r7, #12] - 8001f26: 6adb ldr r3, [r3, #44] @ 0x2c - 8001f28: 617b str r3, [r7, #20] + 8001f40: 68fb ldr r3, [r7, #12] + 8001f42: 6adb ldr r3, [r3, #44] @ 0x2c + 8001f44: 617b str r3, [r7, #20] uint32_t tmpITFlags = ITFlags; - 8001f2a: 68bb ldr r3, [r7, #8] - 8001f2c: 613b str r3, [r7, #16] + 8001f46: 68bb ldr r3, [r7, #8] + 8001f48: 613b str r3, [r7, #16] /* Process locked */ __HAL_LOCK(hi2c); - 8001f2e: 68fb ldr r3, [r7, #12] - 8001f30: 2240 movs r2, #64 @ 0x40 - 8001f32: 5c9b ldrb r3, [r3, r2] - 8001f34: 2b01 cmp r3, #1 - 8001f36: d101 bne.n 8001f3c - 8001f38: 2302 movs r3, #2 - 8001f3a: e0e7 b.n 800210c - 8001f3c: 68fb ldr r3, [r7, #12] - 8001f3e: 2240 movs r2, #64 @ 0x40 - 8001f40: 2101 movs r1, #1 - 8001f42: 5499 strb r1, [r3, r2] + 8001f4a: 68fb ldr r3, [r7, #12] + 8001f4c: 2240 movs r2, #64 @ 0x40 + 8001f4e: 5c9b ldrb r3, [r3, r2] + 8001f50: 2b01 cmp r3, #1 + 8001f52: d101 bne.n 8001f58 + 8001f54: 2302 movs r3, #2 + 8001f56: e0e7 b.n 8002128 + 8001f58: 68fb ldr r3, [r7, #12] + 8001f5a: 2240 movs r2, #64 @ 0x40 + 8001f5c: 2101 movs r1, #1 + 8001f5e: 5499 strb r1, [r3, r2] /* Check if STOPF is set */ if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_STOPF) != RESET) && \ - 8001f44: 693b ldr r3, [r7, #16] - 8001f46: 2220 movs r2, #32 - 8001f48: 4013 ands r3, r2 - 8001f4a: d00a beq.n 8001f62 + 8001f60: 693b ldr r3, [r7, #16] + 8001f62: 2220 movs r2, #32 + 8001f64: 4013 ands r3, r2 + 8001f66: d00a beq.n 8001f7e (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) - 8001f4c: 687b ldr r3, [r7, #4] - 8001f4e: 2220 movs r2, #32 - 8001f50: 4013 ands r3, r2 + 8001f68: 687b ldr r3, [r7, #4] + 8001f6a: 2220 movs r2, #32 + 8001f6c: 4013 ands r3, r2 if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_STOPF) != RESET) && \ - 8001f52: d006 beq.n 8001f62 + 8001f6e: d006 beq.n 8001f7e { /* Call I2C Slave complete process */ I2C_ITSlaveCplt(hi2c, tmpITFlags); - 8001f54: 693a ldr r2, [r7, #16] - 8001f56: 68fb ldr r3, [r7, #12] - 8001f58: 0011 movs r1, r2 - 8001f5a: 0018 movs r0, r3 - 8001f5c: f000 fe04 bl 8002b68 - 8001f60: e0cf b.n 8002102 + 8001f70: 693a ldr r2, [r7, #16] + 8001f72: 68fb ldr r3, [r7, #12] + 8001f74: 0011 movs r1, r2 + 8001f76: 0018 movs r0, r3 + 8001f78: f000 f9e4 bl 8002344 + 8001f7c: e0cf b.n 800211e } else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_AF) != RESET) && \ - 8001f62: 693b ldr r3, [r7, #16] - 8001f64: 2210 movs r2, #16 - 8001f66: 4013 ands r3, r2 - 8001f68: d052 beq.n 8002010 + 8001f7e: 693b ldr r3, [r7, #16] + 8001f80: 2210 movs r2, #16 + 8001f82: 4013 ands r3, r2 + 8001f84: d052 beq.n 800202c (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) - 8001f6a: 687b ldr r3, [r7, #4] - 8001f6c: 2210 movs r2, #16 - 8001f6e: 4013 ands r3, r2 + 8001f86: 687b ldr r3, [r7, #4] + 8001f88: 2210 movs r2, #16 + 8001f8a: 4013 ands r3, r2 else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_AF) != RESET) && \ - 8001f70: d04e beq.n 8002010 + 8001f8c: d04e beq.n 800202c { /* Check that I2C transfer finished */ /* if yes, normal use case, a NACK is sent by the MASTER when Transfer is finished */ /* Mean XferCount == 0*/ /* So clear Flag NACKF only */ if (hi2c->XferCount == 0U) - 8001f72: 68fb ldr r3, [r7, #12] - 8001f74: 8d5b ldrh r3, [r3, #42] @ 0x2a - 8001f76: b29b uxth r3, r3 - 8001f78: 2b00 cmp r3, #0 - 8001f7a: d12d bne.n 8001fd8 + 8001f8e: 68fb ldr r3, [r7, #12] + 8001f90: 8d5b ldrh r3, [r3, #42] @ 0x2a + 8001f92: b29b uxth r3, r3 + 8001f94: 2b00 cmp r3, #0 + 8001f96: d12d bne.n 8001ff4 { if ((hi2c->State == HAL_I2C_STATE_LISTEN) && (tmpoptions == I2C_FIRST_AND_LAST_FRAME)) - 8001f7c: 68fb ldr r3, [r7, #12] - 8001f7e: 2241 movs r2, #65 @ 0x41 - 8001f80: 5c9b ldrb r3, [r3, r2] - 8001f82: b2db uxtb r3, r3 - 8001f84: 2b28 cmp r3, #40 @ 0x28 - 8001f86: d10b bne.n 8001fa0 - 8001f88: 697a ldr r2, [r7, #20] - 8001f8a: 2380 movs r3, #128 @ 0x80 - 8001f8c: 049b lsls r3, r3, #18 - 8001f8e: 429a cmp r2, r3 - 8001f90: d106 bne.n 8001fa0 + 8001f98: 68fb ldr r3, [r7, #12] + 8001f9a: 2241 movs r2, #65 @ 0x41 + 8001f9c: 5c9b ldrb r3, [r3, r2] + 8001f9e: b2db uxtb r3, r3 + 8001fa0: 2b28 cmp r3, #40 @ 0x28 + 8001fa2: d10b bne.n 8001fbc + 8001fa4: 697a ldr r2, [r7, #20] + 8001fa6: 2380 movs r3, #128 @ 0x80 + 8001fa8: 049b lsls r3, r3, #18 + 8001faa: 429a cmp r2, r3 + 8001fac: d106 bne.n 8001fbc /* Same action must be done for (tmpoptions == I2C_LAST_FRAME) which removed for Warning[Pa134]: left and right operands are identical */ { /* Call I2C Listen complete process */ I2C_ITListenCplt(hi2c, tmpITFlags); - 8001f92: 693a ldr r2, [r7, #16] - 8001f94: 68fb ldr r3, [r7, #12] - 8001f96: 0011 movs r1, r2 - 8001f98: 0018 movs r0, r3 - 8001f9a: f000 ff6d bl 8002e78 - 8001f9e: e036 b.n 800200e + 8001fae: 693a ldr r2, [r7, #16] + 8001fb0: 68fb ldr r3, [r7, #12] + 8001fb2: 0011 movs r1, r2 + 8001fb4: 0018 movs r0, r3 + 8001fb6: f000 fb4d bl 8002654 + 8001fba: e036 b.n 800202a } else if ((hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) && (tmpoptions != I2C_NO_OPTION_FRAME)) - 8001fa0: 68fb ldr r3, [r7, #12] - 8001fa2: 2241 movs r2, #65 @ 0x41 - 8001fa4: 5c9b ldrb r3, [r3, r2] - 8001fa6: b2db uxtb r3, r3 - 8001fa8: 2b29 cmp r3, #41 @ 0x29 - 8001faa: d110 bne.n 8001fce - 8001fac: 697b ldr r3, [r7, #20] - 8001fae: 4a59 ldr r2, [pc, #356] @ (8002114 ) - 8001fb0: 4293 cmp r3, r2 - 8001fb2: d00c beq.n 8001fce + 8001fbc: 68fb ldr r3, [r7, #12] + 8001fbe: 2241 movs r2, #65 @ 0x41 + 8001fc0: 5c9b ldrb r3, [r3, r2] + 8001fc2: b2db uxtb r3, r3 + 8001fc4: 2b29 cmp r3, #41 @ 0x29 + 8001fc6: d110 bne.n 8001fea + 8001fc8: 697b ldr r3, [r7, #20] + 8001fca: 4a59 ldr r2, [pc, #356] @ (8002130 ) + 8001fcc: 4293 cmp r3, r2 + 8001fce: d00c beq.n 8001fea { /* Clear NACK Flag */ __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); - 8001fb4: 68fb ldr r3, [r7, #12] - 8001fb6: 681b ldr r3, [r3, #0] - 8001fb8: 2210 movs r2, #16 - 8001fba: 61da str r2, [r3, #28] + 8001fd0: 68fb ldr r3, [r7, #12] + 8001fd2: 681b ldr r3, [r3, #0] + 8001fd4: 2210 movs r2, #16 + 8001fd6: 61da str r2, [r3, #28] /* Flush TX register */ I2C_Flush_TXDR(hi2c); - 8001fbc: 68fb ldr r3, [r7, #12] - 8001fbe: 0018 movs r0, r3 - 8001fc0: f001 f8dd bl 800317e + 8001fd8: 68fb ldr r3, [r7, #12] + 8001fda: 0018 movs r0, r3 + 8001fdc: f000 fcbd bl 800295a /* Last Byte is Transmitted */ /* Call I2C Slave Sequential complete process */ I2C_ITSlaveSeqCplt(hi2c); - 8001fc4: 68fb ldr r3, [r7, #12] - 8001fc6: 0018 movs r0, r3 - 8001fc8: f000 fc9c bl 8002904 - 8001fcc: e01f b.n 800200e + 8001fe0: 68fb ldr r3, [r7, #12] + 8001fe2: 0018 movs r0, r3 + 8001fe4: f000 f94a bl 800227c + 8001fe8: e01f b.n 800202a } else { /* Clear NACK Flag */ __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); - 8001fce: 68fb ldr r3, [r7, #12] - 8001fd0: 681b ldr r3, [r3, #0] - 8001fd2: 2210 movs r2, #16 - 8001fd4: 61da str r2, [r3, #28] + 8001fea: 68fb ldr r3, [r7, #12] + 8001fec: 681b ldr r3, [r3, #0] + 8001fee: 2210 movs r2, #16 + 8001ff0: 61da str r2, [r3, #28] if (hi2c->XferCount == 0U) - 8001fd6: e091 b.n 80020fc + 8001ff2: e091 b.n 8002118 } else { /* if no, error use case, a Non-Acknowledge of last Data is generated by the MASTER*/ /* Clear NACK Flag */ __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); - 8001fd8: 68fb ldr r3, [r7, #12] - 8001fda: 681b ldr r3, [r3, #0] - 8001fdc: 2210 movs r2, #16 - 8001fde: 61da str r2, [r3, #28] + 8001ff4: 68fb ldr r3, [r7, #12] + 8001ff6: 681b ldr r3, [r3, #0] + 8001ff8: 2210 movs r2, #16 + 8001ffa: 61da str r2, [r3, #28] /* Set ErrorCode corresponding to a Non-Acknowledge */ hi2c->ErrorCode |= HAL_I2C_ERROR_AF; - 8001fe0: 68fb ldr r3, [r7, #12] - 8001fe2: 6c5b ldr r3, [r3, #68] @ 0x44 - 8001fe4: 2204 movs r2, #4 - 8001fe6: 431a orrs r2, r3 - 8001fe8: 68fb ldr r3, [r7, #12] - 8001fea: 645a str r2, [r3, #68] @ 0x44 + 8001ffc: 68fb ldr r3, [r7, #12] + 8001ffe: 6c5b ldr r3, [r3, #68] @ 0x44 + 8002000: 2204 movs r2, #4 + 8002002: 431a orrs r2, r3 + 8002004: 68fb ldr r3, [r7, #12] + 8002006: 645a str r2, [r3, #68] @ 0x44 if ((tmpoptions == I2C_FIRST_FRAME) || (tmpoptions == I2C_NEXT_FRAME)) - 8001fec: 697b ldr r3, [r7, #20] - 8001fee: 2b00 cmp r3, #0 - 8001ff0: d005 beq.n 8001ffe - 8001ff2: 697a ldr r2, [r7, #20] - 8001ff4: 2380 movs r3, #128 @ 0x80 - 8001ff6: 045b lsls r3, r3, #17 - 8001ff8: 429a cmp r2, r3 - 8001ffa: d000 beq.n 8001ffe - 8001ffc: e07e b.n 80020fc + 8002008: 697b ldr r3, [r7, #20] + 800200a: 2b00 cmp r3, #0 + 800200c: d005 beq.n 800201a + 800200e: 697a ldr r2, [r7, #20] + 8002010: 2380 movs r3, #128 @ 0x80 + 8002012: 045b lsls r3, r3, #17 + 8002014: 429a cmp r2, r3 + 8002016: d000 beq.n 800201a + 8002018: e07e b.n 8002118 { /* Call the corresponding callback to inform upper layer of End of Transfer */ I2C_ITError(hi2c, hi2c->ErrorCode); - 8001ffe: 68fb ldr r3, [r7, #12] - 8002000: 6c5a ldr r2, [r3, #68] @ 0x44 - 8002002: 68fb ldr r3, [r7, #12] - 8002004: 0011 movs r1, r2 - 8002006: 0018 movs r0, r3 - 8002008: f000 ff8e bl 8002f28 + 800201a: 68fb ldr r3, [r7, #12] + 800201c: 6c5a ldr r2, [r3, #68] @ 0x44 + 800201e: 68fb ldr r3, [r7, #12] + 8002020: 0011 movs r1, r2 + 8002022: 0018 movs r0, r3 + 8002024: f000 fb6e bl 8002704 if (hi2c->XferCount == 0U) - 800200c: e076 b.n 80020fc - 800200e: e075 b.n 80020fc + 8002028: e076 b.n 8002118 + 800202a: e075 b.n 8002118 } } } else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_RXNE) != RESET) && \ - 8002010: 693b ldr r3, [r7, #16] - 8002012: 2204 movs r2, #4 - 8002014: 4013 ands r3, r2 - 8002016: d02f beq.n 8002078 + 800202c: 693b ldr r3, [r7, #16] + 800202e: 2204 movs r2, #4 + 8002030: 4013 ands r3, r2 + 8002032: d02f beq.n 8002094 (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_RXI) != RESET)) - 8002018: 687b ldr r3, [r7, #4] - 800201a: 2204 movs r2, #4 - 800201c: 4013 ands r3, r2 + 8002034: 687b ldr r3, [r7, #4] + 8002036: 2204 movs r2, #4 + 8002038: 4013 ands r3, r2 else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_RXNE) != RESET) && \ - 800201e: d02b beq.n 8002078 + 800203a: d02b beq.n 8002094 { if (hi2c->XferCount > 0U) - 8002020: 68fb ldr r3, [r7, #12] - 8002022: 8d5b ldrh r3, [r3, #42] @ 0x2a - 8002024: b29b uxth r3, r3 - 8002026: 2b00 cmp r3, #0 - 8002028: d018 beq.n 800205c + 800203c: 68fb ldr r3, [r7, #12] + 800203e: 8d5b ldrh r3, [r3, #42] @ 0x2a + 8002040: b29b uxth r3, r3 + 8002042: 2b00 cmp r3, #0 + 8002044: d018 beq.n 8002078 { /* Read data from RXDR */ *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; - 800202a: 68fb ldr r3, [r7, #12] - 800202c: 681b ldr r3, [r3, #0] - 800202e: 6a5a ldr r2, [r3, #36] @ 0x24 - 8002030: 68fb ldr r3, [r7, #12] - 8002032: 6a5b ldr r3, [r3, #36] @ 0x24 - 8002034: b2d2 uxtb r2, r2 - 8002036: 701a strb r2, [r3, #0] + 8002046: 68fb ldr r3, [r7, #12] + 8002048: 681b ldr r3, [r3, #0] + 800204a: 6a5a ldr r2, [r3, #36] @ 0x24 + 800204c: 68fb ldr r3, [r7, #12] + 800204e: 6a5b ldr r3, [r3, #36] @ 0x24 + 8002050: b2d2 uxtb r2, r2 + 8002052: 701a strb r2, [r3, #0] /* Increment Buffer pointer */ hi2c->pBuffPtr++; - 8002038: 68fb ldr r3, [r7, #12] - 800203a: 6a5b ldr r3, [r3, #36] @ 0x24 - 800203c: 1c5a adds r2, r3, #1 - 800203e: 68fb ldr r3, [r7, #12] - 8002040: 625a str r2, [r3, #36] @ 0x24 + 8002054: 68fb ldr r3, [r7, #12] + 8002056: 6a5b ldr r3, [r3, #36] @ 0x24 + 8002058: 1c5a adds r2, r3, #1 + 800205a: 68fb ldr r3, [r7, #12] + 800205c: 625a str r2, [r3, #36] @ 0x24 hi2c->XferSize--; - 8002042: 68fb ldr r3, [r7, #12] - 8002044: 8d1b ldrh r3, [r3, #40] @ 0x28 - 8002046: 3b01 subs r3, #1 - 8002048: b29a uxth r2, r3 - 800204a: 68fb ldr r3, [r7, #12] - 800204c: 851a strh r2, [r3, #40] @ 0x28 + 800205e: 68fb ldr r3, [r7, #12] + 8002060: 8d1b ldrh r3, [r3, #40] @ 0x28 + 8002062: 3b01 subs r3, #1 + 8002064: b29a uxth r2, r3 + 8002066: 68fb ldr r3, [r7, #12] + 8002068: 851a strh r2, [r3, #40] @ 0x28 hi2c->XferCount--; - 800204e: 68fb ldr r3, [r7, #12] - 8002050: 8d5b ldrh r3, [r3, #42] @ 0x2a - 8002052: b29b uxth r3, r3 - 8002054: 3b01 subs r3, #1 - 8002056: b29a uxth r2, r3 - 8002058: 68fb ldr r3, [r7, #12] - 800205a: 855a strh r2, [r3, #42] @ 0x2a + 800206a: 68fb ldr r3, [r7, #12] + 800206c: 8d5b ldrh r3, [r3, #42] @ 0x2a + 800206e: b29b uxth r3, r3 + 8002070: 3b01 subs r3, #1 + 8002072: b29a uxth r2, r3 + 8002074: 68fb ldr r3, [r7, #12] + 8002076: 855a strh r2, [r3, #42] @ 0x2a } if ((hi2c->XferCount == 0U) && \ - 800205c: 68fb ldr r3, [r7, #12] - 800205e: 8d5b ldrh r3, [r3, #42] @ 0x2a - 8002060: b29b uxth r3, r3 - 8002062: 2b00 cmp r3, #0 - 8002064: d14c bne.n 8002100 - 8002066: 697b ldr r3, [r7, #20] - 8002068: 4a2a ldr r2, [pc, #168] @ (8002114 ) - 800206a: 4293 cmp r3, r2 - 800206c: d048 beq.n 8002100 + 8002078: 68fb ldr r3, [r7, #12] + 800207a: 8d5b ldrh r3, [r3, #42] @ 0x2a + 800207c: b29b uxth r3, r3 + 800207e: 2b00 cmp r3, #0 + 8002080: d14c bne.n 800211c + 8002082: 697b ldr r3, [r7, #20] + 8002084: 4a2a ldr r2, [pc, #168] @ (8002130 ) + 8002086: 4293 cmp r3, r2 + 8002088: d048 beq.n 800211c (tmpoptions != I2C_NO_OPTION_FRAME)) { /* Call I2C Slave Sequential complete process */ I2C_ITSlaveSeqCplt(hi2c); - 800206e: 68fb ldr r3, [r7, #12] - 8002070: 0018 movs r0, r3 - 8002072: f000 fc47 bl 8002904 + 800208a: 68fb ldr r3, [r7, #12] + 800208c: 0018 movs r0, r3 + 800208e: f000 f8f5 bl 800227c if ((hi2c->XferCount == 0U) && \ - 8002076: e043 b.n 8002100 + 8002092: e043 b.n 800211c } } else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_ADDR) != RESET) && \ - 8002078: 693b ldr r3, [r7, #16] - 800207a: 2208 movs r2, #8 - 800207c: 4013 ands r3, r2 - 800207e: d00a beq.n 8002096 + 8002094: 693b ldr r3, [r7, #16] + 8002096: 2208 movs r2, #8 + 8002098: 4013 ands r3, r2 + 800209a: d00a beq.n 80020b2 (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_ADDRI) != RESET)) - 8002080: 687b ldr r3, [r7, #4] - 8002082: 2208 movs r2, #8 - 8002084: 4013 ands r3, r2 + 800209c: 687b ldr r3, [r7, #4] + 800209e: 2208 movs r2, #8 + 80020a0: 4013 ands r3, r2 else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_ADDR) != RESET) && \ - 8002086: d006 beq.n 8002096 + 80020a2: d006 beq.n 80020b2 { I2C_ITAddrCplt(hi2c, tmpITFlags); - 8002088: 693a ldr r2, [r7, #16] - 800208a: 68fb ldr r3, [r7, #12] - 800208c: 0011 movs r1, r2 - 800208e: 0018 movs r0, r3 - 8002090: f000 fb52 bl 8002738 - 8002094: e035 b.n 8002102 + 80020a4: 693a ldr r2, [r7, #16] + 80020a6: 68fb ldr r3, [r7, #12] + 80020a8: 0011 movs r1, r2 + 80020aa: 0018 movs r0, r3 + 80020ac: f000 f842 bl 8002134 + 80020b0: e035 b.n 800211e } else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TXIS) != RESET) && \ - 8002096: 693b ldr r3, [r7, #16] - 8002098: 2202 movs r2, #2 - 800209a: 4013 ands r3, r2 - 800209c: d031 beq.n 8002102 + 80020b2: 693b ldr r3, [r7, #16] + 80020b4: 2202 movs r2, #2 + 80020b6: 4013 ands r3, r2 + 80020b8: d031 beq.n 800211e (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TXI) != RESET)) - 800209e: 687b ldr r3, [r7, #4] - 80020a0: 2202 movs r2, #2 - 80020a2: 4013 ands r3, r2 + 80020ba: 687b ldr r3, [r7, #4] + 80020bc: 2202 movs r2, #2 + 80020be: 4013 ands r3, r2 else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TXIS) != RESET) && \ - 80020a4: d02d beq.n 8002102 + 80020c0: d02d beq.n 800211e { /* Write data to TXDR only if XferCount not reach "0" */ /* A TXIS flag can be set, during STOP treatment */ /* Check if all Data have already been sent */ /* If it is the case, this last write in TXDR is not sent, correspond to a dummy TXIS event */ if (hi2c->XferCount > 0U) - 80020a6: 68fb ldr r3, [r7, #12] - 80020a8: 8d5b ldrh r3, [r3, #42] @ 0x2a - 80020aa: b29b uxth r3, r3 - 80020ac: 2b00 cmp r3, #0 - 80020ae: d018 beq.n 80020e2 + 80020c2: 68fb ldr r3, [r7, #12] + 80020c4: 8d5b ldrh r3, [r3, #42] @ 0x2a + 80020c6: b29b uxth r3, r3 + 80020c8: 2b00 cmp r3, #0 + 80020ca: d018 beq.n 80020fe { /* Write data to TXDR */ hi2c->Instance->TXDR = *hi2c->pBuffPtr; - 80020b0: 68fb ldr r3, [r7, #12] - 80020b2: 6a5b ldr r3, [r3, #36] @ 0x24 - 80020b4: 781a ldrb r2, [r3, #0] - 80020b6: 68fb ldr r3, [r7, #12] - 80020b8: 681b ldr r3, [r3, #0] - 80020ba: 629a str r2, [r3, #40] @ 0x28 + 80020cc: 68fb ldr r3, [r7, #12] + 80020ce: 6a5b ldr r3, [r3, #36] @ 0x24 + 80020d0: 781a ldrb r2, [r3, #0] + 80020d2: 68fb ldr r3, [r7, #12] + 80020d4: 681b ldr r3, [r3, #0] + 80020d6: 629a str r2, [r3, #40] @ 0x28 /* Increment Buffer pointer */ hi2c->pBuffPtr++; - 80020bc: 68fb ldr r3, [r7, #12] - 80020be: 6a5b ldr r3, [r3, #36] @ 0x24 - 80020c0: 1c5a adds r2, r3, #1 - 80020c2: 68fb ldr r3, [r7, #12] - 80020c4: 625a str r2, [r3, #36] @ 0x24 + 80020d8: 68fb ldr r3, [r7, #12] + 80020da: 6a5b ldr r3, [r3, #36] @ 0x24 + 80020dc: 1c5a adds r2, r3, #1 + 80020de: 68fb ldr r3, [r7, #12] + 80020e0: 625a str r2, [r3, #36] @ 0x24 hi2c->XferCount--; - 80020c6: 68fb ldr r3, [r7, #12] - 80020c8: 8d5b ldrh r3, [r3, #42] @ 0x2a - 80020ca: b29b uxth r3, r3 - 80020cc: 3b01 subs r3, #1 - 80020ce: b29a uxth r2, r3 - 80020d0: 68fb ldr r3, [r7, #12] - 80020d2: 855a strh r2, [r3, #42] @ 0x2a + 80020e2: 68fb ldr r3, [r7, #12] + 80020e4: 8d5b ldrh r3, [r3, #42] @ 0x2a + 80020e6: b29b uxth r3, r3 + 80020e8: 3b01 subs r3, #1 + 80020ea: b29a uxth r2, r3 + 80020ec: 68fb ldr r3, [r7, #12] + 80020ee: 855a strh r2, [r3, #42] @ 0x2a hi2c->XferSize--; - 80020d4: 68fb ldr r3, [r7, #12] - 80020d6: 8d1b ldrh r3, [r3, #40] @ 0x28 - 80020d8: 3b01 subs r3, #1 - 80020da: b29a uxth r2, r3 - 80020dc: 68fb ldr r3, [r7, #12] - 80020de: 851a strh r2, [r3, #40] @ 0x28 - 80020e0: e00f b.n 8002102 + 80020f0: 68fb ldr r3, [r7, #12] + 80020f2: 8d1b ldrh r3, [r3, #40] @ 0x28 + 80020f4: 3b01 subs r3, #1 + 80020f6: b29a uxth r2, r3 + 80020f8: 68fb ldr r3, [r7, #12] + 80020fa: 851a strh r2, [r3, #40] @ 0x28 + 80020fc: e00f b.n 800211e } else { if ((tmpoptions == I2C_NEXT_FRAME) || (tmpoptions == I2C_FIRST_FRAME)) - 80020e2: 697a ldr r2, [r7, #20] - 80020e4: 2380 movs r3, #128 @ 0x80 - 80020e6: 045b lsls r3, r3, #17 - 80020e8: 429a cmp r2, r3 - 80020ea: d002 beq.n 80020f2 - 80020ec: 697b ldr r3, [r7, #20] - 80020ee: 2b00 cmp r3, #0 - 80020f0: d107 bne.n 8002102 + 80020fe: 697a ldr r2, [r7, #20] + 8002100: 2380 movs r3, #128 @ 0x80 + 8002102: 045b lsls r3, r3, #17 + 8002104: 429a cmp r2, r3 + 8002106: d002 beq.n 800210e + 8002108: 697b ldr r3, [r7, #20] + 800210a: 2b00 cmp r3, #0 + 800210c: d107 bne.n 800211e { /* Last Byte is Transmitted */ /* Call I2C Slave Sequential complete process */ I2C_ITSlaveSeqCplt(hi2c); - 80020f2: 68fb ldr r3, [r7, #12] - 80020f4: 0018 movs r0, r3 - 80020f6: f000 fc05 bl 8002904 - 80020fa: e002 b.n 8002102 + 800210e: 68fb ldr r3, [r7, #12] + 8002110: 0018 movs r0, r3 + 8002112: f000 f8b3 bl 800227c + 8002116: e002 b.n 800211e if (hi2c->XferCount == 0U) - 80020fc: 46c0 nop @ (mov r8, r8) - 80020fe: e000 b.n 8002102 + 8002118: 46c0 nop @ (mov r8, r8) + 800211a: e000 b.n 800211e if ((hi2c->XferCount == 0U) && \ - 8002100: 46c0 nop @ (mov r8, r8) + 800211c: 46c0 nop @ (mov r8, r8) { /* Nothing to do */ } /* Process Unlocked */ __HAL_UNLOCK(hi2c); - 8002102: 68fb ldr r3, [r7, #12] - 8002104: 2240 movs r2, #64 @ 0x40 - 8002106: 2100 movs r1, #0 - 8002108: 5499 strb r1, [r3, r2] + 800211e: 68fb ldr r3, [r7, #12] + 8002120: 2240 movs r2, #64 @ 0x40 + 8002122: 2100 movs r1, #0 + 8002124: 5499 strb r1, [r3, r2] return HAL_OK; - 800210a: 2300 movs r3, #0 + 8002126: 2300 movs r3, #0 } - 800210c: 0018 movs r0, r3 - 800210e: 46bd mov sp, r7 - 8002110: b006 add sp, #24 - 8002112: bd80 pop {r7, pc} - 8002114: ffff0000 .word 0xffff0000 + 8002128: 0018 movs r0, r3 + 800212a: 46bd mov sp, r7 + 800212c: b006 add sp, #24 + 800212e: bd80 pop {r7, pc} + 8002130: ffff0000 .word 0xffff0000 -08002118 : - * @param ITSources Interrupt sources enabled. - * @retval HAL status - */ -static HAL_StatusTypeDef I2C_Master_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, - uint32_t ITSources) -{ - 8002118: b590 push {r4, r7, lr} - 800211a: b089 sub sp, #36 @ 0x24 - 800211c: af02 add r7, sp, #8 - 800211e: 60f8 str r0, [r7, #12] - 8002120: 60b9 str r1, [r7, #8] - 8002122: 607a str r2, [r7, #4] - uint16_t devaddress; - uint32_t xfermode; - - /* Process Locked */ - __HAL_LOCK(hi2c); - 8002124: 68fb ldr r3, [r7, #12] - 8002126: 2240 movs r2, #64 @ 0x40 - 8002128: 5c9b ldrb r3, [r3, r2] - 800212a: 2b01 cmp r3, #1 - 800212c: d101 bne.n 8002132 - 800212e: 2302 movs r3, #2 - 8002130: e0e7 b.n 8002302 - 8002132: 68fb ldr r3, [r7, #12] - 8002134: 2240 movs r2, #64 @ 0x40 - 8002136: 2101 movs r1, #1 - 8002138: 5499 strb r1, [r3, r2] - - if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_AF) != RESET) && \ - 800213a: 68bb ldr r3, [r7, #8] - 800213c: 2210 movs r2, #16 - 800213e: 4013 ands r3, r2 - 8002140: d017 beq.n 8002172 - (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) - 8002142: 687b ldr r3, [r7, #4] - 8002144: 2210 movs r2, #16 - 8002146: 4013 ands r3, r2 - if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_AF) != RESET) && \ - 8002148: d013 beq.n 8002172 - { - /* Clear NACK Flag */ - __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); - 800214a: 68fb ldr r3, [r7, #12] - 800214c: 681b ldr r3, [r3, #0] - 800214e: 2210 movs r2, #16 - 8002150: 61da str r2, [r3, #28] - - /* Set corresponding Error Code */ - hi2c->ErrorCode |= HAL_I2C_ERROR_AF; - 8002152: 68fb ldr r3, [r7, #12] - 8002154: 6c5b ldr r3, [r3, #68] @ 0x44 - 8002156: 2204 movs r2, #4 - 8002158: 431a orrs r2, r3 - 800215a: 68fb ldr r3, [r7, #12] - 800215c: 645a str r2, [r3, #68] @ 0x44 - - /* No need to generate STOP, it is automatically done */ - /* But enable STOP interrupt, to treat it */ - /* Error callback will be send during stop flag treatment */ - I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT); - 800215e: 68fb ldr r3, [r7, #12] - 8002160: 2120 movs r1, #32 - 8002162: 0018 movs r0, r3 - 8002164: f001 f886 bl 8003274 - - /* Flush TX register */ - I2C_Flush_TXDR(hi2c); - 8002168: 68fb ldr r3, [r7, #12] - 800216a: 0018 movs r0, r3 - 800216c: f001 f807 bl 800317e - 8002170: e0c2 b.n 80022f8 - } - else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_TCR) != RESET) && \ - 8002172: 68bb ldr r3, [r7, #8] - 8002174: 2280 movs r2, #128 @ 0x80 - 8002176: 4013 ands r3, r2 - 8002178: d100 bne.n 800217c - 800217a: e07c b.n 8002276 - (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) - 800217c: 687b ldr r3, [r7, #4] - 800217e: 2240 movs r2, #64 @ 0x40 - 8002180: 4013 ands r3, r2 - else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_TCR) != RESET) && \ - 8002182: d100 bne.n 8002186 - 8002184: e077 b.n 8002276 - { - /* Disable TC interrupt */ - __HAL_I2C_DISABLE_IT(hi2c, I2C_IT_TCI); - 8002186: 68fb ldr r3, [r7, #12] - 8002188: 681b ldr r3, [r3, #0] - 800218a: 681a ldr r2, [r3, #0] - 800218c: 68fb ldr r3, [r7, #12] - 800218e: 681b ldr r3, [r3, #0] - 8002190: 2140 movs r1, #64 @ 0x40 - 8002192: 438a bics r2, r1 - 8002194: 601a str r2, [r3, #0] - - if (hi2c->XferCount != 0U) - 8002196: 68fb ldr r3, [r7, #12] - 8002198: 8d5b ldrh r3, [r3, #42] @ 0x2a - 800219a: b29b uxth r3, r3 - 800219c: 2b00 cmp r3, #0 - 800219e: d055 beq.n 800224c - { - /* Recover Slave address */ - devaddress = (uint16_t)(hi2c->Instance->CR2 & I2C_CR2_SADD); - 80021a0: 68fb ldr r3, [r7, #12] - 80021a2: 681b ldr r3, [r3, #0] - 80021a4: 685b ldr r3, [r3, #4] - 80021a6: b29a uxth r2, r3 - 80021a8: 2312 movs r3, #18 - 80021aa: 18fb adds r3, r7, r3 - 80021ac: 0592 lsls r2, r2, #22 - 80021ae: 0d92 lsrs r2, r2, #22 - 80021b0: 801a strh r2, [r3, #0] - - /* Prepare the new XferSize to transfer */ - if (hi2c->XferCount > MAX_NBYTE_SIZE) - 80021b2: 68fb ldr r3, [r7, #12] - 80021b4: 8d5b ldrh r3, [r3, #42] @ 0x2a - 80021b6: b29b uxth r3, r3 - 80021b8: 2bff cmp r3, #255 @ 0xff - 80021ba: d906 bls.n 80021ca - { - hi2c->XferSize = MAX_NBYTE_SIZE; - 80021bc: 68fb ldr r3, [r7, #12] - 80021be: 22ff movs r2, #255 @ 0xff - 80021c0: 851a strh r2, [r3, #40] @ 0x28 - xfermode = I2C_RELOAD_MODE; - 80021c2: 2380 movs r3, #128 @ 0x80 - 80021c4: 045b lsls r3, r3, #17 - 80021c6: 617b str r3, [r7, #20] - 80021c8: e010 b.n 80021ec - } - else - { - hi2c->XferSize = hi2c->XferCount; - 80021ca: 68fb ldr r3, [r7, #12] - 80021cc: 8d5b ldrh r3, [r3, #42] @ 0x2a - 80021ce: b29a uxth r2, r3 - 80021d0: 68fb ldr r3, [r7, #12] - 80021d2: 851a strh r2, [r3, #40] @ 0x28 - if (hi2c->XferOptions != I2C_NO_OPTION_FRAME) - 80021d4: 68fb ldr r3, [r7, #12] - 80021d6: 6adb ldr r3, [r3, #44] @ 0x2c - 80021d8: 4a4c ldr r2, [pc, #304] @ (800230c ) - 80021da: 4293 cmp r3, r2 - 80021dc: d003 beq.n 80021e6 - { - xfermode = hi2c->XferOptions; - 80021de: 68fb ldr r3, [r7, #12] - 80021e0: 6adb ldr r3, [r3, #44] @ 0x2c - 80021e2: 617b str r3, [r7, #20] - 80021e4: e002 b.n 80021ec - } - else - { - xfermode = I2C_AUTOEND_MODE; - 80021e6: 2380 movs r3, #128 @ 0x80 - 80021e8: 049b lsls r3, r3, #18 - 80021ea: 617b str r3, [r7, #20] - } - } - - /* Set the new XferSize in Nbytes register */ - I2C_TransferConfig(hi2c, devaddress, (uint8_t)hi2c->XferSize, xfermode, I2C_NO_STARTSTOP); - 80021ec: 68fb ldr r3, [r7, #12] - 80021ee: 8d1b ldrh r3, [r3, #40] @ 0x28 - 80021f0: b2da uxtb r2, r3 - 80021f2: 697c ldr r4, [r7, #20] - 80021f4: 2312 movs r3, #18 - 80021f6: 18fb adds r3, r7, r3 - 80021f8: 8819 ldrh r1, [r3, #0] - 80021fa: 68f8 ldr r0, [r7, #12] - 80021fc: 2300 movs r3, #0 - 80021fe: 9300 str r3, [sp, #0] - 8002200: 0023 movs r3, r4 - 8002202: f000 fffd bl 8003200 - - /* Update XferCount value */ - hi2c->XferCount -= hi2c->XferSize; - 8002206: 68fb ldr r3, [r7, #12] - 8002208: 8d5b ldrh r3, [r3, #42] @ 0x2a - 800220a: b29a uxth r2, r3 - 800220c: 68fb ldr r3, [r7, #12] - 800220e: 8d1b ldrh r3, [r3, #40] @ 0x28 - 8002210: 1ad3 subs r3, r2, r3 - 8002212: b29a uxth r2, r3 - 8002214: 68fb ldr r3, [r7, #12] - 8002216: 855a strh r2, [r3, #42] @ 0x2a - - /* Enable DMA Request */ - if (hi2c->State == HAL_I2C_STATE_BUSY_RX) - 8002218: 68fb ldr r3, [r7, #12] - 800221a: 2241 movs r2, #65 @ 0x41 - 800221c: 5c9b ldrb r3, [r3, r2] - 800221e: b2db uxtb r3, r3 - 8002220: 2b22 cmp r3, #34 @ 0x22 - 8002222: d109 bne.n 8002238 - { - hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; - 8002224: 68fb ldr r3, [r7, #12] - 8002226: 681b ldr r3, [r3, #0] - 8002228: 681a ldr r2, [r3, #0] - 800222a: 68fb ldr r3, [r7, #12] - 800222c: 681b ldr r3, [r3, #0] - 800222e: 2180 movs r1, #128 @ 0x80 - 8002230: 0209 lsls r1, r1, #8 - 8002232: 430a orrs r2, r1 - 8002234: 601a str r2, [r3, #0] - if (hi2c->XferCount != 0U) - 8002236: e05f b.n 80022f8 - } - else - { - hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; - 8002238: 68fb ldr r3, [r7, #12] - 800223a: 681b ldr r3, [r3, #0] - 800223c: 681a ldr r2, [r3, #0] - 800223e: 68fb ldr r3, [r7, #12] - 8002240: 681b ldr r3, [r3, #0] - 8002242: 2180 movs r1, #128 @ 0x80 - 8002244: 01c9 lsls r1, r1, #7 - 8002246: 430a orrs r2, r1 - 8002248: 601a str r2, [r3, #0] - if (hi2c->XferCount != 0U) - 800224a: e055 b.n 80022f8 - } - } - else - { - /* Call TxCpltCallback() if no stop mode is set */ - if (I2C_GET_STOP_MODE(hi2c) != I2C_AUTOEND_MODE) - 800224c: 68fb ldr r3, [r7, #12] - 800224e: 681b ldr r3, [r3, #0] - 8002250: 685a ldr r2, [r3, #4] - 8002252: 2380 movs r3, #128 @ 0x80 - 8002254: 049b lsls r3, r3, #18 - 8002256: 401a ands r2, r3 - 8002258: 2380 movs r3, #128 @ 0x80 - 800225a: 049b lsls r3, r3, #18 - 800225c: 429a cmp r2, r3 - 800225e: d004 beq.n 800226a - { - /* Call I2C Master Sequential complete process */ - I2C_ITMasterSeqCplt(hi2c); - 8002260: 68fb ldr r3, [r7, #12] - 8002262: 0018 movs r0, r3 - 8002264: f000 fb0c bl 8002880 - if (hi2c->XferCount != 0U) - 8002268: e046 b.n 80022f8 - } - else - { - /* Wrong size Status regarding TCR flag event */ - /* Call the corresponding callback to inform upper layer of End of Transfer */ - I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); - 800226a: 68fb ldr r3, [r7, #12] - 800226c: 2140 movs r1, #64 @ 0x40 - 800226e: 0018 movs r0, r3 - 8002270: f000 fe5a bl 8002f28 - if (hi2c->XferCount != 0U) - 8002274: e040 b.n 80022f8 - } - } - } - else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_TC) != RESET) && \ - 8002276: 68bb ldr r3, [r7, #8] - 8002278: 2240 movs r2, #64 @ 0x40 - 800227a: 4013 ands r3, r2 - 800227c: d02c beq.n 80022d8 - (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) - 800227e: 687b ldr r3, [r7, #4] - 8002280: 2240 movs r2, #64 @ 0x40 - 8002282: 4013 ands r3, r2 - else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_TC) != RESET) && \ - 8002284: d028 beq.n 80022d8 - { - if (hi2c->XferCount == 0U) - 8002286: 68fb ldr r3, [r7, #12] - 8002288: 8d5b ldrh r3, [r3, #42] @ 0x2a - 800228a: b29b uxth r3, r3 - 800228c: 2b00 cmp r3, #0 - 800228e: d11d bne.n 80022cc - { - if (I2C_GET_STOP_MODE(hi2c) != I2C_AUTOEND_MODE) - 8002290: 68fb ldr r3, [r7, #12] - 8002292: 681b ldr r3, [r3, #0] - 8002294: 685a ldr r2, [r3, #4] - 8002296: 2380 movs r3, #128 @ 0x80 - 8002298: 049b lsls r3, r3, #18 - 800229a: 401a ands r2, r3 - 800229c: 2380 movs r3, #128 @ 0x80 - 800229e: 049b lsls r3, r3, #18 - 80022a0: 429a cmp r2, r3 - 80022a2: d028 beq.n 80022f6 - { - /* Generate a stop condition in case of no transfer option */ - if (hi2c->XferOptions == I2C_NO_OPTION_FRAME) - 80022a4: 68fb ldr r3, [r7, #12] - 80022a6: 6adb ldr r3, [r3, #44] @ 0x2c - 80022a8: 4a18 ldr r2, [pc, #96] @ (800230c ) - 80022aa: 4293 cmp r3, r2 - 80022ac: d109 bne.n 80022c2 - { - /* Generate Stop */ - hi2c->Instance->CR2 |= I2C_CR2_STOP; - 80022ae: 68fb ldr r3, [r7, #12] - 80022b0: 681b ldr r3, [r3, #0] - 80022b2: 685a ldr r2, [r3, #4] - 80022b4: 68fb ldr r3, [r7, #12] - 80022b6: 681b ldr r3, [r3, #0] - 80022b8: 2180 movs r1, #128 @ 0x80 - 80022ba: 01c9 lsls r1, r1, #7 - 80022bc: 430a orrs r2, r1 - 80022be: 605a str r2, [r3, #4] - if (hi2c->XferCount == 0U) - 80022c0: e019 b.n 80022f6 - } - else - { - /* Call I2C Master Sequential complete process */ - I2C_ITMasterSeqCplt(hi2c); - 80022c2: 68fb ldr r3, [r7, #12] - 80022c4: 0018 movs r0, r3 - 80022c6: f000 fadb bl 8002880 - if (hi2c->XferCount == 0U) - 80022ca: e014 b.n 80022f6 - } - else - { - /* Wrong size Status regarding TC flag event */ - /* Call the corresponding callback to inform upper layer of End of Transfer */ - I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); - 80022cc: 68fb ldr r3, [r7, #12] - 80022ce: 2140 movs r1, #64 @ 0x40 - 80022d0: 0018 movs r0, r3 - 80022d2: f000 fe29 bl 8002f28 - if (hi2c->XferCount == 0U) - 80022d6: e00e b.n 80022f6 - } - } - else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_STOPF) != RESET) && \ - 80022d8: 68bb ldr r3, [r7, #8] - 80022da: 2220 movs r2, #32 - 80022dc: 4013 ands r3, r2 - 80022de: d00b beq.n 80022f8 - (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) - 80022e0: 687b ldr r3, [r7, #4] - 80022e2: 2220 movs r2, #32 - 80022e4: 4013 ands r3, r2 - else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_STOPF) != RESET) && \ - 80022e6: d007 beq.n 80022f8 - { - /* Call I2C Master complete process */ - I2C_ITMasterCplt(hi2c, ITFlags); - 80022e8: 68ba ldr r2, [r7, #8] - 80022ea: 68fb ldr r3, [r7, #12] - 80022ec: 0011 movs r1, r2 - 80022ee: 0018 movs r0, r3 - 80022f0: f000 fb6c bl 80029cc - 80022f4: e000 b.n 80022f8 - if (hi2c->XferCount == 0U) - 80022f6: 46c0 nop @ (mov r8, r8) - { - /* Nothing to do */ - } - - /* Process Unlocked */ - __HAL_UNLOCK(hi2c); - 80022f8: 68fb ldr r3, [r7, #12] - 80022fa: 2240 movs r2, #64 @ 0x40 - 80022fc: 2100 movs r1, #0 - 80022fe: 5499 strb r1, [r3, r2] - - return HAL_OK; - 8002300: 2300 movs r3, #0 -} - 8002302: 0018 movs r0, r3 - 8002304: 46bd mov sp, r7 - 8002306: b007 add sp, #28 - 8002308: bd90 pop {r4, r7, pc} - 800230a: 46c0 nop @ (mov r8, r8) - 800230c: ffff0000 .word 0xffff0000 - -08002310 : - * @param ITSources Interrupt sources enabled. - * @retval HAL status - */ -static HAL_StatusTypeDef I2C_Mem_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, - uint32_t ITSources) -{ - 8002310: b590 push {r4, r7, lr} - 8002312: b089 sub sp, #36 @ 0x24 - 8002314: af02 add r7, sp, #8 - 8002316: 60f8 str r0, [r7, #12] - 8002318: 60b9 str r1, [r7, #8] - 800231a: 607a str r2, [r7, #4] - uint32_t direction = I2C_GENERATE_START_WRITE; - 800231c: 4b90 ldr r3, [pc, #576] @ (8002560 ) - 800231e: 617b str r3, [r7, #20] - - /* Process Locked */ - __HAL_LOCK(hi2c); - 8002320: 68fb ldr r3, [r7, #12] - 8002322: 2240 movs r2, #64 @ 0x40 - 8002324: 5c9b ldrb r3, [r3, r2] - 8002326: 2b01 cmp r3, #1 - 8002328: d101 bne.n 800232e - 800232a: 2302 movs r3, #2 - 800232c: e113 b.n 8002556 - 800232e: 68fb ldr r3, [r7, #12] - 8002330: 2240 movs r2, #64 @ 0x40 - 8002332: 2101 movs r1, #1 - 8002334: 5499 strb r1, [r3, r2] - - if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_AF) != RESET) && \ - 8002336: 68bb ldr r3, [r7, #8] - 8002338: 2210 movs r2, #16 - 800233a: 4013 ands r3, r2 - 800233c: d017 beq.n 800236e - (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) - 800233e: 687b ldr r3, [r7, #4] - 8002340: 2210 movs r2, #16 - 8002342: 4013 ands r3, r2 - if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_AF) != RESET) && \ - 8002344: d013 beq.n 800236e - { - /* Clear NACK Flag */ - __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); - 8002346: 68fb ldr r3, [r7, #12] - 8002348: 681b ldr r3, [r3, #0] - 800234a: 2210 movs r2, #16 - 800234c: 61da str r2, [r3, #28] - - /* Set corresponding Error Code */ - hi2c->ErrorCode |= HAL_I2C_ERROR_AF; - 800234e: 68fb ldr r3, [r7, #12] - 8002350: 6c5b ldr r3, [r3, #68] @ 0x44 - 8002352: 2204 movs r2, #4 - 8002354: 431a orrs r2, r3 - 8002356: 68fb ldr r3, [r7, #12] - 8002358: 645a str r2, [r3, #68] @ 0x44 - - /* No need to generate STOP, it is automatically done */ - /* But enable STOP interrupt, to treat it */ - /* Error callback will be send during stop flag treatment */ - I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT); - 800235a: 68fb ldr r3, [r7, #12] - 800235c: 2120 movs r1, #32 - 800235e: 0018 movs r0, r3 - 8002360: f000 ff88 bl 8003274 - - /* Flush TX register */ - I2C_Flush_TXDR(hi2c); - 8002364: 68fb ldr r3, [r7, #12] - 8002366: 0018 movs r0, r3 - 8002368: f000 ff09 bl 800317e - 800236c: e0ee b.n 800254c - } - else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_TXIS) != RESET) && \ - 800236e: 68bb ldr r3, [r7, #8] - 8002370: 2202 movs r2, #2 - 8002372: 4013 ands r3, r2 - 8002374: d00d beq.n 8002392 - (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TXI) != RESET)) - 8002376: 687b ldr r3, [r7, #4] - 8002378: 2202 movs r2, #2 - 800237a: 4013 ands r3, r2 - else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_TXIS) != RESET) && \ - 800237c: d009 beq.n 8002392 - { - /* Write LSB part of Memory Address */ - hi2c->Instance->TXDR = hi2c->Memaddress; - 800237e: 68fb ldr r3, [r7, #12] - 8002380: 681b ldr r3, [r3, #0] - 8002382: 68fa ldr r2, [r7, #12] - 8002384: 6d12 ldr r2, [r2, #80] @ 0x50 - 8002386: 629a str r2, [r3, #40] @ 0x28 - - /* Reset Memaddress content */ - hi2c->Memaddress = 0xFFFFFFFFU; - 8002388: 68fb ldr r3, [r7, #12] - 800238a: 2201 movs r2, #1 - 800238c: 4252 negs r2, r2 - 800238e: 651a str r2, [r3, #80] @ 0x50 - 8002390: e0dc b.n 800254c - } - else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_TCR) != RESET) && \ - 8002392: 68bb ldr r3, [r7, #8] - 8002394: 2280 movs r2, #128 @ 0x80 - 8002396: 4013 ands r3, r2 - 8002398: d063 beq.n 8002462 - (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) - 800239a: 687b ldr r3, [r7, #4] - 800239c: 2240 movs r2, #64 @ 0x40 - 800239e: 4013 ands r3, r2 - else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_TCR) != RESET) && \ - 80023a0: d05f beq.n 8002462 - { - /* Disable Interrupt related to address step */ - I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); - 80023a2: 68fb ldr r3, [r7, #12] - 80023a4: 2101 movs r1, #1 - 80023a6: 0018 movs r0, r3 - 80023a8: f000 ffee bl 8003388 - - /* Enable only Error interrupt */ - I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); - 80023ac: 68fb ldr r3, [r7, #12] - 80023ae: 2110 movs r1, #16 - 80023b0: 0018 movs r0, r3 - 80023b2: f000 ff5f bl 8003274 - - if (hi2c->XferCount != 0U) - 80023b6: 68fb ldr r3, [r7, #12] - 80023b8: 8d5b ldrh r3, [r3, #42] @ 0x2a - 80023ba: b29b uxth r3, r3 - 80023bc: 2b00 cmp r3, #0 - 80023be: d04a beq.n 8002456 - { - /* Prepare the new XferSize to transfer */ - if (hi2c->XferCount > MAX_NBYTE_SIZE) - 80023c0: 68fb ldr r3, [r7, #12] - 80023c2: 8d5b ldrh r3, [r3, #42] @ 0x2a - 80023c4: b29b uxth r3, r3 - 80023c6: 2bff cmp r3, #255 @ 0xff - 80023c8: d910 bls.n 80023ec - { - hi2c->XferSize = MAX_NBYTE_SIZE; - 80023ca: 68fb ldr r3, [r7, #12] - 80023cc: 22ff movs r2, #255 @ 0xff - 80023ce: 851a strh r2, [r3, #40] @ 0x28 - I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, - 80023d0: 68fb ldr r3, [r7, #12] - 80023d2: 6cdb ldr r3, [r3, #76] @ 0x4c - 80023d4: b299 uxth r1, r3 - 80023d6: 68fb ldr r3, [r7, #12] - 80023d8: 8d1b ldrh r3, [r3, #40] @ 0x28 - 80023da: b2da uxtb r2, r3 - 80023dc: 2380 movs r3, #128 @ 0x80 - 80023de: 045b lsls r3, r3, #17 - 80023e0: 68f8 ldr r0, [r7, #12] - 80023e2: 2400 movs r4, #0 - 80023e4: 9400 str r4, [sp, #0] - 80023e6: f000 ff0b bl 8003200 - 80023ea: e011 b.n 8002410 - I2C_RELOAD_MODE, I2C_NO_STARTSTOP); - } - else - { - hi2c->XferSize = hi2c->XferCount; - 80023ec: 68fb ldr r3, [r7, #12] - 80023ee: 8d5b ldrh r3, [r3, #42] @ 0x2a - 80023f0: b29a uxth r2, r3 - 80023f2: 68fb ldr r3, [r7, #12] - 80023f4: 851a strh r2, [r3, #40] @ 0x28 - I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, - 80023f6: 68fb ldr r3, [r7, #12] - 80023f8: 6cdb ldr r3, [r3, #76] @ 0x4c - 80023fa: b299 uxth r1, r3 - 80023fc: 68fb ldr r3, [r7, #12] - 80023fe: 8d1b ldrh r3, [r3, #40] @ 0x28 - 8002400: b2da uxtb r2, r3 - 8002402: 2380 movs r3, #128 @ 0x80 - 8002404: 049b lsls r3, r3, #18 - 8002406: 68f8 ldr r0, [r7, #12] - 8002408: 2400 movs r4, #0 - 800240a: 9400 str r4, [sp, #0] - 800240c: f000 fef8 bl 8003200 - I2C_AUTOEND_MODE, I2C_NO_STARTSTOP); - } - - /* Update XferCount value */ - hi2c->XferCount -= hi2c->XferSize; - 8002410: 68fb ldr r3, [r7, #12] - 8002412: 8d5b ldrh r3, [r3, #42] @ 0x2a - 8002414: b29a uxth r2, r3 - 8002416: 68fb ldr r3, [r7, #12] - 8002418: 8d1b ldrh r3, [r3, #40] @ 0x28 - 800241a: 1ad3 subs r3, r2, r3 - 800241c: b29a uxth r2, r3 - 800241e: 68fb ldr r3, [r7, #12] - 8002420: 855a strh r2, [r3, #42] @ 0x2a - - /* Enable DMA Request */ - if (hi2c->State == HAL_I2C_STATE_BUSY_RX) - 8002422: 68fb ldr r3, [r7, #12] - 8002424: 2241 movs r2, #65 @ 0x41 - 8002426: 5c9b ldrb r3, [r3, r2] - 8002428: b2db uxtb r3, r3 - 800242a: 2b22 cmp r3, #34 @ 0x22 - 800242c: d109 bne.n 8002442 - { - hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; - 800242e: 68fb ldr r3, [r7, #12] - 8002430: 681b ldr r3, [r3, #0] - 8002432: 681a ldr r2, [r3, #0] - 8002434: 68fb ldr r3, [r7, #12] - 8002436: 681b ldr r3, [r3, #0] - 8002438: 2180 movs r1, #128 @ 0x80 - 800243a: 0209 lsls r1, r1, #8 - 800243c: 430a orrs r2, r1 - 800243e: 601a str r2, [r3, #0] - if (hi2c->XferCount != 0U) - 8002440: e084 b.n 800254c - } - else - { - hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; - 8002442: 68fb ldr r3, [r7, #12] - 8002444: 681b ldr r3, [r3, #0] - 8002446: 681a ldr r2, [r3, #0] - 8002448: 68fb ldr r3, [r7, #12] - 800244a: 681b ldr r3, [r3, #0] - 800244c: 2180 movs r1, #128 @ 0x80 - 800244e: 01c9 lsls r1, r1, #7 - 8002450: 430a orrs r2, r1 - 8002452: 601a str r2, [r3, #0] - if (hi2c->XferCount != 0U) - 8002454: e07a b.n 800254c - } - else - { - /* Wrong size Status regarding TCR flag event */ - /* Call the corresponding callback to inform upper layer of End of Transfer */ - I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); - 8002456: 68fb ldr r3, [r7, #12] - 8002458: 2140 movs r1, #64 @ 0x40 - 800245a: 0018 movs r0, r3 - 800245c: f000 fd64 bl 8002f28 - if (hi2c->XferCount != 0U) - 8002460: e074 b.n 800254c - } - } - else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_TC) != RESET) && \ - 8002462: 68bb ldr r3, [r7, #8] - 8002464: 2240 movs r2, #64 @ 0x40 - 8002466: 4013 ands r3, r2 - 8002468: d062 beq.n 8002530 - (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) - 800246a: 687b ldr r3, [r7, #4] - 800246c: 2240 movs r2, #64 @ 0x40 - 800246e: 4013 ands r3, r2 - else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_TC) != RESET) && \ - 8002470: d05e beq.n 8002530 - { - /* Disable Interrupt related to address step */ - I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); - 8002472: 68fb ldr r3, [r7, #12] - 8002474: 2101 movs r1, #1 - 8002476: 0018 movs r0, r3 - 8002478: f000 ff86 bl 8003388 - - /* Enable only Error and NACK interrupt for data transfer */ - I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); - 800247c: 68fb ldr r3, [r7, #12] - 800247e: 2110 movs r1, #16 - 8002480: 0018 movs r0, r3 - 8002482: f000 fef7 bl 8003274 - - if (hi2c->State == HAL_I2C_STATE_BUSY_RX) - 8002486: 68fb ldr r3, [r7, #12] - 8002488: 2241 movs r2, #65 @ 0x41 - 800248a: 5c9b ldrb r3, [r3, r2] - 800248c: b2db uxtb r3, r3 - 800248e: 2b22 cmp r3, #34 @ 0x22 - 8002490: d101 bne.n 8002496 - { - direction = I2C_GENERATE_START_READ; - 8002492: 4b34 ldr r3, [pc, #208] @ (8002564 ) - 8002494: 617b str r3, [r7, #20] - } - - if (hi2c->XferCount > MAX_NBYTE_SIZE) - 8002496: 68fb ldr r3, [r7, #12] - 8002498: 8d5b ldrh r3, [r3, #42] @ 0x2a - 800249a: b29b uxth r3, r3 - 800249c: 2bff cmp r3, #255 @ 0xff - 800249e: d911 bls.n 80024c4 - { - hi2c->XferSize = MAX_NBYTE_SIZE; - 80024a0: 68fb ldr r3, [r7, #12] - 80024a2: 22ff movs r2, #255 @ 0xff - 80024a4: 851a strh r2, [r3, #40] @ 0x28 - - /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */ - I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, - 80024a6: 68fb ldr r3, [r7, #12] - 80024a8: 6cdb ldr r3, [r3, #76] @ 0x4c - 80024aa: b299 uxth r1, r3 - 80024ac: 68fb ldr r3, [r7, #12] - 80024ae: 8d1b ldrh r3, [r3, #40] @ 0x28 - 80024b0: b2da uxtb r2, r3 - 80024b2: 2380 movs r3, #128 @ 0x80 - 80024b4: 045c lsls r4, r3, #17 - 80024b6: 68f8 ldr r0, [r7, #12] - 80024b8: 697b ldr r3, [r7, #20] - 80024ba: 9300 str r3, [sp, #0] - 80024bc: 0023 movs r3, r4 - 80024be: f000 fe9f bl 8003200 - 80024c2: e012 b.n 80024ea - I2C_RELOAD_MODE, direction); - } - else - { - hi2c->XferSize = hi2c->XferCount; - 80024c4: 68fb ldr r3, [r7, #12] - 80024c6: 8d5b ldrh r3, [r3, #42] @ 0x2a - 80024c8: b29a uxth r2, r3 - 80024ca: 68fb ldr r3, [r7, #12] - 80024cc: 851a strh r2, [r3, #40] @ 0x28 - - /* Set NBYTES to write and generate RESTART */ - I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, - 80024ce: 68fb ldr r3, [r7, #12] - 80024d0: 6cdb ldr r3, [r3, #76] @ 0x4c - 80024d2: b299 uxth r1, r3 - 80024d4: 68fb ldr r3, [r7, #12] - 80024d6: 8d1b ldrh r3, [r3, #40] @ 0x28 - 80024d8: b2da uxtb r2, r3 - 80024da: 2380 movs r3, #128 @ 0x80 - 80024dc: 049c lsls r4, r3, #18 - 80024de: 68f8 ldr r0, [r7, #12] - 80024e0: 697b ldr r3, [r7, #20] - 80024e2: 9300 str r3, [sp, #0] - 80024e4: 0023 movs r3, r4 - 80024e6: f000 fe8b bl 8003200 - I2C_AUTOEND_MODE, direction); - } - - /* Update XferCount value */ - hi2c->XferCount -= hi2c->XferSize; - 80024ea: 68fb ldr r3, [r7, #12] - 80024ec: 8d5b ldrh r3, [r3, #42] @ 0x2a - 80024ee: b29a uxth r2, r3 - 80024f0: 68fb ldr r3, [r7, #12] - 80024f2: 8d1b ldrh r3, [r3, #40] @ 0x28 - 80024f4: 1ad3 subs r3, r2, r3 - 80024f6: b29a uxth r2, r3 - 80024f8: 68fb ldr r3, [r7, #12] - 80024fa: 855a strh r2, [r3, #42] @ 0x2a - - /* Enable DMA Request */ - if (hi2c->State == HAL_I2C_STATE_BUSY_RX) - 80024fc: 68fb ldr r3, [r7, #12] - 80024fe: 2241 movs r2, #65 @ 0x41 - 8002500: 5c9b ldrb r3, [r3, r2] - 8002502: b2db uxtb r3, r3 - 8002504: 2b22 cmp r3, #34 @ 0x22 - 8002506: d109 bne.n 800251c - { - hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; - 8002508: 68fb ldr r3, [r7, #12] - 800250a: 681b ldr r3, [r3, #0] - 800250c: 681a ldr r2, [r3, #0] - 800250e: 68fb ldr r3, [r7, #12] - 8002510: 681b ldr r3, [r3, #0] - 8002512: 2180 movs r1, #128 @ 0x80 - 8002514: 0209 lsls r1, r1, #8 - 8002516: 430a orrs r2, r1 - 8002518: 601a str r2, [r3, #0] - if (hi2c->State == HAL_I2C_STATE_BUSY_RX) - 800251a: e017 b.n 800254c - } - else - { - hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; - 800251c: 68fb ldr r3, [r7, #12] - 800251e: 681b ldr r3, [r3, #0] - 8002520: 681a ldr r2, [r3, #0] - 8002522: 68fb ldr r3, [r7, #12] - 8002524: 681b ldr r3, [r3, #0] - 8002526: 2180 movs r1, #128 @ 0x80 - 8002528: 01c9 lsls r1, r1, #7 - 800252a: 430a orrs r2, r1 - 800252c: 601a str r2, [r3, #0] - if (hi2c->State == HAL_I2C_STATE_BUSY_RX) - 800252e: e00d b.n 800254c - } - } - else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_STOPF) != RESET) && \ - 8002530: 68bb ldr r3, [r7, #8] - 8002532: 2220 movs r2, #32 - 8002534: 4013 ands r3, r2 - 8002536: d009 beq.n 800254c - (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) - 8002538: 687b ldr r3, [r7, #4] - 800253a: 2220 movs r2, #32 - 800253c: 4013 ands r3, r2 - else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_STOPF) != RESET) && \ - 800253e: d005 beq.n 800254c - { - /* Call I2C Master complete process */ - I2C_ITMasterCplt(hi2c, ITFlags); - 8002540: 68ba ldr r2, [r7, #8] - 8002542: 68fb ldr r3, [r7, #12] - 8002544: 0011 movs r1, r2 - 8002546: 0018 movs r0, r3 - 8002548: f000 fa40 bl 80029cc - { - /* Nothing to do */ - } - - /* Process Unlocked */ - __HAL_UNLOCK(hi2c); - 800254c: 68fb ldr r3, [r7, #12] - 800254e: 2240 movs r2, #64 @ 0x40 - 8002550: 2100 movs r1, #0 - 8002552: 5499 strb r1, [r3, r2] - - return HAL_OK; - 8002554: 2300 movs r3, #0 -} - 8002556: 0018 movs r0, r3 - 8002558: 46bd mov sp, r7 - 800255a: b007 add sp, #28 - 800255c: bd90 pop {r4, r7, pc} - 800255e: 46c0 nop @ (mov r8, r8) - 8002560: 80002000 .word 0x80002000 - 8002564: 80002400 .word 0x80002400 - -08002568 : - * @param ITSources Interrupt sources enabled. - * @retval HAL status - */ -static HAL_StatusTypeDef I2C_Slave_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, - uint32_t ITSources) -{ - 8002568: b580 push {r7, lr} - 800256a: b088 sub sp, #32 - 800256c: af00 add r7, sp, #0 - 800256e: 60f8 str r0, [r7, #12] - 8002570: 60b9 str r1, [r7, #8] - 8002572: 607a str r2, [r7, #4] - uint32_t tmpoptions = hi2c->XferOptions; - 8002574: 68fb ldr r3, [r7, #12] - 8002576: 6adb ldr r3, [r3, #44] @ 0x2c - 8002578: 61bb str r3, [r7, #24] - uint32_t treatdmanack = 0U; - 800257a: 2300 movs r3, #0 - 800257c: 61fb str r3, [r7, #28] - HAL_I2C_StateTypeDef tmpstate; - - /* Process locked */ - __HAL_LOCK(hi2c); - 800257e: 68fb ldr r3, [r7, #12] - 8002580: 2240 movs r2, #64 @ 0x40 - 8002582: 5c9b ldrb r3, [r3, r2] - 8002584: 2b01 cmp r3, #1 - 8002586: d101 bne.n 800258c - 8002588: 2302 movs r3, #2 - 800258a: e0ce b.n 800272a - 800258c: 68fb ldr r3, [r7, #12] - 800258e: 2240 movs r2, #64 @ 0x40 - 8002590: 2101 movs r1, #1 - 8002592: 5499 strb r1, [r3, r2] - - /* Check if STOPF is set */ - if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_STOPF) != RESET) && \ - 8002594: 68bb ldr r3, [r7, #8] - 8002596: 2220 movs r2, #32 - 8002598: 4013 ands r3, r2 - 800259a: d00a beq.n 80025b2 - (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) - 800259c: 687b ldr r3, [r7, #4] - 800259e: 2220 movs r2, #32 - 80025a0: 4013 ands r3, r2 - if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_STOPF) != RESET) && \ - 80025a2: d006 beq.n 80025b2 - { - /* Call I2C Slave complete process */ - I2C_ITSlaveCplt(hi2c, ITFlags); - 80025a4: 68ba ldr r2, [r7, #8] - 80025a6: 68fb ldr r3, [r7, #12] - 80025a8: 0011 movs r1, r2 - 80025aa: 0018 movs r0, r3 - 80025ac: f000 fadc bl 8002b68 - 80025b0: e0b6 b.n 8002720 - } - else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_AF) != RESET) && \ - 80025b2: 68bb ldr r3, [r7, #8] - 80025b4: 2210 movs r2, #16 - 80025b6: 4013 ands r3, r2 - 80025b8: d100 bne.n 80025bc - 80025ba: e0a3 b.n 8002704 - (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) - 80025bc: 687b ldr r3, [r7, #4] - 80025be: 2210 movs r2, #16 - 80025c0: 4013 ands r3, r2 - else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_AF) != RESET) && \ - 80025c2: d100 bne.n 80025c6 - 80025c4: e09e b.n 8002704 - { - /* Check that I2C transfer finished */ - /* if yes, normal use case, a NACK is sent by the MASTER when Transfer is finished */ - /* Mean XferCount == 0 */ - /* So clear Flag NACKF only */ - if ((I2C_CHECK_IT_SOURCE(ITSources, I2C_CR1_TXDMAEN) != RESET) || - 80025c6: 687a ldr r2, [r7, #4] - 80025c8: 2380 movs r3, #128 @ 0x80 - 80025ca: 01db lsls r3, r3, #7 - 80025cc: 4013 ands r3, r2 - 80025ce: d105 bne.n 80025dc - (I2C_CHECK_IT_SOURCE(ITSources, I2C_CR1_RXDMAEN) != RESET)) - 80025d0: 687a ldr r2, [r7, #4] - 80025d2: 2380 movs r3, #128 @ 0x80 - 80025d4: 021b lsls r3, r3, #8 - 80025d6: 4013 ands r3, r2 - if ((I2C_CHECK_IT_SOURCE(ITSources, I2C_CR1_TXDMAEN) != RESET) || - 80025d8: d100 bne.n 80025dc - 80025da: e08c b.n 80026f6 - { - /* Split check of hdmarx, for MISRA compliance */ - if (hi2c->hdmarx != NULL) - 80025dc: 68fb ldr r3, [r7, #12] - 80025de: 6bdb ldr r3, [r3, #60] @ 0x3c - 80025e0: 2b00 cmp r3, #0 - 80025e2: d00c beq.n 80025fe - { - if (I2C_CHECK_IT_SOURCE(ITSources, I2C_CR1_RXDMAEN) != RESET) - 80025e4: 687a ldr r2, [r7, #4] - 80025e6: 2380 movs r3, #128 @ 0x80 - 80025e8: 021b lsls r3, r3, #8 - 80025ea: 4013 ands r3, r2 - 80025ec: d007 beq.n 80025fe - { - if (I2C_GET_DMA_REMAIN_DATA(hi2c->hdmarx) == 0U) - 80025ee: 68fb ldr r3, [r7, #12] - 80025f0: 6bdb ldr r3, [r3, #60] @ 0x3c - 80025f2: 681b ldr r3, [r3, #0] - 80025f4: 685b ldr r3, [r3, #4] - 80025f6: 2b00 cmp r3, #0 - 80025f8: d101 bne.n 80025fe - { - treatdmanack = 1U; - 80025fa: 2301 movs r3, #1 - 80025fc: 61fb str r3, [r7, #28] - } - } - } - - /* Split check of hdmatx, for MISRA compliance */ - if (hi2c->hdmatx != NULL) - 80025fe: 68fb ldr r3, [r7, #12] - 8002600: 6b9b ldr r3, [r3, #56] @ 0x38 - 8002602: 2b00 cmp r3, #0 - 8002604: d00c beq.n 8002620 - { - if (I2C_CHECK_IT_SOURCE(ITSources, I2C_CR1_TXDMAEN) != RESET) - 8002606: 687a ldr r2, [r7, #4] - 8002608: 2380 movs r3, #128 @ 0x80 - 800260a: 01db lsls r3, r3, #7 - 800260c: 4013 ands r3, r2 - 800260e: d007 beq.n 8002620 - { - if (I2C_GET_DMA_REMAIN_DATA(hi2c->hdmatx) == 0U) - 8002610: 68fb ldr r3, [r7, #12] - 8002612: 6b9b ldr r3, [r3, #56] @ 0x38 - 8002614: 681b ldr r3, [r3, #0] - 8002616: 685b ldr r3, [r3, #4] - 8002618: 2b00 cmp r3, #0 - 800261a: d101 bne.n 8002620 - { - treatdmanack = 1U; - 800261c: 2301 movs r3, #1 - 800261e: 61fb str r3, [r7, #28] - } - } - } - - if (treatdmanack == 1U) - 8002620: 69fb ldr r3, [r7, #28] - 8002622: 2b01 cmp r3, #1 - 8002624: d12d bne.n 8002682 - { - if ((hi2c->State == HAL_I2C_STATE_LISTEN) && (tmpoptions == I2C_FIRST_AND_LAST_FRAME)) - 8002626: 68fb ldr r3, [r7, #12] - 8002628: 2241 movs r2, #65 @ 0x41 - 800262a: 5c9b ldrb r3, [r3, r2] - 800262c: b2db uxtb r3, r3 - 800262e: 2b28 cmp r3, #40 @ 0x28 - 8002630: d10b bne.n 800264a - 8002632: 69ba ldr r2, [r7, #24] - 8002634: 2380 movs r3, #128 @ 0x80 - 8002636: 049b lsls r3, r3, #18 - 8002638: 429a cmp r2, r3 - 800263a: d106 bne.n 800264a - /* Same action must be done for (tmpoptions == I2C_LAST_FRAME) which removed for - Warning[Pa134]: left and right operands are identical */ - { - /* Call I2C Listen complete process */ - I2C_ITListenCplt(hi2c, ITFlags); - 800263c: 68ba ldr r2, [r7, #8] - 800263e: 68fb ldr r3, [r7, #12] - 8002640: 0011 movs r1, r2 - 8002642: 0018 movs r0, r3 - 8002644: f000 fc18 bl 8002e78 - 8002648: e054 b.n 80026f4 - } - else if ((hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) && (tmpoptions != I2C_NO_OPTION_FRAME)) - 800264a: 68fb ldr r3, [r7, #12] - 800264c: 2241 movs r2, #65 @ 0x41 - 800264e: 5c9b ldrb r3, [r3, r2] - 8002650: b2db uxtb r3, r3 - 8002652: 2b29 cmp r3, #41 @ 0x29 - 8002654: d110 bne.n 8002678 - 8002656: 69bb ldr r3, [r7, #24] - 8002658: 4a36 ldr r2, [pc, #216] @ (8002734 ) - 800265a: 4293 cmp r3, r2 - 800265c: d00c beq.n 8002678 - { - /* Clear NACK Flag */ - __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); - 800265e: 68fb ldr r3, [r7, #12] - 8002660: 681b ldr r3, [r3, #0] - 8002662: 2210 movs r2, #16 - 8002664: 61da str r2, [r3, #28] - - /* Flush TX register */ - I2C_Flush_TXDR(hi2c); - 8002666: 68fb ldr r3, [r7, #12] - 8002668: 0018 movs r0, r3 - 800266a: f000 fd88 bl 800317e - - /* Last Byte is Transmitted */ - /* Call I2C Slave Sequential complete process */ - I2C_ITSlaveSeqCplt(hi2c); - 800266e: 68fb ldr r3, [r7, #12] - 8002670: 0018 movs r0, r3 - 8002672: f000 f947 bl 8002904 - 8002676: e03d b.n 80026f4 - } - else - { - /* Clear NACK Flag */ - __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); - 8002678: 68fb ldr r3, [r7, #12] - 800267a: 681b ldr r3, [r3, #0] - 800267c: 2210 movs r2, #16 - 800267e: 61da str r2, [r3, #28] - if (treatdmanack == 1U) - 8002680: e03e b.n 8002700 - } - else - { - /* if no, error use case, a Non-Acknowledge of last Data is generated by the MASTER*/ - /* Clear NACK Flag */ - __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); - 8002682: 68fb ldr r3, [r7, #12] - 8002684: 681b ldr r3, [r3, #0] - 8002686: 2210 movs r2, #16 - 8002688: 61da str r2, [r3, #28] - - /* Set ErrorCode corresponding to a Non-Acknowledge */ - hi2c->ErrorCode |= HAL_I2C_ERROR_AF; - 800268a: 68fb ldr r3, [r7, #12] - 800268c: 6c5b ldr r3, [r3, #68] @ 0x44 - 800268e: 2204 movs r2, #4 - 8002690: 431a orrs r2, r3 - 8002692: 68fb ldr r3, [r7, #12] - 8002694: 645a str r2, [r3, #68] @ 0x44 - - /* Store current hi2c->State, solve MISRA2012-Rule-13.5 */ - tmpstate = hi2c->State; - 8002696: 2317 movs r3, #23 - 8002698: 18fb adds r3, r7, r3 - 800269a: 68fa ldr r2, [r7, #12] - 800269c: 2141 movs r1, #65 @ 0x41 - 800269e: 5c52 ldrb r2, [r2, r1] - 80026a0: 701a strb r2, [r3, #0] - - if ((tmpoptions == I2C_FIRST_FRAME) || (tmpoptions == I2C_NEXT_FRAME)) - 80026a2: 69bb ldr r3, [r7, #24] - 80026a4: 2b00 cmp r3, #0 - 80026a6: d004 beq.n 80026b2 - 80026a8: 69ba ldr r2, [r7, #24] - 80026aa: 2380 movs r3, #128 @ 0x80 - 80026ac: 045b lsls r3, r3, #17 - 80026ae: 429a cmp r2, r3 - 80026b0: d126 bne.n 8002700 - { - if ((tmpstate == HAL_I2C_STATE_BUSY_TX) || (tmpstate == HAL_I2C_STATE_BUSY_TX_LISTEN)) - 80026b2: 2217 movs r2, #23 - 80026b4: 18bb adds r3, r7, r2 - 80026b6: 781b ldrb r3, [r3, #0] - 80026b8: 2b21 cmp r3, #33 @ 0x21 - 80026ba: d003 beq.n 80026c4 - 80026bc: 18bb adds r3, r7, r2 - 80026be: 781b ldrb r3, [r3, #0] - 80026c0: 2b29 cmp r3, #41 @ 0x29 - 80026c2: d103 bne.n 80026cc - { - hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_TX; - 80026c4: 68fb ldr r3, [r7, #12] - 80026c6: 2221 movs r2, #33 @ 0x21 - 80026c8: 631a str r2, [r3, #48] @ 0x30 - 80026ca: e00b b.n 80026e4 - } - else if ((tmpstate == HAL_I2C_STATE_BUSY_RX) || (tmpstate == HAL_I2C_STATE_BUSY_RX_LISTEN)) - 80026cc: 2217 movs r2, #23 - 80026ce: 18bb adds r3, r7, r2 - 80026d0: 781b ldrb r3, [r3, #0] - 80026d2: 2b22 cmp r3, #34 @ 0x22 - 80026d4: d003 beq.n 80026de - 80026d6: 18bb adds r3, r7, r2 - 80026d8: 781b ldrb r3, [r3, #0] - 80026da: 2b2a cmp r3, #42 @ 0x2a - 80026dc: d102 bne.n 80026e4 - { - hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_RX; - 80026de: 68fb ldr r3, [r7, #12] - 80026e0: 2222 movs r2, #34 @ 0x22 - 80026e2: 631a str r2, [r3, #48] @ 0x30 - { - /* Do nothing */ - } - - /* Call the corresponding callback to inform upper layer of End of Transfer */ - I2C_ITError(hi2c, hi2c->ErrorCode); - 80026e4: 68fb ldr r3, [r7, #12] - 80026e6: 6c5a ldr r2, [r3, #68] @ 0x44 - 80026e8: 68fb ldr r3, [r7, #12] - 80026ea: 0011 movs r1, r2 - 80026ec: 0018 movs r0, r3 - 80026ee: f000 fc1b bl 8002f28 - if (treatdmanack == 1U) - 80026f2: e005 b.n 8002700 - 80026f4: e004 b.n 8002700 - } - } - else - { - /* Only Clear NACK Flag, no DMA treatment is pending */ - __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); - 80026f6: 68fb ldr r3, [r7, #12] - 80026f8: 681b ldr r3, [r3, #0] - 80026fa: 2210 movs r2, #16 - 80026fc: 61da str r2, [r3, #28] - if ((I2C_CHECK_IT_SOURCE(ITSources, I2C_CR1_TXDMAEN) != RESET) || - 80026fe: e00f b.n 8002720 - if (treatdmanack == 1U) - 8002700: 46c0 nop @ (mov r8, r8) - if ((I2C_CHECK_IT_SOURCE(ITSources, I2C_CR1_TXDMAEN) != RESET) || - 8002702: e00d b.n 8002720 - } - } - else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_ADDR) != RESET) && \ - 8002704: 68bb ldr r3, [r7, #8] - 8002706: 2208 movs r2, #8 - 8002708: 4013 ands r3, r2 - 800270a: d009 beq.n 8002720 - (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_ADDRI) != RESET)) - 800270c: 687b ldr r3, [r7, #4] - 800270e: 2208 movs r2, #8 - 8002710: 4013 ands r3, r2 - else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_ADDR) != RESET) && \ - 8002712: d005 beq.n 8002720 - { - I2C_ITAddrCplt(hi2c, ITFlags); - 8002714: 68ba ldr r2, [r7, #8] - 8002716: 68fb ldr r3, [r7, #12] - 8002718: 0011 movs r1, r2 - 800271a: 0018 movs r0, r3 - 800271c: f000 f80c bl 8002738 - { - /* Nothing to do */ - } - - /* Process Unlocked */ - __HAL_UNLOCK(hi2c); - 8002720: 68fb ldr r3, [r7, #12] - 8002722: 2240 movs r2, #64 @ 0x40 - 8002724: 2100 movs r1, #0 - 8002726: 5499 strb r1, [r3, r2] - - return HAL_OK; - 8002728: 2300 movs r3, #0 -} - 800272a: 0018 movs r0, r3 - 800272c: 46bd mov sp, r7 - 800272e: b008 add sp, #32 - 8002730: bd80 pop {r7, pc} - 8002732: 46c0 nop @ (mov r8, r8) - 8002734: ffff0000 .word 0xffff0000 - -08002738 : +08002134 : * @param hi2c I2C handle. * @param ITFlags Interrupt flags to handle. * @retval None */ static void I2C_ITAddrCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags) { - 8002738: b5b0 push {r4, r5, r7, lr} - 800273a: b084 sub sp, #16 - 800273c: af00 add r7, sp, #0 - 800273e: 6078 str r0, [r7, #4] - 8002740: 6039 str r1, [r7, #0] + 8002134: b5b0 push {r4, r5, r7, lr} + 8002136: b084 sub sp, #16 + 8002138: af00 add r7, sp, #0 + 800213a: 6078 str r0, [r7, #4] + 800213c: 6039 str r1, [r7, #0] /* Prevent unused argument(s) compilation warning */ UNUSED(ITFlags); /* In case of Listen state, need to inform upper layer of address match code event */ if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN) - 8002742: 687b ldr r3, [r7, #4] - 8002744: 2241 movs r2, #65 @ 0x41 - 8002746: 5c9b ldrb r3, [r3, r2] - 8002748: b2db uxtb r3, r3 - 800274a: 001a movs r2, r3 - 800274c: 2328 movs r3, #40 @ 0x28 - 800274e: 4013 ands r3, r2 - 8002750: 2b28 cmp r3, #40 @ 0x28 - 8002752: d000 beq.n 8002756 - 8002754: e088 b.n 8002868 + 800213e: 687b ldr r3, [r7, #4] + 8002140: 2241 movs r2, #65 @ 0x41 + 8002142: 5c9b ldrb r3, [r3, r2] + 8002144: b2db uxtb r3, r3 + 8002146: 001a movs r2, r3 + 8002148: 2328 movs r3, #40 @ 0x28 + 800214a: 4013 ands r3, r2 + 800214c: 2b28 cmp r3, #40 @ 0x28 + 800214e: d000 beq.n 8002152 + 8002150: e088 b.n 8002264 { transferdirection = I2C_GET_DIR(hi2c); - 8002756: 687b ldr r3, [r7, #4] - 8002758: 681b ldr r3, [r3, #0] - 800275a: 699b ldr r3, [r3, #24] - 800275c: 0c1b lsrs r3, r3, #16 - 800275e: b2da uxtb r2, r3 - 8002760: 250f movs r5, #15 - 8002762: 197b adds r3, r7, r5 - 8002764: 2101 movs r1, #1 - 8002766: 400a ands r2, r1 - 8002768: 701a strb r2, [r3, #0] + 8002152: 687b ldr r3, [r7, #4] + 8002154: 681b ldr r3, [r3, #0] + 8002156: 699b ldr r3, [r3, #24] + 8002158: 0c1b lsrs r3, r3, #16 + 800215a: b2da uxtb r2, r3 + 800215c: 250f movs r5, #15 + 800215e: 197b adds r3, r7, r5 + 8002160: 2101 movs r1, #1 + 8002162: 400a ands r2, r1 + 8002164: 701a strb r2, [r3, #0] slaveaddrcode = I2C_GET_ADDR_MATCH(hi2c); - 800276a: 687b ldr r3, [r7, #4] - 800276c: 681b ldr r3, [r3, #0] - 800276e: 699b ldr r3, [r3, #24] - 8002770: 0c1b lsrs r3, r3, #16 - 8002772: b29a uxth r2, r3 - 8002774: 200c movs r0, #12 - 8002776: 183b adds r3, r7, r0 - 8002778: 21fe movs r1, #254 @ 0xfe - 800277a: 400a ands r2, r1 - 800277c: 801a strh r2, [r3, #0] + 8002166: 687b ldr r3, [r7, #4] + 8002168: 681b ldr r3, [r3, #0] + 800216a: 699b ldr r3, [r3, #24] + 800216c: 0c1b lsrs r3, r3, #16 + 800216e: b29a uxth r2, r3 + 8002170: 200c movs r0, #12 + 8002172: 183b adds r3, r7, r0 + 8002174: 21fe movs r1, #254 @ 0xfe + 8002176: 400a ands r2, r1 + 8002178: 801a strh r2, [r3, #0] ownadd1code = I2C_GET_OWN_ADDRESS1(hi2c); - 800277e: 687b ldr r3, [r7, #4] - 8002780: 681b ldr r3, [r3, #0] - 8002782: 689b ldr r3, [r3, #8] - 8002784: b29a uxth r2, r3 - 8002786: 240a movs r4, #10 - 8002788: 193b adds r3, r7, r4 - 800278a: 0592 lsls r2, r2, #22 - 800278c: 0d92 lsrs r2, r2, #22 - 800278e: 801a strh r2, [r3, #0] + 800217a: 687b ldr r3, [r7, #4] + 800217c: 681b ldr r3, [r3, #0] + 800217e: 689b ldr r3, [r3, #8] + 8002180: b29a uxth r2, r3 + 8002182: 240a movs r4, #10 + 8002184: 193b adds r3, r7, r4 + 8002186: 0592 lsls r2, r2, #22 + 8002188: 0d92 lsrs r2, r2, #22 + 800218a: 801a strh r2, [r3, #0] ownadd2code = I2C_GET_OWN_ADDRESS2(hi2c); - 8002790: 687b ldr r3, [r7, #4] - 8002792: 681b ldr r3, [r3, #0] - 8002794: 68db ldr r3, [r3, #12] - 8002796: b29a uxth r2, r3 - 8002798: 2308 movs r3, #8 - 800279a: 18fb adds r3, r7, r3 - 800279c: 21fe movs r1, #254 @ 0xfe - 800279e: 400a ands r2, r1 - 80027a0: 801a strh r2, [r3, #0] + 800218c: 687b ldr r3, [r7, #4] + 800218e: 681b ldr r3, [r3, #0] + 8002190: 68db ldr r3, [r3, #12] + 8002192: b29a uxth r2, r3 + 8002194: 2308 movs r3, #8 + 8002196: 18fb adds r3, r7, r3 + 8002198: 21fe movs r1, #254 @ 0xfe + 800219a: 400a ands r2, r1 + 800219c: 801a strh r2, [r3, #0] /* If 10bits addressing mode is selected */ if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_10BIT) - 80027a2: 687b ldr r3, [r7, #4] - 80027a4: 68db ldr r3, [r3, #12] - 80027a6: 2b02 cmp r3, #2 - 80027a8: d148 bne.n 800283c + 800219e: 687b ldr r3, [r7, #4] + 80021a0: 68db ldr r3, [r3, #12] + 80021a2: 2b02 cmp r3, #2 + 80021a4: d148 bne.n 8002238 { if ((slaveaddrcode & SLAVE_ADDR_MSK) == ((ownadd1code >> SLAVE_ADDR_SHIFT) & SLAVE_ADDR_MSK)) - 80027aa: 0021 movs r1, r4 - 80027ac: 187b adds r3, r7, r1 - 80027ae: 881b ldrh r3, [r3, #0] - 80027b0: 09db lsrs r3, r3, #7 - 80027b2: b29a uxth r2, r3 - 80027b4: 183b adds r3, r7, r0 - 80027b6: 881b ldrh r3, [r3, #0] - 80027b8: 4053 eors r3, r2 - 80027ba: b29b uxth r3, r3 - 80027bc: 001a movs r2, r3 - 80027be: 2306 movs r3, #6 - 80027c0: 4013 ands r3, r2 - 80027c2: d120 bne.n 8002806 + 80021a6: 0021 movs r1, r4 + 80021a8: 187b adds r3, r7, r1 + 80021aa: 881b ldrh r3, [r3, #0] + 80021ac: 09db lsrs r3, r3, #7 + 80021ae: b29a uxth r2, r3 + 80021b0: 183b adds r3, r7, r0 + 80021b2: 881b ldrh r3, [r3, #0] + 80021b4: 4053 eors r3, r2 + 80021b6: b29b uxth r3, r3 + 80021b8: 001a movs r2, r3 + 80021ba: 2306 movs r3, #6 + 80021bc: 4013 ands r3, r2 + 80021be: d120 bne.n 8002202 { slaveaddrcode = ownadd1code; - 80027c4: 183b adds r3, r7, r0 - 80027c6: 187a adds r2, r7, r1 - 80027c8: 8812 ldrh r2, [r2, #0] - 80027ca: 801a strh r2, [r3, #0] + 80021c0: 183b adds r3, r7, r0 + 80021c2: 187a adds r2, r7, r1 + 80021c4: 8812 ldrh r2, [r2, #0] + 80021c6: 801a strh r2, [r3, #0] hi2c->AddrEventCount++; - 80027cc: 687b ldr r3, [r7, #4] - 80027ce: 6c9b ldr r3, [r3, #72] @ 0x48 - 80027d0: 1c5a adds r2, r3, #1 - 80027d2: 687b ldr r3, [r7, #4] - 80027d4: 649a str r2, [r3, #72] @ 0x48 + 80021c8: 687b ldr r3, [r7, #4] + 80021ca: 6c9b ldr r3, [r3, #72] @ 0x48 + 80021cc: 1c5a adds r2, r3, #1 + 80021ce: 687b ldr r3, [r7, #4] + 80021d0: 649a str r2, [r3, #72] @ 0x48 if (hi2c->AddrEventCount == 2U) - 80027d6: 687b ldr r3, [r7, #4] - 80027d8: 6c9b ldr r3, [r3, #72] @ 0x48 - 80027da: 2b02 cmp r3, #2 - 80027dc: d14c bne.n 8002878 + 80021d2: 687b ldr r3, [r7, #4] + 80021d4: 6c9b ldr r3, [r3, #72] @ 0x48 + 80021d6: 2b02 cmp r3, #2 + 80021d8: d14c bne.n 8002274 { /* Reset Address Event counter */ hi2c->AddrEventCount = 0U; - 80027de: 687b ldr r3, [r7, #4] - 80027e0: 2200 movs r2, #0 - 80027e2: 649a str r2, [r3, #72] @ 0x48 + 80021da: 687b ldr r3, [r7, #4] + 80021dc: 2200 movs r2, #0 + 80021de: 649a str r2, [r3, #72] @ 0x48 /* Clear ADDR flag */ __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); - 80027e4: 687b ldr r3, [r7, #4] - 80027e6: 681b ldr r3, [r3, #0] - 80027e8: 2208 movs r2, #8 - 80027ea: 61da str r2, [r3, #28] + 80021e0: 687b ldr r3, [r7, #4] + 80021e2: 681b ldr r3, [r3, #0] + 80021e4: 2208 movs r2, #8 + 80021e6: 61da str r2, [r3, #28] /* Process Unlocked */ __HAL_UNLOCK(hi2c); - 80027ec: 687b ldr r3, [r7, #4] - 80027ee: 2240 movs r2, #64 @ 0x40 - 80027f0: 2100 movs r1, #0 - 80027f2: 5499 strb r1, [r3, r2] + 80021e8: 687b ldr r3, [r7, #4] + 80021ea: 2240 movs r2, #64 @ 0x40 + 80021ec: 2100 movs r1, #0 + 80021ee: 5499 strb r1, [r3, r2] /* Call Slave Addr callback */ #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) hi2c->AddrCallback(hi2c, transferdirection, slaveaddrcode); #else HAL_I2C_AddrCallback(hi2c, transferdirection, slaveaddrcode); - 80027f4: 183b adds r3, r7, r0 - 80027f6: 881a ldrh r2, [r3, #0] - 80027f8: 197b adds r3, r7, r5 - 80027fa: 7819 ldrb r1, [r3, #0] - 80027fc: 687b ldr r3, [r7, #4] - 80027fe: 0018 movs r0, r3 - 8002800: f7ff fb51 bl 8001ea6 + 80021f0: 183b adds r3, r7, r0 + 80021f2: 881a ldrh r2, [r3, #0] + 80021f4: 197b adds r3, r7, r5 + 80021f6: 7819 ldrb r1, [r3, #0] + 80021f8: 687b ldr r3, [r7, #4] + 80021fa: 0018 movs r0, r3 + 80021fc: f7ff fe71 bl 8001ee2 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); /* Process Unlocked */ __HAL_UNLOCK(hi2c); } } - 8002804: e038 b.n 8002878 + 8002200: e038 b.n 8002274 slaveaddrcode = ownadd2code; - 8002806: 240c movs r4, #12 - 8002808: 193b adds r3, r7, r4 - 800280a: 2208 movs r2, #8 - 800280c: 18ba adds r2, r7, r2 - 800280e: 8812 ldrh r2, [r2, #0] - 8002810: 801a strh r2, [r3, #0] + 8002202: 240c movs r4, #12 + 8002204: 193b adds r3, r7, r4 + 8002206: 2208 movs r2, #8 + 8002208: 18ba adds r2, r7, r2 + 800220a: 8812 ldrh r2, [r2, #0] + 800220c: 801a strh r2, [r3, #0] I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT); - 8002812: 2380 movs r3, #128 @ 0x80 - 8002814: 021a lsls r2, r3, #8 - 8002816: 687b ldr r3, [r7, #4] - 8002818: 0011 movs r1, r2 - 800281a: 0018 movs r0, r3 - 800281c: f000 fdb4 bl 8003388 + 800220e: 2380 movs r3, #128 @ 0x80 + 8002210: 021a lsls r2, r3, #8 + 8002212: 687b ldr r3, [r7, #4] + 8002214: 0011 movs r1, r2 + 8002216: 0018 movs r0, r3 + 8002218: f000 fbe0 bl 80029dc __HAL_UNLOCK(hi2c); - 8002820: 687b ldr r3, [r7, #4] - 8002822: 2240 movs r2, #64 @ 0x40 - 8002824: 2100 movs r1, #0 - 8002826: 5499 strb r1, [r3, r2] + 800221c: 687b ldr r3, [r7, #4] + 800221e: 2240 movs r2, #64 @ 0x40 + 8002220: 2100 movs r1, #0 + 8002222: 5499 strb r1, [r3, r2] HAL_I2C_AddrCallback(hi2c, transferdirection, slaveaddrcode); - 8002828: 193b adds r3, r7, r4 - 800282a: 881a ldrh r2, [r3, #0] - 800282c: 230f movs r3, #15 - 800282e: 18fb adds r3, r7, r3 - 8002830: 7819 ldrb r1, [r3, #0] - 8002832: 687b ldr r3, [r7, #4] - 8002834: 0018 movs r0, r3 - 8002836: f7ff fb36 bl 8001ea6 + 8002224: 193b adds r3, r7, r4 + 8002226: 881a ldrh r2, [r3, #0] + 8002228: 230f movs r3, #15 + 800222a: 18fb adds r3, r7, r3 + 800222c: 7819 ldrb r1, [r3, #0] + 800222e: 687b ldr r3, [r7, #4] + 8002230: 0018 movs r0, r3 + 8002232: f7ff fe56 bl 8001ee2 } - 800283a: e01d b.n 8002878 + 8002236: e01d b.n 8002274 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT); - 800283c: 2380 movs r3, #128 @ 0x80 - 800283e: 021a lsls r2, r3, #8 - 8002840: 687b ldr r3, [r7, #4] - 8002842: 0011 movs r1, r2 - 8002844: 0018 movs r0, r3 - 8002846: f000 fd9f bl 8003388 + 8002238: 2380 movs r3, #128 @ 0x80 + 800223a: 021a lsls r2, r3, #8 + 800223c: 687b ldr r3, [r7, #4] + 800223e: 0011 movs r1, r2 + 8002240: 0018 movs r0, r3 + 8002242: f000 fbcb bl 80029dc __HAL_UNLOCK(hi2c); - 800284a: 687b ldr r3, [r7, #4] - 800284c: 2240 movs r2, #64 @ 0x40 - 800284e: 2100 movs r1, #0 - 8002850: 5499 strb r1, [r3, r2] + 8002246: 687b ldr r3, [r7, #4] + 8002248: 2240 movs r2, #64 @ 0x40 + 800224a: 2100 movs r1, #0 + 800224c: 5499 strb r1, [r3, r2] HAL_I2C_AddrCallback(hi2c, transferdirection, slaveaddrcode); - 8002852: 230c movs r3, #12 - 8002854: 18fb adds r3, r7, r3 - 8002856: 881a ldrh r2, [r3, #0] - 8002858: 230f movs r3, #15 - 800285a: 18fb adds r3, r7, r3 - 800285c: 7819 ldrb r1, [r3, #0] - 800285e: 687b ldr r3, [r7, #4] - 8002860: 0018 movs r0, r3 - 8002862: f7ff fb20 bl 8001ea6 + 800224e: 230c movs r3, #12 + 8002250: 18fb adds r3, r7, r3 + 8002252: 881a ldrh r2, [r3, #0] + 8002254: 230f movs r3, #15 + 8002256: 18fb adds r3, r7, r3 + 8002258: 7819 ldrb r1, [r3, #0] + 800225a: 687b ldr r3, [r7, #4] + 800225c: 0018 movs r0, r3 + 800225e: f7ff fe40 bl 8001ee2 } - 8002866: e007 b.n 8002878 + 8002262: e007 b.n 8002274 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); - 8002868: 687b ldr r3, [r7, #4] - 800286a: 681b ldr r3, [r3, #0] - 800286c: 2208 movs r2, #8 - 800286e: 61da str r2, [r3, #28] + 8002264: 687b ldr r3, [r7, #4] + 8002266: 681b ldr r3, [r3, #0] + 8002268: 2208 movs r2, #8 + 800226a: 61da str r2, [r3, #28] __HAL_UNLOCK(hi2c); - 8002870: 687b ldr r3, [r7, #4] - 8002872: 2240 movs r2, #64 @ 0x40 - 8002874: 2100 movs r1, #0 - 8002876: 5499 strb r1, [r3, r2] + 800226c: 687b ldr r3, [r7, #4] + 800226e: 2240 movs r2, #64 @ 0x40 + 8002270: 2100 movs r1, #0 + 8002272: 5499 strb r1, [r3, r2] } - 8002878: 46c0 nop @ (mov r8, r8) - 800287a: 46bd mov sp, r7 - 800287c: b004 add sp, #16 - 800287e: bdb0 pop {r4, r5, r7, pc} + 8002274: 46c0 nop @ (mov r8, r8) + 8002276: 46bd mov sp, r7 + 8002278: b004 add sp, #16 + 800227a: bdb0 pop {r4, r5, r7, pc} -08002880 : - * @brief I2C Master sequential complete process. - * @param hi2c I2C handle. - * @retval None - */ -static void I2C_ITMasterSeqCplt(I2C_HandleTypeDef *hi2c) -{ - 8002880: b580 push {r7, lr} - 8002882: b082 sub sp, #8 - 8002884: af00 add r7, sp, #0 - 8002886: 6078 str r0, [r7, #4] - /* Reset I2C handle mode */ - hi2c->Mode = HAL_I2C_MODE_NONE; - 8002888: 687b ldr r3, [r7, #4] - 800288a: 2242 movs r2, #66 @ 0x42 - 800288c: 2100 movs r1, #0 - 800288e: 5499 strb r1, [r3, r2] - - /* No Generate Stop, to permit restart mode */ - /* The stop will be done at the end of transfer, when I2C_AUTOEND_MODE enable */ - if (hi2c->State == HAL_I2C_STATE_BUSY_TX) - 8002890: 687b ldr r3, [r7, #4] - 8002892: 2241 movs r2, #65 @ 0x41 - 8002894: 5c9b ldrb r3, [r3, r2] - 8002896: b2db uxtb r3, r3 - 8002898: 2b21 cmp r3, #33 @ 0x21 - 800289a: d117 bne.n 80028cc - { - hi2c->State = HAL_I2C_STATE_READY; - 800289c: 687b ldr r3, [r7, #4] - 800289e: 2241 movs r2, #65 @ 0x41 - 80028a0: 2120 movs r1, #32 - 80028a2: 5499 strb r1, [r3, r2] - hi2c->PreviousState = I2C_STATE_MASTER_BUSY_TX; - 80028a4: 687b ldr r3, [r7, #4] - 80028a6: 2211 movs r2, #17 - 80028a8: 631a str r2, [r3, #48] @ 0x30 - hi2c->XferISR = NULL; - 80028aa: 687b ldr r3, [r7, #4] - 80028ac: 2200 movs r2, #0 - 80028ae: 635a str r2, [r3, #52] @ 0x34 - - /* Disable Interrupts */ - I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); - 80028b0: 687b ldr r3, [r7, #4] - 80028b2: 2101 movs r1, #1 - 80028b4: 0018 movs r0, r3 - 80028b6: f000 fd67 bl 8003388 - - /* Process Unlocked */ - __HAL_UNLOCK(hi2c); - 80028ba: 687b ldr r3, [r7, #4] - 80028bc: 2240 movs r2, #64 @ 0x40 - 80028be: 2100 movs r1, #0 - 80028c0: 5499 strb r1, [r3, r2] - - /* Call the corresponding callback to inform upper layer of End of Transfer */ -#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) - hi2c->MasterTxCpltCallback(hi2c); -#else - HAL_I2C_MasterTxCpltCallback(hi2c); - 80028c2: 687b ldr r3, [r7, #4] - 80028c4: 0018 movs r0, r3 - 80028c6: f7ff fad6 bl 8001e76 - hi2c->MasterRxCpltCallback(hi2c); -#else - HAL_I2C_MasterRxCpltCallback(hi2c); -#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ - } -} - 80028ca: e016 b.n 80028fa - hi2c->State = HAL_I2C_STATE_READY; - 80028cc: 687b ldr r3, [r7, #4] - 80028ce: 2241 movs r2, #65 @ 0x41 - 80028d0: 2120 movs r1, #32 - 80028d2: 5499 strb r1, [r3, r2] - hi2c->PreviousState = I2C_STATE_MASTER_BUSY_RX; - 80028d4: 687b ldr r3, [r7, #4] - 80028d6: 2212 movs r2, #18 - 80028d8: 631a str r2, [r3, #48] @ 0x30 - hi2c->XferISR = NULL; - 80028da: 687b ldr r3, [r7, #4] - 80028dc: 2200 movs r2, #0 - 80028de: 635a str r2, [r3, #52] @ 0x34 - I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); - 80028e0: 687b ldr r3, [r7, #4] - 80028e2: 2102 movs r1, #2 - 80028e4: 0018 movs r0, r3 - 80028e6: f000 fd4f bl 8003388 - __HAL_UNLOCK(hi2c); - 80028ea: 687b ldr r3, [r7, #4] - 80028ec: 2240 movs r2, #64 @ 0x40 - 80028ee: 2100 movs r1, #0 - 80028f0: 5499 strb r1, [r3, r2] - HAL_I2C_MasterRxCpltCallback(hi2c); - 80028f2: 687b ldr r3, [r7, #4] - 80028f4: 0018 movs r0, r3 - 80028f6: f7ff fac6 bl 8001e86 -} - 80028fa: 46c0 nop @ (mov r8, r8) - 80028fc: 46bd mov sp, r7 - 80028fe: b002 add sp, #8 - 8002900: bd80 pop {r7, pc} - ... - -08002904 : +0800227c : * @brief I2C Slave sequential complete process. * @param hi2c I2C handle. * @retval None */ static void I2C_ITSlaveSeqCplt(I2C_HandleTypeDef *hi2c) { - 8002904: b580 push {r7, lr} - 8002906: b084 sub sp, #16 - 8002908: af00 add r7, sp, #0 - 800290a: 6078 str r0, [r7, #4] + 800227c: b580 push {r7, lr} + 800227e: b084 sub sp, #16 + 8002280: af00 add r7, sp, #0 + 8002282: 6078 str r0, [r7, #4] uint32_t tmpcr1value = READ_REG(hi2c->Instance->CR1); - 800290c: 687b ldr r3, [r7, #4] - 800290e: 681b ldr r3, [r3, #0] - 8002910: 681b ldr r3, [r3, #0] - 8002912: 60fb str r3, [r7, #12] + 8002284: 687b ldr r3, [r7, #4] + 8002286: 681b ldr r3, [r3, #0] + 8002288: 681b ldr r3, [r3, #0] + 800228a: 60fb str r3, [r7, #12] /* Reset I2C handle mode */ hi2c->Mode = HAL_I2C_MODE_NONE; - 8002914: 687b ldr r3, [r7, #4] - 8002916: 2242 movs r2, #66 @ 0x42 - 8002918: 2100 movs r1, #0 - 800291a: 5499 strb r1, [r3, r2] + 800228c: 687b ldr r3, [r7, #4] + 800228e: 2242 movs r2, #66 @ 0x42 + 8002290: 2100 movs r1, #0 + 8002292: 5499 strb r1, [r3, r2] /* If a DMA is ongoing, Update handle size context */ if (I2C_CHECK_IT_SOURCE(tmpcr1value, I2C_CR1_TXDMAEN) != RESET) - 800291c: 68fa ldr r2, [r7, #12] - 800291e: 2380 movs r3, #128 @ 0x80 - 8002920: 01db lsls r3, r3, #7 - 8002922: 4013 ands r3, r2 - 8002924: d008 beq.n 8002938 + 8002294: 68fa ldr r2, [r7, #12] + 8002296: 2380 movs r3, #128 @ 0x80 + 8002298: 01db lsls r3, r3, #7 + 800229a: 4013 ands r3, r2 + 800229c: d008 beq.n 80022b0 { /* Disable DMA Request */ hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; - 8002926: 687b ldr r3, [r7, #4] - 8002928: 681b ldr r3, [r3, #0] - 800292a: 681a ldr r2, [r3, #0] - 800292c: 687b ldr r3, [r7, #4] - 800292e: 681b ldr r3, [r3, #0] - 8002930: 4924 ldr r1, [pc, #144] @ (80029c4 ) - 8002932: 400a ands r2, r1 - 8002934: 601a str r2, [r3, #0] - 8002936: e00c b.n 8002952 + 800229e: 687b ldr r3, [r7, #4] + 80022a0: 681b ldr r3, [r3, #0] + 80022a2: 681a ldr r2, [r3, #0] + 80022a4: 687b ldr r3, [r7, #4] + 80022a6: 681b ldr r3, [r3, #0] + 80022a8: 4924 ldr r1, [pc, #144] @ (800233c ) + 80022aa: 400a ands r2, r1 + 80022ac: 601a str r2, [r3, #0] + 80022ae: e00c b.n 80022ca } else if (I2C_CHECK_IT_SOURCE(tmpcr1value, I2C_CR1_RXDMAEN) != RESET) - 8002938: 68fa ldr r2, [r7, #12] - 800293a: 2380 movs r3, #128 @ 0x80 - 800293c: 021b lsls r3, r3, #8 - 800293e: 4013 ands r3, r2 - 8002940: d007 beq.n 8002952 + 80022b0: 68fa ldr r2, [r7, #12] + 80022b2: 2380 movs r3, #128 @ 0x80 + 80022b4: 021b lsls r3, r3, #8 + 80022b6: 4013 ands r3, r2 + 80022b8: d007 beq.n 80022ca { /* Disable DMA Request */ hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; - 8002942: 687b ldr r3, [r7, #4] - 8002944: 681b ldr r3, [r3, #0] - 8002946: 681a ldr r2, [r3, #0] - 8002948: 687b ldr r3, [r7, #4] - 800294a: 681b ldr r3, [r3, #0] - 800294c: 491e ldr r1, [pc, #120] @ (80029c8 ) - 800294e: 400a ands r2, r1 - 8002950: 601a str r2, [r3, #0] + 80022ba: 687b ldr r3, [r7, #4] + 80022bc: 681b ldr r3, [r3, #0] + 80022be: 681a ldr r2, [r3, #0] + 80022c0: 687b ldr r3, [r7, #4] + 80022c2: 681b ldr r3, [r3, #0] + 80022c4: 491e ldr r1, [pc, #120] @ (8002340 ) + 80022c6: 400a ands r2, r1 + 80022c8: 601a str r2, [r3, #0] else { /* Do nothing */ } if (hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) - 8002952: 687b ldr r3, [r7, #4] - 8002954: 2241 movs r2, #65 @ 0x41 - 8002956: 5c9b ldrb r3, [r3, r2] - 8002958: b2db uxtb r3, r3 - 800295a: 2b29 cmp r3, #41 @ 0x29 - 800295c: d114 bne.n 8002988 + 80022ca: 687b ldr r3, [r7, #4] + 80022cc: 2241 movs r2, #65 @ 0x41 + 80022ce: 5c9b ldrb r3, [r3, r2] + 80022d0: b2db uxtb r3, r3 + 80022d2: 2b29 cmp r3, #41 @ 0x29 + 80022d4: d114 bne.n 8002300 { /* Remove HAL_I2C_STATE_SLAVE_BUSY_TX, keep only HAL_I2C_STATE_LISTEN */ hi2c->State = HAL_I2C_STATE_LISTEN; - 800295e: 687b ldr r3, [r7, #4] - 8002960: 2241 movs r2, #65 @ 0x41 - 8002962: 2128 movs r1, #40 @ 0x28 - 8002964: 5499 strb r1, [r3, r2] + 80022d6: 687b ldr r3, [r7, #4] + 80022d8: 2241 movs r2, #65 @ 0x41 + 80022da: 2128 movs r1, #40 @ 0x28 + 80022dc: 5499 strb r1, [r3, r2] hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_TX; - 8002966: 687b ldr r3, [r7, #4] - 8002968: 2221 movs r2, #33 @ 0x21 - 800296a: 631a str r2, [r3, #48] @ 0x30 + 80022de: 687b ldr r3, [r7, #4] + 80022e0: 2221 movs r2, #33 @ 0x21 + 80022e2: 631a str r2, [r3, #48] @ 0x30 /* Disable Interrupts */ I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); - 800296c: 687b ldr r3, [r7, #4] - 800296e: 2101 movs r1, #1 - 8002970: 0018 movs r0, r3 - 8002972: f000 fd09 bl 8003388 + 80022e4: 687b ldr r3, [r7, #4] + 80022e6: 2101 movs r1, #1 + 80022e8: 0018 movs r0, r3 + 80022ea: f000 fb77 bl 80029dc /* Process Unlocked */ __HAL_UNLOCK(hi2c); - 8002976: 687b ldr r3, [r7, #4] - 8002978: 2240 movs r2, #64 @ 0x40 - 800297a: 2100 movs r1, #0 - 800297c: 5499 strb r1, [r3, r2] + 80022ee: 687b ldr r3, [r7, #4] + 80022f0: 2240 movs r2, #64 @ 0x40 + 80022f2: 2100 movs r1, #0 + 80022f4: 5499 strb r1, [r3, r2] /* Call the corresponding callback to inform upper layer of End of Transfer */ #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) hi2c->SlaveTxCpltCallback(hi2c); #else HAL_I2C_SlaveTxCpltCallback(hi2c); - 800297e: 687b ldr r3, [r7, #4] - 8002980: 0018 movs r0, r3 - 8002982: f7ff fa88 bl 8001e96 + 80022f6: 687b ldr r3, [r7, #4] + 80022f8: 0018 movs r0, r3 + 80022fa: f7ff fdea bl 8001ed2 } else { /* Nothing to do */ } } - 8002986: e019 b.n 80029bc + 80022fe: e019 b.n 8002334 else if (hi2c->State == HAL_I2C_STATE_BUSY_RX_LISTEN) - 8002988: 687b ldr r3, [r7, #4] - 800298a: 2241 movs r2, #65 @ 0x41 - 800298c: 5c9b ldrb r3, [r3, r2] - 800298e: b2db uxtb r3, r3 - 8002990: 2b2a cmp r3, #42 @ 0x2a - 8002992: d113 bne.n 80029bc + 8002300: 687b ldr r3, [r7, #4] + 8002302: 2241 movs r2, #65 @ 0x41 + 8002304: 5c9b ldrb r3, [r3, r2] + 8002306: b2db uxtb r3, r3 + 8002308: 2b2a cmp r3, #42 @ 0x2a + 800230a: d113 bne.n 8002334 hi2c->State = HAL_I2C_STATE_LISTEN; - 8002994: 687b ldr r3, [r7, #4] - 8002996: 2241 movs r2, #65 @ 0x41 - 8002998: 2128 movs r1, #40 @ 0x28 - 800299a: 5499 strb r1, [r3, r2] + 800230c: 687b ldr r3, [r7, #4] + 800230e: 2241 movs r2, #65 @ 0x41 + 8002310: 2128 movs r1, #40 @ 0x28 + 8002312: 5499 strb r1, [r3, r2] hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_RX; - 800299c: 687b ldr r3, [r7, #4] - 800299e: 2222 movs r2, #34 @ 0x22 - 80029a0: 631a str r2, [r3, #48] @ 0x30 + 8002314: 687b ldr r3, [r7, #4] + 8002316: 2222 movs r2, #34 @ 0x22 + 8002318: 631a str r2, [r3, #48] @ 0x30 I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); - 80029a2: 687b ldr r3, [r7, #4] - 80029a4: 2102 movs r1, #2 - 80029a6: 0018 movs r0, r3 - 80029a8: f000 fcee bl 8003388 + 800231a: 687b ldr r3, [r7, #4] + 800231c: 2102 movs r1, #2 + 800231e: 0018 movs r0, r3 + 8002320: f000 fb5c bl 80029dc __HAL_UNLOCK(hi2c); - 80029ac: 687b ldr r3, [r7, #4] - 80029ae: 2240 movs r2, #64 @ 0x40 - 80029b0: 2100 movs r1, #0 - 80029b2: 5499 strb r1, [r3, r2] + 8002324: 687b ldr r3, [r7, #4] + 8002326: 2240 movs r2, #64 @ 0x40 + 8002328: 2100 movs r1, #0 + 800232a: 5499 strb r1, [r3, r2] HAL_I2C_SlaveRxCpltCallback(hi2c); - 80029b4: 687b ldr r3, [r7, #4] - 80029b6: 0018 movs r0, r3 - 80029b8: f7fd ffe0 bl 800097c + 800232c: 687b ldr r3, [r7, #4] + 800232e: 0018 movs r0, r3 + 8002330: f7fe fe90 bl 8001054 } - 80029bc: 46c0 nop @ (mov r8, r8) - 80029be: 46bd mov sp, r7 - 80029c0: b004 add sp, #16 - 80029c2: bd80 pop {r7, pc} - 80029c4: ffffbfff .word 0xffffbfff - 80029c8: ffff7fff .word 0xffff7fff + 8002334: 46c0 nop @ (mov r8, r8) + 8002336: 46bd mov sp, r7 + 8002338: b004 add sp, #16 + 800233a: bd80 pop {r7, pc} + 800233c: ffffbfff .word 0xffffbfff + 8002340: ffff7fff .word 0xffff7fff -080029cc : - * @param hi2c I2C handle. - * @param ITFlags Interrupt flags to handle. - * @retval None - */ -static void I2C_ITMasterCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags) -{ - 80029cc: b580 push {r7, lr} - 80029ce: b086 sub sp, #24 - 80029d0: af00 add r7, sp, #0 - 80029d2: 6078 str r0, [r7, #4] - 80029d4: 6039 str r1, [r7, #0] - uint32_t tmperror; - uint32_t tmpITFlags = ITFlags; - 80029d6: 683b ldr r3, [r7, #0] - 80029d8: 617b str r3, [r7, #20] - __IO uint32_t tmpreg; - - /* Clear STOP Flag */ - __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); - 80029da: 687b ldr r3, [r7, #4] - 80029dc: 681b ldr r3, [r3, #0] - 80029de: 2220 movs r2, #32 - 80029e0: 61da str r2, [r3, #28] - - /* Disable Interrupts and Store Previous state */ - if (hi2c->State == HAL_I2C_STATE_BUSY_TX) - 80029e2: 687b ldr r3, [r7, #4] - 80029e4: 2241 movs r2, #65 @ 0x41 - 80029e6: 5c9b ldrb r3, [r3, r2] - 80029e8: b2db uxtb r3, r3 - 80029ea: 2b21 cmp r3, #33 @ 0x21 - 80029ec: d108 bne.n 8002a00 - { - I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); - 80029ee: 687b ldr r3, [r7, #4] - 80029f0: 2101 movs r1, #1 - 80029f2: 0018 movs r0, r3 - 80029f4: f000 fcc8 bl 8003388 - hi2c->PreviousState = I2C_STATE_MASTER_BUSY_TX; - 80029f8: 687b ldr r3, [r7, #4] - 80029fa: 2211 movs r2, #17 - 80029fc: 631a str r2, [r3, #48] @ 0x30 - 80029fe: e00d b.n 8002a1c - } - else if (hi2c->State == HAL_I2C_STATE_BUSY_RX) - 8002a00: 687b ldr r3, [r7, #4] - 8002a02: 2241 movs r2, #65 @ 0x41 - 8002a04: 5c9b ldrb r3, [r3, r2] - 8002a06: b2db uxtb r3, r3 - 8002a08: 2b22 cmp r3, #34 @ 0x22 - 8002a0a: d107 bne.n 8002a1c - { - I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); - 8002a0c: 687b ldr r3, [r7, #4] - 8002a0e: 2102 movs r1, #2 - 8002a10: 0018 movs r0, r3 - 8002a12: f000 fcb9 bl 8003388 - hi2c->PreviousState = I2C_STATE_MASTER_BUSY_RX; - 8002a16: 687b ldr r3, [r7, #4] - 8002a18: 2212 movs r2, #18 - 8002a1a: 631a str r2, [r3, #48] @ 0x30 - { - /* Do nothing */ - } - - /* Clear Configuration Register 2 */ - I2C_RESET_CR2(hi2c); - 8002a1c: 687b ldr r3, [r7, #4] - 8002a1e: 681b ldr r3, [r3, #0] - 8002a20: 685a ldr r2, [r3, #4] - 8002a22: 687b ldr r3, [r7, #4] - 8002a24: 681b ldr r3, [r3, #0] - 8002a26: 494e ldr r1, [pc, #312] @ (8002b60 ) - 8002a28: 400a ands r2, r1 - 8002a2a: 605a str r2, [r3, #4] - - /* Reset handle parameters */ - hi2c->XferISR = NULL; - 8002a2c: 687b ldr r3, [r7, #4] - 8002a2e: 2200 movs r2, #0 - 8002a30: 635a str r2, [r3, #52] @ 0x34 - hi2c->XferOptions = I2C_NO_OPTION_FRAME; - 8002a32: 687b ldr r3, [r7, #4] - 8002a34: 4a4b ldr r2, [pc, #300] @ (8002b64 ) - 8002a36: 62da str r2, [r3, #44] @ 0x2c - - if (I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_AF) != RESET) - 8002a38: 697b ldr r3, [r7, #20] - 8002a3a: 2210 movs r2, #16 - 8002a3c: 4013 ands r3, r2 - 8002a3e: d009 beq.n 8002a54 - { - /* Clear NACK Flag */ - __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); - 8002a40: 687b ldr r3, [r7, #4] - 8002a42: 681b ldr r3, [r3, #0] - 8002a44: 2210 movs r2, #16 - 8002a46: 61da str r2, [r3, #28] - - /* Set acknowledge error code */ - hi2c->ErrorCode |= HAL_I2C_ERROR_AF; - 8002a48: 687b ldr r3, [r7, #4] - 8002a4a: 6c5b ldr r3, [r3, #68] @ 0x44 - 8002a4c: 2204 movs r2, #4 - 8002a4e: 431a orrs r2, r3 - 8002a50: 687b ldr r3, [r7, #4] - 8002a52: 645a str r2, [r3, #68] @ 0x44 - } - - /* Fetch Last receive data if any */ - if ((hi2c->State == HAL_I2C_STATE_ABORT) && (I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_RXNE) != RESET)) - 8002a54: 687b ldr r3, [r7, #4] - 8002a56: 2241 movs r2, #65 @ 0x41 - 8002a58: 5c9b ldrb r3, [r3, r2] - 8002a5a: b2db uxtb r3, r3 - 8002a5c: 2b60 cmp r3, #96 @ 0x60 - 8002a5e: d109 bne.n 8002a74 - 8002a60: 697b ldr r3, [r7, #20] - 8002a62: 2204 movs r2, #4 - 8002a64: 4013 ands r3, r2 - 8002a66: d005 beq.n 8002a74 - { - /* Read data from RXDR */ - tmpreg = (uint8_t)hi2c->Instance->RXDR; - 8002a68: 687b ldr r3, [r7, #4] - 8002a6a: 681b ldr r3, [r3, #0] - 8002a6c: 6a5b ldr r3, [r3, #36] @ 0x24 - 8002a6e: b2db uxtb r3, r3 - 8002a70: 60fb str r3, [r7, #12] - UNUSED(tmpreg); - 8002a72: 68fb ldr r3, [r7, #12] - } - - /* Flush TX register */ - I2C_Flush_TXDR(hi2c); - 8002a74: 687b ldr r3, [r7, #4] - 8002a76: 0018 movs r0, r3 - 8002a78: f000 fb81 bl 800317e - - /* Store current volatile hi2c->ErrorCode, misra rule */ - tmperror = hi2c->ErrorCode; - 8002a7c: 687b ldr r3, [r7, #4] - 8002a7e: 6c5b ldr r3, [r3, #68] @ 0x44 - 8002a80: 613b str r3, [r7, #16] - - /* Call the corresponding callback to inform upper layer of End of Transfer */ - if ((hi2c->State == HAL_I2C_STATE_ABORT) || (tmperror != HAL_I2C_ERROR_NONE)) - 8002a82: 687b ldr r3, [r7, #4] - 8002a84: 2241 movs r2, #65 @ 0x41 - 8002a86: 5c9b ldrb r3, [r3, r2] - 8002a88: b2db uxtb r3, r3 - 8002a8a: 2b60 cmp r3, #96 @ 0x60 - 8002a8c: d002 beq.n 8002a94 - 8002a8e: 693b ldr r3, [r7, #16] - 8002a90: 2b00 cmp r3, #0 - 8002a92: d007 beq.n 8002aa4 - { - /* Call the corresponding callback to inform upper layer of End of Transfer */ - I2C_ITError(hi2c, hi2c->ErrorCode); - 8002a94: 687b ldr r3, [r7, #4] - 8002a96: 6c5a ldr r2, [r3, #68] @ 0x44 - 8002a98: 687b ldr r3, [r7, #4] - 8002a9a: 0011 movs r1, r2 - 8002a9c: 0018 movs r0, r3 - 8002a9e: f000 fa43 bl 8002f28 - } - else - { - /* Nothing to do */ - } -} - 8002aa2: e058 b.n 8002b56 - else if (hi2c->State == HAL_I2C_STATE_BUSY_TX) - 8002aa4: 687b ldr r3, [r7, #4] - 8002aa6: 2241 movs r2, #65 @ 0x41 - 8002aa8: 5c9b ldrb r3, [r3, r2] - 8002aaa: b2db uxtb r3, r3 - 8002aac: 2b21 cmp r3, #33 @ 0x21 - 8002aae: d126 bne.n 8002afe - hi2c->State = HAL_I2C_STATE_READY; - 8002ab0: 687b ldr r3, [r7, #4] - 8002ab2: 2241 movs r2, #65 @ 0x41 - 8002ab4: 2120 movs r1, #32 - 8002ab6: 5499 strb r1, [r3, r2] - hi2c->PreviousState = I2C_STATE_NONE; - 8002ab8: 687b ldr r3, [r7, #4] - 8002aba: 2200 movs r2, #0 - 8002abc: 631a str r2, [r3, #48] @ 0x30 - if (hi2c->Mode == HAL_I2C_MODE_MEM) - 8002abe: 687b ldr r3, [r7, #4] - 8002ac0: 2242 movs r2, #66 @ 0x42 - 8002ac2: 5c9b ldrb r3, [r3, r2] - 8002ac4: b2db uxtb r3, r3 - 8002ac6: 2b40 cmp r3, #64 @ 0x40 - 8002ac8: d10c bne.n 8002ae4 - hi2c->Mode = HAL_I2C_MODE_NONE; - 8002aca: 687b ldr r3, [r7, #4] - 8002acc: 2242 movs r2, #66 @ 0x42 - 8002ace: 2100 movs r1, #0 - 8002ad0: 5499 strb r1, [r3, r2] - __HAL_UNLOCK(hi2c); - 8002ad2: 687b ldr r3, [r7, #4] - 8002ad4: 2240 movs r2, #64 @ 0x40 - 8002ad6: 2100 movs r1, #0 - 8002ad8: 5499 strb r1, [r3, r2] - HAL_I2C_MemTxCpltCallback(hi2c); - 8002ada: 687b ldr r3, [r7, #4] - 8002adc: 0018 movs r0, r3 - 8002ade: f7ff f9fa bl 8001ed6 -} - 8002ae2: e038 b.n 8002b56 - hi2c->Mode = HAL_I2C_MODE_NONE; - 8002ae4: 687b ldr r3, [r7, #4] - 8002ae6: 2242 movs r2, #66 @ 0x42 - 8002ae8: 2100 movs r1, #0 - 8002aea: 5499 strb r1, [r3, r2] - __HAL_UNLOCK(hi2c); - 8002aec: 687b ldr r3, [r7, #4] - 8002aee: 2240 movs r2, #64 @ 0x40 - 8002af0: 2100 movs r1, #0 - 8002af2: 5499 strb r1, [r3, r2] - HAL_I2C_MasterTxCpltCallback(hi2c); - 8002af4: 687b ldr r3, [r7, #4] - 8002af6: 0018 movs r0, r3 - 8002af8: f7ff f9bd bl 8001e76 -} - 8002afc: e02b b.n 8002b56 - else if (hi2c->State == HAL_I2C_STATE_BUSY_RX) - 8002afe: 687b ldr r3, [r7, #4] - 8002b00: 2241 movs r2, #65 @ 0x41 - 8002b02: 5c9b ldrb r3, [r3, r2] - 8002b04: b2db uxtb r3, r3 - 8002b06: 2b22 cmp r3, #34 @ 0x22 - 8002b08: d125 bne.n 8002b56 - hi2c->State = HAL_I2C_STATE_READY; - 8002b0a: 687b ldr r3, [r7, #4] - 8002b0c: 2241 movs r2, #65 @ 0x41 - 8002b0e: 2120 movs r1, #32 - 8002b10: 5499 strb r1, [r3, r2] - hi2c->PreviousState = I2C_STATE_NONE; - 8002b12: 687b ldr r3, [r7, #4] - 8002b14: 2200 movs r2, #0 - 8002b16: 631a str r2, [r3, #48] @ 0x30 - if (hi2c->Mode == HAL_I2C_MODE_MEM) - 8002b18: 687b ldr r3, [r7, #4] - 8002b1a: 2242 movs r2, #66 @ 0x42 - 8002b1c: 5c9b ldrb r3, [r3, r2] - 8002b1e: b2db uxtb r3, r3 - 8002b20: 2b40 cmp r3, #64 @ 0x40 - 8002b22: d10c bne.n 8002b3e - hi2c->Mode = HAL_I2C_MODE_NONE; - 8002b24: 687b ldr r3, [r7, #4] - 8002b26: 2242 movs r2, #66 @ 0x42 - 8002b28: 2100 movs r1, #0 - 8002b2a: 5499 strb r1, [r3, r2] - __HAL_UNLOCK(hi2c); - 8002b2c: 687b ldr r3, [r7, #4] - 8002b2e: 2240 movs r2, #64 @ 0x40 - 8002b30: 2100 movs r1, #0 - 8002b32: 5499 strb r1, [r3, r2] - HAL_I2C_MemRxCpltCallback(hi2c); - 8002b34: 687b ldr r3, [r7, #4] - 8002b36: 0018 movs r0, r3 - 8002b38: f7ff f9d5 bl 8001ee6 -} - 8002b3c: e00b b.n 8002b56 - hi2c->Mode = HAL_I2C_MODE_NONE; - 8002b3e: 687b ldr r3, [r7, #4] - 8002b40: 2242 movs r2, #66 @ 0x42 - 8002b42: 2100 movs r1, #0 - 8002b44: 5499 strb r1, [r3, r2] - __HAL_UNLOCK(hi2c); - 8002b46: 687b ldr r3, [r7, #4] - 8002b48: 2240 movs r2, #64 @ 0x40 - 8002b4a: 2100 movs r1, #0 - 8002b4c: 5499 strb r1, [r3, r2] - HAL_I2C_MasterRxCpltCallback(hi2c); - 8002b4e: 687b ldr r3, [r7, #4] - 8002b50: 0018 movs r0, r3 - 8002b52: f7ff f998 bl 8001e86 -} - 8002b56: 46c0 nop @ (mov r8, r8) - 8002b58: 46bd mov sp, r7 - 8002b5a: b006 add sp, #24 - 8002b5c: bd80 pop {r7, pc} - 8002b5e: 46c0 nop @ (mov r8, r8) - 8002b60: fe00e800 .word 0xfe00e800 - 8002b64: ffff0000 .word 0xffff0000 - -08002b68 : +08002344 : * @param hi2c I2C handle. * @param ITFlags Interrupt flags to handle. * @retval None */ static void I2C_ITSlaveCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags) { - 8002b68: b580 push {r7, lr} - 8002b6a: b086 sub sp, #24 - 8002b6c: af00 add r7, sp, #0 - 8002b6e: 6078 str r0, [r7, #4] - 8002b70: 6039 str r1, [r7, #0] + 8002344: b580 push {r7, lr} + 8002346: b086 sub sp, #24 + 8002348: af00 add r7, sp, #0 + 800234a: 6078 str r0, [r7, #4] + 800234c: 6039 str r1, [r7, #0] uint32_t tmpcr1value = READ_REG(hi2c->Instance->CR1); - 8002b72: 687b ldr r3, [r7, #4] - 8002b74: 681b ldr r3, [r3, #0] - 8002b76: 681b ldr r3, [r3, #0] - 8002b78: 613b str r3, [r7, #16] + 800234e: 687b ldr r3, [r7, #4] + 8002350: 681b ldr r3, [r3, #0] + 8002352: 681b ldr r3, [r3, #0] + 8002354: 613b str r3, [r7, #16] uint32_t tmpITFlags = ITFlags; - 8002b7a: 683b ldr r3, [r7, #0] - 8002b7c: 617b str r3, [r7, #20] + 8002356: 683b ldr r3, [r7, #0] + 8002358: 617b str r3, [r7, #20] uint32_t tmpoptions = hi2c->XferOptions; - 8002b7e: 687b ldr r3, [r7, #4] - 8002b80: 6adb ldr r3, [r3, #44] @ 0x2c - 8002b82: 60fb str r3, [r7, #12] + 800235a: 687b ldr r3, [r7, #4] + 800235c: 6adb ldr r3, [r3, #44] @ 0x2c + 800235e: 60fb str r3, [r7, #12] HAL_I2C_StateTypeDef tmpstate = hi2c->State; - 8002b84: 200b movs r0, #11 - 8002b86: 183b adds r3, r7, r0 - 8002b88: 687a ldr r2, [r7, #4] - 8002b8a: 2141 movs r1, #65 @ 0x41 - 8002b8c: 5c52 ldrb r2, [r2, r1] - 8002b8e: 701a strb r2, [r3, #0] + 8002360: 200b movs r0, #11 + 8002362: 183b adds r3, r7, r0 + 8002364: 687a ldr r2, [r7, #4] + 8002366: 2141 movs r1, #65 @ 0x41 + 8002368: 5c52 ldrb r2, [r2, r1] + 800236a: 701a strb r2, [r3, #0] /* Clear STOP Flag */ __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); - 8002b90: 687b ldr r3, [r7, #4] - 8002b92: 681b ldr r3, [r3, #0] - 8002b94: 2220 movs r2, #32 - 8002b96: 61da str r2, [r3, #28] + 800236c: 687b ldr r3, [r7, #4] + 800236e: 681b ldr r3, [r3, #0] + 8002370: 2220 movs r2, #32 + 8002372: 61da str r2, [r3, #28] /* Disable Interrupts and Store Previous state */ if ((tmpstate == HAL_I2C_STATE_BUSY_TX) || (tmpstate == HAL_I2C_STATE_BUSY_TX_LISTEN)) - 8002b98: 183b adds r3, r7, r0 - 8002b9a: 781b ldrb r3, [r3, #0] - 8002b9c: 2b21 cmp r3, #33 @ 0x21 - 8002b9e: d003 beq.n 8002ba8 - 8002ba0: 183b adds r3, r7, r0 - 8002ba2: 781b ldrb r3, [r3, #0] - 8002ba4: 2b29 cmp r3, #41 @ 0x29 - 8002ba6: d109 bne.n 8002bbc + 8002374: 183b adds r3, r7, r0 + 8002376: 781b ldrb r3, [r3, #0] + 8002378: 2b21 cmp r3, #33 @ 0x21 + 800237a: d003 beq.n 8002384 + 800237c: 183b adds r3, r7, r0 + 800237e: 781b ldrb r3, [r3, #0] + 8002380: 2b29 cmp r3, #41 @ 0x29 + 8002382: d109 bne.n 8002398 { I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_TX_IT); - 8002ba8: 4aac ldr r2, [pc, #688] @ (8002e5c ) - 8002baa: 687b ldr r3, [r7, #4] - 8002bac: 0011 movs r1, r2 - 8002bae: 0018 movs r0, r3 - 8002bb0: f000 fbea bl 8003388 + 8002384: 4aac ldr r2, [pc, #688] @ (8002638 ) + 8002386: 687b ldr r3, [r7, #4] + 8002388: 0011 movs r1, r2 + 800238a: 0018 movs r0, r3 + 800238c: f000 fb26 bl 80029dc hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_TX; - 8002bb4: 687b ldr r3, [r7, #4] - 8002bb6: 2221 movs r2, #33 @ 0x21 - 8002bb8: 631a str r2, [r3, #48] @ 0x30 - 8002bba: e020 b.n 8002bfe + 8002390: 687b ldr r3, [r7, #4] + 8002392: 2221 movs r2, #33 @ 0x21 + 8002394: 631a str r2, [r3, #48] @ 0x30 + 8002396: e020 b.n 80023da } else if ((tmpstate == HAL_I2C_STATE_BUSY_RX) || (tmpstate == HAL_I2C_STATE_BUSY_RX_LISTEN)) - 8002bbc: 220b movs r2, #11 - 8002bbe: 18bb adds r3, r7, r2 - 8002bc0: 781b ldrb r3, [r3, #0] - 8002bc2: 2b22 cmp r3, #34 @ 0x22 - 8002bc4: d003 beq.n 8002bce - 8002bc6: 18bb adds r3, r7, r2 - 8002bc8: 781b ldrb r3, [r3, #0] - 8002bca: 2b2a cmp r3, #42 @ 0x2a - 8002bcc: d109 bne.n 8002be2 + 8002398: 220b movs r2, #11 + 800239a: 18bb adds r3, r7, r2 + 800239c: 781b ldrb r3, [r3, #0] + 800239e: 2b22 cmp r3, #34 @ 0x22 + 80023a0: d003 beq.n 80023aa + 80023a2: 18bb adds r3, r7, r2 + 80023a4: 781b ldrb r3, [r3, #0] + 80023a6: 2b2a cmp r3, #42 @ 0x2a + 80023a8: d109 bne.n 80023be { I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT); - 8002bce: 4aa4 ldr r2, [pc, #656] @ (8002e60 ) - 8002bd0: 687b ldr r3, [r7, #4] - 8002bd2: 0011 movs r1, r2 - 8002bd4: 0018 movs r0, r3 - 8002bd6: f000 fbd7 bl 8003388 + 80023aa: 4aa4 ldr r2, [pc, #656] @ (800263c ) + 80023ac: 687b ldr r3, [r7, #4] + 80023ae: 0011 movs r1, r2 + 80023b0: 0018 movs r0, r3 + 80023b2: f000 fb13 bl 80029dc hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_RX; - 8002bda: 687b ldr r3, [r7, #4] - 8002bdc: 2222 movs r2, #34 @ 0x22 - 8002bde: 631a str r2, [r3, #48] @ 0x30 - 8002be0: e00d b.n 8002bfe + 80023b6: 687b ldr r3, [r7, #4] + 80023b8: 2222 movs r2, #34 @ 0x22 + 80023ba: 631a str r2, [r3, #48] @ 0x30 + 80023bc: e00d b.n 80023da } else if (tmpstate == HAL_I2C_STATE_LISTEN) - 8002be2: 230b movs r3, #11 - 8002be4: 18fb adds r3, r7, r3 - 8002be6: 781b ldrb r3, [r3, #0] - 8002be8: 2b28 cmp r3, #40 @ 0x28 - 8002bea: d108 bne.n 8002bfe + 80023be: 230b movs r3, #11 + 80023c0: 18fb adds r3, r7, r3 + 80023c2: 781b ldrb r3, [r3, #0] + 80023c4: 2b28 cmp r3, #40 @ 0x28 + 80023c6: d108 bne.n 80023da { I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_TX_IT | I2C_XFER_RX_IT); - 8002bec: 4a9d ldr r2, [pc, #628] @ (8002e64 ) - 8002bee: 687b ldr r3, [r7, #4] - 8002bf0: 0011 movs r1, r2 - 8002bf2: 0018 movs r0, r3 - 8002bf4: f000 fbc8 bl 8003388 + 80023c8: 4a9d ldr r2, [pc, #628] @ (8002640 ) + 80023ca: 687b ldr r3, [r7, #4] + 80023cc: 0011 movs r1, r2 + 80023ce: 0018 movs r0, r3 + 80023d0: f000 fb04 bl 80029dc hi2c->PreviousState = I2C_STATE_NONE; - 8002bf8: 687b ldr r3, [r7, #4] - 8002bfa: 2200 movs r2, #0 - 8002bfc: 631a str r2, [r3, #48] @ 0x30 + 80023d4: 687b ldr r3, [r7, #4] + 80023d6: 2200 movs r2, #0 + 80023d8: 631a str r2, [r3, #48] @ 0x30 { /* Do nothing */ } /* Disable Address Acknowledge */ hi2c->Instance->CR2 |= I2C_CR2_NACK; - 8002bfe: 687b ldr r3, [r7, #4] - 8002c00: 681b ldr r3, [r3, #0] - 8002c02: 685a ldr r2, [r3, #4] - 8002c04: 687b ldr r3, [r7, #4] - 8002c06: 681b ldr r3, [r3, #0] - 8002c08: 2180 movs r1, #128 @ 0x80 - 8002c0a: 0209 lsls r1, r1, #8 - 8002c0c: 430a orrs r2, r1 - 8002c0e: 605a str r2, [r3, #4] + 80023da: 687b ldr r3, [r7, #4] + 80023dc: 681b ldr r3, [r3, #0] + 80023de: 685a ldr r2, [r3, #4] + 80023e0: 687b ldr r3, [r7, #4] + 80023e2: 681b ldr r3, [r3, #0] + 80023e4: 2180 movs r1, #128 @ 0x80 + 80023e6: 0209 lsls r1, r1, #8 + 80023e8: 430a orrs r2, r1 + 80023ea: 605a str r2, [r3, #4] /* Clear Configuration Register 2 */ I2C_RESET_CR2(hi2c); - 8002c10: 687b ldr r3, [r7, #4] - 8002c12: 681b ldr r3, [r3, #0] - 8002c14: 685a ldr r2, [r3, #4] - 8002c16: 687b ldr r3, [r7, #4] - 8002c18: 681b ldr r3, [r3, #0] - 8002c1a: 4993 ldr r1, [pc, #588] @ (8002e68 ) - 8002c1c: 400a ands r2, r1 - 8002c1e: 605a str r2, [r3, #4] + 80023ec: 687b ldr r3, [r7, #4] + 80023ee: 681b ldr r3, [r3, #0] + 80023f0: 685a ldr r2, [r3, #4] + 80023f2: 687b ldr r3, [r7, #4] + 80023f4: 681b ldr r3, [r3, #0] + 80023f6: 4993 ldr r1, [pc, #588] @ (8002644 ) + 80023f8: 400a ands r2, r1 + 80023fa: 605a str r2, [r3, #4] /* Flush TX register */ I2C_Flush_TXDR(hi2c); - 8002c20: 687b ldr r3, [r7, #4] - 8002c22: 0018 movs r0, r3 - 8002c24: f000 faab bl 800317e + 80023fc: 687b ldr r3, [r7, #4] + 80023fe: 0018 movs r0, r3 + 8002400: f000 faab bl 800295a /* If a DMA is ongoing, Update handle size context */ if (I2C_CHECK_IT_SOURCE(tmpcr1value, I2C_CR1_TXDMAEN) != RESET) - 8002c28: 693a ldr r2, [r7, #16] - 8002c2a: 2380 movs r3, #128 @ 0x80 - 8002c2c: 01db lsls r3, r3, #7 - 8002c2e: 4013 ands r3, r2 - 8002c30: d013 beq.n 8002c5a + 8002404: 693a ldr r2, [r7, #16] + 8002406: 2380 movs r3, #128 @ 0x80 + 8002408: 01db lsls r3, r3, #7 + 800240a: 4013 ands r3, r2 + 800240c: d013 beq.n 8002436 { /* Disable DMA Request */ hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; - 8002c32: 687b ldr r3, [r7, #4] - 8002c34: 681b ldr r3, [r3, #0] - 8002c36: 681a ldr r2, [r3, #0] - 8002c38: 687b ldr r3, [r7, #4] - 8002c3a: 681b ldr r3, [r3, #0] - 8002c3c: 498b ldr r1, [pc, #556] @ (8002e6c ) - 8002c3e: 400a ands r2, r1 - 8002c40: 601a str r2, [r3, #0] + 800240e: 687b ldr r3, [r7, #4] + 8002410: 681b ldr r3, [r3, #0] + 8002412: 681a ldr r2, [r3, #0] + 8002414: 687b ldr r3, [r7, #4] + 8002416: 681b ldr r3, [r3, #0] + 8002418: 498b ldr r1, [pc, #556] @ (8002648 ) + 800241a: 400a ands r2, r1 + 800241c: 601a str r2, [r3, #0] if (hi2c->hdmatx != NULL) - 8002c42: 687b ldr r3, [r7, #4] - 8002c44: 6b9b ldr r3, [r3, #56] @ 0x38 - 8002c46: 2b00 cmp r3, #0 - 8002c48: d01f beq.n 8002c8a + 800241e: 687b ldr r3, [r7, #4] + 8002420: 6b9b ldr r3, [r3, #56] @ 0x38 + 8002422: 2b00 cmp r3, #0 + 8002424: d01f beq.n 8002466 { hi2c->XferCount = (uint16_t)I2C_GET_DMA_REMAIN_DATA(hi2c->hdmatx); - 8002c4a: 687b ldr r3, [r7, #4] - 8002c4c: 6b9b ldr r3, [r3, #56] @ 0x38 - 8002c4e: 681b ldr r3, [r3, #0] - 8002c50: 685b ldr r3, [r3, #4] - 8002c52: b29a uxth r2, r3 - 8002c54: 687b ldr r3, [r7, #4] - 8002c56: 855a strh r2, [r3, #42] @ 0x2a - 8002c58: e017 b.n 8002c8a + 8002426: 687b ldr r3, [r7, #4] + 8002428: 6b9b ldr r3, [r3, #56] @ 0x38 + 800242a: 681b ldr r3, [r3, #0] + 800242c: 685b ldr r3, [r3, #4] + 800242e: b29a uxth r2, r3 + 8002430: 687b ldr r3, [r7, #4] + 8002432: 855a strh r2, [r3, #42] @ 0x2a + 8002434: e017 b.n 8002466 } } else if (I2C_CHECK_IT_SOURCE(tmpcr1value, I2C_CR1_RXDMAEN) != RESET) - 8002c5a: 693a ldr r2, [r7, #16] - 8002c5c: 2380 movs r3, #128 @ 0x80 - 8002c5e: 021b lsls r3, r3, #8 - 8002c60: 4013 ands r3, r2 - 8002c62: d012 beq.n 8002c8a + 8002436: 693a ldr r2, [r7, #16] + 8002438: 2380 movs r3, #128 @ 0x80 + 800243a: 021b lsls r3, r3, #8 + 800243c: 4013 ands r3, r2 + 800243e: d012 beq.n 8002466 { /* Disable DMA Request */ hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; - 8002c64: 687b ldr r3, [r7, #4] - 8002c66: 681b ldr r3, [r3, #0] - 8002c68: 681a ldr r2, [r3, #0] - 8002c6a: 687b ldr r3, [r7, #4] - 8002c6c: 681b ldr r3, [r3, #0] - 8002c6e: 4980 ldr r1, [pc, #512] @ (8002e70 ) - 8002c70: 400a ands r2, r1 - 8002c72: 601a str r2, [r3, #0] + 8002440: 687b ldr r3, [r7, #4] + 8002442: 681b ldr r3, [r3, #0] + 8002444: 681a ldr r2, [r3, #0] + 8002446: 687b ldr r3, [r7, #4] + 8002448: 681b ldr r3, [r3, #0] + 800244a: 4980 ldr r1, [pc, #512] @ (800264c ) + 800244c: 400a ands r2, r1 + 800244e: 601a str r2, [r3, #0] if (hi2c->hdmarx != NULL) - 8002c74: 687b ldr r3, [r7, #4] - 8002c76: 6bdb ldr r3, [r3, #60] @ 0x3c - 8002c78: 2b00 cmp r3, #0 - 8002c7a: d006 beq.n 8002c8a + 8002450: 687b ldr r3, [r7, #4] + 8002452: 6bdb ldr r3, [r3, #60] @ 0x3c + 8002454: 2b00 cmp r3, #0 + 8002456: d006 beq.n 8002466 { hi2c->XferCount = (uint16_t)I2C_GET_DMA_REMAIN_DATA(hi2c->hdmarx); - 8002c7c: 687b ldr r3, [r7, #4] - 8002c7e: 6bdb ldr r3, [r3, #60] @ 0x3c - 8002c80: 681b ldr r3, [r3, #0] - 8002c82: 685b ldr r3, [r3, #4] - 8002c84: b29a uxth r2, r3 - 8002c86: 687b ldr r3, [r7, #4] - 8002c88: 855a strh r2, [r3, #42] @ 0x2a + 8002458: 687b ldr r3, [r7, #4] + 800245a: 6bdb ldr r3, [r3, #60] @ 0x3c + 800245c: 681b ldr r3, [r3, #0] + 800245e: 685b ldr r3, [r3, #4] + 8002460: b29a uxth r2, r3 + 8002462: 687b ldr r3, [r7, #4] + 8002464: 855a strh r2, [r3, #42] @ 0x2a { /* Do nothing */ } /* Store Last receive data if any */ if (I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_RXNE) != RESET) - 8002c8a: 697b ldr r3, [r7, #20] - 8002c8c: 2204 movs r2, #4 - 8002c8e: 4013 ands r3, r2 - 8002c90: d020 beq.n 8002cd4 + 8002466: 697b ldr r3, [r7, #20] + 8002468: 2204 movs r2, #4 + 800246a: 4013 ands r3, r2 + 800246c: d020 beq.n 80024b0 { /* Remove RXNE flag on temporary variable as read done */ tmpITFlags &= ~I2C_FLAG_RXNE; - 8002c92: 697b ldr r3, [r7, #20] - 8002c94: 2204 movs r2, #4 - 8002c96: 4393 bics r3, r2 - 8002c98: 617b str r3, [r7, #20] + 800246e: 697b ldr r3, [r7, #20] + 8002470: 2204 movs r2, #4 + 8002472: 4393 bics r3, r2 + 8002474: 617b str r3, [r7, #20] /* Read data from RXDR */ *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; - 8002c9a: 687b ldr r3, [r7, #4] - 8002c9c: 681b ldr r3, [r3, #0] - 8002c9e: 6a5a ldr r2, [r3, #36] @ 0x24 - 8002ca0: 687b ldr r3, [r7, #4] - 8002ca2: 6a5b ldr r3, [r3, #36] @ 0x24 - 8002ca4: b2d2 uxtb r2, r2 - 8002ca6: 701a strb r2, [r3, #0] + 8002476: 687b ldr r3, [r7, #4] + 8002478: 681b ldr r3, [r3, #0] + 800247a: 6a5a ldr r2, [r3, #36] @ 0x24 + 800247c: 687b ldr r3, [r7, #4] + 800247e: 6a5b ldr r3, [r3, #36] @ 0x24 + 8002480: b2d2 uxtb r2, r2 + 8002482: 701a strb r2, [r3, #0] /* Increment Buffer pointer */ hi2c->pBuffPtr++; - 8002ca8: 687b ldr r3, [r7, #4] - 8002caa: 6a5b ldr r3, [r3, #36] @ 0x24 - 8002cac: 1c5a adds r2, r3, #1 - 8002cae: 687b ldr r3, [r7, #4] - 8002cb0: 625a str r2, [r3, #36] @ 0x24 + 8002484: 687b ldr r3, [r7, #4] + 8002486: 6a5b ldr r3, [r3, #36] @ 0x24 + 8002488: 1c5a adds r2, r3, #1 + 800248a: 687b ldr r3, [r7, #4] + 800248c: 625a str r2, [r3, #36] @ 0x24 if ((hi2c->XferSize > 0U)) - 8002cb2: 687b ldr r3, [r7, #4] - 8002cb4: 8d1b ldrh r3, [r3, #40] @ 0x28 - 8002cb6: 2b00 cmp r3, #0 - 8002cb8: d00c beq.n 8002cd4 + 800248e: 687b ldr r3, [r7, #4] + 8002490: 8d1b ldrh r3, [r3, #40] @ 0x28 + 8002492: 2b00 cmp r3, #0 + 8002494: d00c beq.n 80024b0 { hi2c->XferSize--; - 8002cba: 687b ldr r3, [r7, #4] - 8002cbc: 8d1b ldrh r3, [r3, #40] @ 0x28 - 8002cbe: 3b01 subs r3, #1 - 8002cc0: b29a uxth r2, r3 - 8002cc2: 687b ldr r3, [r7, #4] - 8002cc4: 851a strh r2, [r3, #40] @ 0x28 + 8002496: 687b ldr r3, [r7, #4] + 8002498: 8d1b ldrh r3, [r3, #40] @ 0x28 + 800249a: 3b01 subs r3, #1 + 800249c: b29a uxth r2, r3 + 800249e: 687b ldr r3, [r7, #4] + 80024a0: 851a strh r2, [r3, #40] @ 0x28 hi2c->XferCount--; - 8002cc6: 687b ldr r3, [r7, #4] - 8002cc8: 8d5b ldrh r3, [r3, #42] @ 0x2a - 8002cca: b29b uxth r3, r3 - 8002ccc: 3b01 subs r3, #1 - 8002cce: b29a uxth r2, r3 - 8002cd0: 687b ldr r3, [r7, #4] - 8002cd2: 855a strh r2, [r3, #42] @ 0x2a + 80024a2: 687b ldr r3, [r7, #4] + 80024a4: 8d5b ldrh r3, [r3, #42] @ 0x2a + 80024a6: b29b uxth r3, r3 + 80024a8: 3b01 subs r3, #1 + 80024aa: b29a uxth r2, r3 + 80024ac: 687b ldr r3, [r7, #4] + 80024ae: 855a strh r2, [r3, #42] @ 0x2a } } /* All data are not transferred, so set error code accordingly */ if (hi2c->XferCount != 0U) - 8002cd4: 687b ldr r3, [r7, #4] - 8002cd6: 8d5b ldrh r3, [r3, #42] @ 0x2a - 8002cd8: b29b uxth r3, r3 - 8002cda: 2b00 cmp r3, #0 - 8002cdc: d005 beq.n 8002cea + 80024b0: 687b ldr r3, [r7, #4] + 80024b2: 8d5b ldrh r3, [r3, #42] @ 0x2a + 80024b4: b29b uxth r3, r3 + 80024b6: 2b00 cmp r3, #0 + 80024b8: d005 beq.n 80024c6 { /* Set ErrorCode corresponding to a Non-Acknowledge */ hi2c->ErrorCode |= HAL_I2C_ERROR_AF; - 8002cde: 687b ldr r3, [r7, #4] - 8002ce0: 6c5b ldr r3, [r3, #68] @ 0x44 - 8002ce2: 2204 movs r2, #4 - 8002ce4: 431a orrs r2, r3 - 8002ce6: 687b ldr r3, [r7, #4] - 8002ce8: 645a str r2, [r3, #68] @ 0x44 + 80024ba: 687b ldr r3, [r7, #4] + 80024bc: 6c5b ldr r3, [r3, #68] @ 0x44 + 80024be: 2204 movs r2, #4 + 80024c0: 431a orrs r2, r3 + 80024c2: 687b ldr r3, [r7, #4] + 80024c4: 645a str r2, [r3, #68] @ 0x44 } if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_AF) != RESET) && \ - 8002cea: 697b ldr r3, [r7, #20] - 8002cec: 2210 movs r2, #16 - 8002cee: 4013 ands r3, r2 - 8002cf0: d04f beq.n 8002d92 + 80024c6: 697b ldr r3, [r7, #20] + 80024c8: 2210 movs r2, #16 + 80024ca: 4013 ands r3, r2 + 80024cc: d04f beq.n 800256e (I2C_CHECK_IT_SOURCE(tmpcr1value, I2C_IT_NACKI) != RESET)) - 8002cf2: 693b ldr r3, [r7, #16] - 8002cf4: 2210 movs r2, #16 - 8002cf6: 4013 ands r3, r2 + 80024ce: 693b ldr r3, [r7, #16] + 80024d0: 2210 movs r2, #16 + 80024d2: 4013 ands r3, r2 if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_AF) != RESET) && \ - 8002cf8: d04b beq.n 8002d92 + 80024d4: d04b beq.n 800256e { /* Check that I2C transfer finished */ /* if yes, normal use case, a NACK is sent by the MASTER when Transfer is finished */ /* Mean XferCount == 0*/ /* So clear Flag NACKF only */ if (hi2c->XferCount == 0U) - 8002cfa: 687b ldr r3, [r7, #4] - 8002cfc: 8d5b ldrh r3, [r3, #42] @ 0x2a - 8002cfe: b29b uxth r3, r3 - 8002d00: 2b00 cmp r3, #0 - 8002d02: d12d bne.n 8002d60 + 80024d6: 687b ldr r3, [r7, #4] + 80024d8: 8d5b ldrh r3, [r3, #42] @ 0x2a + 80024da: b29b uxth r3, r3 + 80024dc: 2b00 cmp r3, #0 + 80024de: d12d bne.n 800253c { if ((hi2c->State == HAL_I2C_STATE_LISTEN) && (tmpoptions == I2C_FIRST_AND_LAST_FRAME)) - 8002d04: 687b ldr r3, [r7, #4] - 8002d06: 2241 movs r2, #65 @ 0x41 - 8002d08: 5c9b ldrb r3, [r3, r2] - 8002d0a: b2db uxtb r3, r3 - 8002d0c: 2b28 cmp r3, #40 @ 0x28 - 8002d0e: d10b bne.n 8002d28 - 8002d10: 68fa ldr r2, [r7, #12] - 8002d12: 2380 movs r3, #128 @ 0x80 - 8002d14: 049b lsls r3, r3, #18 - 8002d16: 429a cmp r2, r3 - 8002d18: d106 bne.n 8002d28 + 80024e0: 687b ldr r3, [r7, #4] + 80024e2: 2241 movs r2, #65 @ 0x41 + 80024e4: 5c9b ldrb r3, [r3, r2] + 80024e6: b2db uxtb r3, r3 + 80024e8: 2b28 cmp r3, #40 @ 0x28 + 80024ea: d10b bne.n 8002504 + 80024ec: 68fa ldr r2, [r7, #12] + 80024ee: 2380 movs r3, #128 @ 0x80 + 80024f0: 049b lsls r3, r3, #18 + 80024f2: 429a cmp r2, r3 + 80024f4: d106 bne.n 8002504 /* Same action must be done for (tmpoptions == I2C_LAST_FRAME) which removed for Warning[Pa134]: left and right operands are identical */ { /* Call I2C Listen complete process */ I2C_ITListenCplt(hi2c, tmpITFlags); - 8002d1a: 697a ldr r2, [r7, #20] - 8002d1c: 687b ldr r3, [r7, #4] - 8002d1e: 0011 movs r1, r2 - 8002d20: 0018 movs r0, r3 - 8002d22: f000 f8a9 bl 8002e78 - 8002d26: e034 b.n 8002d92 + 80024f6: 697a ldr r2, [r7, #20] + 80024f8: 687b ldr r3, [r7, #4] + 80024fa: 0011 movs r1, r2 + 80024fc: 0018 movs r0, r3 + 80024fe: f000 f8a9 bl 8002654 + 8002502: e034 b.n 800256e } else if ((hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) && (tmpoptions != I2C_NO_OPTION_FRAME)) - 8002d28: 687b ldr r3, [r7, #4] - 8002d2a: 2241 movs r2, #65 @ 0x41 - 8002d2c: 5c9b ldrb r3, [r3, r2] - 8002d2e: b2db uxtb r3, r3 - 8002d30: 2b29 cmp r3, #41 @ 0x29 - 8002d32: d110 bne.n 8002d56 - 8002d34: 68fb ldr r3, [r7, #12] - 8002d36: 4a4f ldr r2, [pc, #316] @ (8002e74 ) - 8002d38: 4293 cmp r3, r2 - 8002d3a: d00c beq.n 8002d56 + 8002504: 687b ldr r3, [r7, #4] + 8002506: 2241 movs r2, #65 @ 0x41 + 8002508: 5c9b ldrb r3, [r3, r2] + 800250a: b2db uxtb r3, r3 + 800250c: 2b29 cmp r3, #41 @ 0x29 + 800250e: d110 bne.n 8002532 + 8002510: 68fb ldr r3, [r7, #12] + 8002512: 4a4f ldr r2, [pc, #316] @ (8002650 ) + 8002514: 4293 cmp r3, r2 + 8002516: d00c beq.n 8002532 { /* Clear NACK Flag */ __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); - 8002d3c: 687b ldr r3, [r7, #4] - 8002d3e: 681b ldr r3, [r3, #0] - 8002d40: 2210 movs r2, #16 - 8002d42: 61da str r2, [r3, #28] + 8002518: 687b ldr r3, [r7, #4] + 800251a: 681b ldr r3, [r3, #0] + 800251c: 2210 movs r2, #16 + 800251e: 61da str r2, [r3, #28] /* Flush TX register */ I2C_Flush_TXDR(hi2c); - 8002d44: 687b ldr r3, [r7, #4] - 8002d46: 0018 movs r0, r3 - 8002d48: f000 fa19 bl 800317e + 8002520: 687b ldr r3, [r7, #4] + 8002522: 0018 movs r0, r3 + 8002524: f000 fa19 bl 800295a /* Last Byte is Transmitted */ /* Call I2C Slave Sequential complete process */ I2C_ITSlaveSeqCplt(hi2c); - 8002d4c: 687b ldr r3, [r7, #4] - 8002d4e: 0018 movs r0, r3 - 8002d50: f7ff fdd8 bl 8002904 - 8002d54: e01d b.n 8002d92 + 8002528: 687b ldr r3, [r7, #4] + 800252a: 0018 movs r0, r3 + 800252c: f7ff fea6 bl 800227c + 8002530: e01d b.n 800256e } else { /* Clear NACK Flag */ __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); - 8002d56: 687b ldr r3, [r7, #4] - 8002d58: 681b ldr r3, [r3, #0] - 8002d5a: 2210 movs r2, #16 - 8002d5c: 61da str r2, [r3, #28] - 8002d5e: e018 b.n 8002d92 + 8002532: 687b ldr r3, [r7, #4] + 8002534: 681b ldr r3, [r3, #0] + 8002536: 2210 movs r2, #16 + 8002538: 61da str r2, [r3, #28] + 800253a: e018 b.n 800256e } else { /* if no, error use case, a Non-Acknowledge of last Data is generated by the MASTER*/ /* Clear NACK Flag */ __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); - 8002d60: 687b ldr r3, [r7, #4] - 8002d62: 681b ldr r3, [r3, #0] - 8002d64: 2210 movs r2, #16 - 8002d66: 61da str r2, [r3, #28] + 800253c: 687b ldr r3, [r7, #4] + 800253e: 681b ldr r3, [r3, #0] + 8002540: 2210 movs r2, #16 + 8002542: 61da str r2, [r3, #28] /* Set ErrorCode corresponding to a Non-Acknowledge */ hi2c->ErrorCode |= HAL_I2C_ERROR_AF; - 8002d68: 687b ldr r3, [r7, #4] - 8002d6a: 6c5b ldr r3, [r3, #68] @ 0x44 - 8002d6c: 2204 movs r2, #4 - 8002d6e: 431a orrs r2, r3 - 8002d70: 687b ldr r3, [r7, #4] - 8002d72: 645a str r2, [r3, #68] @ 0x44 + 8002544: 687b ldr r3, [r7, #4] + 8002546: 6c5b ldr r3, [r3, #68] @ 0x44 + 8002548: 2204 movs r2, #4 + 800254a: 431a orrs r2, r3 + 800254c: 687b ldr r3, [r7, #4] + 800254e: 645a str r2, [r3, #68] @ 0x44 if ((tmpoptions == I2C_FIRST_FRAME) || (tmpoptions == I2C_NEXT_FRAME)) - 8002d74: 68fb ldr r3, [r7, #12] - 8002d76: 2b00 cmp r3, #0 - 8002d78: d004 beq.n 8002d84 - 8002d7a: 68fa ldr r2, [r7, #12] - 8002d7c: 2380 movs r3, #128 @ 0x80 - 8002d7e: 045b lsls r3, r3, #17 - 8002d80: 429a cmp r2, r3 - 8002d82: d106 bne.n 8002d92 + 8002550: 68fb ldr r3, [r7, #12] + 8002552: 2b00 cmp r3, #0 + 8002554: d004 beq.n 8002560 + 8002556: 68fa ldr r2, [r7, #12] + 8002558: 2380 movs r3, #128 @ 0x80 + 800255a: 045b lsls r3, r3, #17 + 800255c: 429a cmp r2, r3 + 800255e: d106 bne.n 800256e { /* Call the corresponding callback to inform upper layer of End of Transfer */ I2C_ITError(hi2c, hi2c->ErrorCode); - 8002d84: 687b ldr r3, [r7, #4] - 8002d86: 6c5a ldr r2, [r3, #68] @ 0x44 - 8002d88: 687b ldr r3, [r7, #4] - 8002d8a: 0011 movs r1, r2 - 8002d8c: 0018 movs r0, r3 - 8002d8e: f000 f8cb bl 8002f28 + 8002560: 687b ldr r3, [r7, #4] + 8002562: 6c5a ldr r2, [r3, #68] @ 0x44 + 8002564: 687b ldr r3, [r7, #4] + 8002566: 0011 movs r1, r2 + 8002568: 0018 movs r0, r3 + 800256a: f000 f8cb bl 8002704 } } } hi2c->Mode = HAL_I2C_MODE_NONE; - 8002d92: 687b ldr r3, [r7, #4] - 8002d94: 2242 movs r2, #66 @ 0x42 - 8002d96: 2100 movs r1, #0 - 8002d98: 5499 strb r1, [r3, r2] + 800256e: 687b ldr r3, [r7, #4] + 8002570: 2242 movs r2, #66 @ 0x42 + 8002572: 2100 movs r1, #0 + 8002574: 5499 strb r1, [r3, r2] hi2c->XferISR = NULL; - 8002d9a: 687b ldr r3, [r7, #4] - 8002d9c: 2200 movs r2, #0 - 8002d9e: 635a str r2, [r3, #52] @ 0x34 + 8002576: 687b ldr r3, [r7, #4] + 8002578: 2200 movs r2, #0 + 800257a: 635a str r2, [r3, #52] @ 0x34 if (hi2c->ErrorCode != HAL_I2C_ERROR_NONE) - 8002da0: 687b ldr r3, [r7, #4] - 8002da2: 6c5b ldr r3, [r3, #68] @ 0x44 - 8002da4: 2b00 cmp r3, #0 - 8002da6: d013 beq.n 8002dd0 + 800257c: 687b ldr r3, [r7, #4] + 800257e: 6c5b ldr r3, [r3, #68] @ 0x44 + 8002580: 2b00 cmp r3, #0 + 8002582: d013 beq.n 80025ac { /* Call the corresponding callback to inform upper layer of End of Transfer */ I2C_ITError(hi2c, hi2c->ErrorCode); - 8002da8: 687b ldr r3, [r7, #4] - 8002daa: 6c5a ldr r2, [r3, #68] @ 0x44 - 8002dac: 687b ldr r3, [r7, #4] - 8002dae: 0011 movs r1, r2 - 8002db0: 0018 movs r0, r3 - 8002db2: f000 f8b9 bl 8002f28 + 8002584: 687b ldr r3, [r7, #4] + 8002586: 6c5a ldr r2, [r3, #68] @ 0x44 + 8002588: 687b ldr r3, [r7, #4] + 800258a: 0011 movs r1, r2 + 800258c: 0018 movs r0, r3 + 800258e: f000 f8b9 bl 8002704 /* Call the Listen Complete callback, to inform upper layer of the end of Listen usecase */ if (hi2c->State == HAL_I2C_STATE_LISTEN) - 8002db6: 687b ldr r3, [r7, #4] - 8002db8: 2241 movs r2, #65 @ 0x41 - 8002dba: 5c9b ldrb r3, [r3, r2] - 8002dbc: b2db uxtb r3, r3 - 8002dbe: 2b28 cmp r3, #40 @ 0x28 - 8002dc0: d147 bne.n 8002e52 + 8002592: 687b ldr r3, [r7, #4] + 8002594: 2241 movs r2, #65 @ 0x41 + 8002596: 5c9b ldrb r3, [r3, r2] + 8002598: b2db uxtb r3, r3 + 800259a: 2b28 cmp r3, #40 @ 0x28 + 800259c: d147 bne.n 800262e { /* Call I2C Listen complete process */ I2C_ITListenCplt(hi2c, tmpITFlags); - 8002dc2: 697a ldr r2, [r7, #20] - 8002dc4: 687b ldr r3, [r7, #4] - 8002dc6: 0011 movs r1, r2 - 8002dc8: 0018 movs r0, r3 - 8002dca: f000 f855 bl 8002e78 + 800259e: 697a ldr r2, [r7, #20] + 80025a0: 687b ldr r3, [r7, #4] + 80025a2: 0011 movs r1, r2 + 80025a4: 0018 movs r0, r3 + 80025a6: f000 f855 bl 8002654 hi2c->SlaveTxCpltCallback(hi2c); #else HAL_I2C_SlaveTxCpltCallback(hi2c); #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ } } - 8002dce: e040 b.n 8002e52 + 80025aa: e040 b.n 800262e else if (hi2c->XferOptions != I2C_NO_OPTION_FRAME) - 8002dd0: 687b ldr r3, [r7, #4] - 8002dd2: 6adb ldr r3, [r3, #44] @ 0x2c - 8002dd4: 4a27 ldr r2, [pc, #156] @ (8002e74 ) - 8002dd6: 4293 cmp r3, r2 - 8002dd8: d016 beq.n 8002e08 + 80025ac: 687b ldr r3, [r7, #4] + 80025ae: 6adb ldr r3, [r3, #44] @ 0x2c + 80025b0: 4a27 ldr r2, [pc, #156] @ (8002650 ) + 80025b2: 4293 cmp r3, r2 + 80025b4: d016 beq.n 80025e4 I2C_ITSlaveSeqCplt(hi2c); - 8002dda: 687b ldr r3, [r7, #4] - 8002ddc: 0018 movs r0, r3 - 8002dde: f7ff fd91 bl 8002904 + 80025b6: 687b ldr r3, [r7, #4] + 80025b8: 0018 movs r0, r3 + 80025ba: f7ff fe5f bl 800227c hi2c->XferOptions = I2C_NO_OPTION_FRAME; - 8002de2: 687b ldr r3, [r7, #4] - 8002de4: 4a23 ldr r2, [pc, #140] @ (8002e74 ) - 8002de6: 62da str r2, [r3, #44] @ 0x2c + 80025be: 687b ldr r3, [r7, #4] + 80025c0: 4a23 ldr r2, [pc, #140] @ (8002650 ) + 80025c2: 62da str r2, [r3, #44] @ 0x2c hi2c->State = HAL_I2C_STATE_READY; - 8002de8: 687b ldr r3, [r7, #4] - 8002dea: 2241 movs r2, #65 @ 0x41 - 8002dec: 2120 movs r1, #32 - 8002dee: 5499 strb r1, [r3, r2] + 80025c4: 687b ldr r3, [r7, #4] + 80025c6: 2241 movs r2, #65 @ 0x41 + 80025c8: 2120 movs r1, #32 + 80025ca: 5499 strb r1, [r3, r2] hi2c->PreviousState = I2C_STATE_NONE; - 8002df0: 687b ldr r3, [r7, #4] - 8002df2: 2200 movs r2, #0 - 8002df4: 631a str r2, [r3, #48] @ 0x30 + 80025cc: 687b ldr r3, [r7, #4] + 80025ce: 2200 movs r2, #0 + 80025d0: 631a str r2, [r3, #48] @ 0x30 __HAL_UNLOCK(hi2c); - 8002df6: 687b ldr r3, [r7, #4] - 8002df8: 2240 movs r2, #64 @ 0x40 - 8002dfa: 2100 movs r1, #0 - 8002dfc: 5499 strb r1, [r3, r2] + 80025d2: 687b ldr r3, [r7, #4] + 80025d4: 2240 movs r2, #64 @ 0x40 + 80025d6: 2100 movs r1, #0 + 80025d8: 5499 strb r1, [r3, r2] HAL_I2C_ListenCpltCallback(hi2c); - 8002dfe: 687b ldr r3, [r7, #4] - 8002e00: 0018 movs r0, r3 - 8002e02: f7ff f860 bl 8001ec6 + 80025da: 687b ldr r3, [r7, #4] + 80025dc: 0018 movs r0, r3 + 80025de: f7ff fc90 bl 8001f02 } - 8002e06: e024 b.n 8002e52 + 80025e2: e024 b.n 800262e else if (hi2c->State == HAL_I2C_STATE_BUSY_RX) - 8002e08: 687b ldr r3, [r7, #4] - 8002e0a: 2241 movs r2, #65 @ 0x41 - 8002e0c: 5c9b ldrb r3, [r3, r2] - 8002e0e: b2db uxtb r3, r3 - 8002e10: 2b22 cmp r3, #34 @ 0x22 - 8002e12: d10f bne.n 8002e34 + 80025e4: 687b ldr r3, [r7, #4] + 80025e6: 2241 movs r2, #65 @ 0x41 + 80025e8: 5c9b ldrb r3, [r3, r2] + 80025ea: b2db uxtb r3, r3 + 80025ec: 2b22 cmp r3, #34 @ 0x22 + 80025ee: d10f bne.n 8002610 hi2c->State = HAL_I2C_STATE_READY; - 8002e14: 687b ldr r3, [r7, #4] - 8002e16: 2241 movs r2, #65 @ 0x41 - 8002e18: 2120 movs r1, #32 - 8002e1a: 5499 strb r1, [r3, r2] + 80025f0: 687b ldr r3, [r7, #4] + 80025f2: 2241 movs r2, #65 @ 0x41 + 80025f4: 2120 movs r1, #32 + 80025f6: 5499 strb r1, [r3, r2] hi2c->PreviousState = I2C_STATE_NONE; - 8002e1c: 687b ldr r3, [r7, #4] - 8002e1e: 2200 movs r2, #0 - 8002e20: 631a str r2, [r3, #48] @ 0x30 + 80025f8: 687b ldr r3, [r7, #4] + 80025fa: 2200 movs r2, #0 + 80025fc: 631a str r2, [r3, #48] @ 0x30 __HAL_UNLOCK(hi2c); - 8002e22: 687b ldr r3, [r7, #4] - 8002e24: 2240 movs r2, #64 @ 0x40 - 8002e26: 2100 movs r1, #0 - 8002e28: 5499 strb r1, [r3, r2] + 80025fe: 687b ldr r3, [r7, #4] + 8002600: 2240 movs r2, #64 @ 0x40 + 8002602: 2100 movs r1, #0 + 8002604: 5499 strb r1, [r3, r2] HAL_I2C_SlaveRxCpltCallback(hi2c); - 8002e2a: 687b ldr r3, [r7, #4] - 8002e2c: 0018 movs r0, r3 - 8002e2e: f7fd fda5 bl 800097c + 8002606: 687b ldr r3, [r7, #4] + 8002608: 0018 movs r0, r3 + 800260a: f7fe fd23 bl 8001054 } - 8002e32: e00e b.n 8002e52 + 800260e: e00e b.n 800262e hi2c->State = HAL_I2C_STATE_READY; - 8002e34: 687b ldr r3, [r7, #4] - 8002e36: 2241 movs r2, #65 @ 0x41 - 8002e38: 2120 movs r1, #32 - 8002e3a: 5499 strb r1, [r3, r2] + 8002610: 687b ldr r3, [r7, #4] + 8002612: 2241 movs r2, #65 @ 0x41 + 8002614: 2120 movs r1, #32 + 8002616: 5499 strb r1, [r3, r2] hi2c->PreviousState = I2C_STATE_NONE; - 8002e3c: 687b ldr r3, [r7, #4] - 8002e3e: 2200 movs r2, #0 - 8002e40: 631a str r2, [r3, #48] @ 0x30 + 8002618: 687b ldr r3, [r7, #4] + 800261a: 2200 movs r2, #0 + 800261c: 631a str r2, [r3, #48] @ 0x30 __HAL_UNLOCK(hi2c); - 8002e42: 687b ldr r3, [r7, #4] - 8002e44: 2240 movs r2, #64 @ 0x40 - 8002e46: 2100 movs r1, #0 - 8002e48: 5499 strb r1, [r3, r2] + 800261e: 687b ldr r3, [r7, #4] + 8002620: 2240 movs r2, #64 @ 0x40 + 8002622: 2100 movs r1, #0 + 8002624: 5499 strb r1, [r3, r2] HAL_I2C_SlaveTxCpltCallback(hi2c); - 8002e4a: 687b ldr r3, [r7, #4] - 8002e4c: 0018 movs r0, r3 - 8002e4e: f7ff f822 bl 8001e96 + 8002626: 687b ldr r3, [r7, #4] + 8002628: 0018 movs r0, r3 + 800262a: f7ff fc52 bl 8001ed2 } - 8002e52: 46c0 nop @ (mov r8, r8) - 8002e54: 46bd mov sp, r7 - 8002e56: b006 add sp, #24 - 8002e58: bd80 pop {r7, pc} - 8002e5a: 46c0 nop @ (mov r8, r8) - 8002e5c: 00008001 .word 0x00008001 - 8002e60: 00008002 .word 0x00008002 - 8002e64: 00008003 .word 0x00008003 - 8002e68: fe00e800 .word 0xfe00e800 - 8002e6c: ffffbfff .word 0xffffbfff - 8002e70: ffff7fff .word 0xffff7fff - 8002e74: ffff0000 .word 0xffff0000 + 800262e: 46c0 nop @ (mov r8, r8) + 8002630: 46bd mov sp, r7 + 8002632: b006 add sp, #24 + 8002634: bd80 pop {r7, pc} + 8002636: 46c0 nop @ (mov r8, r8) + 8002638: 00008001 .word 0x00008001 + 800263c: 00008002 .word 0x00008002 + 8002640: 00008003 .word 0x00008003 + 8002644: fe00e800 .word 0xfe00e800 + 8002648: ffffbfff .word 0xffffbfff + 800264c: ffff7fff .word 0xffff7fff + 8002650: ffff0000 .word 0xffff0000 -08002e78 : +08002654 : * @param hi2c I2C handle. * @param ITFlags Interrupt flags to handle. * @retval None */ static void I2C_ITListenCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags) { - 8002e78: b580 push {r7, lr} - 8002e7a: b082 sub sp, #8 - 8002e7c: af00 add r7, sp, #0 - 8002e7e: 6078 str r0, [r7, #4] - 8002e80: 6039 str r1, [r7, #0] + 8002654: b580 push {r7, lr} + 8002656: b082 sub sp, #8 + 8002658: af00 add r7, sp, #0 + 800265a: 6078 str r0, [r7, #4] + 800265c: 6039 str r1, [r7, #0] /* Reset handle parameters */ hi2c->XferOptions = I2C_NO_OPTION_FRAME; - 8002e82: 687b ldr r3, [r7, #4] - 8002e84: 4a26 ldr r2, [pc, #152] @ (8002f20 ) - 8002e86: 62da str r2, [r3, #44] @ 0x2c + 800265e: 687b ldr r3, [r7, #4] + 8002660: 4a26 ldr r2, [pc, #152] @ (80026fc ) + 8002662: 62da str r2, [r3, #44] @ 0x2c hi2c->PreviousState = I2C_STATE_NONE; - 8002e88: 687b ldr r3, [r7, #4] - 8002e8a: 2200 movs r2, #0 - 8002e8c: 631a str r2, [r3, #48] @ 0x30 + 8002664: 687b ldr r3, [r7, #4] + 8002666: 2200 movs r2, #0 + 8002668: 631a str r2, [r3, #48] @ 0x30 hi2c->State = HAL_I2C_STATE_READY; - 8002e8e: 687b ldr r3, [r7, #4] - 8002e90: 2241 movs r2, #65 @ 0x41 - 8002e92: 2120 movs r1, #32 - 8002e94: 5499 strb r1, [r3, r2] + 800266a: 687b ldr r3, [r7, #4] + 800266c: 2241 movs r2, #65 @ 0x41 + 800266e: 2120 movs r1, #32 + 8002670: 5499 strb r1, [r3, r2] hi2c->Mode = HAL_I2C_MODE_NONE; - 8002e96: 687b ldr r3, [r7, #4] - 8002e98: 2242 movs r2, #66 @ 0x42 - 8002e9a: 2100 movs r1, #0 - 8002e9c: 5499 strb r1, [r3, r2] + 8002672: 687b ldr r3, [r7, #4] + 8002674: 2242 movs r2, #66 @ 0x42 + 8002676: 2100 movs r1, #0 + 8002678: 5499 strb r1, [r3, r2] hi2c->XferISR = NULL; - 8002e9e: 687b ldr r3, [r7, #4] - 8002ea0: 2200 movs r2, #0 - 8002ea2: 635a str r2, [r3, #52] @ 0x34 + 800267a: 687b ldr r3, [r7, #4] + 800267c: 2200 movs r2, #0 + 800267e: 635a str r2, [r3, #52] @ 0x34 /* Store Last receive data if any */ if (I2C_CHECK_FLAG(ITFlags, I2C_FLAG_RXNE) != RESET) - 8002ea4: 683b ldr r3, [r7, #0] - 8002ea6: 2204 movs r2, #4 - 8002ea8: 4013 ands r3, r2 - 8002eaa: d022 beq.n 8002ef2 + 8002680: 683b ldr r3, [r7, #0] + 8002682: 2204 movs r2, #4 + 8002684: 4013 ands r3, r2 + 8002686: d022 beq.n 80026ce { /* Read data from RXDR */ *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; - 8002eac: 687b ldr r3, [r7, #4] - 8002eae: 681b ldr r3, [r3, #0] - 8002eb0: 6a5a ldr r2, [r3, #36] @ 0x24 - 8002eb2: 687b ldr r3, [r7, #4] - 8002eb4: 6a5b ldr r3, [r3, #36] @ 0x24 - 8002eb6: b2d2 uxtb r2, r2 - 8002eb8: 701a strb r2, [r3, #0] + 8002688: 687b ldr r3, [r7, #4] + 800268a: 681b ldr r3, [r3, #0] + 800268c: 6a5a ldr r2, [r3, #36] @ 0x24 + 800268e: 687b ldr r3, [r7, #4] + 8002690: 6a5b ldr r3, [r3, #36] @ 0x24 + 8002692: b2d2 uxtb r2, r2 + 8002694: 701a strb r2, [r3, #0] /* Increment Buffer pointer */ hi2c->pBuffPtr++; - 8002eba: 687b ldr r3, [r7, #4] - 8002ebc: 6a5b ldr r3, [r3, #36] @ 0x24 - 8002ebe: 1c5a adds r2, r3, #1 - 8002ec0: 687b ldr r3, [r7, #4] - 8002ec2: 625a str r2, [r3, #36] @ 0x24 + 8002696: 687b ldr r3, [r7, #4] + 8002698: 6a5b ldr r3, [r3, #36] @ 0x24 + 800269a: 1c5a adds r2, r3, #1 + 800269c: 687b ldr r3, [r7, #4] + 800269e: 625a str r2, [r3, #36] @ 0x24 if ((hi2c->XferSize > 0U)) - 8002ec4: 687b ldr r3, [r7, #4] - 8002ec6: 8d1b ldrh r3, [r3, #40] @ 0x28 - 8002ec8: 2b00 cmp r3, #0 - 8002eca: d012 beq.n 8002ef2 + 80026a0: 687b ldr r3, [r7, #4] + 80026a2: 8d1b ldrh r3, [r3, #40] @ 0x28 + 80026a4: 2b00 cmp r3, #0 + 80026a6: d012 beq.n 80026ce { hi2c->XferSize--; - 8002ecc: 687b ldr r3, [r7, #4] - 8002ece: 8d1b ldrh r3, [r3, #40] @ 0x28 - 8002ed0: 3b01 subs r3, #1 - 8002ed2: b29a uxth r2, r3 - 8002ed4: 687b ldr r3, [r7, #4] - 8002ed6: 851a strh r2, [r3, #40] @ 0x28 + 80026a8: 687b ldr r3, [r7, #4] + 80026aa: 8d1b ldrh r3, [r3, #40] @ 0x28 + 80026ac: 3b01 subs r3, #1 + 80026ae: b29a uxth r2, r3 + 80026b0: 687b ldr r3, [r7, #4] + 80026b2: 851a strh r2, [r3, #40] @ 0x28 hi2c->XferCount--; - 8002ed8: 687b ldr r3, [r7, #4] - 8002eda: 8d5b ldrh r3, [r3, #42] @ 0x2a - 8002edc: b29b uxth r3, r3 - 8002ede: 3b01 subs r3, #1 - 8002ee0: b29a uxth r2, r3 - 8002ee2: 687b ldr r3, [r7, #4] - 8002ee4: 855a strh r2, [r3, #42] @ 0x2a + 80026b4: 687b ldr r3, [r7, #4] + 80026b6: 8d5b ldrh r3, [r3, #42] @ 0x2a + 80026b8: b29b uxth r3, r3 + 80026ba: 3b01 subs r3, #1 + 80026bc: b29a uxth r2, r3 + 80026be: 687b ldr r3, [r7, #4] + 80026c0: 855a strh r2, [r3, #42] @ 0x2a /* Set ErrorCode corresponding to a Non-Acknowledge */ hi2c->ErrorCode |= HAL_I2C_ERROR_AF; - 8002ee6: 687b ldr r3, [r7, #4] - 8002ee8: 6c5b ldr r3, [r3, #68] @ 0x44 - 8002eea: 2204 movs r2, #4 - 8002eec: 431a orrs r2, r3 - 8002eee: 687b ldr r3, [r7, #4] - 8002ef0: 645a str r2, [r3, #68] @ 0x44 + 80026c2: 687b ldr r3, [r7, #4] + 80026c4: 6c5b ldr r3, [r3, #68] @ 0x44 + 80026c6: 2204 movs r2, #4 + 80026c8: 431a orrs r2, r3 + 80026ca: 687b ldr r3, [r7, #4] + 80026cc: 645a str r2, [r3, #68] @ 0x44 } } /* Disable all Interrupts*/ I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT | I2C_XFER_TX_IT); - 8002ef2: 4a0c ldr r2, [pc, #48] @ (8002f24 ) - 8002ef4: 687b ldr r3, [r7, #4] - 8002ef6: 0011 movs r1, r2 - 8002ef8: 0018 movs r0, r3 - 8002efa: f000 fa45 bl 8003388 + 80026ce: 4a0c ldr r2, [pc, #48] @ (8002700 ) + 80026d0: 687b ldr r3, [r7, #4] + 80026d2: 0011 movs r1, r2 + 80026d4: 0018 movs r0, r3 + 80026d6: f000 f981 bl 80029dc /* Clear NACK Flag */ __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); - 8002efe: 687b ldr r3, [r7, #4] - 8002f00: 681b ldr r3, [r3, #0] - 8002f02: 2210 movs r2, #16 - 8002f04: 61da str r2, [r3, #28] + 80026da: 687b ldr r3, [r7, #4] + 80026dc: 681b ldr r3, [r3, #0] + 80026de: 2210 movs r2, #16 + 80026e0: 61da str r2, [r3, #28] /* Process Unlocked */ __HAL_UNLOCK(hi2c); - 8002f06: 687b ldr r3, [r7, #4] - 8002f08: 2240 movs r2, #64 @ 0x40 - 8002f0a: 2100 movs r1, #0 - 8002f0c: 5499 strb r1, [r3, r2] + 80026e2: 687b ldr r3, [r7, #4] + 80026e4: 2240 movs r2, #64 @ 0x40 + 80026e6: 2100 movs r1, #0 + 80026e8: 5499 strb r1, [r3, r2] /* Call the Listen Complete callback, to inform upper layer of the end of Listen usecase */ #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) hi2c->ListenCpltCallback(hi2c); #else HAL_I2C_ListenCpltCallback(hi2c); - 8002f0e: 687b ldr r3, [r7, #4] - 8002f10: 0018 movs r0, r3 - 8002f12: f7fe ffd8 bl 8001ec6 + 80026ea: 687b ldr r3, [r7, #4] + 80026ec: 0018 movs r0, r3 + 80026ee: f7ff fc08 bl 8001f02 #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ } - 8002f16: 46c0 nop @ (mov r8, r8) - 8002f18: 46bd mov sp, r7 - 8002f1a: b002 add sp, #8 - 8002f1c: bd80 pop {r7, pc} - 8002f1e: 46c0 nop @ (mov r8, r8) - 8002f20: ffff0000 .word 0xffff0000 - 8002f24: 00008003 .word 0x00008003 + 80026f2: 46c0 nop @ (mov r8, r8) + 80026f4: 46bd mov sp, r7 + 80026f6: b002 add sp, #8 + 80026f8: bd80 pop {r7, pc} + 80026fa: 46c0 nop @ (mov r8, r8) + 80026fc: ffff0000 .word 0xffff0000 + 8002700: 00008003 .word 0x00008003 -08002f28 : +08002704 : * @param hi2c I2C handle. * @param ErrorCode Error code to handle. * @retval None */ static void I2C_ITError(I2C_HandleTypeDef *hi2c, uint32_t ErrorCode) { - 8002f28: b580 push {r7, lr} - 8002f2a: b084 sub sp, #16 - 8002f2c: af00 add r7, sp, #0 - 8002f2e: 6078 str r0, [r7, #4] - 8002f30: 6039 str r1, [r7, #0] + 8002704: b580 push {r7, lr} + 8002706: b084 sub sp, #16 + 8002708: af00 add r7, sp, #0 + 800270a: 6078 str r0, [r7, #4] + 800270c: 6039 str r1, [r7, #0] HAL_I2C_StateTypeDef tmpstate = hi2c->State; - 8002f32: 200f movs r0, #15 - 8002f34: 183b adds r3, r7, r0 - 8002f36: 687a ldr r2, [r7, #4] - 8002f38: 2141 movs r1, #65 @ 0x41 - 8002f3a: 5c52 ldrb r2, [r2, r1] - 8002f3c: 701a strb r2, [r3, #0] + 800270e: 200f movs r0, #15 + 8002710: 183b adds r3, r7, r0 + 8002712: 687a ldr r2, [r7, #4] + 8002714: 2141 movs r1, #65 @ 0x41 + 8002716: 5c52 ldrb r2, [r2, r1] + 8002718: 701a strb r2, [r3, #0] uint32_t tmppreviousstate; /* Reset handle parameters */ hi2c->Mode = HAL_I2C_MODE_NONE; - 8002f3e: 687b ldr r3, [r7, #4] - 8002f40: 2242 movs r2, #66 @ 0x42 - 8002f42: 2100 movs r1, #0 - 8002f44: 5499 strb r1, [r3, r2] + 800271a: 687b ldr r3, [r7, #4] + 800271c: 2242 movs r2, #66 @ 0x42 + 800271e: 2100 movs r1, #0 + 8002720: 5499 strb r1, [r3, r2] hi2c->XferOptions = I2C_NO_OPTION_FRAME; - 8002f46: 687b ldr r3, [r7, #4] - 8002f48: 4a72 ldr r2, [pc, #456] @ (8003114 ) - 8002f4a: 62da str r2, [r3, #44] @ 0x2c + 8002722: 687b ldr r3, [r7, #4] + 8002724: 4a72 ldr r2, [pc, #456] @ (80028f0 ) + 8002726: 62da str r2, [r3, #44] @ 0x2c hi2c->XferCount = 0U; - 8002f4c: 687b ldr r3, [r7, #4] - 8002f4e: 2200 movs r2, #0 - 8002f50: 855a strh r2, [r3, #42] @ 0x2a + 8002728: 687b ldr r3, [r7, #4] + 800272a: 2200 movs r2, #0 + 800272c: 855a strh r2, [r3, #42] @ 0x2a /* Set new error code */ hi2c->ErrorCode |= ErrorCode; - 8002f52: 687b ldr r3, [r7, #4] - 8002f54: 6c5a ldr r2, [r3, #68] @ 0x44 - 8002f56: 683b ldr r3, [r7, #0] - 8002f58: 431a orrs r2, r3 - 8002f5a: 687b ldr r3, [r7, #4] - 8002f5c: 645a str r2, [r3, #68] @ 0x44 + 800272e: 687b ldr r3, [r7, #4] + 8002730: 6c5a ldr r2, [r3, #68] @ 0x44 + 8002732: 683b ldr r3, [r7, #0] + 8002734: 431a orrs r2, r3 + 8002736: 687b ldr r3, [r7, #4] + 8002738: 645a str r2, [r3, #68] @ 0x44 /* Disable Interrupts */ if ((tmpstate == HAL_I2C_STATE_LISTEN) || - 8002f5e: 183b adds r3, r7, r0 - 8002f60: 781b ldrb r3, [r3, #0] - 8002f62: 2b28 cmp r3, #40 @ 0x28 - 8002f64: d007 beq.n 8002f76 - 8002f66: 183b adds r3, r7, r0 - 8002f68: 781b ldrb r3, [r3, #0] - 8002f6a: 2b29 cmp r3, #41 @ 0x29 - 8002f6c: d003 beq.n 8002f76 + 800273a: 183b adds r3, r7, r0 + 800273c: 781b ldrb r3, [r3, #0] + 800273e: 2b28 cmp r3, #40 @ 0x28 + 8002740: d007 beq.n 8002752 + 8002742: 183b adds r3, r7, r0 + 8002744: 781b ldrb r3, [r3, #0] + 8002746: 2b29 cmp r3, #41 @ 0x29 + 8002748: d003 beq.n 8002752 (tmpstate == HAL_I2C_STATE_BUSY_TX_LISTEN) || - 8002f6e: 183b adds r3, r7, r0 - 8002f70: 781b ldrb r3, [r3, #0] - 8002f72: 2b2a cmp r3, #42 @ 0x2a - 8002f74: d10c bne.n 8002f90 + 800274a: 183b adds r3, r7, r0 + 800274c: 781b ldrb r3, [r3, #0] + 800274e: 2b2a cmp r3, #42 @ 0x2a + 8002750: d10c bne.n 800276c (tmpstate == HAL_I2C_STATE_BUSY_RX_LISTEN)) { /* Disable all interrupts, except interrupts related to LISTEN state */ I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_TX_IT); - 8002f76: 687b ldr r3, [r7, #4] - 8002f78: 2103 movs r1, #3 - 8002f7a: 0018 movs r0, r3 - 8002f7c: f000 fa04 bl 8003388 + 8002752: 687b ldr r3, [r7, #4] + 8002754: 2103 movs r1, #3 + 8002756: 0018 movs r0, r3 + 8002758: f000 f940 bl 80029dc /* keep HAL_I2C_STATE_LISTEN if set */ hi2c->State = HAL_I2C_STATE_LISTEN; - 8002f80: 687b ldr r3, [r7, #4] - 8002f82: 2241 movs r2, #65 @ 0x41 - 8002f84: 2128 movs r1, #40 @ 0x28 - 8002f86: 5499 strb r1, [r3, r2] + 800275c: 687b ldr r3, [r7, #4] + 800275e: 2241 movs r2, #65 @ 0x41 + 8002760: 2128 movs r1, #40 @ 0x28 + 8002762: 5499 strb r1, [r3, r2] hi2c->XferISR = I2C_Slave_ISR_IT; - 8002f88: 687b ldr r3, [r7, #4] - 8002f8a: 4a63 ldr r2, [pc, #396] @ (8003118 ) - 8002f8c: 635a str r2, [r3, #52] @ 0x34 - 8002f8e: e032 b.n 8002ff6 + 8002764: 687b ldr r3, [r7, #4] + 8002766: 4a63 ldr r2, [pc, #396] @ (80028f4 ) + 8002768: 635a str r2, [r3, #52] @ 0x34 + 800276a: e032 b.n 80027d2 } else { /* Disable all interrupts */ I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT | I2C_XFER_TX_IT); - 8002f90: 4a62 ldr r2, [pc, #392] @ (800311c ) - 8002f92: 687b ldr r3, [r7, #4] - 8002f94: 0011 movs r1, r2 - 8002f96: 0018 movs r0, r3 - 8002f98: f000 f9f6 bl 8003388 + 800276c: 4a62 ldr r2, [pc, #392] @ (80028f8 ) + 800276e: 687b ldr r3, [r7, #4] + 8002770: 0011 movs r1, r2 + 8002772: 0018 movs r0, r3 + 8002774: f000 f932 bl 80029dc /* Flush TX register */ I2C_Flush_TXDR(hi2c); - 8002f9c: 687b ldr r3, [r7, #4] - 8002f9e: 0018 movs r0, r3 - 8002fa0: f000 f8ed bl 800317e + 8002778: 687b ldr r3, [r7, #4] + 800277a: 0018 movs r0, r3 + 800277c: f000 f8ed bl 800295a /* If state is an abort treatment on going, don't change state */ /* This change will be do later */ if (hi2c->State != HAL_I2C_STATE_ABORT) - 8002fa4: 687b ldr r3, [r7, #4] - 8002fa6: 2241 movs r2, #65 @ 0x41 - 8002fa8: 5c9b ldrb r3, [r3, r2] - 8002faa: b2db uxtb r3, r3 - 8002fac: 2b60 cmp r3, #96 @ 0x60 - 8002fae: d01f beq.n 8002ff0 + 8002780: 687b ldr r3, [r7, #4] + 8002782: 2241 movs r2, #65 @ 0x41 + 8002784: 5c9b ldrb r3, [r3, r2] + 8002786: b2db uxtb r3, r3 + 8002788: 2b60 cmp r3, #96 @ 0x60 + 800278a: d01f beq.n 80027cc { /* Set HAL_I2C_STATE_READY */ hi2c->State = HAL_I2C_STATE_READY; - 8002fb0: 687b ldr r3, [r7, #4] - 8002fb2: 2241 movs r2, #65 @ 0x41 - 8002fb4: 2120 movs r1, #32 - 8002fb6: 5499 strb r1, [r3, r2] + 800278c: 687b ldr r3, [r7, #4] + 800278e: 2241 movs r2, #65 @ 0x41 + 8002790: 2120 movs r1, #32 + 8002792: 5499 strb r1, [r3, r2] /* Check if a STOPF is detected */ if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == SET) - 8002fb8: 687b ldr r3, [r7, #4] - 8002fba: 681b ldr r3, [r3, #0] - 8002fbc: 699b ldr r3, [r3, #24] - 8002fbe: 2220 movs r2, #32 - 8002fc0: 4013 ands r3, r2 - 8002fc2: 2b20 cmp r3, #32 - 8002fc4: d114 bne.n 8002ff0 + 8002794: 687b ldr r3, [r7, #4] + 8002796: 681b ldr r3, [r3, #0] + 8002798: 699b ldr r3, [r3, #24] + 800279a: 2220 movs r2, #32 + 800279c: 4013 ands r3, r2 + 800279e: 2b20 cmp r3, #32 + 80027a0: d114 bne.n 80027cc { if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF) == SET) - 8002fc6: 687b ldr r3, [r7, #4] - 8002fc8: 681b ldr r3, [r3, #0] - 8002fca: 699b ldr r3, [r3, #24] - 8002fcc: 2210 movs r2, #16 - 8002fce: 4013 ands r3, r2 - 8002fd0: 2b10 cmp r3, #16 - 8002fd2: d109 bne.n 8002fe8 + 80027a2: 687b ldr r3, [r7, #4] + 80027a4: 681b ldr r3, [r3, #0] + 80027a6: 699b ldr r3, [r3, #24] + 80027a8: 2210 movs r2, #16 + 80027aa: 4013 ands r3, r2 + 80027ac: 2b10 cmp r3, #16 + 80027ae: d109 bne.n 80027c4 { __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); - 8002fd4: 687b ldr r3, [r7, #4] - 8002fd6: 681b ldr r3, [r3, #0] - 8002fd8: 2210 movs r2, #16 - 8002fda: 61da str r2, [r3, #28] + 80027b0: 687b ldr r3, [r7, #4] + 80027b2: 681b ldr r3, [r3, #0] + 80027b4: 2210 movs r2, #16 + 80027b6: 61da str r2, [r3, #28] hi2c->ErrorCode |= HAL_I2C_ERROR_AF; - 8002fdc: 687b ldr r3, [r7, #4] - 8002fde: 6c5b ldr r3, [r3, #68] @ 0x44 - 8002fe0: 2204 movs r2, #4 - 8002fe2: 431a orrs r2, r3 - 8002fe4: 687b ldr r3, [r7, #4] - 8002fe6: 645a str r2, [r3, #68] @ 0x44 + 80027b8: 687b ldr r3, [r7, #4] + 80027ba: 6c5b ldr r3, [r3, #68] @ 0x44 + 80027bc: 2204 movs r2, #4 + 80027be: 431a orrs r2, r3 + 80027c0: 687b ldr r3, [r7, #4] + 80027c2: 645a str r2, [r3, #68] @ 0x44 } /* Clear STOP Flag */ __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); - 8002fe8: 687b ldr r3, [r7, #4] - 8002fea: 681b ldr r3, [r3, #0] - 8002fec: 2220 movs r2, #32 - 8002fee: 61da str r2, [r3, #28] + 80027c4: 687b ldr r3, [r7, #4] + 80027c6: 681b ldr r3, [r3, #0] + 80027c8: 2220 movs r2, #32 + 80027ca: 61da str r2, [r3, #28] } } hi2c->XferISR = NULL; - 8002ff0: 687b ldr r3, [r7, #4] - 8002ff2: 2200 movs r2, #0 - 8002ff4: 635a str r2, [r3, #52] @ 0x34 + 80027cc: 687b ldr r3, [r7, #4] + 80027ce: 2200 movs r2, #0 + 80027d0: 635a str r2, [r3, #52] @ 0x34 } /* Abort DMA TX transfer if any */ tmppreviousstate = hi2c->PreviousState; - 8002ff6: 687b ldr r3, [r7, #4] - 8002ff8: 6b1b ldr r3, [r3, #48] @ 0x30 - 8002ffa: 60bb str r3, [r7, #8] + 80027d2: 687b ldr r3, [r7, #4] + 80027d4: 6b1b ldr r3, [r3, #48] @ 0x30 + 80027d6: 60bb str r3, [r7, #8] if ((hi2c->hdmatx != NULL) && ((tmppreviousstate == I2C_STATE_MASTER_BUSY_TX) || \ - 8002ffc: 687b ldr r3, [r7, #4] - 8002ffe: 6b9b ldr r3, [r3, #56] @ 0x38 - 8003000: 2b00 cmp r3, #0 - 8003002: d03b beq.n 800307c - 8003004: 68bb ldr r3, [r7, #8] - 8003006: 2b11 cmp r3, #17 - 8003008: d002 beq.n 8003010 - 800300a: 68bb ldr r3, [r7, #8] - 800300c: 2b21 cmp r3, #33 @ 0x21 - 800300e: d135 bne.n 800307c + 80027d8: 687b ldr r3, [r7, #4] + 80027da: 6b9b ldr r3, [r3, #56] @ 0x38 + 80027dc: 2b00 cmp r3, #0 + 80027de: d03b beq.n 8002858 + 80027e0: 68bb ldr r3, [r7, #8] + 80027e2: 2b11 cmp r3, #17 + 80027e4: d002 beq.n 80027ec + 80027e6: 68bb ldr r3, [r7, #8] + 80027e8: 2b21 cmp r3, #33 @ 0x21 + 80027ea: d135 bne.n 8002858 (tmppreviousstate == I2C_STATE_SLAVE_BUSY_TX))) { if ((hi2c->Instance->CR1 & I2C_CR1_TXDMAEN) == I2C_CR1_TXDMAEN) - 8003010: 687b ldr r3, [r7, #4] - 8003012: 681b ldr r3, [r3, #0] - 8003014: 681a ldr r2, [r3, #0] - 8003016: 2380 movs r3, #128 @ 0x80 - 8003018: 01db lsls r3, r3, #7 - 800301a: 401a ands r2, r3 - 800301c: 2380 movs r3, #128 @ 0x80 - 800301e: 01db lsls r3, r3, #7 - 8003020: 429a cmp r2, r3 - 8003022: d107 bne.n 8003034 + 80027ec: 687b ldr r3, [r7, #4] + 80027ee: 681b ldr r3, [r3, #0] + 80027f0: 681a ldr r2, [r3, #0] + 80027f2: 2380 movs r3, #128 @ 0x80 + 80027f4: 01db lsls r3, r3, #7 + 80027f6: 401a ands r2, r3 + 80027f8: 2380 movs r3, #128 @ 0x80 + 80027fa: 01db lsls r3, r3, #7 + 80027fc: 429a cmp r2, r3 + 80027fe: d107 bne.n 8002810 { hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; - 8003024: 687b ldr r3, [r7, #4] - 8003026: 681b ldr r3, [r3, #0] - 8003028: 681a ldr r2, [r3, #0] - 800302a: 687b ldr r3, [r7, #4] - 800302c: 681b ldr r3, [r3, #0] - 800302e: 493c ldr r1, [pc, #240] @ (8003120 ) - 8003030: 400a ands r2, r1 - 8003032: 601a str r2, [r3, #0] + 8002800: 687b ldr r3, [r7, #4] + 8002802: 681b ldr r3, [r3, #0] + 8002804: 681a ldr r2, [r3, #0] + 8002806: 687b ldr r3, [r7, #4] + 8002808: 681b ldr r3, [r3, #0] + 800280a: 493c ldr r1, [pc, #240] @ (80028fc ) + 800280c: 400a ands r2, r1 + 800280e: 601a str r2, [r3, #0] } if (HAL_DMA_GetState(hi2c->hdmatx) != HAL_DMA_STATE_READY) - 8003034: 687b ldr r3, [r7, #4] - 8003036: 6b9b ldr r3, [r3, #56] @ 0x38 - 8003038: 0018 movs r0, r3 - 800303a: f7fe fc03 bl 8001844 - 800303e: 0003 movs r3, r0 - 8003040: 2b01 cmp r3, #1 - 8003042: d016 beq.n 8003072 + 8002810: 687b ldr r3, [r7, #4] + 8002812: 6b9b ldr r3, [r3, #56] @ 0x38 + 8002814: 0018 movs r0, r3 + 8002816: f7ff f8b5 bl 8001984 + 800281a: 0003 movs r3, r0 + 800281c: 2b01 cmp r3, #1 + 800281e: d016 beq.n 800284e { /* Set the I2C DMA Abort callback : will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */ hi2c->hdmatx->XferAbortCallback = I2C_DMAAbort; - 8003044: 687b ldr r3, [r7, #4] - 8003046: 6b9b ldr r3, [r3, #56] @ 0x38 - 8003048: 4a36 ldr r2, [pc, #216] @ (8003124 ) - 800304a: 639a str r2, [r3, #56] @ 0x38 + 8002820: 687b ldr r3, [r7, #4] + 8002822: 6b9b ldr r3, [r3, #56] @ 0x38 + 8002824: 4a36 ldr r2, [pc, #216] @ (8002900 ) + 8002826: 639a str r2, [r3, #56] @ 0x38 /* Process Unlocked */ __HAL_UNLOCK(hi2c); - 800304c: 687b ldr r3, [r7, #4] - 800304e: 2240 movs r2, #64 @ 0x40 - 8003050: 2100 movs r1, #0 - 8003052: 5499 strb r1, [r3, r2] + 8002828: 687b ldr r3, [r7, #4] + 800282a: 2240 movs r2, #64 @ 0x40 + 800282c: 2100 movs r1, #0 + 800282e: 5499 strb r1, [r3, r2] /* Abort DMA TX */ if (HAL_DMA_Abort_IT(hi2c->hdmatx) != HAL_OK) - 8003054: 687b ldr r3, [r7, #4] - 8003056: 6b9b ldr r3, [r3, #56] @ 0x38 - 8003058: 0018 movs r0, r3 - 800305a: f7fe fb89 bl 8001770 - 800305e: 1e03 subs r3, r0, #0 - 8003060: d051 beq.n 8003106 + 8002830: 687b ldr r3, [r7, #4] + 8002832: 6b9b ldr r3, [r3, #56] @ 0x38 + 8002834: 0018 movs r0, r3 + 8002836: f7ff f83b bl 80018b0 + 800283a: 1e03 subs r3, r0, #0 + 800283c: d051 beq.n 80028e2 { /* Call Directly XferAbortCallback function in case of error */ hi2c->hdmatx->XferAbortCallback(hi2c->hdmatx); - 8003062: 687b ldr r3, [r7, #4] - 8003064: 6b9b ldr r3, [r3, #56] @ 0x38 - 8003066: 6b9a ldr r2, [r3, #56] @ 0x38 - 8003068: 687b ldr r3, [r7, #4] - 800306a: 6b9b ldr r3, [r3, #56] @ 0x38 - 800306c: 0018 movs r0, r3 - 800306e: 4790 blx r2 + 800283e: 687b ldr r3, [r7, #4] + 8002840: 6b9b ldr r3, [r3, #56] @ 0x38 + 8002842: 6b9a ldr r2, [r3, #56] @ 0x38 + 8002844: 687b ldr r3, [r7, #4] + 8002846: 6b9b ldr r3, [r3, #56] @ 0x38 + 8002848: 0018 movs r0, r3 + 800284a: 4790 blx r2 if (HAL_DMA_GetState(hi2c->hdmatx) != HAL_DMA_STATE_READY) - 8003070: e049 b.n 8003106 + 800284c: e049 b.n 80028e2 } } else { I2C_TreatErrorCallback(hi2c); - 8003072: 687b ldr r3, [r7, #4] - 8003074: 0018 movs r0, r3 - 8003076: f000 f859 bl 800312c + 800284e: 687b ldr r3, [r7, #4] + 8002850: 0018 movs r0, r3 + 8002852: f000 f859 bl 8002908 if (HAL_DMA_GetState(hi2c->hdmatx) != HAL_DMA_STATE_READY) - 800307a: e044 b.n 8003106 + 8002856: e044 b.n 80028e2 } } /* Abort DMA RX transfer if any */ else if ((hi2c->hdmarx != NULL) && ((tmppreviousstate == I2C_STATE_MASTER_BUSY_RX) || \ - 800307c: 687b ldr r3, [r7, #4] - 800307e: 6bdb ldr r3, [r3, #60] @ 0x3c - 8003080: 2b00 cmp r3, #0 - 8003082: d03b beq.n 80030fc - 8003084: 68bb ldr r3, [r7, #8] - 8003086: 2b12 cmp r3, #18 - 8003088: d002 beq.n 8003090 - 800308a: 68bb ldr r3, [r7, #8] - 800308c: 2b22 cmp r3, #34 @ 0x22 - 800308e: d135 bne.n 80030fc + 8002858: 687b ldr r3, [r7, #4] + 800285a: 6bdb ldr r3, [r3, #60] @ 0x3c + 800285c: 2b00 cmp r3, #0 + 800285e: d03b beq.n 80028d8 + 8002860: 68bb ldr r3, [r7, #8] + 8002862: 2b12 cmp r3, #18 + 8002864: d002 beq.n 800286c + 8002866: 68bb ldr r3, [r7, #8] + 8002868: 2b22 cmp r3, #34 @ 0x22 + 800286a: d135 bne.n 80028d8 (tmppreviousstate == I2C_STATE_SLAVE_BUSY_RX))) { if ((hi2c->Instance->CR1 & I2C_CR1_RXDMAEN) == I2C_CR1_RXDMAEN) - 8003090: 687b ldr r3, [r7, #4] - 8003092: 681b ldr r3, [r3, #0] - 8003094: 681a ldr r2, [r3, #0] - 8003096: 2380 movs r3, #128 @ 0x80 - 8003098: 021b lsls r3, r3, #8 - 800309a: 401a ands r2, r3 - 800309c: 2380 movs r3, #128 @ 0x80 - 800309e: 021b lsls r3, r3, #8 - 80030a0: 429a cmp r2, r3 - 80030a2: d107 bne.n 80030b4 + 800286c: 687b ldr r3, [r7, #4] + 800286e: 681b ldr r3, [r3, #0] + 8002870: 681a ldr r2, [r3, #0] + 8002872: 2380 movs r3, #128 @ 0x80 + 8002874: 021b lsls r3, r3, #8 + 8002876: 401a ands r2, r3 + 8002878: 2380 movs r3, #128 @ 0x80 + 800287a: 021b lsls r3, r3, #8 + 800287c: 429a cmp r2, r3 + 800287e: d107 bne.n 8002890 { hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; - 80030a4: 687b ldr r3, [r7, #4] - 80030a6: 681b ldr r3, [r3, #0] - 80030a8: 681a ldr r2, [r3, #0] - 80030aa: 687b ldr r3, [r7, #4] - 80030ac: 681b ldr r3, [r3, #0] - 80030ae: 491e ldr r1, [pc, #120] @ (8003128 ) - 80030b0: 400a ands r2, r1 - 80030b2: 601a str r2, [r3, #0] + 8002880: 687b ldr r3, [r7, #4] + 8002882: 681b ldr r3, [r3, #0] + 8002884: 681a ldr r2, [r3, #0] + 8002886: 687b ldr r3, [r7, #4] + 8002888: 681b ldr r3, [r3, #0] + 800288a: 491e ldr r1, [pc, #120] @ (8002904 ) + 800288c: 400a ands r2, r1 + 800288e: 601a str r2, [r3, #0] } if (HAL_DMA_GetState(hi2c->hdmarx) != HAL_DMA_STATE_READY) - 80030b4: 687b ldr r3, [r7, #4] - 80030b6: 6bdb ldr r3, [r3, #60] @ 0x3c - 80030b8: 0018 movs r0, r3 - 80030ba: f7fe fbc3 bl 8001844 - 80030be: 0003 movs r3, r0 - 80030c0: 2b01 cmp r3, #1 - 80030c2: d016 beq.n 80030f2 + 8002890: 687b ldr r3, [r7, #4] + 8002892: 6bdb ldr r3, [r3, #60] @ 0x3c + 8002894: 0018 movs r0, r3 + 8002896: f7ff f875 bl 8001984 + 800289a: 0003 movs r3, r0 + 800289c: 2b01 cmp r3, #1 + 800289e: d016 beq.n 80028ce { /* Set the I2C DMA Abort callback : will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */ hi2c->hdmarx->XferAbortCallback = I2C_DMAAbort; - 80030c4: 687b ldr r3, [r7, #4] - 80030c6: 6bdb ldr r3, [r3, #60] @ 0x3c - 80030c8: 4a16 ldr r2, [pc, #88] @ (8003124 ) - 80030ca: 639a str r2, [r3, #56] @ 0x38 + 80028a0: 687b ldr r3, [r7, #4] + 80028a2: 6bdb ldr r3, [r3, #60] @ 0x3c + 80028a4: 4a16 ldr r2, [pc, #88] @ (8002900 ) + 80028a6: 639a str r2, [r3, #56] @ 0x38 /* Process Unlocked */ __HAL_UNLOCK(hi2c); - 80030cc: 687b ldr r3, [r7, #4] - 80030ce: 2240 movs r2, #64 @ 0x40 - 80030d0: 2100 movs r1, #0 - 80030d2: 5499 strb r1, [r3, r2] + 80028a8: 687b ldr r3, [r7, #4] + 80028aa: 2240 movs r2, #64 @ 0x40 + 80028ac: 2100 movs r1, #0 + 80028ae: 5499 strb r1, [r3, r2] /* Abort DMA RX */ if (HAL_DMA_Abort_IT(hi2c->hdmarx) != HAL_OK) - 80030d4: 687b ldr r3, [r7, #4] - 80030d6: 6bdb ldr r3, [r3, #60] @ 0x3c - 80030d8: 0018 movs r0, r3 - 80030da: f7fe fb49 bl 8001770 - 80030de: 1e03 subs r3, r0, #0 - 80030e0: d013 beq.n 800310a + 80028b0: 687b ldr r3, [r7, #4] + 80028b2: 6bdb ldr r3, [r3, #60] @ 0x3c + 80028b4: 0018 movs r0, r3 + 80028b6: f7fe fffb bl 80018b0 + 80028ba: 1e03 subs r3, r0, #0 + 80028bc: d013 beq.n 80028e6 { /* Call Directly hi2c->hdmarx->XferAbortCallback function in case of error */ hi2c->hdmarx->XferAbortCallback(hi2c->hdmarx); - 80030e2: 687b ldr r3, [r7, #4] - 80030e4: 6bdb ldr r3, [r3, #60] @ 0x3c - 80030e6: 6b9a ldr r2, [r3, #56] @ 0x38 - 80030e8: 687b ldr r3, [r7, #4] - 80030ea: 6bdb ldr r3, [r3, #60] @ 0x3c - 80030ec: 0018 movs r0, r3 - 80030ee: 4790 blx r2 + 80028be: 687b ldr r3, [r7, #4] + 80028c0: 6bdb ldr r3, [r3, #60] @ 0x3c + 80028c2: 6b9a ldr r2, [r3, #56] @ 0x38 + 80028c4: 687b ldr r3, [r7, #4] + 80028c6: 6bdb ldr r3, [r3, #60] @ 0x3c + 80028c8: 0018 movs r0, r3 + 80028ca: 4790 blx r2 if (HAL_DMA_GetState(hi2c->hdmarx) != HAL_DMA_STATE_READY) - 80030f0: e00b b.n 800310a + 80028cc: e00b b.n 80028e6 } } else { I2C_TreatErrorCallback(hi2c); - 80030f2: 687b ldr r3, [r7, #4] - 80030f4: 0018 movs r0, r3 - 80030f6: f000 f819 bl 800312c + 80028ce: 687b ldr r3, [r7, #4] + 80028d0: 0018 movs r0, r3 + 80028d2: f000 f819 bl 8002908 if (HAL_DMA_GetState(hi2c->hdmarx) != HAL_DMA_STATE_READY) - 80030fa: e006 b.n 800310a + 80028d6: e006 b.n 80028e6 } } else { I2C_TreatErrorCallback(hi2c); - 80030fc: 687b ldr r3, [r7, #4] - 80030fe: 0018 movs r0, r3 - 8003100: f000 f814 bl 800312c + 80028d8: 687b ldr r3, [r7, #4] + 80028da: 0018 movs r0, r3 + 80028dc: f000 f814 bl 8002908 } } - 8003104: e002 b.n 800310c + 80028e0: e002 b.n 80028e8 if (HAL_DMA_GetState(hi2c->hdmatx) != HAL_DMA_STATE_READY) - 8003106: 46c0 nop @ (mov r8, r8) - 8003108: e000 b.n 800310c + 80028e2: 46c0 nop @ (mov r8, r8) + 80028e4: e000 b.n 80028e8 if (HAL_DMA_GetState(hi2c->hdmarx) != HAL_DMA_STATE_READY) - 800310a: 46c0 nop @ (mov r8, r8) + 80028e6: 46c0 nop @ (mov r8, r8) } - 800310c: 46c0 nop @ (mov r8, r8) - 800310e: 46bd mov sp, r7 - 8003110: b004 add sp, #16 - 8003112: bd80 pop {r7, pc} - 8003114: ffff0000 .word 0xffff0000 - 8003118: 08001f19 .word 0x08001f19 - 800311c: 00008003 .word 0x00008003 - 8003120: ffffbfff .word 0xffffbfff - 8003124: 080031c3 .word 0x080031c3 - 8003128: ffff7fff .word 0xffff7fff + 80028e8: 46c0 nop @ (mov r8, r8) + 80028ea: 46bd mov sp, r7 + 80028ec: b004 add sp, #16 + 80028ee: bd80 pop {r7, pc} + 80028f0: ffff0000 .word 0xffff0000 + 80028f4: 08001f35 .word 0x08001f35 + 80028f8: 00008003 .word 0x00008003 + 80028fc: ffffbfff .word 0xffffbfff + 8002900: 0800299f .word 0x0800299f + 8002904: ffff7fff .word 0xffff7fff -0800312c : +08002908 : * @brief I2C Error callback treatment. * @param hi2c I2C handle. * @retval None */ static void I2C_TreatErrorCallback(I2C_HandleTypeDef *hi2c) { - 800312c: b580 push {r7, lr} - 800312e: b082 sub sp, #8 - 8003130: af00 add r7, sp, #0 - 8003132: 6078 str r0, [r7, #4] + 8002908: b580 push {r7, lr} + 800290a: b082 sub sp, #8 + 800290c: af00 add r7, sp, #0 + 800290e: 6078 str r0, [r7, #4] if (hi2c->State == HAL_I2C_STATE_ABORT) - 8003134: 687b ldr r3, [r7, #4] - 8003136: 2241 movs r2, #65 @ 0x41 - 8003138: 5c9b ldrb r3, [r3, r2] - 800313a: b2db uxtb r3, r3 - 800313c: 2b60 cmp r3, #96 @ 0x60 - 800313e: d10f bne.n 8003160 + 8002910: 687b ldr r3, [r7, #4] + 8002912: 2241 movs r2, #65 @ 0x41 + 8002914: 5c9b ldrb r3, [r3, r2] + 8002916: b2db uxtb r3, r3 + 8002918: 2b60 cmp r3, #96 @ 0x60 + 800291a: d10f bne.n 800293c { hi2c->State = HAL_I2C_STATE_READY; - 8003140: 687b ldr r3, [r7, #4] - 8003142: 2241 movs r2, #65 @ 0x41 - 8003144: 2120 movs r1, #32 - 8003146: 5499 strb r1, [r3, r2] + 800291c: 687b ldr r3, [r7, #4] + 800291e: 2241 movs r2, #65 @ 0x41 + 8002920: 2120 movs r1, #32 + 8002922: 5499 strb r1, [r3, r2] hi2c->PreviousState = I2C_STATE_NONE; - 8003148: 687b ldr r3, [r7, #4] - 800314a: 2200 movs r2, #0 - 800314c: 631a str r2, [r3, #48] @ 0x30 + 8002924: 687b ldr r3, [r7, #4] + 8002926: 2200 movs r2, #0 + 8002928: 631a str r2, [r3, #48] @ 0x30 /* Process Unlocked */ __HAL_UNLOCK(hi2c); - 800314e: 687b ldr r3, [r7, #4] - 8003150: 2240 movs r2, #64 @ 0x40 - 8003152: 2100 movs r1, #0 - 8003154: 5499 strb r1, [r3, r2] + 800292a: 687b ldr r3, [r7, #4] + 800292c: 2240 movs r2, #64 @ 0x40 + 800292e: 2100 movs r1, #0 + 8002930: 5499 strb r1, [r3, r2] /* Call the corresponding callback to inform upper layer of End of Transfer */ #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) hi2c->AbortCpltCallback(hi2c); #else HAL_I2C_AbortCpltCallback(hi2c); - 8003156: 687b ldr r3, [r7, #4] - 8003158: 0018 movs r0, r3 - 800315a: f7fe fed4 bl 8001f06 + 8002932: 687b ldr r3, [r7, #4] + 8002934: 0018 movs r0, r3 + 8002936: f7ff faf4 bl 8001f22 hi2c->ErrorCallback(hi2c); #else HAL_I2C_ErrorCallback(hi2c); #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ } } - 800315e: e00a b.n 8003176 + 800293a: e00a b.n 8002952 hi2c->PreviousState = I2C_STATE_NONE; - 8003160: 687b ldr r3, [r7, #4] - 8003162: 2200 movs r2, #0 - 8003164: 631a str r2, [r3, #48] @ 0x30 + 800293c: 687b ldr r3, [r7, #4] + 800293e: 2200 movs r2, #0 + 8002940: 631a str r2, [r3, #48] @ 0x30 __HAL_UNLOCK(hi2c); - 8003166: 687b ldr r3, [r7, #4] - 8003168: 2240 movs r2, #64 @ 0x40 - 800316a: 2100 movs r1, #0 - 800316c: 5499 strb r1, [r3, r2] + 8002942: 687b ldr r3, [r7, #4] + 8002944: 2240 movs r2, #64 @ 0x40 + 8002946: 2100 movs r1, #0 + 8002948: 5499 strb r1, [r3, r2] HAL_I2C_ErrorCallback(hi2c); - 800316e: 687b ldr r3, [r7, #4] - 8003170: 0018 movs r0, r3 - 8003172: f7fe fec0 bl 8001ef6 + 800294a: 687b ldr r3, [r7, #4] + 800294c: 0018 movs r0, r3 + 800294e: f7ff fae0 bl 8001f12 } - 8003176: 46c0 nop @ (mov r8, r8) - 8003178: 46bd mov sp, r7 - 800317a: b002 add sp, #8 - 800317c: bd80 pop {r7, pc} + 8002952: 46c0 nop @ (mov r8, r8) + 8002954: 46bd mov sp, r7 + 8002956: b002 add sp, #8 + 8002958: bd80 pop {r7, pc} -0800317e : +0800295a : * @brief I2C Tx data register flush process. * @param hi2c I2C handle. * @retval None */ static void I2C_Flush_TXDR(I2C_HandleTypeDef *hi2c) { - 800317e: b580 push {r7, lr} - 8003180: b082 sub sp, #8 - 8003182: af00 add r7, sp, #0 - 8003184: 6078 str r0, [r7, #4] + 800295a: b580 push {r7, lr} + 800295c: b082 sub sp, #8 + 800295e: af00 add r7, sp, #0 + 8002960: 6078 str r0, [r7, #4] /* If a pending TXIS flag is set */ /* Write a dummy data in TXDR to clear it */ if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXIS) != RESET) - 8003186: 687b ldr r3, [r7, #4] - 8003188: 681b ldr r3, [r3, #0] - 800318a: 699b ldr r3, [r3, #24] - 800318c: 2202 movs r2, #2 - 800318e: 4013 ands r3, r2 - 8003190: 2b02 cmp r3, #2 - 8003192: d103 bne.n 800319c + 8002962: 687b ldr r3, [r7, #4] + 8002964: 681b ldr r3, [r3, #0] + 8002966: 699b ldr r3, [r3, #24] + 8002968: 2202 movs r2, #2 + 800296a: 4013 ands r3, r2 + 800296c: 2b02 cmp r3, #2 + 800296e: d103 bne.n 8002978 { hi2c->Instance->TXDR = 0x00U; - 8003194: 687b ldr r3, [r7, #4] - 8003196: 681b ldr r3, [r3, #0] - 8003198: 2200 movs r2, #0 - 800319a: 629a str r2, [r3, #40] @ 0x28 + 8002970: 687b ldr r3, [r7, #4] + 8002972: 681b ldr r3, [r3, #0] + 8002974: 2200 movs r2, #0 + 8002976: 629a str r2, [r3, #40] @ 0x28 } /* Flush TX register if not empty */ if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXE) == RESET) - 800319c: 687b ldr r3, [r7, #4] - 800319e: 681b ldr r3, [r3, #0] - 80031a0: 699b ldr r3, [r3, #24] - 80031a2: 2201 movs r2, #1 - 80031a4: 4013 ands r3, r2 - 80031a6: 2b01 cmp r3, #1 - 80031a8: d007 beq.n 80031ba + 8002978: 687b ldr r3, [r7, #4] + 800297a: 681b ldr r3, [r3, #0] + 800297c: 699b ldr r3, [r3, #24] + 800297e: 2201 movs r2, #1 + 8002980: 4013 ands r3, r2 + 8002982: 2b01 cmp r3, #1 + 8002984: d007 beq.n 8002996 { __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_TXE); - 80031aa: 687b ldr r3, [r7, #4] - 80031ac: 681b ldr r3, [r3, #0] - 80031ae: 699a ldr r2, [r3, #24] - 80031b0: 687b ldr r3, [r7, #4] - 80031b2: 681b ldr r3, [r3, #0] - 80031b4: 2101 movs r1, #1 - 80031b6: 430a orrs r2, r1 - 80031b8: 619a str r2, [r3, #24] + 8002986: 687b ldr r3, [r7, #4] + 8002988: 681b ldr r3, [r3, #0] + 800298a: 699a ldr r2, [r3, #24] + 800298c: 687b ldr r3, [r7, #4] + 800298e: 681b ldr r3, [r3, #0] + 8002990: 2101 movs r1, #1 + 8002992: 430a orrs r2, r1 + 8002994: 619a str r2, [r3, #24] } } - 80031ba: 46c0 nop @ (mov r8, r8) - 80031bc: 46bd mov sp, r7 - 80031be: b002 add sp, #8 - 80031c0: bd80 pop {r7, pc} + 8002996: 46c0 nop @ (mov r8, r8) + 8002998: 46bd mov sp, r7 + 800299a: b002 add sp, #8 + 800299c: bd80 pop {r7, pc} -080031c2 : +0800299e : * (To be called at end of DMA Abort procedure). * @param hdma DMA handle. * @retval None */ static void I2C_DMAAbort(DMA_HandleTypeDef *hdma) { - 80031c2: b580 push {r7, lr} - 80031c4: b084 sub sp, #16 - 80031c6: af00 add r7, sp, #0 - 80031c8: 6078 str r0, [r7, #4] + 800299e: b580 push {r7, lr} + 80029a0: b084 sub sp, #16 + 80029a2: af00 add r7, sp, #0 + 80029a4: 6078 str r0, [r7, #4] /* Derogation MISRAC2012-Rule-11.5 */ I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); - 80031ca: 687b ldr r3, [r7, #4] - 80031cc: 6a9b ldr r3, [r3, #40] @ 0x28 - 80031ce: 60fb str r3, [r7, #12] + 80029a6: 687b ldr r3, [r7, #4] + 80029a8: 6a9b ldr r3, [r3, #40] @ 0x28 + 80029aa: 60fb str r3, [r7, #12] /* Reset AbortCpltCallback */ if (hi2c->hdmatx != NULL) - 80031d0: 68fb ldr r3, [r7, #12] - 80031d2: 6b9b ldr r3, [r3, #56] @ 0x38 - 80031d4: 2b00 cmp r3, #0 - 80031d6: d003 beq.n 80031e0 + 80029ac: 68fb ldr r3, [r7, #12] + 80029ae: 6b9b ldr r3, [r3, #56] @ 0x38 + 80029b0: 2b00 cmp r3, #0 + 80029b2: d003 beq.n 80029bc { hi2c->hdmatx->XferAbortCallback = NULL; - 80031d8: 68fb ldr r3, [r7, #12] - 80031da: 6b9b ldr r3, [r3, #56] @ 0x38 - 80031dc: 2200 movs r2, #0 - 80031de: 639a str r2, [r3, #56] @ 0x38 + 80029b4: 68fb ldr r3, [r7, #12] + 80029b6: 6b9b ldr r3, [r3, #56] @ 0x38 + 80029b8: 2200 movs r2, #0 + 80029ba: 639a str r2, [r3, #56] @ 0x38 } if (hi2c->hdmarx != NULL) - 80031e0: 68fb ldr r3, [r7, #12] - 80031e2: 6bdb ldr r3, [r3, #60] @ 0x3c - 80031e4: 2b00 cmp r3, #0 - 80031e6: d003 beq.n 80031f0 + 80029bc: 68fb ldr r3, [r7, #12] + 80029be: 6bdb ldr r3, [r3, #60] @ 0x3c + 80029c0: 2b00 cmp r3, #0 + 80029c2: d003 beq.n 80029cc { hi2c->hdmarx->XferAbortCallback = NULL; - 80031e8: 68fb ldr r3, [r7, #12] - 80031ea: 6bdb ldr r3, [r3, #60] @ 0x3c - 80031ec: 2200 movs r2, #0 - 80031ee: 639a str r2, [r3, #56] @ 0x38 + 80029c4: 68fb ldr r3, [r7, #12] + 80029c6: 6bdb ldr r3, [r3, #60] @ 0x3c + 80029c8: 2200 movs r2, #0 + 80029ca: 639a str r2, [r3, #56] @ 0x38 } I2C_TreatErrorCallback(hi2c); - 80031f0: 68fb ldr r3, [r7, #12] - 80031f2: 0018 movs r0, r3 - 80031f4: f7ff ff9a bl 800312c + 80029cc: 68fb ldr r3, [r7, #12] + 80029ce: 0018 movs r0, r3 + 80029d0: f7ff ff9a bl 8002908 } - 80031f8: 46c0 nop @ (mov r8, r8) - 80031fa: 46bd mov sp, r7 - 80031fc: b004 add sp, #16 - 80031fe: bd80 pop {r7, pc} + 80029d4: 46c0 nop @ (mov r8, r8) + 80029d6: 46bd mov sp, r7 + 80029d8: b004 add sp, #16 + 80029da: bd80 pop {r7, pc} -08003200 : - * @arg @ref I2C_GENERATE_START_WRITE Generate Restart for write request. - * @retval None - */ -static void I2C_TransferConfig(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t Size, uint32_t Mode, - uint32_t Request) -{ - 8003200: b590 push {r4, r7, lr} - 8003202: b087 sub sp, #28 - 8003204: af00 add r7, sp, #0 - 8003206: 60f8 str r0, [r7, #12] - 8003208: 0008 movs r0, r1 - 800320a: 0011 movs r1, r2 - 800320c: 607b str r3, [r7, #4] - 800320e: 240a movs r4, #10 - 8003210: 193b adds r3, r7, r4 - 8003212: 1c02 adds r2, r0, #0 - 8003214: 801a strh r2, [r3, #0] - 8003216: 2009 movs r0, #9 - 8003218: 183b adds r3, r7, r0 - 800321a: 1c0a adds r2, r1, #0 - 800321c: 701a strb r2, [r3, #0] - assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance)); - assert_param(IS_TRANSFER_MODE(Mode)); - assert_param(IS_TRANSFER_REQUEST(Request)); - - /* Declaration of tmp to prevent undefined behavior of volatile usage */ - uint32_t tmp = ((uint32_t)(((uint32_t)DevAddress & I2C_CR2_SADD) | \ - 800321e: 193b adds r3, r7, r4 - 8003220: 881b ldrh r3, [r3, #0] - 8003222: 059b lsls r3, r3, #22 - 8003224: 0d9a lsrs r2, r3, #22 - (((uint32_t)Size << I2C_CR2_NBYTES_Pos) & I2C_CR2_NBYTES) | \ - 8003226: 183b adds r3, r7, r0 - 8003228: 781b ldrb r3, [r3, #0] - 800322a: 0419 lsls r1, r3, #16 - 800322c: 23ff movs r3, #255 @ 0xff - 800322e: 041b lsls r3, r3, #16 - 8003230: 400b ands r3, r1 - uint32_t tmp = ((uint32_t)(((uint32_t)DevAddress & I2C_CR2_SADD) | \ - 8003232: 431a orrs r2, r3 - (((uint32_t)Size << I2C_CR2_NBYTES_Pos) & I2C_CR2_NBYTES) | \ - 8003234: 687b ldr r3, [r7, #4] - 8003236: 431a orrs r2, r3 - uint32_t tmp = ((uint32_t)(((uint32_t)DevAddress & I2C_CR2_SADD) | \ - 8003238: 6abb ldr r3, [r7, #40] @ 0x28 - 800323a: 4313 orrs r3, r2 - 800323c: 005b lsls r3, r3, #1 - 800323e: 085b lsrs r3, r3, #1 - 8003240: 617b str r3, [r7, #20] - (uint32_t)Mode | (uint32_t)Request) & (~0x80000000U)); - - /* update CR2 register */ - MODIFY_REG(hi2c->Instance->CR2, \ - 8003242: 68fb ldr r3, [r7, #12] - 8003244: 681b ldr r3, [r3, #0] - 8003246: 685b ldr r3, [r3, #4] - 8003248: 6aba ldr r2, [r7, #40] @ 0x28 - 800324a: 0d51 lsrs r1, r2, #21 - 800324c: 2280 movs r2, #128 @ 0x80 - 800324e: 00d2 lsls r2, r2, #3 - 8003250: 400a ands r2, r1 - 8003252: 4907 ldr r1, [pc, #28] @ (8003270 ) - 8003254: 430a orrs r2, r1 - 8003256: 43d2 mvns r2, r2 - 8003258: 401a ands r2, r3 - 800325a: 0011 movs r1, r2 - 800325c: 68fb ldr r3, [r7, #12] - 800325e: 681b ldr r3, [r3, #0] - 8003260: 697a ldr r2, [r7, #20] - 8003262: 430a orrs r2, r1 - 8003264: 605a str r2, [r3, #4] - ((I2C_CR2_SADD | I2C_CR2_NBYTES | I2C_CR2_RELOAD | I2C_CR2_AUTOEND | \ - (I2C_CR2_RD_WRN & (uint32_t)(Request >> (31U - I2C_CR2_RD_WRN_Pos))) | \ - I2C_CR2_START | I2C_CR2_STOP)), tmp); -} - 8003266: 46c0 nop @ (mov r8, r8) - 8003268: 46bd mov sp, r7 - 800326a: b007 add sp, #28 - 800326c: bd90 pop {r4, r7, pc} - 800326e: 46c0 nop @ (mov r8, r8) - 8003270: 03ff63ff .word 0x03ff63ff - -08003274 : - * the configuration information for the specified I2C. - * @param InterruptRequest Value of @ref I2C_Interrupt_configuration_definition. - * @retval None - */ -static void I2C_Enable_IRQ(I2C_HandleTypeDef *hi2c, uint16_t InterruptRequest) -{ - 8003274: b580 push {r7, lr} - 8003276: b084 sub sp, #16 - 8003278: af00 add r7, sp, #0 - 800327a: 6078 str r0, [r7, #4] - 800327c: 000a movs r2, r1 - 800327e: 1cbb adds r3, r7, #2 - 8003280: 801a strh r2, [r3, #0] - uint32_t tmpisr = 0U; - 8003282: 2300 movs r3, #0 - 8003284: 60fb str r3, [r7, #12] - - if ((hi2c->XferISR != I2C_Master_ISR_DMA) && \ - 8003286: 687b ldr r3, [r7, #4] - 8003288: 6b5a ldr r2, [r3, #52] @ 0x34 - 800328a: 4b3c ldr r3, [pc, #240] @ (800337c ) - 800328c: 429a cmp r2, r3 - 800328e: d035 beq.n 80032fc - (hi2c->XferISR != I2C_Slave_ISR_DMA) && \ - 8003290: 687b ldr r3, [r7, #4] - 8003292: 6b5a ldr r2, [r3, #52] @ 0x34 - if ((hi2c->XferISR != I2C_Master_ISR_DMA) && \ - 8003294: 4b3a ldr r3, [pc, #232] @ (8003380 ) - 8003296: 429a cmp r2, r3 - 8003298: d030 beq.n 80032fc - (hi2c->XferISR != I2C_Mem_ISR_DMA)) - 800329a: 687b ldr r3, [r7, #4] - 800329c: 6b5a ldr r2, [r3, #52] @ 0x34 - (hi2c->XferISR != I2C_Slave_ISR_DMA) && \ - 800329e: 4b39 ldr r3, [pc, #228] @ (8003384 ) - 80032a0: 429a cmp r2, r3 - 80032a2: d02b beq.n 80032fc - { - if ((InterruptRequest & I2C_XFER_LISTEN_IT) == I2C_XFER_LISTEN_IT) - 80032a4: 1cbb adds r3, r7, #2 - 80032a6: 2200 movs r2, #0 - 80032a8: 5e9b ldrsh r3, [r3, r2] - 80032aa: 2b00 cmp r3, #0 - 80032ac: da03 bge.n 80032b6 - { - /* Enable ERR, STOP, NACK and ADDR interrupts */ - tmpisr |= I2C_IT_ADDRI | I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_ERRI; - 80032ae: 68fb ldr r3, [r7, #12] - 80032b0: 22b8 movs r2, #184 @ 0xb8 - 80032b2: 4313 orrs r3, r2 - 80032b4: 60fb str r3, [r7, #12] - } - - if ((InterruptRequest & I2C_XFER_TX_IT) == I2C_XFER_TX_IT) - 80032b6: 1cbb adds r3, r7, #2 - 80032b8: 881b ldrh r3, [r3, #0] - 80032ba: 2201 movs r2, #1 - 80032bc: 4013 ands r3, r2 - 80032be: d003 beq.n 80032c8 - { - /* Enable ERR, TC, STOP, NACK and TXI interrupts */ - tmpisr |= I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_TXI; - 80032c0: 68fb ldr r3, [r7, #12] - 80032c2: 22f2 movs r2, #242 @ 0xf2 - 80032c4: 4313 orrs r3, r2 - 80032c6: 60fb str r3, [r7, #12] - } - - if ((InterruptRequest & I2C_XFER_RX_IT) == I2C_XFER_RX_IT) - 80032c8: 1cbb adds r3, r7, #2 - 80032ca: 881b ldrh r3, [r3, #0] - 80032cc: 2202 movs r2, #2 - 80032ce: 4013 ands r3, r2 - 80032d0: d003 beq.n 80032da - { - /* Enable ERR, TC, STOP, NACK and RXI interrupts */ - tmpisr |= I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_RXI; - 80032d2: 68fb ldr r3, [r7, #12] - 80032d4: 22f4 movs r2, #244 @ 0xf4 - 80032d6: 4313 orrs r3, r2 - 80032d8: 60fb str r3, [r7, #12] - } - - if (InterruptRequest == I2C_XFER_ERROR_IT) - 80032da: 1cbb adds r3, r7, #2 - 80032dc: 881b ldrh r3, [r3, #0] - 80032de: 2b10 cmp r3, #16 - 80032e0: d103 bne.n 80032ea - { - /* Enable ERR and NACK interrupts */ - tmpisr |= I2C_IT_ERRI | I2C_IT_NACKI; - 80032e2: 68fb ldr r3, [r7, #12] - 80032e4: 2290 movs r2, #144 @ 0x90 - 80032e6: 4313 orrs r3, r2 - 80032e8: 60fb str r3, [r7, #12] - } - - if (InterruptRequest == I2C_XFER_CPLT_IT) - 80032ea: 1cbb adds r3, r7, #2 - 80032ec: 881b ldrh r3, [r3, #0] - 80032ee: 2b20 cmp r3, #32 - 80032f0: d137 bne.n 8003362 - { - /* Enable STOP interrupts */ - tmpisr |= I2C_IT_STOPI; - 80032f2: 68fb ldr r3, [r7, #12] - 80032f4: 2220 movs r2, #32 - 80032f6: 4313 orrs r3, r2 - 80032f8: 60fb str r3, [r7, #12] - if (InterruptRequest == I2C_XFER_CPLT_IT) - 80032fa: e032 b.n 8003362 - } - } - - else - { - if ((InterruptRequest & I2C_XFER_LISTEN_IT) == I2C_XFER_LISTEN_IT) - 80032fc: 1cbb adds r3, r7, #2 - 80032fe: 2200 movs r2, #0 - 8003300: 5e9b ldrsh r3, [r3, r2] - 8003302: 2b00 cmp r3, #0 - 8003304: da03 bge.n 800330e - { - /* Enable ERR, STOP, NACK and ADDR interrupts */ - tmpisr |= I2C_IT_ADDRI | I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_ERRI; - 8003306: 68fb ldr r3, [r7, #12] - 8003308: 22b8 movs r2, #184 @ 0xb8 - 800330a: 4313 orrs r3, r2 - 800330c: 60fb str r3, [r7, #12] - } - - if ((InterruptRequest & I2C_XFER_TX_IT) == I2C_XFER_TX_IT) - 800330e: 1cbb adds r3, r7, #2 - 8003310: 881b ldrh r3, [r3, #0] - 8003312: 2201 movs r2, #1 - 8003314: 4013 ands r3, r2 - 8003316: d003 beq.n 8003320 - { - /* Enable ERR, TC, STOP, NACK and TXI interrupts */ - tmpisr |= I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_TXI; - 8003318: 68fb ldr r3, [r7, #12] - 800331a: 22f2 movs r2, #242 @ 0xf2 - 800331c: 4313 orrs r3, r2 - 800331e: 60fb str r3, [r7, #12] - } - - if ((InterruptRequest & I2C_XFER_RX_IT) == I2C_XFER_RX_IT) - 8003320: 1cbb adds r3, r7, #2 - 8003322: 881b ldrh r3, [r3, #0] - 8003324: 2202 movs r2, #2 - 8003326: 4013 ands r3, r2 - 8003328: d003 beq.n 8003332 - { - /* Enable ERR, TC, STOP, NACK and RXI interrupts */ - tmpisr |= I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_RXI; - 800332a: 68fb ldr r3, [r7, #12] - 800332c: 22f4 movs r2, #244 @ 0xf4 - 800332e: 4313 orrs r3, r2 - 8003330: 60fb str r3, [r7, #12] - } - - if (InterruptRequest == I2C_XFER_ERROR_IT) - 8003332: 1cbb adds r3, r7, #2 - 8003334: 881b ldrh r3, [r3, #0] - 8003336: 2b10 cmp r3, #16 - 8003338: d103 bne.n 8003342 - { - /* Enable ERR and NACK interrupts */ - tmpisr |= I2C_IT_ERRI | I2C_IT_NACKI; - 800333a: 68fb ldr r3, [r7, #12] - 800333c: 2290 movs r2, #144 @ 0x90 - 800333e: 4313 orrs r3, r2 - 8003340: 60fb str r3, [r7, #12] - } - - if (InterruptRequest == I2C_XFER_CPLT_IT) - 8003342: 1cbb adds r3, r7, #2 - 8003344: 881b ldrh r3, [r3, #0] - 8003346: 2b20 cmp r3, #32 - 8003348: d103 bne.n 8003352 - { - /* Enable STOP interrupts */ - tmpisr |= (I2C_IT_STOPI | I2C_IT_TCI); - 800334a: 68fb ldr r3, [r7, #12] - 800334c: 2260 movs r2, #96 @ 0x60 - 800334e: 4313 orrs r3, r2 - 8003350: 60fb str r3, [r7, #12] - } - - if (InterruptRequest == I2C_XFER_RELOAD_IT) - 8003352: 1cbb adds r3, r7, #2 - 8003354: 881b ldrh r3, [r3, #0] - 8003356: 2b40 cmp r3, #64 @ 0x40 - 8003358: d103 bne.n 8003362 - { - /* Enable TC interrupts */ - tmpisr |= I2C_IT_TCI; - 800335a: 68fb ldr r3, [r7, #12] - 800335c: 2240 movs r2, #64 @ 0x40 - 800335e: 4313 orrs r3, r2 - 8003360: 60fb str r3, [r7, #12] - } - - /* Enable interrupts only at the end */ - /* to avoid the risk of I2C interrupt handle execution before */ - /* all interrupts requested done */ - __HAL_I2C_ENABLE_IT(hi2c, tmpisr); - 8003362: 687b ldr r3, [r7, #4] - 8003364: 681b ldr r3, [r3, #0] - 8003366: 6819 ldr r1, [r3, #0] - 8003368: 687b ldr r3, [r7, #4] - 800336a: 681b ldr r3, [r3, #0] - 800336c: 68fa ldr r2, [r7, #12] - 800336e: 430a orrs r2, r1 - 8003370: 601a str r2, [r3, #0] -} - 8003372: 46c0 nop @ (mov r8, r8) - 8003374: 46bd mov sp, r7 - 8003376: b004 add sp, #16 - 8003378: bd80 pop {r7, pc} - 800337a: 46c0 nop @ (mov r8, r8) - 800337c: 08002119 .word 0x08002119 - 8003380: 08002569 .word 0x08002569 - 8003384: 08002311 .word 0x08002311 - -08003388 : +080029dc : * the configuration information for the specified I2C. * @param InterruptRequest Value of @ref I2C_Interrupt_configuration_definition. * @retval None */ static void I2C_Disable_IRQ(I2C_HandleTypeDef *hi2c, uint16_t InterruptRequest) { - 8003388: b580 push {r7, lr} - 800338a: b084 sub sp, #16 - 800338c: af00 add r7, sp, #0 - 800338e: 6078 str r0, [r7, #4] - 8003390: 000a movs r2, r1 - 8003392: 1cbb adds r3, r7, #2 - 8003394: 801a strh r2, [r3, #0] + 80029dc: b580 push {r7, lr} + 80029de: b084 sub sp, #16 + 80029e0: af00 add r7, sp, #0 + 80029e2: 6078 str r0, [r7, #4] + 80029e4: 000a movs r2, r1 + 80029e6: 1cbb adds r3, r7, #2 + 80029e8: 801a strh r2, [r3, #0] uint32_t tmpisr = 0U; - 8003396: 2300 movs r3, #0 - 8003398: 60fb str r3, [r7, #12] + 80029ea: 2300 movs r3, #0 + 80029ec: 60fb str r3, [r7, #12] if ((InterruptRequest & I2C_XFER_TX_IT) == I2C_XFER_TX_IT) - 800339a: 1cbb adds r3, r7, #2 - 800339c: 881b ldrh r3, [r3, #0] - 800339e: 2201 movs r2, #1 - 80033a0: 4013 ands r3, r2 - 80033a2: d010 beq.n 80033c6 + 80029ee: 1cbb adds r3, r7, #2 + 80029f0: 881b ldrh r3, [r3, #0] + 80029f2: 2201 movs r2, #1 + 80029f4: 4013 ands r3, r2 + 80029f6: d010 beq.n 8002a1a { /* Disable TC and TXI interrupts */ tmpisr |= I2C_IT_TCI | I2C_IT_TXI; - 80033a4: 68fb ldr r3, [r7, #12] - 80033a6: 2242 movs r2, #66 @ 0x42 - 80033a8: 4313 orrs r3, r2 - 80033aa: 60fb str r3, [r7, #12] + 80029f8: 68fb ldr r3, [r7, #12] + 80029fa: 2242 movs r2, #66 @ 0x42 + 80029fc: 4313 orrs r3, r2 + 80029fe: 60fb str r3, [r7, #12] if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) != (uint32_t)HAL_I2C_STATE_LISTEN) - 80033ac: 687b ldr r3, [r7, #4] - 80033ae: 2241 movs r2, #65 @ 0x41 - 80033b0: 5c9b ldrb r3, [r3, r2] - 80033b2: b2db uxtb r3, r3 - 80033b4: 001a movs r2, r3 - 80033b6: 2328 movs r3, #40 @ 0x28 - 80033b8: 4013 ands r3, r2 - 80033ba: 2b28 cmp r3, #40 @ 0x28 - 80033bc: d003 beq.n 80033c6 + 8002a00: 687b ldr r3, [r7, #4] + 8002a02: 2241 movs r2, #65 @ 0x41 + 8002a04: 5c9b ldrb r3, [r3, r2] + 8002a06: b2db uxtb r3, r3 + 8002a08: 001a movs r2, r3 + 8002a0a: 2328 movs r3, #40 @ 0x28 + 8002a0c: 4013 ands r3, r2 + 8002a0e: 2b28 cmp r3, #40 @ 0x28 + 8002a10: d003 beq.n 8002a1a { /* Disable NACK and STOP interrupts */ tmpisr |= I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_ERRI; - 80033be: 68fb ldr r3, [r7, #12] - 80033c0: 22b0 movs r2, #176 @ 0xb0 - 80033c2: 4313 orrs r3, r2 - 80033c4: 60fb str r3, [r7, #12] + 8002a12: 68fb ldr r3, [r7, #12] + 8002a14: 22b0 movs r2, #176 @ 0xb0 + 8002a16: 4313 orrs r3, r2 + 8002a18: 60fb str r3, [r7, #12] } } if ((InterruptRequest & I2C_XFER_RX_IT) == I2C_XFER_RX_IT) - 80033c6: 1cbb adds r3, r7, #2 - 80033c8: 881b ldrh r3, [r3, #0] - 80033ca: 2202 movs r2, #2 - 80033cc: 4013 ands r3, r2 - 80033ce: d010 beq.n 80033f2 + 8002a1a: 1cbb adds r3, r7, #2 + 8002a1c: 881b ldrh r3, [r3, #0] + 8002a1e: 2202 movs r2, #2 + 8002a20: 4013 ands r3, r2 + 8002a22: d010 beq.n 8002a46 { /* Disable TC and RXI interrupts */ tmpisr |= I2C_IT_TCI | I2C_IT_RXI; - 80033d0: 68fb ldr r3, [r7, #12] - 80033d2: 2244 movs r2, #68 @ 0x44 - 80033d4: 4313 orrs r3, r2 - 80033d6: 60fb str r3, [r7, #12] + 8002a24: 68fb ldr r3, [r7, #12] + 8002a26: 2244 movs r2, #68 @ 0x44 + 8002a28: 4313 orrs r3, r2 + 8002a2a: 60fb str r3, [r7, #12] if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) != (uint32_t)HAL_I2C_STATE_LISTEN) - 80033d8: 687b ldr r3, [r7, #4] - 80033da: 2241 movs r2, #65 @ 0x41 - 80033dc: 5c9b ldrb r3, [r3, r2] - 80033de: b2db uxtb r3, r3 - 80033e0: 001a movs r2, r3 - 80033e2: 2328 movs r3, #40 @ 0x28 - 80033e4: 4013 ands r3, r2 - 80033e6: 2b28 cmp r3, #40 @ 0x28 - 80033e8: d003 beq.n 80033f2 + 8002a2c: 687b ldr r3, [r7, #4] + 8002a2e: 2241 movs r2, #65 @ 0x41 + 8002a30: 5c9b ldrb r3, [r3, r2] + 8002a32: b2db uxtb r3, r3 + 8002a34: 001a movs r2, r3 + 8002a36: 2328 movs r3, #40 @ 0x28 + 8002a38: 4013 ands r3, r2 + 8002a3a: 2b28 cmp r3, #40 @ 0x28 + 8002a3c: d003 beq.n 8002a46 { /* Disable NACK and STOP interrupts */ tmpisr |= I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_ERRI; - 80033ea: 68fb ldr r3, [r7, #12] - 80033ec: 22b0 movs r2, #176 @ 0xb0 - 80033ee: 4313 orrs r3, r2 - 80033f0: 60fb str r3, [r7, #12] + 8002a3e: 68fb ldr r3, [r7, #12] + 8002a40: 22b0 movs r2, #176 @ 0xb0 + 8002a42: 4313 orrs r3, r2 + 8002a44: 60fb str r3, [r7, #12] } } if ((InterruptRequest & I2C_XFER_LISTEN_IT) == I2C_XFER_LISTEN_IT) - 80033f2: 1cbb adds r3, r7, #2 - 80033f4: 2200 movs r2, #0 - 80033f6: 5e9b ldrsh r3, [r3, r2] - 80033f8: 2b00 cmp r3, #0 - 80033fa: da03 bge.n 8003404 + 8002a46: 1cbb adds r3, r7, #2 + 8002a48: 2200 movs r2, #0 + 8002a4a: 5e9b ldrsh r3, [r3, r2] + 8002a4c: 2b00 cmp r3, #0 + 8002a4e: da03 bge.n 8002a58 { /* Disable ADDR, NACK and STOP interrupts */ tmpisr |= I2C_IT_ADDRI | I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_ERRI; - 80033fc: 68fb ldr r3, [r7, #12] - 80033fe: 22b8 movs r2, #184 @ 0xb8 - 8003400: 4313 orrs r3, r2 - 8003402: 60fb str r3, [r7, #12] + 8002a50: 68fb ldr r3, [r7, #12] + 8002a52: 22b8 movs r2, #184 @ 0xb8 + 8002a54: 4313 orrs r3, r2 + 8002a56: 60fb str r3, [r7, #12] } if (InterruptRequest == I2C_XFER_ERROR_IT) - 8003404: 1cbb adds r3, r7, #2 - 8003406: 881b ldrh r3, [r3, #0] - 8003408: 2b10 cmp r3, #16 - 800340a: d103 bne.n 8003414 + 8002a58: 1cbb adds r3, r7, #2 + 8002a5a: 881b ldrh r3, [r3, #0] + 8002a5c: 2b10 cmp r3, #16 + 8002a5e: d103 bne.n 8002a68 { /* Enable ERR and NACK interrupts */ tmpisr |= I2C_IT_ERRI | I2C_IT_NACKI; - 800340c: 68fb ldr r3, [r7, #12] - 800340e: 2290 movs r2, #144 @ 0x90 - 8003410: 4313 orrs r3, r2 - 8003412: 60fb str r3, [r7, #12] + 8002a60: 68fb ldr r3, [r7, #12] + 8002a62: 2290 movs r2, #144 @ 0x90 + 8002a64: 4313 orrs r3, r2 + 8002a66: 60fb str r3, [r7, #12] } if (InterruptRequest == I2C_XFER_CPLT_IT) - 8003414: 1cbb adds r3, r7, #2 - 8003416: 881b ldrh r3, [r3, #0] - 8003418: 2b20 cmp r3, #32 - 800341a: d103 bne.n 8003424 + 8002a68: 1cbb adds r3, r7, #2 + 8002a6a: 881b ldrh r3, [r3, #0] + 8002a6c: 2b20 cmp r3, #32 + 8002a6e: d103 bne.n 8002a78 { /* Enable STOP interrupts */ tmpisr |= I2C_IT_STOPI; - 800341c: 68fb ldr r3, [r7, #12] - 800341e: 2220 movs r2, #32 - 8003420: 4313 orrs r3, r2 - 8003422: 60fb str r3, [r7, #12] + 8002a70: 68fb ldr r3, [r7, #12] + 8002a72: 2220 movs r2, #32 + 8002a74: 4313 orrs r3, r2 + 8002a76: 60fb str r3, [r7, #12] } if (InterruptRequest == I2C_XFER_RELOAD_IT) - 8003424: 1cbb adds r3, r7, #2 - 8003426: 881b ldrh r3, [r3, #0] - 8003428: 2b40 cmp r3, #64 @ 0x40 - 800342a: d103 bne.n 8003434 + 8002a78: 1cbb adds r3, r7, #2 + 8002a7a: 881b ldrh r3, [r3, #0] + 8002a7c: 2b40 cmp r3, #64 @ 0x40 + 8002a7e: d103 bne.n 8002a88 { /* Enable TC interrupts */ tmpisr |= I2C_IT_TCI; - 800342c: 68fb ldr r3, [r7, #12] - 800342e: 2240 movs r2, #64 @ 0x40 - 8003430: 4313 orrs r3, r2 - 8003432: 60fb str r3, [r7, #12] + 8002a80: 68fb ldr r3, [r7, #12] + 8002a82: 2240 movs r2, #64 @ 0x40 + 8002a84: 4313 orrs r3, r2 + 8002a86: 60fb str r3, [r7, #12] } /* Disable interrupts only at the end */ /* to avoid a breaking situation like at "t" time */ /* all disable interrupts request are not done */ __HAL_I2C_DISABLE_IT(hi2c, tmpisr); - 8003434: 687b ldr r3, [r7, #4] - 8003436: 681b ldr r3, [r3, #0] - 8003438: 681a ldr r2, [r3, #0] - 800343a: 68fb ldr r3, [r7, #12] - 800343c: 43d9 mvns r1, r3 - 800343e: 687b ldr r3, [r7, #4] - 8003440: 681b ldr r3, [r3, #0] - 8003442: 400a ands r2, r1 - 8003444: 601a str r2, [r3, #0] + 8002a88: 687b ldr r3, [r7, #4] + 8002a8a: 681b ldr r3, [r3, #0] + 8002a8c: 681a ldr r2, [r3, #0] + 8002a8e: 68fb ldr r3, [r7, #12] + 8002a90: 43d9 mvns r1, r3 + 8002a92: 687b ldr r3, [r7, #4] + 8002a94: 681b ldr r3, [r3, #0] + 8002a96: 400a ands r2, r1 + 8002a98: 601a str r2, [r3, #0] } - 8003446: 46c0 nop @ (mov r8, r8) - 8003448: 46bd mov sp, r7 - 800344a: b004 add sp, #16 - 800344c: bd80 pop {r7, pc} + 8002a9a: 46c0 nop @ (mov r8, r8) + 8002a9c: 46bd mov sp, r7 + 8002a9e: b004 add sp, #16 + 8002aa0: bd80 pop {r7, pc} ... -08003450 : +08002aa4 : * the configuration information for the specified I2Cx peripheral. * @param AnalogFilter New state of the Analog filter. * @retval HAL status */ HAL_StatusTypeDef HAL_I2CEx_ConfigAnalogFilter(I2C_HandleTypeDef *hi2c, uint32_t AnalogFilter) { - 8003450: b580 push {r7, lr} - 8003452: b082 sub sp, #8 - 8003454: af00 add r7, sp, #0 - 8003456: 6078 str r0, [r7, #4] - 8003458: 6039 str r1, [r7, #0] + 8002aa4: b580 push {r7, lr} + 8002aa6: b082 sub sp, #8 + 8002aa8: af00 add r7, sp, #0 + 8002aaa: 6078 str r0, [r7, #4] + 8002aac: 6039 str r1, [r7, #0] /* Check the parameters */ assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance)); assert_param(IS_I2C_ANALOG_FILTER(AnalogFilter)); if (hi2c->State == HAL_I2C_STATE_READY) - 800345a: 687b ldr r3, [r7, #4] - 800345c: 2241 movs r2, #65 @ 0x41 - 800345e: 5c9b ldrb r3, [r3, r2] - 8003460: b2db uxtb r3, r3 - 8003462: 2b20 cmp r3, #32 - 8003464: d138 bne.n 80034d8 + 8002aae: 687b ldr r3, [r7, #4] + 8002ab0: 2241 movs r2, #65 @ 0x41 + 8002ab2: 5c9b ldrb r3, [r3, r2] + 8002ab4: b2db uxtb r3, r3 + 8002ab6: 2b20 cmp r3, #32 + 8002ab8: d138 bne.n 8002b2c { /* Process Locked */ __HAL_LOCK(hi2c); - 8003466: 687b ldr r3, [r7, #4] - 8003468: 2240 movs r2, #64 @ 0x40 - 800346a: 5c9b ldrb r3, [r3, r2] - 800346c: 2b01 cmp r3, #1 - 800346e: d101 bne.n 8003474 - 8003470: 2302 movs r3, #2 - 8003472: e032 b.n 80034da - 8003474: 687b ldr r3, [r7, #4] - 8003476: 2240 movs r2, #64 @ 0x40 - 8003478: 2101 movs r1, #1 - 800347a: 5499 strb r1, [r3, r2] + 8002aba: 687b ldr r3, [r7, #4] + 8002abc: 2240 movs r2, #64 @ 0x40 + 8002abe: 5c9b ldrb r3, [r3, r2] + 8002ac0: 2b01 cmp r3, #1 + 8002ac2: d101 bne.n 8002ac8 + 8002ac4: 2302 movs r3, #2 + 8002ac6: e032 b.n 8002b2e + 8002ac8: 687b ldr r3, [r7, #4] + 8002aca: 2240 movs r2, #64 @ 0x40 + 8002acc: 2101 movs r1, #1 + 8002ace: 5499 strb r1, [r3, r2] hi2c->State = HAL_I2C_STATE_BUSY; - 800347c: 687b ldr r3, [r7, #4] - 800347e: 2241 movs r2, #65 @ 0x41 - 8003480: 2124 movs r1, #36 @ 0x24 - 8003482: 5499 strb r1, [r3, r2] + 8002ad0: 687b ldr r3, [r7, #4] + 8002ad2: 2241 movs r2, #65 @ 0x41 + 8002ad4: 2124 movs r1, #36 @ 0x24 + 8002ad6: 5499 strb r1, [r3, r2] /* Disable the selected I2C peripheral */ __HAL_I2C_DISABLE(hi2c); - 8003484: 687b ldr r3, [r7, #4] - 8003486: 681b ldr r3, [r3, #0] - 8003488: 681a ldr r2, [r3, #0] - 800348a: 687b ldr r3, [r7, #4] - 800348c: 681b ldr r3, [r3, #0] - 800348e: 2101 movs r1, #1 - 8003490: 438a bics r2, r1 - 8003492: 601a str r2, [r3, #0] + 8002ad8: 687b ldr r3, [r7, #4] + 8002ada: 681b ldr r3, [r3, #0] + 8002adc: 681a ldr r2, [r3, #0] + 8002ade: 687b ldr r3, [r7, #4] + 8002ae0: 681b ldr r3, [r3, #0] + 8002ae2: 2101 movs r1, #1 + 8002ae4: 438a bics r2, r1 + 8002ae6: 601a str r2, [r3, #0] /* Reset I2Cx ANOFF bit */ hi2c->Instance->CR1 &= ~(I2C_CR1_ANFOFF); - 8003494: 687b ldr r3, [r7, #4] - 8003496: 681b ldr r3, [r3, #0] - 8003498: 681a ldr r2, [r3, #0] - 800349a: 687b ldr r3, [r7, #4] - 800349c: 681b ldr r3, [r3, #0] - 800349e: 4911 ldr r1, [pc, #68] @ (80034e4 ) - 80034a0: 400a ands r2, r1 - 80034a2: 601a str r2, [r3, #0] + 8002ae8: 687b ldr r3, [r7, #4] + 8002aea: 681b ldr r3, [r3, #0] + 8002aec: 681a ldr r2, [r3, #0] + 8002aee: 687b ldr r3, [r7, #4] + 8002af0: 681b ldr r3, [r3, #0] + 8002af2: 4911 ldr r1, [pc, #68] @ (8002b38 ) + 8002af4: 400a ands r2, r1 + 8002af6: 601a str r2, [r3, #0] /* Set analog filter bit*/ hi2c->Instance->CR1 |= AnalogFilter; - 80034a4: 687b ldr r3, [r7, #4] - 80034a6: 681b ldr r3, [r3, #0] - 80034a8: 6819 ldr r1, [r3, #0] - 80034aa: 687b ldr r3, [r7, #4] - 80034ac: 681b ldr r3, [r3, #0] - 80034ae: 683a ldr r2, [r7, #0] - 80034b0: 430a orrs r2, r1 - 80034b2: 601a str r2, [r3, #0] + 8002af8: 687b ldr r3, [r7, #4] + 8002afa: 681b ldr r3, [r3, #0] + 8002afc: 6819 ldr r1, [r3, #0] + 8002afe: 687b ldr r3, [r7, #4] + 8002b00: 681b ldr r3, [r3, #0] + 8002b02: 683a ldr r2, [r7, #0] + 8002b04: 430a orrs r2, r1 + 8002b06: 601a str r2, [r3, #0] __HAL_I2C_ENABLE(hi2c); - 80034b4: 687b ldr r3, [r7, #4] - 80034b6: 681b ldr r3, [r3, #0] - 80034b8: 681a ldr r2, [r3, #0] - 80034ba: 687b ldr r3, [r7, #4] - 80034bc: 681b ldr r3, [r3, #0] - 80034be: 2101 movs r1, #1 - 80034c0: 430a orrs r2, r1 - 80034c2: 601a str r2, [r3, #0] + 8002b08: 687b ldr r3, [r7, #4] + 8002b0a: 681b ldr r3, [r3, #0] + 8002b0c: 681a ldr r2, [r3, #0] + 8002b0e: 687b ldr r3, [r7, #4] + 8002b10: 681b ldr r3, [r3, #0] + 8002b12: 2101 movs r1, #1 + 8002b14: 430a orrs r2, r1 + 8002b16: 601a str r2, [r3, #0] hi2c->State = HAL_I2C_STATE_READY; - 80034c4: 687b ldr r3, [r7, #4] - 80034c6: 2241 movs r2, #65 @ 0x41 - 80034c8: 2120 movs r1, #32 - 80034ca: 5499 strb r1, [r3, r2] + 8002b18: 687b ldr r3, [r7, #4] + 8002b1a: 2241 movs r2, #65 @ 0x41 + 8002b1c: 2120 movs r1, #32 + 8002b1e: 5499 strb r1, [r3, r2] /* Process Unlocked */ __HAL_UNLOCK(hi2c); - 80034cc: 687b ldr r3, [r7, #4] - 80034ce: 2240 movs r2, #64 @ 0x40 - 80034d0: 2100 movs r1, #0 - 80034d2: 5499 strb r1, [r3, r2] + 8002b20: 687b ldr r3, [r7, #4] + 8002b22: 2240 movs r2, #64 @ 0x40 + 8002b24: 2100 movs r1, #0 + 8002b26: 5499 strb r1, [r3, r2] return HAL_OK; - 80034d4: 2300 movs r3, #0 - 80034d6: e000 b.n 80034da + 8002b28: 2300 movs r3, #0 + 8002b2a: e000 b.n 8002b2e } else { return HAL_BUSY; - 80034d8: 2302 movs r3, #2 + 8002b2c: 2302 movs r3, #2 } } - 80034da: 0018 movs r0, r3 - 80034dc: 46bd mov sp, r7 - 80034de: b002 add sp, #8 - 80034e0: bd80 pop {r7, pc} - 80034e2: 46c0 nop @ (mov r8, r8) - 80034e4: ffffefff .word 0xffffefff + 8002b2e: 0018 movs r0, r3 + 8002b30: 46bd mov sp, r7 + 8002b32: b002 add sp, #8 + 8002b34: bd80 pop {r7, pc} + 8002b36: 46c0 nop @ (mov r8, r8) + 8002b38: ffffefff .word 0xffffefff -080034e8 : +08002b3c : * the configuration information for the specified I2Cx peripheral. * @param DigitalFilter Coefficient of digital noise filter between Min_Data=0x00 and Max_Data=0x0F. * @retval HAL status */ HAL_StatusTypeDef HAL_I2CEx_ConfigDigitalFilter(I2C_HandleTypeDef *hi2c, uint32_t DigitalFilter) { - 80034e8: b580 push {r7, lr} - 80034ea: b084 sub sp, #16 - 80034ec: af00 add r7, sp, #0 - 80034ee: 6078 str r0, [r7, #4] - 80034f0: 6039 str r1, [r7, #0] + 8002b3c: b580 push {r7, lr} + 8002b3e: b084 sub sp, #16 + 8002b40: af00 add r7, sp, #0 + 8002b42: 6078 str r0, [r7, #4] + 8002b44: 6039 str r1, [r7, #0] /* Check the parameters */ assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance)); assert_param(IS_I2C_DIGITAL_FILTER(DigitalFilter)); if (hi2c->State == HAL_I2C_STATE_READY) - 80034f2: 687b ldr r3, [r7, #4] - 80034f4: 2241 movs r2, #65 @ 0x41 - 80034f6: 5c9b ldrb r3, [r3, r2] - 80034f8: b2db uxtb r3, r3 - 80034fa: 2b20 cmp r3, #32 - 80034fc: d139 bne.n 8003572 + 8002b46: 687b ldr r3, [r7, #4] + 8002b48: 2241 movs r2, #65 @ 0x41 + 8002b4a: 5c9b ldrb r3, [r3, r2] + 8002b4c: b2db uxtb r3, r3 + 8002b4e: 2b20 cmp r3, #32 + 8002b50: d139 bne.n 8002bc6 { /* Process Locked */ __HAL_LOCK(hi2c); - 80034fe: 687b ldr r3, [r7, #4] - 8003500: 2240 movs r2, #64 @ 0x40 - 8003502: 5c9b ldrb r3, [r3, r2] - 8003504: 2b01 cmp r3, #1 - 8003506: d101 bne.n 800350c - 8003508: 2302 movs r3, #2 - 800350a: e033 b.n 8003574 - 800350c: 687b ldr r3, [r7, #4] - 800350e: 2240 movs r2, #64 @ 0x40 - 8003510: 2101 movs r1, #1 - 8003512: 5499 strb r1, [r3, r2] + 8002b52: 687b ldr r3, [r7, #4] + 8002b54: 2240 movs r2, #64 @ 0x40 + 8002b56: 5c9b ldrb r3, [r3, r2] + 8002b58: 2b01 cmp r3, #1 + 8002b5a: d101 bne.n 8002b60 + 8002b5c: 2302 movs r3, #2 + 8002b5e: e033 b.n 8002bc8 + 8002b60: 687b ldr r3, [r7, #4] + 8002b62: 2240 movs r2, #64 @ 0x40 + 8002b64: 2101 movs r1, #1 + 8002b66: 5499 strb r1, [r3, r2] hi2c->State = HAL_I2C_STATE_BUSY; - 8003514: 687b ldr r3, [r7, #4] - 8003516: 2241 movs r2, #65 @ 0x41 - 8003518: 2124 movs r1, #36 @ 0x24 - 800351a: 5499 strb r1, [r3, r2] + 8002b68: 687b ldr r3, [r7, #4] + 8002b6a: 2241 movs r2, #65 @ 0x41 + 8002b6c: 2124 movs r1, #36 @ 0x24 + 8002b6e: 5499 strb r1, [r3, r2] /* Disable the selected I2C peripheral */ __HAL_I2C_DISABLE(hi2c); - 800351c: 687b ldr r3, [r7, #4] - 800351e: 681b ldr r3, [r3, #0] - 8003520: 681a ldr r2, [r3, #0] - 8003522: 687b ldr r3, [r7, #4] - 8003524: 681b ldr r3, [r3, #0] - 8003526: 2101 movs r1, #1 - 8003528: 438a bics r2, r1 - 800352a: 601a str r2, [r3, #0] + 8002b70: 687b ldr r3, [r7, #4] + 8002b72: 681b ldr r3, [r3, #0] + 8002b74: 681a ldr r2, [r3, #0] + 8002b76: 687b ldr r3, [r7, #4] + 8002b78: 681b ldr r3, [r3, #0] + 8002b7a: 2101 movs r1, #1 + 8002b7c: 438a bics r2, r1 + 8002b7e: 601a str r2, [r3, #0] /* Get the old register value */ tmpreg = hi2c->Instance->CR1; - 800352c: 687b ldr r3, [r7, #4] - 800352e: 681b ldr r3, [r3, #0] - 8003530: 681b ldr r3, [r3, #0] - 8003532: 60fb str r3, [r7, #12] + 8002b80: 687b ldr r3, [r7, #4] + 8002b82: 681b ldr r3, [r3, #0] + 8002b84: 681b ldr r3, [r3, #0] + 8002b86: 60fb str r3, [r7, #12] /* Reset I2Cx DNF bits [11:8] */ tmpreg &= ~(I2C_CR1_DNF); - 8003534: 68fb ldr r3, [r7, #12] - 8003536: 4a11 ldr r2, [pc, #68] @ (800357c ) - 8003538: 4013 ands r3, r2 - 800353a: 60fb str r3, [r7, #12] + 8002b88: 68fb ldr r3, [r7, #12] + 8002b8a: 4a11 ldr r2, [pc, #68] @ (8002bd0 ) + 8002b8c: 4013 ands r3, r2 + 8002b8e: 60fb str r3, [r7, #12] /* Set I2Cx DNF coefficient */ tmpreg |= DigitalFilter << 8U; - 800353c: 683b ldr r3, [r7, #0] - 800353e: 021b lsls r3, r3, #8 - 8003540: 68fa ldr r2, [r7, #12] - 8003542: 4313 orrs r3, r2 - 8003544: 60fb str r3, [r7, #12] + 8002b90: 683b ldr r3, [r7, #0] + 8002b92: 021b lsls r3, r3, #8 + 8002b94: 68fa ldr r2, [r7, #12] + 8002b96: 4313 orrs r3, r2 + 8002b98: 60fb str r3, [r7, #12] /* Store the new register value */ hi2c->Instance->CR1 = tmpreg; - 8003546: 687b ldr r3, [r7, #4] - 8003548: 681b ldr r3, [r3, #0] - 800354a: 68fa ldr r2, [r7, #12] - 800354c: 601a str r2, [r3, #0] + 8002b9a: 687b ldr r3, [r7, #4] + 8002b9c: 681b ldr r3, [r3, #0] + 8002b9e: 68fa ldr r2, [r7, #12] + 8002ba0: 601a str r2, [r3, #0] __HAL_I2C_ENABLE(hi2c); - 800354e: 687b ldr r3, [r7, #4] - 8003550: 681b ldr r3, [r3, #0] - 8003552: 681a ldr r2, [r3, #0] - 8003554: 687b ldr r3, [r7, #4] - 8003556: 681b ldr r3, [r3, #0] - 8003558: 2101 movs r1, #1 - 800355a: 430a orrs r2, r1 - 800355c: 601a str r2, [r3, #0] + 8002ba2: 687b ldr r3, [r7, #4] + 8002ba4: 681b ldr r3, [r3, #0] + 8002ba6: 681a ldr r2, [r3, #0] + 8002ba8: 687b ldr r3, [r7, #4] + 8002baa: 681b ldr r3, [r3, #0] + 8002bac: 2101 movs r1, #1 + 8002bae: 430a orrs r2, r1 + 8002bb0: 601a str r2, [r3, #0] hi2c->State = HAL_I2C_STATE_READY; - 800355e: 687b ldr r3, [r7, #4] - 8003560: 2241 movs r2, #65 @ 0x41 - 8003562: 2120 movs r1, #32 - 8003564: 5499 strb r1, [r3, r2] + 8002bb2: 687b ldr r3, [r7, #4] + 8002bb4: 2241 movs r2, #65 @ 0x41 + 8002bb6: 2120 movs r1, #32 + 8002bb8: 5499 strb r1, [r3, r2] /* Process Unlocked */ __HAL_UNLOCK(hi2c); - 8003566: 687b ldr r3, [r7, #4] - 8003568: 2240 movs r2, #64 @ 0x40 - 800356a: 2100 movs r1, #0 - 800356c: 5499 strb r1, [r3, r2] + 8002bba: 687b ldr r3, [r7, #4] + 8002bbc: 2240 movs r2, #64 @ 0x40 + 8002bbe: 2100 movs r1, #0 + 8002bc0: 5499 strb r1, [r3, r2] return HAL_OK; - 800356e: 2300 movs r3, #0 - 8003570: e000 b.n 8003574 + 8002bc2: 2300 movs r3, #0 + 8002bc4: e000 b.n 8002bc8 } else { return HAL_BUSY; - 8003572: 2302 movs r3, #2 + 8002bc6: 2302 movs r3, #2 } } - 8003574: 0018 movs r0, r3 - 8003576: 46bd mov sp, r7 - 8003578: b004 add sp, #16 - 800357a: bd80 pop {r7, pc} - 800357c: fffff0ff .word 0xfffff0ff + 8002bc8: 0018 movs r0, r3 + 8002bca: 46bd mov sp, r7 + 8002bcc: b004 add sp, #16 + 8002bce: bd80 pop {r7, pc} + 8002bd0: fffff0ff .word 0xfffff0ff -08003580 : +08002bd4 : * cleared before returning the status. If the flag is not cleared within * 6 microseconds, HAL_TIMEOUT status is reported. * @retval HAL Status */ HAL_StatusTypeDef HAL_PWREx_ControlVoltageScaling(uint32_t VoltageScaling) { - 8003580: b580 push {r7, lr} - 8003582: b084 sub sp, #16 - 8003584: af00 add r7, sp, #0 - 8003586: 6078 str r0, [r7, #4] + 8002bd4: b580 push {r7, lr} + 8002bd6: b084 sub sp, #16 + 8002bd8: af00 add r7, sp, #0 + 8002bda: 6078 str r0, [r7, #4] uint32_t wait_loop_index; assert_param(IS_PWR_VOLTAGE_SCALING_RANGE(VoltageScaling)); /* Modify voltage scaling range */ MODIFY_REG(PWR->CR1, PWR_CR1_VOS, VoltageScaling); - 8003588: 4b19 ldr r3, [pc, #100] @ (80035f0 ) - 800358a: 681b ldr r3, [r3, #0] - 800358c: 4a19 ldr r2, [pc, #100] @ (80035f4 ) - 800358e: 4013 ands r3, r2 - 8003590: 0019 movs r1, r3 - 8003592: 4b17 ldr r3, [pc, #92] @ (80035f0 ) - 8003594: 687a ldr r2, [r7, #4] - 8003596: 430a orrs r2, r1 - 8003598: 601a str r2, [r3, #0] + 8002bdc: 4b19 ldr r3, [pc, #100] @ (8002c44 ) + 8002bde: 681b ldr r3, [r3, #0] + 8002be0: 4a19 ldr r2, [pc, #100] @ (8002c48 ) + 8002be2: 4013 ands r3, r2 + 8002be4: 0019 movs r1, r3 + 8002be6: 4b17 ldr r3, [pc, #92] @ (8002c44 ) + 8002be8: 687a ldr r2, [r7, #4] + 8002bea: 430a orrs r2, r1 + 8002bec: 601a str r2, [r3, #0] /* In case of Range 1 selected, we need to ensure that main regulator reaches new value */ if (VoltageScaling == PWR_REGULATOR_VOLTAGE_SCALE1) - 800359a: 687a ldr r2, [r7, #4] - 800359c: 2380 movs r3, #128 @ 0x80 - 800359e: 009b lsls r3, r3, #2 - 80035a0: 429a cmp r2, r3 - 80035a2: d11f bne.n 80035e4 + 8002bee: 687a ldr r2, [r7, #4] + 8002bf0: 2380 movs r3, #128 @ 0x80 + 8002bf2: 009b lsls r3, r3, #2 + 8002bf4: 429a cmp r2, r3 + 8002bf6: d11f bne.n 8002c38 { /* Set timeout value */ wait_loop_index = ((PWR_VOSF_SETTING_DELAY_6_US * SystemCoreClock) / 1000000U) + 1U; - 80035a4: 4b14 ldr r3, [pc, #80] @ (80035f8 ) - 80035a6: 681a ldr r2, [r3, #0] - 80035a8: 0013 movs r3, r2 - 80035aa: 005b lsls r3, r3, #1 - 80035ac: 189b adds r3, r3, r2 - 80035ae: 005b lsls r3, r3, #1 - 80035b0: 4912 ldr r1, [pc, #72] @ (80035fc ) - 80035b2: 0018 movs r0, r3 - 80035b4: f7fc fdae bl 8000114 <__udivsi3> - 80035b8: 0003 movs r3, r0 - 80035ba: 3301 adds r3, #1 - 80035bc: 60fb str r3, [r7, #12] + 8002bf8: 4b14 ldr r3, [pc, #80] @ (8002c4c ) + 8002bfa: 681a ldr r2, [r3, #0] + 8002bfc: 0013 movs r3, r2 + 8002bfe: 005b lsls r3, r3, #1 + 8002c00: 189b adds r3, r3, r2 + 8002c02: 005b lsls r3, r3, #1 + 8002c04: 4912 ldr r1, [pc, #72] @ (8002c50 ) + 8002c06: 0018 movs r0, r3 + 8002c08: f7fd fa84 bl 8000114 <__udivsi3> + 8002c0c: 0003 movs r3, r0 + 8002c0e: 3301 adds r3, #1 + 8002c10: 60fb str r3, [r7, #12] /* Wait until VOSF is reset */ while (HAL_IS_BIT_SET(PWR->SR2, PWR_SR2_VOSF)) - 80035be: e008 b.n 80035d2 + 8002c12: e008 b.n 8002c26 { if (wait_loop_index != 0U) - 80035c0: 68fb ldr r3, [r7, #12] - 80035c2: 2b00 cmp r3, #0 - 80035c4: d003 beq.n 80035ce + 8002c14: 68fb ldr r3, [r7, #12] + 8002c16: 2b00 cmp r3, #0 + 8002c18: d003 beq.n 8002c22 { wait_loop_index--; - 80035c6: 68fb ldr r3, [r7, #12] - 80035c8: 3b01 subs r3, #1 - 80035ca: 60fb str r3, [r7, #12] - 80035cc: e001 b.n 80035d2 + 8002c1a: 68fb ldr r3, [r7, #12] + 8002c1c: 3b01 subs r3, #1 + 8002c1e: 60fb str r3, [r7, #12] + 8002c20: e001 b.n 8002c26 } else { return HAL_TIMEOUT; - 80035ce: 2303 movs r3, #3 - 80035d0: e009 b.n 80035e6 + 8002c22: 2303 movs r3, #3 + 8002c24: e009 b.n 8002c3a while (HAL_IS_BIT_SET(PWR->SR2, PWR_SR2_VOSF)) - 80035d2: 4b07 ldr r3, [pc, #28] @ (80035f0 ) - 80035d4: 695a ldr r2, [r3, #20] - 80035d6: 2380 movs r3, #128 @ 0x80 - 80035d8: 00db lsls r3, r3, #3 - 80035da: 401a ands r2, r3 - 80035dc: 2380 movs r3, #128 @ 0x80 - 80035de: 00db lsls r3, r3, #3 - 80035e0: 429a cmp r2, r3 - 80035e2: d0ed beq.n 80035c0 + 8002c26: 4b07 ldr r3, [pc, #28] @ (8002c44 ) + 8002c28: 695a ldr r2, [r3, #20] + 8002c2a: 2380 movs r3, #128 @ 0x80 + 8002c2c: 00db lsls r3, r3, #3 + 8002c2e: 401a ands r2, r3 + 8002c30: 2380 movs r3, #128 @ 0x80 + 8002c32: 00db lsls r3, r3, #3 + 8002c34: 429a cmp r2, r3 + 8002c36: d0ed beq.n 8002c14 } } } return HAL_OK; - 80035e4: 2300 movs r3, #0 + 8002c38: 2300 movs r3, #0 } - 80035e6: 0018 movs r0, r3 - 80035e8: 46bd mov sp, r7 - 80035ea: b004 add sp, #16 - 80035ec: bd80 pop {r7, pc} - 80035ee: 46c0 nop @ (mov r8, r8) - 80035f0: 40007000 .word 0x40007000 - 80035f4: fffff9ff .word 0xfffff9ff - 80035f8: 20000000 .word 0x20000000 - 80035fc: 000f4240 .word 0x000f4240 + 8002c3a: 0018 movs r0, r3 + 8002c3c: 46bd mov sp, r7 + 8002c3e: b004 add sp, #16 + 8002c40: bd80 pop {r7, pc} + 8002c42: 46c0 nop @ (mov r8, r8) + 8002c44: 40007000 .word 0x40007000 + 8002c48: fffff9ff .word 0xfffff9ff + 8002c4c: 20000000 .word 0x20000000 + 8002c50: 000f4240 .word 0x000f4240 -08003600 : +08002c54 : * @arg @ref LL_RCC_APB1_DIV_4 * @arg @ref LL_RCC_APB1_DIV_8 * @arg @ref LL_RCC_APB1_DIV_16 */ __STATIC_INLINE uint32_t LL_RCC_GetAPB1Prescaler(void) { - 8003600: b580 push {r7, lr} - 8003602: af00 add r7, sp, #0 + 8002c54: b580 push {r7, lr} + 8002c56: af00 add r7, sp, #0 return (uint32_t)(READ_BIT(RCC->CFGR, RCC_CFGR_PPRE)); - 8003604: 4b03 ldr r3, [pc, #12] @ (8003614 ) - 8003606: 689a ldr r2, [r3, #8] - 8003608: 23e0 movs r3, #224 @ 0xe0 - 800360a: 01db lsls r3, r3, #7 - 800360c: 4013 ands r3, r2 + 8002c58: 4b03 ldr r3, [pc, #12] @ (8002c68 ) + 8002c5a: 689a ldr r2, [r3, #8] + 8002c5c: 23e0 movs r3, #224 @ 0xe0 + 8002c5e: 01db lsls r3, r3, #7 + 8002c60: 4013 ands r3, r2 } - 800360e: 0018 movs r0, r3 - 8003610: 46bd mov sp, r7 - 8003612: bd80 pop {r7, pc} - 8003614: 40021000 .word 0x40021000 + 8002c62: 0018 movs r0, r3 + 8002c64: 46bd mov sp, r7 + 8002c66: bd80 pop {r7, pc} + 8002c68: 40021000 .word 0x40021000 -08003618 : +08002c6c : * supported by this function. User should request a transition to LSE Off * first and then to LSE On or LSE Bypass. * @retval HAL status */ HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct) { - 8003618: b580 push {r7, lr} - 800361a: b088 sub sp, #32 - 800361c: af00 add r7, sp, #0 - 800361e: 6078 str r0, [r7, #4] + 8002c6c: b580 push {r7, lr} + 8002c6e: b088 sub sp, #32 + 8002c70: af00 add r7, sp, #0 + 8002c72: 6078 str r0, [r7, #4] uint32_t tickstart; uint32_t temp_sysclksrc; uint32_t temp_pllckcfg; /* Check Null pointer */ if (RCC_OscInitStruct == NULL) - 8003620: 687b ldr r3, [r7, #4] - 8003622: 2b00 cmp r3, #0 - 8003624: d101 bne.n 800362a + 8002c74: 687b ldr r3, [r7, #4] + 8002c76: 2b00 cmp r3, #0 + 8002c78: d101 bne.n 8002c7e { return HAL_ERROR; - 8003626: 2301 movs r3, #1 - 8003628: e2f3 b.n 8003c12 + 8002c7a: 2301 movs r3, #1 + 8002c7c: e2f3 b.n 8003266 /* Check the parameters */ assert_param(IS_RCC_OSCILLATORTYPE(RCC_OscInitStruct->OscillatorType)); /*------------------------------- HSE Configuration ------------------------*/ if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSE) == RCC_OSCILLATORTYPE_HSE) - 800362a: 687b ldr r3, [r7, #4] - 800362c: 681b ldr r3, [r3, #0] - 800362e: 2201 movs r2, #1 - 8003630: 4013 ands r3, r2 - 8003632: d100 bne.n 8003636 - 8003634: e07c b.n 8003730 + 8002c7e: 687b ldr r3, [r7, #4] + 8002c80: 681b ldr r3, [r3, #0] + 8002c82: 2201 movs r2, #1 + 8002c84: 4013 ands r3, r2 + 8002c86: d100 bne.n 8002c8a + 8002c88: e07c b.n 8002d84 { /* Check the parameters */ assert_param(IS_RCC_HSE(RCC_OscInitStruct->HSEState)); temp_sysclksrc = __HAL_RCC_GET_SYSCLK_SOURCE(); - 8003636: 4bc3 ldr r3, [pc, #780] @ (8003944 ) - 8003638: 689b ldr r3, [r3, #8] - 800363a: 2238 movs r2, #56 @ 0x38 - 800363c: 4013 ands r3, r2 - 800363e: 61bb str r3, [r7, #24] + 8002c8a: 4bc3 ldr r3, [pc, #780] @ (8002f98 ) + 8002c8c: 689b ldr r3, [r3, #8] + 8002c8e: 2238 movs r2, #56 @ 0x38 + 8002c90: 4013 ands r3, r2 + 8002c92: 61bb str r3, [r7, #24] temp_pllckcfg = __HAL_RCC_GET_PLL_OSCSOURCE(); - 8003640: 4bc0 ldr r3, [pc, #768] @ (8003944 ) - 8003642: 68db ldr r3, [r3, #12] - 8003644: 2203 movs r2, #3 - 8003646: 4013 ands r3, r2 - 8003648: 617b str r3, [r7, #20] + 8002c94: 4bc0 ldr r3, [pc, #768] @ (8002f98 ) + 8002c96: 68db ldr r3, [r3, #12] + 8002c98: 2203 movs r2, #3 + 8002c9a: 4013 ands r3, r2 + 8002c9c: 617b str r3, [r7, #20] /* When the HSE is used as system clock or clock source for PLL in these cases it is not allowed to be disabled */ if (((temp_sysclksrc == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && (temp_pllckcfg == RCC_PLLSOURCE_HSE)) - 800364a: 69bb ldr r3, [r7, #24] - 800364c: 2b10 cmp r3, #16 - 800364e: d102 bne.n 8003656 - 8003650: 697b ldr r3, [r7, #20] - 8003652: 2b03 cmp r3, #3 - 8003654: d002 beq.n 800365c + 8002c9e: 69bb ldr r3, [r7, #24] + 8002ca0: 2b10 cmp r3, #16 + 8002ca2: d102 bne.n 8002caa + 8002ca4: 697b ldr r3, [r7, #20] + 8002ca6: 2b03 cmp r3, #3 + 8002ca8: d002 beq.n 8002cb0 || (temp_sysclksrc == RCC_SYSCLKSOURCE_STATUS_HSE)) - 8003656: 69bb ldr r3, [r7, #24] - 8003658: 2b08 cmp r3, #8 - 800365a: d10b bne.n 8003674 + 8002caa: 69bb ldr r3, [r7, #24] + 8002cac: 2b08 cmp r3, #8 + 8002cae: d10b bne.n 8002cc8 { if ((READ_BIT(RCC->CR, RCC_CR_HSERDY) != 0U) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF)) - 800365c: 4bb9 ldr r3, [pc, #740] @ (8003944 ) - 800365e: 681a ldr r2, [r3, #0] - 8003660: 2380 movs r3, #128 @ 0x80 - 8003662: 029b lsls r3, r3, #10 - 8003664: 4013 ands r3, r2 - 8003666: d062 beq.n 800372e - 8003668: 687b ldr r3, [r7, #4] - 800366a: 685b ldr r3, [r3, #4] - 800366c: 2b00 cmp r3, #0 - 800366e: d15e bne.n 800372e + 8002cb0: 4bb9 ldr r3, [pc, #740] @ (8002f98 ) + 8002cb2: 681a ldr r2, [r3, #0] + 8002cb4: 2380 movs r3, #128 @ 0x80 + 8002cb6: 029b lsls r3, r3, #10 + 8002cb8: 4013 ands r3, r2 + 8002cba: d062 beq.n 8002d82 + 8002cbc: 687b ldr r3, [r7, #4] + 8002cbe: 685b ldr r3, [r3, #4] + 8002cc0: 2b00 cmp r3, #0 + 8002cc2: d15e bne.n 8002d82 { return HAL_ERROR; - 8003670: 2301 movs r3, #1 - 8003672: e2ce b.n 8003c12 + 8002cc4: 2301 movs r3, #1 + 8002cc6: e2ce b.n 8003266 } } else { /* Set the new HSE configuration ---------------------------------------*/ __HAL_RCC_HSE_CONFIG(RCC_OscInitStruct->HSEState); - 8003674: 687b ldr r3, [r7, #4] - 8003676: 685a ldr r2, [r3, #4] - 8003678: 2380 movs r3, #128 @ 0x80 - 800367a: 025b lsls r3, r3, #9 - 800367c: 429a cmp r2, r3 - 800367e: d107 bne.n 8003690 - 8003680: 4bb0 ldr r3, [pc, #704] @ (8003944 ) - 8003682: 681a ldr r2, [r3, #0] - 8003684: 4baf ldr r3, [pc, #700] @ (8003944 ) - 8003686: 2180 movs r1, #128 @ 0x80 - 8003688: 0249 lsls r1, r1, #9 - 800368a: 430a orrs r2, r1 - 800368c: 601a str r2, [r3, #0] - 800368e: e020 b.n 80036d2 - 8003690: 687b ldr r3, [r7, #4] - 8003692: 685a ldr r2, [r3, #4] - 8003694: 23a0 movs r3, #160 @ 0xa0 - 8003696: 02db lsls r3, r3, #11 - 8003698: 429a cmp r2, r3 - 800369a: d10e bne.n 80036ba - 800369c: 4ba9 ldr r3, [pc, #676] @ (8003944 ) - 800369e: 681a ldr r2, [r3, #0] - 80036a0: 4ba8 ldr r3, [pc, #672] @ (8003944 ) - 80036a2: 2180 movs r1, #128 @ 0x80 - 80036a4: 02c9 lsls r1, r1, #11 - 80036a6: 430a orrs r2, r1 - 80036a8: 601a str r2, [r3, #0] - 80036aa: 4ba6 ldr r3, [pc, #664] @ (8003944 ) - 80036ac: 681a ldr r2, [r3, #0] - 80036ae: 4ba5 ldr r3, [pc, #660] @ (8003944 ) - 80036b0: 2180 movs r1, #128 @ 0x80 - 80036b2: 0249 lsls r1, r1, #9 - 80036b4: 430a orrs r2, r1 - 80036b6: 601a str r2, [r3, #0] - 80036b8: e00b b.n 80036d2 - 80036ba: 4ba2 ldr r3, [pc, #648] @ (8003944 ) - 80036bc: 681a ldr r2, [r3, #0] - 80036be: 4ba1 ldr r3, [pc, #644] @ (8003944 ) - 80036c0: 49a1 ldr r1, [pc, #644] @ (8003948 ) - 80036c2: 400a ands r2, r1 - 80036c4: 601a str r2, [r3, #0] - 80036c6: 4b9f ldr r3, [pc, #636] @ (8003944 ) - 80036c8: 681a ldr r2, [r3, #0] - 80036ca: 4b9e ldr r3, [pc, #632] @ (8003944 ) - 80036cc: 499f ldr r1, [pc, #636] @ (800394c ) - 80036ce: 400a ands r2, r1 - 80036d0: 601a str r2, [r3, #0] + 8002cc8: 687b ldr r3, [r7, #4] + 8002cca: 685a ldr r2, [r3, #4] + 8002ccc: 2380 movs r3, #128 @ 0x80 + 8002cce: 025b lsls r3, r3, #9 + 8002cd0: 429a cmp r2, r3 + 8002cd2: d107 bne.n 8002ce4 + 8002cd4: 4bb0 ldr r3, [pc, #704] @ (8002f98 ) + 8002cd6: 681a ldr r2, [r3, #0] + 8002cd8: 4baf ldr r3, [pc, #700] @ (8002f98 ) + 8002cda: 2180 movs r1, #128 @ 0x80 + 8002cdc: 0249 lsls r1, r1, #9 + 8002cde: 430a orrs r2, r1 + 8002ce0: 601a str r2, [r3, #0] + 8002ce2: e020 b.n 8002d26 + 8002ce4: 687b ldr r3, [r7, #4] + 8002ce6: 685a ldr r2, [r3, #4] + 8002ce8: 23a0 movs r3, #160 @ 0xa0 + 8002cea: 02db lsls r3, r3, #11 + 8002cec: 429a cmp r2, r3 + 8002cee: d10e bne.n 8002d0e + 8002cf0: 4ba9 ldr r3, [pc, #676] @ (8002f98 ) + 8002cf2: 681a ldr r2, [r3, #0] + 8002cf4: 4ba8 ldr r3, [pc, #672] @ (8002f98 ) + 8002cf6: 2180 movs r1, #128 @ 0x80 + 8002cf8: 02c9 lsls r1, r1, #11 + 8002cfa: 430a orrs r2, r1 + 8002cfc: 601a str r2, [r3, #0] + 8002cfe: 4ba6 ldr r3, [pc, #664] @ (8002f98 ) + 8002d00: 681a ldr r2, [r3, #0] + 8002d02: 4ba5 ldr r3, [pc, #660] @ (8002f98 ) + 8002d04: 2180 movs r1, #128 @ 0x80 + 8002d06: 0249 lsls r1, r1, #9 + 8002d08: 430a orrs r2, r1 + 8002d0a: 601a str r2, [r3, #0] + 8002d0c: e00b b.n 8002d26 + 8002d0e: 4ba2 ldr r3, [pc, #648] @ (8002f98 ) + 8002d10: 681a ldr r2, [r3, #0] + 8002d12: 4ba1 ldr r3, [pc, #644] @ (8002f98 ) + 8002d14: 49a1 ldr r1, [pc, #644] @ (8002f9c ) + 8002d16: 400a ands r2, r1 + 8002d18: 601a str r2, [r3, #0] + 8002d1a: 4b9f ldr r3, [pc, #636] @ (8002f98 ) + 8002d1c: 681a ldr r2, [r3, #0] + 8002d1e: 4b9e ldr r3, [pc, #632] @ (8002f98 ) + 8002d20: 499f ldr r1, [pc, #636] @ (8002fa0 ) + 8002d22: 400a ands r2, r1 + 8002d24: 601a str r2, [r3, #0] /* Check the HSE State */ if (RCC_OscInitStruct->HSEState != RCC_HSE_OFF) - 80036d2: 687b ldr r3, [r7, #4] - 80036d4: 685b ldr r3, [r3, #4] - 80036d6: 2b00 cmp r3, #0 - 80036d8: d014 beq.n 8003704 + 8002d26: 687b ldr r3, [r7, #4] + 8002d28: 685b ldr r3, [r3, #4] + 8002d2a: 2b00 cmp r3, #0 + 8002d2c: d014 beq.n 8002d58 { /* Get Start Tick*/ tickstart = HAL_GetTick(); - 80036da: f7fd ff27 bl 800152c - 80036de: 0003 movs r3, r0 - 80036e0: 613b str r3, [r7, #16] + 8002d2e: f7fe fc9d bl 800166c + 8002d32: 0003 movs r3, r0 + 8002d34: 613b str r3, [r7, #16] /* Wait till HSE is ready */ while (READ_BIT(RCC->CR, RCC_CR_HSERDY) == 0U) - 80036e2: e008 b.n 80036f6 + 8002d36: e008 b.n 8002d4a { if ((HAL_GetTick() - tickstart) > HSE_TIMEOUT_VALUE) - 80036e4: f7fd ff22 bl 800152c - 80036e8: 0002 movs r2, r0 - 80036ea: 693b ldr r3, [r7, #16] - 80036ec: 1ad3 subs r3, r2, r3 - 80036ee: 2b64 cmp r3, #100 @ 0x64 - 80036f0: d901 bls.n 80036f6 + 8002d38: f7fe fc98 bl 800166c + 8002d3c: 0002 movs r2, r0 + 8002d3e: 693b ldr r3, [r7, #16] + 8002d40: 1ad3 subs r3, r2, r3 + 8002d42: 2b64 cmp r3, #100 @ 0x64 + 8002d44: d901 bls.n 8002d4a { return HAL_TIMEOUT; - 80036f2: 2303 movs r3, #3 - 80036f4: e28d b.n 8003c12 + 8002d46: 2303 movs r3, #3 + 8002d48: e28d b.n 8003266 while (READ_BIT(RCC->CR, RCC_CR_HSERDY) == 0U) - 80036f6: 4b93 ldr r3, [pc, #588] @ (8003944 ) - 80036f8: 681a ldr r2, [r3, #0] - 80036fa: 2380 movs r3, #128 @ 0x80 - 80036fc: 029b lsls r3, r3, #10 - 80036fe: 4013 ands r3, r2 - 8003700: d0f0 beq.n 80036e4 - 8003702: e015 b.n 8003730 + 8002d4a: 4b93 ldr r3, [pc, #588] @ (8002f98 ) + 8002d4c: 681a ldr r2, [r3, #0] + 8002d4e: 2380 movs r3, #128 @ 0x80 + 8002d50: 029b lsls r3, r3, #10 + 8002d52: 4013 ands r3, r2 + 8002d54: d0f0 beq.n 8002d38 + 8002d56: e015 b.n 8002d84 } } else { /* Get Start Tick*/ tickstart = HAL_GetTick(); - 8003704: f7fd ff12 bl 800152c - 8003708: 0003 movs r3, r0 - 800370a: 613b str r3, [r7, #16] + 8002d58: f7fe fc88 bl 800166c + 8002d5c: 0003 movs r3, r0 + 8002d5e: 613b str r3, [r7, #16] /* Wait till HSE is disabled */ while (READ_BIT(RCC->CR, RCC_CR_HSERDY) != 0U) - 800370c: e008 b.n 8003720 + 8002d60: e008 b.n 8002d74 { if ((HAL_GetTick() - tickstart) > HSE_TIMEOUT_VALUE) - 800370e: f7fd ff0d bl 800152c - 8003712: 0002 movs r2, r0 - 8003714: 693b ldr r3, [r7, #16] - 8003716: 1ad3 subs r3, r2, r3 - 8003718: 2b64 cmp r3, #100 @ 0x64 - 800371a: d901 bls.n 8003720 + 8002d62: f7fe fc83 bl 800166c + 8002d66: 0002 movs r2, r0 + 8002d68: 693b ldr r3, [r7, #16] + 8002d6a: 1ad3 subs r3, r2, r3 + 8002d6c: 2b64 cmp r3, #100 @ 0x64 + 8002d6e: d901 bls.n 8002d74 { return HAL_TIMEOUT; - 800371c: 2303 movs r3, #3 - 800371e: e278 b.n 8003c12 + 8002d70: 2303 movs r3, #3 + 8002d72: e278 b.n 8003266 while (READ_BIT(RCC->CR, RCC_CR_HSERDY) != 0U) - 8003720: 4b88 ldr r3, [pc, #544] @ (8003944 ) - 8003722: 681a ldr r2, [r3, #0] - 8003724: 2380 movs r3, #128 @ 0x80 - 8003726: 029b lsls r3, r3, #10 - 8003728: 4013 ands r3, r2 - 800372a: d1f0 bne.n 800370e - 800372c: e000 b.n 8003730 + 8002d74: 4b88 ldr r3, [pc, #544] @ (8002f98 ) + 8002d76: 681a ldr r2, [r3, #0] + 8002d78: 2380 movs r3, #128 @ 0x80 + 8002d7a: 029b lsls r3, r3, #10 + 8002d7c: 4013 ands r3, r2 + 8002d7e: d1f0 bne.n 8002d62 + 8002d80: e000 b.n 8002d84 if ((READ_BIT(RCC->CR, RCC_CR_HSERDY) != 0U) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF)) - 800372e: 46c0 nop @ (mov r8, r8) + 8002d82: 46c0 nop @ (mov r8, r8) } } } } /*----------------------------- HSI Configuration --------------------------*/ if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSI) == RCC_OSCILLATORTYPE_HSI) - 8003730: 687b ldr r3, [r7, #4] - 8003732: 681b ldr r3, [r3, #0] - 8003734: 2202 movs r2, #2 - 8003736: 4013 ands r3, r2 - 8003738: d100 bne.n 800373c - 800373a: e099 b.n 8003870 + 8002d84: 687b ldr r3, [r7, #4] + 8002d86: 681b ldr r3, [r3, #0] + 8002d88: 2202 movs r2, #2 + 8002d8a: 4013 ands r3, r2 + 8002d8c: d100 bne.n 8002d90 + 8002d8e: e099 b.n 8002ec4 assert_param(IS_RCC_HSI(RCC_OscInitStruct->HSIState)); assert_param(IS_RCC_HSI_CALIBRATION_VALUE(RCC_OscInitStruct->HSICalibrationValue)); assert_param(IS_RCC_HSIDIV(RCC_OscInitStruct->HSIDiv)); /* Check if HSI16 is used as system clock or as PLL source when PLL is selected as system clock */ temp_sysclksrc = __HAL_RCC_GET_SYSCLK_SOURCE(); - 800373c: 4b81 ldr r3, [pc, #516] @ (8003944 ) - 800373e: 689b ldr r3, [r3, #8] - 8003740: 2238 movs r2, #56 @ 0x38 - 8003742: 4013 ands r3, r2 - 8003744: 61bb str r3, [r7, #24] + 8002d90: 4b81 ldr r3, [pc, #516] @ (8002f98 ) + 8002d92: 689b ldr r3, [r3, #8] + 8002d94: 2238 movs r2, #56 @ 0x38 + 8002d96: 4013 ands r3, r2 + 8002d98: 61bb str r3, [r7, #24] temp_pllckcfg = __HAL_RCC_GET_PLL_OSCSOURCE(); - 8003746: 4b7f ldr r3, [pc, #508] @ (8003944 ) - 8003748: 68db ldr r3, [r3, #12] - 800374a: 2203 movs r2, #3 - 800374c: 4013 ands r3, r2 - 800374e: 617b str r3, [r7, #20] + 8002d9a: 4b7f ldr r3, [pc, #508] @ (8002f98 ) + 8002d9c: 68db ldr r3, [r3, #12] + 8002d9e: 2203 movs r2, #3 + 8002da0: 4013 ands r3, r2 + 8002da2: 617b str r3, [r7, #20] if (((temp_sysclksrc == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && (temp_pllckcfg == RCC_PLLSOURCE_HSI)) - 8003750: 69bb ldr r3, [r7, #24] - 8003752: 2b10 cmp r3, #16 - 8003754: d102 bne.n 800375c - 8003756: 697b ldr r3, [r7, #20] - 8003758: 2b02 cmp r3, #2 - 800375a: d002 beq.n 8003762 + 8002da4: 69bb ldr r3, [r7, #24] + 8002da6: 2b10 cmp r3, #16 + 8002da8: d102 bne.n 8002db0 + 8002daa: 697b ldr r3, [r7, #20] + 8002dac: 2b02 cmp r3, #2 + 8002dae: d002 beq.n 8002db6 || (temp_sysclksrc == RCC_SYSCLKSOURCE_STATUS_HSI)) - 800375c: 69bb ldr r3, [r7, #24] - 800375e: 2b00 cmp r3, #0 - 8003760: d135 bne.n 80037ce + 8002db0: 69bb ldr r3, [r7, #24] + 8002db2: 2b00 cmp r3, #0 + 8002db4: d135 bne.n 8002e22 { /* When HSI is used as system clock or as PLL input clock it can not be disabled */ if ((READ_BIT(RCC->CR, RCC_CR_HSIRDY) != 0U) && (RCC_OscInitStruct->HSIState == RCC_HSI_OFF)) - 8003762: 4b78 ldr r3, [pc, #480] @ (8003944 ) - 8003764: 681a ldr r2, [r3, #0] - 8003766: 2380 movs r3, #128 @ 0x80 - 8003768: 00db lsls r3, r3, #3 - 800376a: 4013 ands r3, r2 - 800376c: d005 beq.n 800377a - 800376e: 687b ldr r3, [r7, #4] - 8003770: 68db ldr r3, [r3, #12] - 8003772: 2b00 cmp r3, #0 - 8003774: d101 bne.n 800377a + 8002db6: 4b78 ldr r3, [pc, #480] @ (8002f98 ) + 8002db8: 681a ldr r2, [r3, #0] + 8002dba: 2380 movs r3, #128 @ 0x80 + 8002dbc: 00db lsls r3, r3, #3 + 8002dbe: 4013 ands r3, r2 + 8002dc0: d005 beq.n 8002dce + 8002dc2: 687b ldr r3, [r7, #4] + 8002dc4: 68db ldr r3, [r3, #12] + 8002dc6: 2b00 cmp r3, #0 + 8002dc8: d101 bne.n 8002dce { return HAL_ERROR; - 8003776: 2301 movs r3, #1 - 8003778: e24b b.n 8003c12 + 8002dca: 2301 movs r3, #1 + 8002dcc: e24b b.n 8003266 } /* Otherwise, just the calibration is allowed */ else { /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/ __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue); - 800377a: 4b72 ldr r3, [pc, #456] @ (8003944 ) - 800377c: 685b ldr r3, [r3, #4] - 800377e: 4a74 ldr r2, [pc, #464] @ (8003950 ) - 8003780: 4013 ands r3, r2 - 8003782: 0019 movs r1, r3 - 8003784: 687b ldr r3, [r7, #4] - 8003786: 695b ldr r3, [r3, #20] - 8003788: 021a lsls r2, r3, #8 - 800378a: 4b6e ldr r3, [pc, #440] @ (8003944 ) - 800378c: 430a orrs r2, r1 - 800378e: 605a str r2, [r3, #4] + 8002dce: 4b72 ldr r3, [pc, #456] @ (8002f98 ) + 8002dd0: 685b ldr r3, [r3, #4] + 8002dd2: 4a74 ldr r2, [pc, #464] @ (8002fa4 ) + 8002dd4: 4013 ands r3, r2 + 8002dd6: 0019 movs r1, r3 + 8002dd8: 687b ldr r3, [r7, #4] + 8002dda: 695b ldr r3, [r3, #20] + 8002ddc: 021a lsls r2, r3, #8 + 8002dde: 4b6e ldr r3, [pc, #440] @ (8002f98 ) + 8002de0: 430a orrs r2, r1 + 8002de2: 605a str r2, [r3, #4] if (temp_sysclksrc == RCC_SYSCLKSOURCE_STATUS_HSI) - 8003790: 69bb ldr r3, [r7, #24] - 8003792: 2b00 cmp r3, #0 - 8003794: d112 bne.n 80037bc + 8002de4: 69bb ldr r3, [r7, #24] + 8002de6: 2b00 cmp r3, #0 + 8002de8: d112 bne.n 8002e10 { /* Adjust the HSI16 division factor */ __HAL_RCC_HSI_CONFIG(RCC_OscInitStruct->HSIDiv); - 8003796: 4b6b ldr r3, [pc, #428] @ (8003944 ) - 8003798: 681b ldr r3, [r3, #0] - 800379a: 4a6e ldr r2, [pc, #440] @ (8003954 ) - 800379c: 4013 ands r3, r2 - 800379e: 0019 movs r1, r3 - 80037a0: 687b ldr r3, [r7, #4] - 80037a2: 691a ldr r2, [r3, #16] - 80037a4: 4b67 ldr r3, [pc, #412] @ (8003944 ) - 80037a6: 430a orrs r2, r1 - 80037a8: 601a str r2, [r3, #0] + 8002dea: 4b6b ldr r3, [pc, #428] @ (8002f98 ) + 8002dec: 681b ldr r3, [r3, #0] + 8002dee: 4a6e ldr r2, [pc, #440] @ (8002fa8 ) + 8002df0: 4013 ands r3, r2 + 8002df2: 0019 movs r1, r3 + 8002df4: 687b ldr r3, [r7, #4] + 8002df6: 691a ldr r2, [r3, #16] + 8002df8: 4b67 ldr r3, [pc, #412] @ (8002f98 ) + 8002dfa: 430a orrs r2, r1 + 8002dfc: 601a str r2, [r3, #0] /* Update the SystemCoreClock global variable with HSISYS value */ SystemCoreClock = (HSI_VALUE / (1UL << ((READ_BIT(RCC->CR, RCC_CR_HSIDIV)) >> RCC_CR_HSIDIV_Pos))); - 80037aa: 4b66 ldr r3, [pc, #408] @ (8003944 ) - 80037ac: 681b ldr r3, [r3, #0] - 80037ae: 0adb lsrs r3, r3, #11 - 80037b0: 2207 movs r2, #7 - 80037b2: 4013 ands r3, r2 - 80037b4: 4a68 ldr r2, [pc, #416] @ (8003958 ) - 80037b6: 40da lsrs r2, r3 - 80037b8: 4b68 ldr r3, [pc, #416] @ (800395c ) - 80037ba: 601a str r2, [r3, #0] + 8002dfe: 4b66 ldr r3, [pc, #408] @ (8002f98 ) + 8002e00: 681b ldr r3, [r3, #0] + 8002e02: 0adb lsrs r3, r3, #11 + 8002e04: 2207 movs r2, #7 + 8002e06: 4013 ands r3, r2 + 8002e08: 4a68 ldr r2, [pc, #416] @ (8002fac ) + 8002e0a: 40da lsrs r2, r3 + 8002e0c: 4b68 ldr r3, [pc, #416] @ (8002fb0 ) + 8002e0e: 601a str r2, [r3, #0] } /* Adapt Systick interrupt period */ if (HAL_InitTick(uwTickPrio) != HAL_OK) - 80037bc: 4b68 ldr r3, [pc, #416] @ (8003960 ) - 80037be: 681b ldr r3, [r3, #0] - 80037c0: 0018 movs r0, r3 - 80037c2: f7fd fe57 bl 8001474 - 80037c6: 1e03 subs r3, r0, #0 - 80037c8: d051 beq.n 800386e + 8002e10: 4b68 ldr r3, [pc, #416] @ (8002fb4 ) + 8002e12: 681b ldr r3, [r3, #0] + 8002e14: 0018 movs r0, r3 + 8002e16: f7fe fbcd bl 80015b4 + 8002e1a: 1e03 subs r3, r0, #0 + 8002e1c: d051 beq.n 8002ec2 { return HAL_ERROR; - 80037ca: 2301 movs r3, #1 - 80037cc: e221 b.n 8003c12 + 8002e1e: 2301 movs r3, #1 + 8002e20: e221 b.n 8003266 } } else { /* Check the HSI State */ if (RCC_OscInitStruct->HSIState != RCC_HSI_OFF) - 80037ce: 687b ldr r3, [r7, #4] - 80037d0: 68db ldr r3, [r3, #12] - 80037d2: 2b00 cmp r3, #0 - 80037d4: d030 beq.n 8003838 + 8002e22: 687b ldr r3, [r7, #4] + 8002e24: 68db ldr r3, [r3, #12] + 8002e26: 2b00 cmp r3, #0 + 8002e28: d030 beq.n 8002e8c { /* Configure the HSI16 division factor */ __HAL_RCC_HSI_CONFIG(RCC_OscInitStruct->HSIDiv); - 80037d6: 4b5b ldr r3, [pc, #364] @ (8003944 ) - 80037d8: 681b ldr r3, [r3, #0] - 80037da: 4a5e ldr r2, [pc, #376] @ (8003954 ) - 80037dc: 4013 ands r3, r2 - 80037de: 0019 movs r1, r3 - 80037e0: 687b ldr r3, [r7, #4] - 80037e2: 691a ldr r2, [r3, #16] - 80037e4: 4b57 ldr r3, [pc, #348] @ (8003944 ) - 80037e6: 430a orrs r2, r1 - 80037e8: 601a str r2, [r3, #0] + 8002e2a: 4b5b ldr r3, [pc, #364] @ (8002f98 ) + 8002e2c: 681b ldr r3, [r3, #0] + 8002e2e: 4a5e ldr r2, [pc, #376] @ (8002fa8 ) + 8002e30: 4013 ands r3, r2 + 8002e32: 0019 movs r1, r3 + 8002e34: 687b ldr r3, [r7, #4] + 8002e36: 691a ldr r2, [r3, #16] + 8002e38: 4b57 ldr r3, [pc, #348] @ (8002f98 ) + 8002e3a: 430a orrs r2, r1 + 8002e3c: 601a str r2, [r3, #0] /* Enable the Internal High Speed oscillator (HSI16). */ __HAL_RCC_HSI_ENABLE(); - 80037ea: 4b56 ldr r3, [pc, #344] @ (8003944 ) - 80037ec: 681a ldr r2, [r3, #0] - 80037ee: 4b55 ldr r3, [pc, #340] @ (8003944 ) - 80037f0: 2180 movs r1, #128 @ 0x80 - 80037f2: 0049 lsls r1, r1, #1 - 80037f4: 430a orrs r2, r1 - 80037f6: 601a str r2, [r3, #0] + 8002e3e: 4b56 ldr r3, [pc, #344] @ (8002f98 ) + 8002e40: 681a ldr r2, [r3, #0] + 8002e42: 4b55 ldr r3, [pc, #340] @ (8002f98 ) + 8002e44: 2180 movs r1, #128 @ 0x80 + 8002e46: 0049 lsls r1, r1, #1 + 8002e48: 430a orrs r2, r1 + 8002e4a: 601a str r2, [r3, #0] /* Get Start Tick*/ tickstart = HAL_GetTick(); - 80037f8: f7fd fe98 bl 800152c - 80037fc: 0003 movs r3, r0 - 80037fe: 613b str r3, [r7, #16] + 8002e4c: f7fe fc0e bl 800166c + 8002e50: 0003 movs r3, r0 + 8002e52: 613b str r3, [r7, #16] /* Wait till HSI is ready */ while (READ_BIT(RCC->CR, RCC_CR_HSIRDY) == 0U) - 8003800: e008 b.n 8003814 + 8002e54: e008 b.n 8002e68 { if ((HAL_GetTick() - tickstart) > HSI_TIMEOUT_VALUE) - 8003802: f7fd fe93 bl 800152c - 8003806: 0002 movs r2, r0 - 8003808: 693b ldr r3, [r7, #16] - 800380a: 1ad3 subs r3, r2, r3 - 800380c: 2b02 cmp r3, #2 - 800380e: d901 bls.n 8003814 + 8002e56: f7fe fc09 bl 800166c + 8002e5a: 0002 movs r2, r0 + 8002e5c: 693b ldr r3, [r7, #16] + 8002e5e: 1ad3 subs r3, r2, r3 + 8002e60: 2b02 cmp r3, #2 + 8002e62: d901 bls.n 8002e68 { return HAL_TIMEOUT; - 8003810: 2303 movs r3, #3 - 8003812: e1fe b.n 8003c12 + 8002e64: 2303 movs r3, #3 + 8002e66: e1fe b.n 8003266 while (READ_BIT(RCC->CR, RCC_CR_HSIRDY) == 0U) - 8003814: 4b4b ldr r3, [pc, #300] @ (8003944 ) - 8003816: 681a ldr r2, [r3, #0] - 8003818: 2380 movs r3, #128 @ 0x80 - 800381a: 00db lsls r3, r3, #3 - 800381c: 4013 ands r3, r2 - 800381e: d0f0 beq.n 8003802 + 8002e68: 4b4b ldr r3, [pc, #300] @ (8002f98 ) + 8002e6a: 681a ldr r2, [r3, #0] + 8002e6c: 2380 movs r3, #128 @ 0x80 + 8002e6e: 00db lsls r3, r3, #3 + 8002e70: 4013 ands r3, r2 + 8002e72: d0f0 beq.n 8002e56 } } /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/ __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue); - 8003820: 4b48 ldr r3, [pc, #288] @ (8003944 ) - 8003822: 685b ldr r3, [r3, #4] - 8003824: 4a4a ldr r2, [pc, #296] @ (8003950 ) - 8003826: 4013 ands r3, r2 - 8003828: 0019 movs r1, r3 - 800382a: 687b ldr r3, [r7, #4] - 800382c: 695b ldr r3, [r3, #20] - 800382e: 021a lsls r2, r3, #8 - 8003830: 4b44 ldr r3, [pc, #272] @ (8003944 ) - 8003832: 430a orrs r2, r1 - 8003834: 605a str r2, [r3, #4] - 8003836: e01b b.n 8003870 + 8002e74: 4b48 ldr r3, [pc, #288] @ (8002f98 ) + 8002e76: 685b ldr r3, [r3, #4] + 8002e78: 4a4a ldr r2, [pc, #296] @ (8002fa4 ) + 8002e7a: 4013 ands r3, r2 + 8002e7c: 0019 movs r1, r3 + 8002e7e: 687b ldr r3, [r7, #4] + 8002e80: 695b ldr r3, [r3, #20] + 8002e82: 021a lsls r2, r3, #8 + 8002e84: 4b44 ldr r3, [pc, #272] @ (8002f98 ) + 8002e86: 430a orrs r2, r1 + 8002e88: 605a str r2, [r3, #4] + 8002e8a: e01b b.n 8002ec4 } else { /* Disable the Internal High Speed oscillator (HSI16). */ __HAL_RCC_HSI_DISABLE(); - 8003838: 4b42 ldr r3, [pc, #264] @ (8003944 ) - 800383a: 681a ldr r2, [r3, #0] - 800383c: 4b41 ldr r3, [pc, #260] @ (8003944 ) - 800383e: 4949 ldr r1, [pc, #292] @ (8003964 ) - 8003840: 400a ands r2, r1 - 8003842: 601a str r2, [r3, #0] + 8002e8c: 4b42 ldr r3, [pc, #264] @ (8002f98 ) + 8002e8e: 681a ldr r2, [r3, #0] + 8002e90: 4b41 ldr r3, [pc, #260] @ (8002f98 ) + 8002e92: 4949 ldr r1, [pc, #292] @ (8002fb8 ) + 8002e94: 400a ands r2, r1 + 8002e96: 601a str r2, [r3, #0] /* Get Start Tick*/ tickstart = HAL_GetTick(); - 8003844: f7fd fe72 bl 800152c - 8003848: 0003 movs r3, r0 - 800384a: 613b str r3, [r7, #16] + 8002e98: f7fe fbe8 bl 800166c + 8002e9c: 0003 movs r3, r0 + 8002e9e: 613b str r3, [r7, #16] /* Wait till HSI is disabled */ while (READ_BIT(RCC->CR, RCC_CR_HSIRDY) != 0U) - 800384c: e008 b.n 8003860 + 8002ea0: e008 b.n 8002eb4 { if ((HAL_GetTick() - tickstart) > HSI_TIMEOUT_VALUE) - 800384e: f7fd fe6d bl 800152c - 8003852: 0002 movs r2, r0 - 8003854: 693b ldr r3, [r7, #16] - 8003856: 1ad3 subs r3, r2, r3 - 8003858: 2b02 cmp r3, #2 - 800385a: d901 bls.n 8003860 + 8002ea2: f7fe fbe3 bl 800166c + 8002ea6: 0002 movs r2, r0 + 8002ea8: 693b ldr r3, [r7, #16] + 8002eaa: 1ad3 subs r3, r2, r3 + 8002eac: 2b02 cmp r3, #2 + 8002eae: d901 bls.n 8002eb4 { return HAL_TIMEOUT; - 800385c: 2303 movs r3, #3 - 800385e: e1d8 b.n 8003c12 + 8002eb0: 2303 movs r3, #3 + 8002eb2: e1d8 b.n 8003266 while (READ_BIT(RCC->CR, RCC_CR_HSIRDY) != 0U) - 8003860: 4b38 ldr r3, [pc, #224] @ (8003944 ) - 8003862: 681a ldr r2, [r3, #0] - 8003864: 2380 movs r3, #128 @ 0x80 - 8003866: 00db lsls r3, r3, #3 - 8003868: 4013 ands r3, r2 - 800386a: d1f0 bne.n 800384e - 800386c: e000 b.n 8003870 + 8002eb4: 4b38 ldr r3, [pc, #224] @ (8002f98 ) + 8002eb6: 681a ldr r2, [r3, #0] + 8002eb8: 2380 movs r3, #128 @ 0x80 + 8002eba: 00db lsls r3, r3, #3 + 8002ebc: 4013 ands r3, r2 + 8002ebe: d1f0 bne.n 8002ea2 + 8002ec0: e000 b.n 8002ec4 if ((READ_BIT(RCC->CR, RCC_CR_HSIRDY) != 0U) && (RCC_OscInitStruct->HSIState == RCC_HSI_OFF)) - 800386e: 46c0 nop @ (mov r8, r8) + 8002ec2: 46c0 nop @ (mov r8, r8) } } } } /*------------------------------ LSI Configuration -------------------------*/ if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSI) == RCC_OSCILLATORTYPE_LSI) - 8003870: 687b ldr r3, [r7, #4] - 8003872: 681b ldr r3, [r3, #0] - 8003874: 2208 movs r2, #8 - 8003876: 4013 ands r3, r2 - 8003878: d047 beq.n 800390a + 8002ec4: 687b ldr r3, [r7, #4] + 8002ec6: 681b ldr r3, [r3, #0] + 8002ec8: 2208 movs r2, #8 + 8002eca: 4013 ands r3, r2 + 8002ecc: d047 beq.n 8002f5e { /* Check the parameters */ assert_param(IS_RCC_LSI(RCC_OscInitStruct->LSIState)); /* Check if LSI is used as system clock */ if (__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_LSI) - 800387a: 4b32 ldr r3, [pc, #200] @ (8003944 ) - 800387c: 689b ldr r3, [r3, #8] - 800387e: 2238 movs r2, #56 @ 0x38 - 8003880: 4013 ands r3, r2 - 8003882: 2b18 cmp r3, #24 - 8003884: d10a bne.n 800389c + 8002ece: 4b32 ldr r3, [pc, #200] @ (8002f98 ) + 8002ed0: 689b ldr r3, [r3, #8] + 8002ed2: 2238 movs r2, #56 @ 0x38 + 8002ed4: 4013 ands r3, r2 + 8002ed6: 2b18 cmp r3, #24 + 8002ed8: d10a bne.n 8002ef0 { /* When LSI is used as system clock it will not be disabled */ if ((((RCC->CSR) & RCC_CSR_LSIRDY) != 0U) && (RCC_OscInitStruct->LSIState == RCC_LSI_OFF)) - 8003886: 4b2f ldr r3, [pc, #188] @ (8003944 ) - 8003888: 6e1b ldr r3, [r3, #96] @ 0x60 - 800388a: 2202 movs r2, #2 - 800388c: 4013 ands r3, r2 - 800388e: d03c beq.n 800390a - 8003890: 687b ldr r3, [r7, #4] - 8003892: 699b ldr r3, [r3, #24] - 8003894: 2b00 cmp r3, #0 - 8003896: d138 bne.n 800390a + 8002eda: 4b2f ldr r3, [pc, #188] @ (8002f98 ) + 8002edc: 6e1b ldr r3, [r3, #96] @ 0x60 + 8002ede: 2202 movs r2, #2 + 8002ee0: 4013 ands r3, r2 + 8002ee2: d03c beq.n 8002f5e + 8002ee4: 687b ldr r3, [r7, #4] + 8002ee6: 699b ldr r3, [r3, #24] + 8002ee8: 2b00 cmp r3, #0 + 8002eea: d138 bne.n 8002f5e { return HAL_ERROR; - 8003898: 2301 movs r3, #1 - 800389a: e1ba b.n 8003c12 + 8002eec: 2301 movs r3, #1 + 8002eee: e1ba b.n 8003266 } } else { /* Check the LSI State */ if (RCC_OscInitStruct->LSIState != RCC_LSI_OFF) - 800389c: 687b ldr r3, [r7, #4] - 800389e: 699b ldr r3, [r3, #24] - 80038a0: 2b00 cmp r3, #0 - 80038a2: d019 beq.n 80038d8 + 8002ef0: 687b ldr r3, [r7, #4] + 8002ef2: 699b ldr r3, [r3, #24] + 8002ef4: 2b00 cmp r3, #0 + 8002ef6: d019 beq.n 8002f2c { /* Enable the Internal Low Speed oscillator (LSI). */ __HAL_RCC_LSI_ENABLE(); - 80038a4: 4b27 ldr r3, [pc, #156] @ (8003944 ) - 80038a6: 6e1a ldr r2, [r3, #96] @ 0x60 - 80038a8: 4b26 ldr r3, [pc, #152] @ (8003944 ) - 80038aa: 2101 movs r1, #1 - 80038ac: 430a orrs r2, r1 - 80038ae: 661a str r2, [r3, #96] @ 0x60 + 8002ef8: 4b27 ldr r3, [pc, #156] @ (8002f98 ) + 8002efa: 6e1a ldr r2, [r3, #96] @ 0x60 + 8002efc: 4b26 ldr r3, [pc, #152] @ (8002f98 ) + 8002efe: 2101 movs r1, #1 + 8002f00: 430a orrs r2, r1 + 8002f02: 661a str r2, [r3, #96] @ 0x60 /* Get Start Tick*/ tickstart = HAL_GetTick(); - 80038b0: f7fd fe3c bl 800152c - 80038b4: 0003 movs r3, r0 - 80038b6: 613b str r3, [r7, #16] + 8002f04: f7fe fbb2 bl 800166c + 8002f08: 0003 movs r3, r0 + 8002f0a: 613b str r3, [r7, #16] /* Wait till LSI is ready */ while (READ_BIT(RCC->CSR, RCC_CSR_LSIRDY) == 0U) - 80038b8: e008 b.n 80038cc + 8002f0c: e008 b.n 8002f20 { if ((HAL_GetTick() - tickstart) > LSI_TIMEOUT_VALUE) - 80038ba: f7fd fe37 bl 800152c - 80038be: 0002 movs r2, r0 - 80038c0: 693b ldr r3, [r7, #16] - 80038c2: 1ad3 subs r3, r2, r3 - 80038c4: 2b02 cmp r3, #2 - 80038c6: d901 bls.n 80038cc + 8002f0e: f7fe fbad bl 800166c + 8002f12: 0002 movs r2, r0 + 8002f14: 693b ldr r3, [r7, #16] + 8002f16: 1ad3 subs r3, r2, r3 + 8002f18: 2b02 cmp r3, #2 + 8002f1a: d901 bls.n 8002f20 { return HAL_TIMEOUT; - 80038c8: 2303 movs r3, #3 - 80038ca: e1a2 b.n 8003c12 + 8002f1c: 2303 movs r3, #3 + 8002f1e: e1a2 b.n 8003266 while (READ_BIT(RCC->CSR, RCC_CSR_LSIRDY) == 0U) - 80038cc: 4b1d ldr r3, [pc, #116] @ (8003944 ) - 80038ce: 6e1b ldr r3, [r3, #96] @ 0x60 - 80038d0: 2202 movs r2, #2 - 80038d2: 4013 ands r3, r2 - 80038d4: d0f1 beq.n 80038ba - 80038d6: e018 b.n 800390a + 8002f20: 4b1d ldr r3, [pc, #116] @ (8002f98 ) + 8002f22: 6e1b ldr r3, [r3, #96] @ 0x60 + 8002f24: 2202 movs r2, #2 + 8002f26: 4013 ands r3, r2 + 8002f28: d0f1 beq.n 8002f0e + 8002f2a: e018 b.n 8002f5e } } else { /* Disable the Internal Low Speed oscillator (LSI). */ __HAL_RCC_LSI_DISABLE(); - 80038d8: 4b1a ldr r3, [pc, #104] @ (8003944 ) - 80038da: 6e1a ldr r2, [r3, #96] @ 0x60 - 80038dc: 4b19 ldr r3, [pc, #100] @ (8003944 ) - 80038de: 2101 movs r1, #1 - 80038e0: 438a bics r2, r1 - 80038e2: 661a str r2, [r3, #96] @ 0x60 + 8002f2c: 4b1a ldr r3, [pc, #104] @ (8002f98 ) + 8002f2e: 6e1a ldr r2, [r3, #96] @ 0x60 + 8002f30: 4b19 ldr r3, [pc, #100] @ (8002f98 ) + 8002f32: 2101 movs r1, #1 + 8002f34: 438a bics r2, r1 + 8002f36: 661a str r2, [r3, #96] @ 0x60 /* Get Start Tick*/ tickstart = HAL_GetTick(); - 80038e4: f7fd fe22 bl 800152c - 80038e8: 0003 movs r3, r0 - 80038ea: 613b str r3, [r7, #16] + 8002f38: f7fe fb98 bl 800166c + 8002f3c: 0003 movs r3, r0 + 8002f3e: 613b str r3, [r7, #16] /* Wait till LSI is disabled */ while (READ_BIT(RCC->CSR, RCC_CSR_LSIRDY) != 0U) - 80038ec: e008 b.n 8003900 + 8002f40: e008 b.n 8002f54 { if ((HAL_GetTick() - tickstart) > LSI_TIMEOUT_VALUE) - 80038ee: f7fd fe1d bl 800152c - 80038f2: 0002 movs r2, r0 - 80038f4: 693b ldr r3, [r7, #16] - 80038f6: 1ad3 subs r3, r2, r3 - 80038f8: 2b02 cmp r3, #2 - 80038fa: d901 bls.n 8003900 + 8002f42: f7fe fb93 bl 800166c + 8002f46: 0002 movs r2, r0 + 8002f48: 693b ldr r3, [r7, #16] + 8002f4a: 1ad3 subs r3, r2, r3 + 8002f4c: 2b02 cmp r3, #2 + 8002f4e: d901 bls.n 8002f54 { return HAL_TIMEOUT; - 80038fc: 2303 movs r3, #3 - 80038fe: e188 b.n 8003c12 + 8002f50: 2303 movs r3, #3 + 8002f52: e188 b.n 8003266 while (READ_BIT(RCC->CSR, RCC_CSR_LSIRDY) != 0U) - 8003900: 4b10 ldr r3, [pc, #64] @ (8003944 ) - 8003902: 6e1b ldr r3, [r3, #96] @ 0x60 - 8003904: 2202 movs r2, #2 - 8003906: 4013 ands r3, r2 - 8003908: d1f1 bne.n 80038ee + 8002f54: 4b10 ldr r3, [pc, #64] @ (8002f98 ) + 8002f56: 6e1b ldr r3, [r3, #96] @ 0x60 + 8002f58: 2202 movs r2, #2 + 8002f5a: 4013 ands r3, r2 + 8002f5c: d1f1 bne.n 8002f42 } } } } /*------------------------------ LSE Configuration -------------------------*/ if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSE) == RCC_OSCILLATORTYPE_LSE) - 800390a: 687b ldr r3, [r7, #4] - 800390c: 681b ldr r3, [r3, #0] - 800390e: 2204 movs r2, #4 - 8003910: 4013 ands r3, r2 - 8003912: d100 bne.n 8003916 - 8003914: e0c6 b.n 8003aa4 + 8002f5e: 687b ldr r3, [r7, #4] + 8002f60: 681b ldr r3, [r3, #0] + 8002f62: 2204 movs r2, #4 + 8002f64: 4013 ands r3, r2 + 8002f66: d100 bne.n 8002f6a + 8002f68: e0c6 b.n 80030f8 { FlagStatus pwrclkchanged = RESET; - 8003916: 231f movs r3, #31 - 8003918: 18fb adds r3, r7, r3 - 800391a: 2200 movs r2, #0 - 800391c: 701a strb r2, [r3, #0] + 8002f6a: 231f movs r3, #31 + 8002f6c: 18fb adds r3, r7, r3 + 8002f6e: 2200 movs r2, #0 + 8002f70: 701a strb r2, [r3, #0] /* Check the parameters */ assert_param(IS_RCC_LSE(RCC_OscInitStruct->LSEState)); /* When the LSE is used as system clock, it is not allowed disable it */ if (__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_LSE) - 800391e: 4b09 ldr r3, [pc, #36] @ (8003944 ) - 8003920: 689b ldr r3, [r3, #8] - 8003922: 2238 movs r2, #56 @ 0x38 - 8003924: 4013 ands r3, r2 - 8003926: 2b20 cmp r3, #32 - 8003928: d11e bne.n 8003968 + 8002f72: 4b09 ldr r3, [pc, #36] @ (8002f98 ) + 8002f74: 689b ldr r3, [r3, #8] + 8002f76: 2238 movs r2, #56 @ 0x38 + 8002f78: 4013 ands r3, r2 + 8002f7a: 2b20 cmp r3, #32 + 8002f7c: d11e bne.n 8002fbc { if ((((RCC->BDCR) & RCC_BDCR_LSERDY) != 0U) && (RCC_OscInitStruct->LSEState == RCC_LSE_OFF)) - 800392a: 4b06 ldr r3, [pc, #24] @ (8003944 ) - 800392c: 6ddb ldr r3, [r3, #92] @ 0x5c - 800392e: 2202 movs r2, #2 - 8003930: 4013 ands r3, r2 - 8003932: d100 bne.n 8003936 - 8003934: e0b6 b.n 8003aa4 - 8003936: 687b ldr r3, [r7, #4] - 8003938: 689b ldr r3, [r3, #8] - 800393a: 2b00 cmp r3, #0 - 800393c: d000 beq.n 8003940 - 800393e: e0b1 b.n 8003aa4 + 8002f7e: 4b06 ldr r3, [pc, #24] @ (8002f98 ) + 8002f80: 6ddb ldr r3, [r3, #92] @ 0x5c + 8002f82: 2202 movs r2, #2 + 8002f84: 4013 ands r3, r2 + 8002f86: d100 bne.n 8002f8a + 8002f88: e0b6 b.n 80030f8 + 8002f8a: 687b ldr r3, [r7, #4] + 8002f8c: 689b ldr r3, [r3, #8] + 8002f8e: 2b00 cmp r3, #0 + 8002f90: d000 beq.n 8002f94 + 8002f92: e0b1 b.n 80030f8 { return HAL_ERROR; - 8003940: 2301 movs r3, #1 - 8003942: e166 b.n 8003c12 - 8003944: 40021000 .word 0x40021000 - 8003948: fffeffff .word 0xfffeffff - 800394c: fffbffff .word 0xfffbffff - 8003950: ffff80ff .word 0xffff80ff - 8003954: ffffc7ff .word 0xffffc7ff - 8003958: 00f42400 .word 0x00f42400 - 800395c: 20000000 .word 0x20000000 - 8003960: 20000004 .word 0x20000004 - 8003964: fffffeff .word 0xfffffeff + 8002f94: 2301 movs r3, #1 + 8002f96: e166 b.n 8003266 + 8002f98: 40021000 .word 0x40021000 + 8002f9c: fffeffff .word 0xfffeffff + 8002fa0: fffbffff .word 0xfffbffff + 8002fa4: ffff80ff .word 0xffff80ff + 8002fa8: ffffc7ff .word 0xffffc7ff + 8002fac: 00f42400 .word 0x00f42400 + 8002fb0: 20000000 .word 0x20000000 + 8002fb4: 20000004 .word 0x20000004 + 8002fb8: fffffeff .word 0xfffffeff } else { /* Update LSE configuration in Backup Domain control register */ /* Requires to enable write access to Backup Domain of necessary */ if (__HAL_RCC_PWR_IS_CLK_DISABLED() != 0U) - 8003968: 4bac ldr r3, [pc, #688] @ (8003c1c ) - 800396a: 6bda ldr r2, [r3, #60] @ 0x3c - 800396c: 2380 movs r3, #128 @ 0x80 - 800396e: 055b lsls r3, r3, #21 - 8003970: 4013 ands r3, r2 - 8003972: d101 bne.n 8003978 - 8003974: 2301 movs r3, #1 - 8003976: e000 b.n 800397a - 8003978: 2300 movs r3, #0 - 800397a: 2b00 cmp r3, #0 - 800397c: d011 beq.n 80039a2 + 8002fbc: 4bac ldr r3, [pc, #688] @ (8003270 ) + 8002fbe: 6bda ldr r2, [r3, #60] @ 0x3c + 8002fc0: 2380 movs r3, #128 @ 0x80 + 8002fc2: 055b lsls r3, r3, #21 + 8002fc4: 4013 ands r3, r2 + 8002fc6: d101 bne.n 8002fcc + 8002fc8: 2301 movs r3, #1 + 8002fca: e000 b.n 8002fce + 8002fcc: 2300 movs r3, #0 + 8002fce: 2b00 cmp r3, #0 + 8002fd0: d011 beq.n 8002ff6 { __HAL_RCC_PWR_CLK_ENABLE(); - 800397e: 4ba7 ldr r3, [pc, #668] @ (8003c1c ) - 8003980: 6bda ldr r2, [r3, #60] @ 0x3c - 8003982: 4ba6 ldr r3, [pc, #664] @ (8003c1c ) - 8003984: 2180 movs r1, #128 @ 0x80 - 8003986: 0549 lsls r1, r1, #21 - 8003988: 430a orrs r2, r1 - 800398a: 63da str r2, [r3, #60] @ 0x3c - 800398c: 4ba3 ldr r3, [pc, #652] @ (8003c1c ) - 800398e: 6bda ldr r2, [r3, #60] @ 0x3c - 8003990: 2380 movs r3, #128 @ 0x80 - 8003992: 055b lsls r3, r3, #21 - 8003994: 4013 ands r3, r2 - 8003996: 60fb str r3, [r7, #12] - 8003998: 68fb ldr r3, [r7, #12] + 8002fd2: 4ba7 ldr r3, [pc, #668] @ (8003270 ) + 8002fd4: 6bda ldr r2, [r3, #60] @ 0x3c + 8002fd6: 4ba6 ldr r3, [pc, #664] @ (8003270 ) + 8002fd8: 2180 movs r1, #128 @ 0x80 + 8002fda: 0549 lsls r1, r1, #21 + 8002fdc: 430a orrs r2, r1 + 8002fde: 63da str r2, [r3, #60] @ 0x3c + 8002fe0: 4ba3 ldr r3, [pc, #652] @ (8003270 ) + 8002fe2: 6bda ldr r2, [r3, #60] @ 0x3c + 8002fe4: 2380 movs r3, #128 @ 0x80 + 8002fe6: 055b lsls r3, r3, #21 + 8002fe8: 4013 ands r3, r2 + 8002fea: 60fb str r3, [r7, #12] + 8002fec: 68fb ldr r3, [r7, #12] pwrclkchanged = SET; - 800399a: 231f movs r3, #31 - 800399c: 18fb adds r3, r7, r3 - 800399e: 2201 movs r2, #1 - 80039a0: 701a strb r2, [r3, #0] + 8002fee: 231f movs r3, #31 + 8002ff0: 18fb adds r3, r7, r3 + 8002ff2: 2201 movs r2, #1 + 8002ff4: 701a strb r2, [r3, #0] } if (HAL_IS_BIT_CLR(PWR->CR1, PWR_CR1_DBP)) - 80039a2: 4b9f ldr r3, [pc, #636] @ (8003c20 ) - 80039a4: 681a ldr r2, [r3, #0] - 80039a6: 2380 movs r3, #128 @ 0x80 - 80039a8: 005b lsls r3, r3, #1 - 80039aa: 4013 ands r3, r2 - 80039ac: d11a bne.n 80039e4 + 8002ff6: 4b9f ldr r3, [pc, #636] @ (8003274 ) + 8002ff8: 681a ldr r2, [r3, #0] + 8002ffa: 2380 movs r3, #128 @ 0x80 + 8002ffc: 005b lsls r3, r3, #1 + 8002ffe: 4013 ands r3, r2 + 8003000: d11a bne.n 8003038 { /* Enable write access to Backup domain */ SET_BIT(PWR->CR1, PWR_CR1_DBP); - 80039ae: 4b9c ldr r3, [pc, #624] @ (8003c20 ) - 80039b0: 681a ldr r2, [r3, #0] - 80039b2: 4b9b ldr r3, [pc, #620] @ (8003c20 ) - 80039b4: 2180 movs r1, #128 @ 0x80 - 80039b6: 0049 lsls r1, r1, #1 - 80039b8: 430a orrs r2, r1 - 80039ba: 601a str r2, [r3, #0] + 8003002: 4b9c ldr r3, [pc, #624] @ (8003274 ) + 8003004: 681a ldr r2, [r3, #0] + 8003006: 4b9b ldr r3, [pc, #620] @ (8003274 ) + 8003008: 2180 movs r1, #128 @ 0x80 + 800300a: 0049 lsls r1, r1, #1 + 800300c: 430a orrs r2, r1 + 800300e: 601a str r2, [r3, #0] /* Wait for Backup domain Write protection disable */ tickstart = HAL_GetTick(); - 80039bc: f7fd fdb6 bl 800152c - 80039c0: 0003 movs r3, r0 - 80039c2: 613b str r3, [r7, #16] + 8003010: f7fe fb2c bl 800166c + 8003014: 0003 movs r3, r0 + 8003016: 613b str r3, [r7, #16] while (HAL_IS_BIT_CLR(PWR->CR1, PWR_CR1_DBP)) - 80039c4: e008 b.n 80039d8 + 8003018: e008 b.n 800302c { if ((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE) - 80039c6: f7fd fdb1 bl 800152c - 80039ca: 0002 movs r2, r0 - 80039cc: 693b ldr r3, [r7, #16] - 80039ce: 1ad3 subs r3, r2, r3 - 80039d0: 2b02 cmp r3, #2 - 80039d2: d901 bls.n 80039d8 + 800301a: f7fe fb27 bl 800166c + 800301e: 0002 movs r2, r0 + 8003020: 693b ldr r3, [r7, #16] + 8003022: 1ad3 subs r3, r2, r3 + 8003024: 2b02 cmp r3, #2 + 8003026: d901 bls.n 800302c { return HAL_TIMEOUT; - 80039d4: 2303 movs r3, #3 - 80039d6: e11c b.n 8003c12 + 8003028: 2303 movs r3, #3 + 800302a: e11c b.n 8003266 while (HAL_IS_BIT_CLR(PWR->CR1, PWR_CR1_DBP)) - 80039d8: 4b91 ldr r3, [pc, #580] @ (8003c20 ) - 80039da: 681a ldr r2, [r3, #0] - 80039dc: 2380 movs r3, #128 @ 0x80 - 80039de: 005b lsls r3, r3, #1 - 80039e0: 4013 ands r3, r2 - 80039e2: d0f0 beq.n 80039c6 + 800302c: 4b91 ldr r3, [pc, #580] @ (8003274 ) + 800302e: 681a ldr r2, [r3, #0] + 8003030: 2380 movs r3, #128 @ 0x80 + 8003032: 005b lsls r3, r3, #1 + 8003034: 4013 ands r3, r2 + 8003036: d0f0 beq.n 800301a } } } /* Set the new LSE configuration -----------------------------------------*/ __HAL_RCC_LSE_CONFIG(RCC_OscInitStruct->LSEState); - 80039e4: 687b ldr r3, [r7, #4] - 80039e6: 689b ldr r3, [r3, #8] - 80039e8: 2b01 cmp r3, #1 - 80039ea: d106 bne.n 80039fa - 80039ec: 4b8b ldr r3, [pc, #556] @ (8003c1c ) - 80039ee: 6dda ldr r2, [r3, #92] @ 0x5c - 80039f0: 4b8a ldr r3, [pc, #552] @ (8003c1c ) - 80039f2: 2101 movs r1, #1 - 80039f4: 430a orrs r2, r1 - 80039f6: 65da str r2, [r3, #92] @ 0x5c - 80039f8: e01c b.n 8003a34 - 80039fa: 687b ldr r3, [r7, #4] - 80039fc: 689b ldr r3, [r3, #8] - 80039fe: 2b05 cmp r3, #5 - 8003a00: d10c bne.n 8003a1c - 8003a02: 4b86 ldr r3, [pc, #536] @ (8003c1c ) - 8003a04: 6dda ldr r2, [r3, #92] @ 0x5c - 8003a06: 4b85 ldr r3, [pc, #532] @ (8003c1c ) - 8003a08: 2104 movs r1, #4 - 8003a0a: 430a orrs r2, r1 - 8003a0c: 65da str r2, [r3, #92] @ 0x5c - 8003a0e: 4b83 ldr r3, [pc, #524] @ (8003c1c ) - 8003a10: 6dda ldr r2, [r3, #92] @ 0x5c - 8003a12: 4b82 ldr r3, [pc, #520] @ (8003c1c ) - 8003a14: 2101 movs r1, #1 - 8003a16: 430a orrs r2, r1 - 8003a18: 65da str r2, [r3, #92] @ 0x5c - 8003a1a: e00b b.n 8003a34 - 8003a1c: 4b7f ldr r3, [pc, #508] @ (8003c1c ) - 8003a1e: 6dda ldr r2, [r3, #92] @ 0x5c - 8003a20: 4b7e ldr r3, [pc, #504] @ (8003c1c ) - 8003a22: 2101 movs r1, #1 - 8003a24: 438a bics r2, r1 - 8003a26: 65da str r2, [r3, #92] @ 0x5c - 8003a28: 4b7c ldr r3, [pc, #496] @ (8003c1c ) - 8003a2a: 6dda ldr r2, [r3, #92] @ 0x5c - 8003a2c: 4b7b ldr r3, [pc, #492] @ (8003c1c ) - 8003a2e: 2104 movs r1, #4 - 8003a30: 438a bics r2, r1 - 8003a32: 65da str r2, [r3, #92] @ 0x5c + 8003038: 687b ldr r3, [r7, #4] + 800303a: 689b ldr r3, [r3, #8] + 800303c: 2b01 cmp r3, #1 + 800303e: d106 bne.n 800304e + 8003040: 4b8b ldr r3, [pc, #556] @ (8003270 ) + 8003042: 6dda ldr r2, [r3, #92] @ 0x5c + 8003044: 4b8a ldr r3, [pc, #552] @ (8003270 ) + 8003046: 2101 movs r1, #1 + 8003048: 430a orrs r2, r1 + 800304a: 65da str r2, [r3, #92] @ 0x5c + 800304c: e01c b.n 8003088 + 800304e: 687b ldr r3, [r7, #4] + 8003050: 689b ldr r3, [r3, #8] + 8003052: 2b05 cmp r3, #5 + 8003054: d10c bne.n 8003070 + 8003056: 4b86 ldr r3, [pc, #536] @ (8003270 ) + 8003058: 6dda ldr r2, [r3, #92] @ 0x5c + 800305a: 4b85 ldr r3, [pc, #532] @ (8003270 ) + 800305c: 2104 movs r1, #4 + 800305e: 430a orrs r2, r1 + 8003060: 65da str r2, [r3, #92] @ 0x5c + 8003062: 4b83 ldr r3, [pc, #524] @ (8003270 ) + 8003064: 6dda ldr r2, [r3, #92] @ 0x5c + 8003066: 4b82 ldr r3, [pc, #520] @ (8003270 ) + 8003068: 2101 movs r1, #1 + 800306a: 430a orrs r2, r1 + 800306c: 65da str r2, [r3, #92] @ 0x5c + 800306e: e00b b.n 8003088 + 8003070: 4b7f ldr r3, [pc, #508] @ (8003270 ) + 8003072: 6dda ldr r2, [r3, #92] @ 0x5c + 8003074: 4b7e ldr r3, [pc, #504] @ (8003270 ) + 8003076: 2101 movs r1, #1 + 8003078: 438a bics r2, r1 + 800307a: 65da str r2, [r3, #92] @ 0x5c + 800307c: 4b7c ldr r3, [pc, #496] @ (8003270 ) + 800307e: 6dda ldr r2, [r3, #92] @ 0x5c + 8003080: 4b7b ldr r3, [pc, #492] @ (8003270 ) + 8003082: 2104 movs r1, #4 + 8003084: 438a bics r2, r1 + 8003086: 65da str r2, [r3, #92] @ 0x5c /* Check the LSE State */ if (RCC_OscInitStruct->LSEState != RCC_LSE_OFF) - 8003a34: 687b ldr r3, [r7, #4] - 8003a36: 689b ldr r3, [r3, #8] - 8003a38: 2b00 cmp r3, #0 - 8003a3a: d014 beq.n 8003a66 + 8003088: 687b ldr r3, [r7, #4] + 800308a: 689b ldr r3, [r3, #8] + 800308c: 2b00 cmp r3, #0 + 800308e: d014 beq.n 80030ba { /* Get Start Tick*/ tickstart = HAL_GetTick(); - 8003a3c: f7fd fd76 bl 800152c - 8003a40: 0003 movs r3, r0 - 8003a42: 613b str r3, [r7, #16] + 8003090: f7fe faec bl 800166c + 8003094: 0003 movs r3, r0 + 8003096: 613b str r3, [r7, #16] /* Wait till LSE is ready */ while (READ_BIT(RCC->BDCR, RCC_BDCR_LSERDY) == 0U) - 8003a44: e009 b.n 8003a5a + 8003098: e009 b.n 80030ae { if ((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE) - 8003a46: f7fd fd71 bl 800152c - 8003a4a: 0002 movs r2, r0 - 8003a4c: 693b ldr r3, [r7, #16] - 8003a4e: 1ad3 subs r3, r2, r3 - 8003a50: 4a74 ldr r2, [pc, #464] @ (8003c24 ) - 8003a52: 4293 cmp r3, r2 - 8003a54: d901 bls.n 8003a5a + 800309a: f7fe fae7 bl 800166c + 800309e: 0002 movs r2, r0 + 80030a0: 693b ldr r3, [r7, #16] + 80030a2: 1ad3 subs r3, r2, r3 + 80030a4: 4a74 ldr r2, [pc, #464] @ (8003278 ) + 80030a6: 4293 cmp r3, r2 + 80030a8: d901 bls.n 80030ae { return HAL_TIMEOUT; - 8003a56: 2303 movs r3, #3 - 8003a58: e0db b.n 8003c12 + 80030aa: 2303 movs r3, #3 + 80030ac: e0db b.n 8003266 while (READ_BIT(RCC->BDCR, RCC_BDCR_LSERDY) == 0U) - 8003a5a: 4b70 ldr r3, [pc, #448] @ (8003c1c ) - 8003a5c: 6ddb ldr r3, [r3, #92] @ 0x5c - 8003a5e: 2202 movs r2, #2 - 8003a60: 4013 ands r3, r2 - 8003a62: d0f0 beq.n 8003a46 - 8003a64: e013 b.n 8003a8e + 80030ae: 4b70 ldr r3, [pc, #448] @ (8003270 ) + 80030b0: 6ddb ldr r3, [r3, #92] @ 0x5c + 80030b2: 2202 movs r2, #2 + 80030b4: 4013 ands r3, r2 + 80030b6: d0f0 beq.n 800309a + 80030b8: e013 b.n 80030e2 } } else { /* Get Start Tick*/ tickstart = HAL_GetTick(); - 8003a66: f7fd fd61 bl 800152c - 8003a6a: 0003 movs r3, r0 - 8003a6c: 613b str r3, [r7, #16] + 80030ba: f7fe fad7 bl 800166c + 80030be: 0003 movs r3, r0 + 80030c0: 613b str r3, [r7, #16] /* Wait till LSE is disabled */ while (READ_BIT(RCC->BDCR, RCC_BDCR_LSERDY) != 0U) - 8003a6e: e009 b.n 8003a84 + 80030c2: e009 b.n 80030d8 { if ((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE) - 8003a70: f7fd fd5c bl 800152c - 8003a74: 0002 movs r2, r0 - 8003a76: 693b ldr r3, [r7, #16] - 8003a78: 1ad3 subs r3, r2, r3 - 8003a7a: 4a6a ldr r2, [pc, #424] @ (8003c24 ) - 8003a7c: 4293 cmp r3, r2 - 8003a7e: d901 bls.n 8003a84 + 80030c4: f7fe fad2 bl 800166c + 80030c8: 0002 movs r2, r0 + 80030ca: 693b ldr r3, [r7, #16] + 80030cc: 1ad3 subs r3, r2, r3 + 80030ce: 4a6a ldr r2, [pc, #424] @ (8003278 ) + 80030d0: 4293 cmp r3, r2 + 80030d2: d901 bls.n 80030d8 { return HAL_TIMEOUT; - 8003a80: 2303 movs r3, #3 - 8003a82: e0c6 b.n 8003c12 + 80030d4: 2303 movs r3, #3 + 80030d6: e0c6 b.n 8003266 while (READ_BIT(RCC->BDCR, RCC_BDCR_LSERDY) != 0U) - 8003a84: 4b65 ldr r3, [pc, #404] @ (8003c1c ) - 8003a86: 6ddb ldr r3, [r3, #92] @ 0x5c - 8003a88: 2202 movs r2, #2 - 8003a8a: 4013 ands r3, r2 - 8003a8c: d1f0 bne.n 8003a70 + 80030d8: 4b65 ldr r3, [pc, #404] @ (8003270 ) + 80030da: 6ddb ldr r3, [r3, #92] @ 0x5c + 80030dc: 2202 movs r2, #2 + 80030de: 4013 ands r3, r2 + 80030e0: d1f0 bne.n 80030c4 } } } /* Restore clock configuration if changed */ if (pwrclkchanged == SET) - 8003a8e: 231f movs r3, #31 - 8003a90: 18fb adds r3, r7, r3 - 8003a92: 781b ldrb r3, [r3, #0] - 8003a94: 2b01 cmp r3, #1 - 8003a96: d105 bne.n 8003aa4 + 80030e2: 231f movs r3, #31 + 80030e4: 18fb adds r3, r7, r3 + 80030e6: 781b ldrb r3, [r3, #0] + 80030e8: 2b01 cmp r3, #1 + 80030ea: d105 bne.n 80030f8 { __HAL_RCC_PWR_CLK_DISABLE(); - 8003a98: 4b60 ldr r3, [pc, #384] @ (8003c1c ) - 8003a9a: 6bda ldr r2, [r3, #60] @ 0x3c - 8003a9c: 4b5f ldr r3, [pc, #380] @ (8003c1c ) - 8003a9e: 4962 ldr r1, [pc, #392] @ (8003c28 ) - 8003aa0: 400a ands r2, r1 - 8003aa2: 63da str r2, [r3, #60] @ 0x3c + 80030ec: 4b60 ldr r3, [pc, #384] @ (8003270 ) + 80030ee: 6bda ldr r2, [r3, #60] @ 0x3c + 80030f0: 4b5f ldr r3, [pc, #380] @ (8003270 ) + 80030f2: 4962 ldr r1, [pc, #392] @ (800327c ) + 80030f4: 400a ands r2, r1 + 80030f6: 63da str r2, [r3, #60] @ 0x3c #endif /* RCC_HSI48_SUPPORT */ /*-------------------------------- PLL Configuration -----------------------*/ /* Check the parameters */ assert_param(IS_RCC_PLL(RCC_OscInitStruct->PLL.PLLState)); if (RCC_OscInitStruct->PLL.PLLState != RCC_PLL_NONE) - 8003aa4: 687b ldr r3, [r7, #4] - 8003aa6: 69db ldr r3, [r3, #28] - 8003aa8: 2b00 cmp r3, #0 - 8003aaa: d100 bne.n 8003aae - 8003aac: e0b0 b.n 8003c10 + 80030f8: 687b ldr r3, [r7, #4] + 80030fa: 69db ldr r3, [r3, #28] + 80030fc: 2b00 cmp r3, #0 + 80030fe: d100 bne.n 8003102 + 8003100: e0b0 b.n 8003264 { /* Check if the PLL is used as system clock or not */ if (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_PLLCLK) - 8003aae: 4b5b ldr r3, [pc, #364] @ (8003c1c ) - 8003ab0: 689b ldr r3, [r3, #8] - 8003ab2: 2238 movs r2, #56 @ 0x38 - 8003ab4: 4013 ands r3, r2 - 8003ab6: 2b10 cmp r3, #16 - 8003ab8: d100 bne.n 8003abc - 8003aba: e078 b.n 8003bae + 8003102: 4b5b ldr r3, [pc, #364] @ (8003270 ) + 8003104: 689b ldr r3, [r3, #8] + 8003106: 2238 movs r2, #56 @ 0x38 + 8003108: 4013 ands r3, r2 + 800310a: 2b10 cmp r3, #16 + 800310c: d100 bne.n 8003110 + 800310e: e078 b.n 8003202 { if (RCC_OscInitStruct->PLL.PLLState == RCC_PLL_ON) - 8003abc: 687b ldr r3, [r7, #4] - 8003abe: 69db ldr r3, [r3, #28] - 8003ac0: 2b02 cmp r3, #2 - 8003ac2: d153 bne.n 8003b6c + 8003110: 687b ldr r3, [r7, #4] + 8003112: 69db ldr r3, [r3, #28] + 8003114: 2b02 cmp r3, #2 + 8003116: d153 bne.n 80031c0 assert_param(IS_RCC_PLLQ_VALUE(RCC_OscInitStruct->PLL.PLLQ)); #endif /* RCC_PLLQ_SUPPORT */ assert_param(IS_RCC_PLLR_VALUE(RCC_OscInitStruct->PLL.PLLR)); /* Disable the main PLL. */ __HAL_RCC_PLL_DISABLE(); - 8003ac4: 4b55 ldr r3, [pc, #340] @ (8003c1c ) - 8003ac6: 681a ldr r2, [r3, #0] - 8003ac8: 4b54 ldr r3, [pc, #336] @ (8003c1c ) - 8003aca: 4958 ldr r1, [pc, #352] @ (8003c2c ) - 8003acc: 400a ands r2, r1 - 8003ace: 601a str r2, [r3, #0] + 8003118: 4b55 ldr r3, [pc, #340] @ (8003270 ) + 800311a: 681a ldr r2, [r3, #0] + 800311c: 4b54 ldr r3, [pc, #336] @ (8003270 ) + 800311e: 4958 ldr r1, [pc, #352] @ (8003280 ) + 8003120: 400a ands r2, r1 + 8003122: 601a str r2, [r3, #0] /* Get Start Tick*/ tickstart = HAL_GetTick(); - 8003ad0: f7fd fd2c bl 800152c - 8003ad4: 0003 movs r3, r0 - 8003ad6: 613b str r3, [r7, #16] + 8003124: f7fe faa2 bl 800166c + 8003128: 0003 movs r3, r0 + 800312a: 613b str r3, [r7, #16] /* Wait till PLL is ready */ while (READ_BIT(RCC->CR, RCC_CR_PLLRDY) != 0U) - 8003ad8: e008 b.n 8003aec + 800312c: e008 b.n 8003140 { if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE) - 8003ada: f7fd fd27 bl 800152c - 8003ade: 0002 movs r2, r0 - 8003ae0: 693b ldr r3, [r7, #16] - 8003ae2: 1ad3 subs r3, r2, r3 - 8003ae4: 2b02 cmp r3, #2 - 8003ae6: d901 bls.n 8003aec + 800312e: f7fe fa9d bl 800166c + 8003132: 0002 movs r2, r0 + 8003134: 693b ldr r3, [r7, #16] + 8003136: 1ad3 subs r3, r2, r3 + 8003138: 2b02 cmp r3, #2 + 800313a: d901 bls.n 8003140 { return HAL_TIMEOUT; - 8003ae8: 2303 movs r3, #3 - 8003aea: e092 b.n 8003c12 + 800313c: 2303 movs r3, #3 + 800313e: e092 b.n 8003266 while (READ_BIT(RCC->CR, RCC_CR_PLLRDY) != 0U) - 8003aec: 4b4b ldr r3, [pc, #300] @ (8003c1c ) - 8003aee: 681a ldr r2, [r3, #0] - 8003af0: 2380 movs r3, #128 @ 0x80 - 8003af2: 049b lsls r3, r3, #18 - 8003af4: 4013 ands r3, r2 - 8003af6: d1f0 bne.n 8003ada + 8003140: 4b4b ldr r3, [pc, #300] @ (8003270 ) + 8003142: 681a ldr r2, [r3, #0] + 8003144: 2380 movs r3, #128 @ 0x80 + 8003146: 049b lsls r3, r3, #18 + 8003148: 4013 ands r3, r2 + 800314a: d1f0 bne.n 800312e RCC_OscInitStruct->PLL.PLLN, RCC_OscInitStruct->PLL.PLLP, RCC_OscInitStruct->PLL.PLLQ, RCC_OscInitStruct->PLL.PLLR); #else /* !RCC_PLLQ_SUPPORT */ __HAL_RCC_PLL_CONFIG(RCC_OscInitStruct->PLL.PLLSource, - 8003af8: 4b48 ldr r3, [pc, #288] @ (8003c1c ) - 8003afa: 68db ldr r3, [r3, #12] - 8003afc: 4a4c ldr r2, [pc, #304] @ (8003c30 ) - 8003afe: 4013 ands r3, r2 - 8003b00: 0019 movs r1, r3 - 8003b02: 687b ldr r3, [r7, #4] - 8003b04: 6a1a ldr r2, [r3, #32] - 8003b06: 687b ldr r3, [r7, #4] - 8003b08: 6a5b ldr r3, [r3, #36] @ 0x24 - 8003b0a: 431a orrs r2, r3 - 8003b0c: 687b ldr r3, [r7, #4] - 8003b0e: 6a9b ldr r3, [r3, #40] @ 0x28 - 8003b10: 021b lsls r3, r3, #8 - 8003b12: 431a orrs r2, r3 - 8003b14: 687b ldr r3, [r7, #4] - 8003b16: 6adb ldr r3, [r3, #44] @ 0x2c - 8003b18: 431a orrs r2, r3 - 8003b1a: 687b ldr r3, [r7, #4] - 8003b1c: 6b1b ldr r3, [r3, #48] @ 0x30 - 8003b1e: 431a orrs r2, r3 - 8003b20: 4b3e ldr r3, [pc, #248] @ (8003c1c ) - 8003b22: 430a orrs r2, r1 - 8003b24: 60da str r2, [r3, #12] + 800314c: 4b48 ldr r3, [pc, #288] @ (8003270 ) + 800314e: 68db ldr r3, [r3, #12] + 8003150: 4a4c ldr r2, [pc, #304] @ (8003284 ) + 8003152: 4013 ands r3, r2 + 8003154: 0019 movs r1, r3 + 8003156: 687b ldr r3, [r7, #4] + 8003158: 6a1a ldr r2, [r3, #32] + 800315a: 687b ldr r3, [r7, #4] + 800315c: 6a5b ldr r3, [r3, #36] @ 0x24 + 800315e: 431a orrs r2, r3 + 8003160: 687b ldr r3, [r7, #4] + 8003162: 6a9b ldr r3, [r3, #40] @ 0x28 + 8003164: 021b lsls r3, r3, #8 + 8003166: 431a orrs r2, r3 + 8003168: 687b ldr r3, [r7, #4] + 800316a: 6adb ldr r3, [r3, #44] @ 0x2c + 800316c: 431a orrs r2, r3 + 800316e: 687b ldr r3, [r7, #4] + 8003170: 6b1b ldr r3, [r3, #48] @ 0x30 + 8003172: 431a orrs r2, r3 + 8003174: 4b3e ldr r3, [pc, #248] @ (8003270 ) + 8003176: 430a orrs r2, r1 + 8003178: 60da str r2, [r3, #12] RCC_OscInitStruct->PLL.PLLP, RCC_OscInitStruct->PLL.PLLR); #endif /* RCC_PLLQ_SUPPORT */ /* Enable the main PLL. */ __HAL_RCC_PLL_ENABLE(); - 8003b26: 4b3d ldr r3, [pc, #244] @ (8003c1c ) - 8003b28: 681a ldr r2, [r3, #0] - 8003b2a: 4b3c ldr r3, [pc, #240] @ (8003c1c ) - 8003b2c: 2180 movs r1, #128 @ 0x80 - 8003b2e: 0449 lsls r1, r1, #17 - 8003b30: 430a orrs r2, r1 - 8003b32: 601a str r2, [r3, #0] + 800317a: 4b3d ldr r3, [pc, #244] @ (8003270 ) + 800317c: 681a ldr r2, [r3, #0] + 800317e: 4b3c ldr r3, [pc, #240] @ (8003270 ) + 8003180: 2180 movs r1, #128 @ 0x80 + 8003182: 0449 lsls r1, r1, #17 + 8003184: 430a orrs r2, r1 + 8003186: 601a str r2, [r3, #0] /* Enable PLLR Clock output. */ __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLLRCLK); - 8003b34: 4b39 ldr r3, [pc, #228] @ (8003c1c ) - 8003b36: 68da ldr r2, [r3, #12] - 8003b38: 4b38 ldr r3, [pc, #224] @ (8003c1c ) - 8003b3a: 2180 movs r1, #128 @ 0x80 - 8003b3c: 0549 lsls r1, r1, #21 - 8003b3e: 430a orrs r2, r1 - 8003b40: 60da str r2, [r3, #12] + 8003188: 4b39 ldr r3, [pc, #228] @ (8003270 ) + 800318a: 68da ldr r2, [r3, #12] + 800318c: 4b38 ldr r3, [pc, #224] @ (8003270 ) + 800318e: 2180 movs r1, #128 @ 0x80 + 8003190: 0549 lsls r1, r1, #21 + 8003192: 430a orrs r2, r1 + 8003194: 60da str r2, [r3, #12] /* Get Start Tick*/ tickstart = HAL_GetTick(); - 8003b42: f7fd fcf3 bl 800152c - 8003b46: 0003 movs r3, r0 - 8003b48: 613b str r3, [r7, #16] + 8003196: f7fe fa69 bl 800166c + 800319a: 0003 movs r3, r0 + 800319c: 613b str r3, [r7, #16] /* Wait till PLL is ready */ while (READ_BIT(RCC->CR, RCC_CR_PLLRDY) == 0U) - 8003b4a: e008 b.n 8003b5e + 800319e: e008 b.n 80031b2 { if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE) - 8003b4c: f7fd fcee bl 800152c - 8003b50: 0002 movs r2, r0 - 8003b52: 693b ldr r3, [r7, #16] - 8003b54: 1ad3 subs r3, r2, r3 - 8003b56: 2b02 cmp r3, #2 - 8003b58: d901 bls.n 8003b5e + 80031a0: f7fe fa64 bl 800166c + 80031a4: 0002 movs r2, r0 + 80031a6: 693b ldr r3, [r7, #16] + 80031a8: 1ad3 subs r3, r2, r3 + 80031aa: 2b02 cmp r3, #2 + 80031ac: d901 bls.n 80031b2 { return HAL_TIMEOUT; - 8003b5a: 2303 movs r3, #3 - 8003b5c: e059 b.n 8003c12 + 80031ae: 2303 movs r3, #3 + 80031b0: e059 b.n 8003266 while (READ_BIT(RCC->CR, RCC_CR_PLLRDY) == 0U) - 8003b5e: 4b2f ldr r3, [pc, #188] @ (8003c1c ) - 8003b60: 681a ldr r2, [r3, #0] - 8003b62: 2380 movs r3, #128 @ 0x80 - 8003b64: 049b lsls r3, r3, #18 - 8003b66: 4013 ands r3, r2 - 8003b68: d0f0 beq.n 8003b4c - 8003b6a: e051 b.n 8003c10 + 80031b2: 4b2f ldr r3, [pc, #188] @ (8003270 ) + 80031b4: 681a ldr r2, [r3, #0] + 80031b6: 2380 movs r3, #128 @ 0x80 + 80031b8: 049b lsls r3, r3, #18 + 80031ba: 4013 ands r3, r2 + 80031bc: d0f0 beq.n 80031a0 + 80031be: e051 b.n 8003264 } } else { /* Disable the main PLL. */ __HAL_RCC_PLL_DISABLE(); - 8003b6c: 4b2b ldr r3, [pc, #172] @ (8003c1c ) - 8003b6e: 681a ldr r2, [r3, #0] - 8003b70: 4b2a ldr r3, [pc, #168] @ (8003c1c ) - 8003b72: 492e ldr r1, [pc, #184] @ (8003c2c ) - 8003b74: 400a ands r2, r1 - 8003b76: 601a str r2, [r3, #0] + 80031c0: 4b2b ldr r3, [pc, #172] @ (8003270 ) + 80031c2: 681a ldr r2, [r3, #0] + 80031c4: 4b2a ldr r3, [pc, #168] @ (8003270 ) + 80031c6: 492e ldr r1, [pc, #184] @ (8003280 ) + 80031c8: 400a ands r2, r1 + 80031ca: 601a str r2, [r3, #0] /* Get Start Tick*/ tickstart = HAL_GetTick(); - 8003b78: f7fd fcd8 bl 800152c - 8003b7c: 0003 movs r3, r0 - 8003b7e: 613b str r3, [r7, #16] + 80031cc: f7fe fa4e bl 800166c + 80031d0: 0003 movs r3, r0 + 80031d2: 613b str r3, [r7, #16] /* Wait till PLL is disabled */ while (READ_BIT(RCC->CR, RCC_CR_PLLRDY) != 0U) - 8003b80: e008 b.n 8003b94 + 80031d4: e008 b.n 80031e8 { if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE) - 8003b82: f7fd fcd3 bl 800152c - 8003b86: 0002 movs r2, r0 - 8003b88: 693b ldr r3, [r7, #16] - 8003b8a: 1ad3 subs r3, r2, r3 - 8003b8c: 2b02 cmp r3, #2 - 8003b8e: d901 bls.n 8003b94 + 80031d6: f7fe fa49 bl 800166c + 80031da: 0002 movs r2, r0 + 80031dc: 693b ldr r3, [r7, #16] + 80031de: 1ad3 subs r3, r2, r3 + 80031e0: 2b02 cmp r3, #2 + 80031e2: d901 bls.n 80031e8 { return HAL_TIMEOUT; - 8003b90: 2303 movs r3, #3 - 8003b92: e03e b.n 8003c12 + 80031e4: 2303 movs r3, #3 + 80031e6: e03e b.n 8003266 while (READ_BIT(RCC->CR, RCC_CR_PLLRDY) != 0U) - 8003b94: 4b21 ldr r3, [pc, #132] @ (8003c1c ) - 8003b96: 681a ldr r2, [r3, #0] - 8003b98: 2380 movs r3, #128 @ 0x80 - 8003b9a: 049b lsls r3, r3, #18 - 8003b9c: 4013 ands r3, r2 - 8003b9e: d1f0 bne.n 8003b82 + 80031e8: 4b21 ldr r3, [pc, #132] @ (8003270 ) + 80031ea: 681a ldr r2, [r3, #0] + 80031ec: 2380 movs r3, #128 @ 0x80 + 80031ee: 049b lsls r3, r3, #18 + 80031f0: 4013 ands r3, r2 + 80031f2: d1f0 bne.n 80031d6 } /* Unselect main PLL clock source and disable main PLL outputs to save power */ #if defined(RCC_PLLQ_SUPPORT) RCC->PLLCFGR &= ~(RCC_PLLCFGR_PLLSRC | RCC_PLLCFGR_PLLPEN | RCC_PLLCFGR_PLLQEN | RCC_PLLCFGR_PLLREN); #else RCC->PLLCFGR &= ~(RCC_PLLCFGR_PLLSRC | RCC_PLLCFGR_PLLPEN | RCC_PLLCFGR_PLLREN); - 8003ba0: 4b1e ldr r3, [pc, #120] @ (8003c1c ) - 8003ba2: 68da ldr r2, [r3, #12] - 8003ba4: 4b1d ldr r3, [pc, #116] @ (8003c1c ) - 8003ba6: 4923 ldr r1, [pc, #140] @ (8003c34 ) - 8003ba8: 400a ands r2, r1 - 8003baa: 60da str r2, [r3, #12] - 8003bac: e030 b.n 8003c10 + 80031f4: 4b1e ldr r3, [pc, #120] @ (8003270 ) + 80031f6: 68da ldr r2, [r3, #12] + 80031f8: 4b1d ldr r3, [pc, #116] @ (8003270 ) + 80031fa: 4923 ldr r1, [pc, #140] @ (8003288 ) + 80031fc: 400a ands r2, r1 + 80031fe: 60da str r2, [r3, #12] + 8003200: e030 b.n 8003264 } } else { /* Check if there is a request to disable the PLL used as System clock source */ if ((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_OFF) - 8003bae: 687b ldr r3, [r7, #4] - 8003bb0: 69db ldr r3, [r3, #28] - 8003bb2: 2b01 cmp r3, #1 - 8003bb4: d101 bne.n 8003bba + 8003202: 687b ldr r3, [r7, #4] + 8003204: 69db ldr r3, [r3, #28] + 8003206: 2b01 cmp r3, #1 + 8003208: d101 bne.n 800320e { return HAL_ERROR; - 8003bb6: 2301 movs r3, #1 - 8003bb8: e02b b.n 8003c12 + 800320a: 2301 movs r3, #1 + 800320c: e02b b.n 8003266 } else { /* Do not return HAL_ERROR if request repeats the current configuration */ temp_pllckcfg = RCC->PLLCFGR; - 8003bba: 4b18 ldr r3, [pc, #96] @ (8003c1c ) - 8003bbc: 68db ldr r3, [r3, #12] - 8003bbe: 617b str r3, [r7, #20] + 800320e: 4b18 ldr r3, [pc, #96] @ (8003270 ) + 8003210: 68db ldr r3, [r3, #12] + 8003212: 617b str r3, [r7, #20] if ((READ_BIT(temp_pllckcfg, RCC_PLLCFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) || - 8003bc0: 697b ldr r3, [r7, #20] - 8003bc2: 2203 movs r2, #3 - 8003bc4: 401a ands r2, r3 - 8003bc6: 687b ldr r3, [r7, #4] - 8003bc8: 6a1b ldr r3, [r3, #32] - 8003bca: 429a cmp r2, r3 - 8003bcc: d11e bne.n 8003c0c + 8003214: 697b ldr r3, [r7, #20] + 8003216: 2203 movs r2, #3 + 8003218: 401a ands r2, r3 + 800321a: 687b ldr r3, [r7, #4] + 800321c: 6a1b ldr r3, [r3, #32] + 800321e: 429a cmp r2, r3 + 8003220: d11e bne.n 8003260 (READ_BIT(temp_pllckcfg, RCC_PLLCFGR_PLLM) != RCC_OscInitStruct->PLL.PLLM) || - 8003bce: 697b ldr r3, [r7, #20] - 8003bd0: 2270 movs r2, #112 @ 0x70 - 8003bd2: 401a ands r2, r3 - 8003bd4: 687b ldr r3, [r7, #4] - 8003bd6: 6a5b ldr r3, [r3, #36] @ 0x24 + 8003222: 697b ldr r3, [r7, #20] + 8003224: 2270 movs r2, #112 @ 0x70 + 8003226: 401a ands r2, r3 + 8003228: 687b ldr r3, [r7, #4] + 800322a: 6a5b ldr r3, [r3, #36] @ 0x24 if ((READ_BIT(temp_pllckcfg, RCC_PLLCFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) || - 8003bd8: 429a cmp r2, r3 - 8003bda: d117 bne.n 8003c0c + 800322c: 429a cmp r2, r3 + 800322e: d117 bne.n 8003260 (READ_BIT(temp_pllckcfg, RCC_PLLCFGR_PLLN) != (RCC_OscInitStruct->PLL.PLLN << RCC_PLLCFGR_PLLN_Pos)) || - 8003bdc: 697a ldr r2, [r7, #20] - 8003bde: 23fe movs r3, #254 @ 0xfe - 8003be0: 01db lsls r3, r3, #7 - 8003be2: 401a ands r2, r3 - 8003be4: 687b ldr r3, [r7, #4] - 8003be6: 6a9b ldr r3, [r3, #40] @ 0x28 - 8003be8: 021b lsls r3, r3, #8 + 8003230: 697a ldr r2, [r7, #20] + 8003232: 23fe movs r3, #254 @ 0xfe + 8003234: 01db lsls r3, r3, #7 + 8003236: 401a ands r2, r3 + 8003238: 687b ldr r3, [r7, #4] + 800323a: 6a9b ldr r3, [r3, #40] @ 0x28 + 800323c: 021b lsls r3, r3, #8 (READ_BIT(temp_pllckcfg, RCC_PLLCFGR_PLLM) != RCC_OscInitStruct->PLL.PLLM) || - 8003bea: 429a cmp r2, r3 - 8003bec: d10e bne.n 8003c0c + 800323e: 429a cmp r2, r3 + 8003240: d10e bne.n 8003260 (READ_BIT(temp_pllckcfg, RCC_PLLCFGR_PLLP) != RCC_OscInitStruct->PLL.PLLP) || - 8003bee: 697a ldr r2, [r7, #20] - 8003bf0: 23f8 movs r3, #248 @ 0xf8 - 8003bf2: 039b lsls r3, r3, #14 - 8003bf4: 401a ands r2, r3 - 8003bf6: 687b ldr r3, [r7, #4] - 8003bf8: 6adb ldr r3, [r3, #44] @ 0x2c + 8003242: 697a ldr r2, [r7, #20] + 8003244: 23f8 movs r3, #248 @ 0xf8 + 8003246: 039b lsls r3, r3, #14 + 8003248: 401a ands r2, r3 + 800324a: 687b ldr r3, [r7, #4] + 800324c: 6adb ldr r3, [r3, #44] @ 0x2c (READ_BIT(temp_pllckcfg, RCC_PLLCFGR_PLLN) != (RCC_OscInitStruct->PLL.PLLN << RCC_PLLCFGR_PLLN_Pos)) || - 8003bfa: 429a cmp r2, r3 - 8003bfc: d106 bne.n 8003c0c + 800324e: 429a cmp r2, r3 + 8003250: d106 bne.n 8003260 #if defined (RCC_PLLQ_SUPPORT) (READ_BIT(temp_pllckcfg, RCC_PLLCFGR_PLLQ) != RCC_OscInitStruct->PLL.PLLQ) || #endif /* RCC_PLLQ_SUPPORT */ (READ_BIT(temp_pllckcfg, RCC_PLLCFGR_PLLR) != RCC_OscInitStruct->PLL.PLLR)) - 8003bfe: 697b ldr r3, [r7, #20] - 8003c00: 0f5b lsrs r3, r3, #29 - 8003c02: 075a lsls r2, r3, #29 - 8003c04: 687b ldr r3, [r7, #4] - 8003c06: 6b1b ldr r3, [r3, #48] @ 0x30 + 8003252: 697b ldr r3, [r7, #20] + 8003254: 0f5b lsrs r3, r3, #29 + 8003256: 075a lsls r2, r3, #29 + 8003258: 687b ldr r3, [r7, #4] + 800325a: 6b1b ldr r3, [r3, #48] @ 0x30 (READ_BIT(temp_pllckcfg, RCC_PLLCFGR_PLLP) != RCC_OscInitStruct->PLL.PLLP) || - 8003c08: 429a cmp r2, r3 - 8003c0a: d001 beq.n 8003c10 + 800325c: 429a cmp r2, r3 + 800325e: d001 beq.n 8003264 { return HAL_ERROR; - 8003c0c: 2301 movs r3, #1 - 8003c0e: e000 b.n 8003c12 + 8003260: 2301 movs r3, #1 + 8003262: e000 b.n 8003266 } } } } return HAL_OK; - 8003c10: 2300 movs r3, #0 + 8003264: 2300 movs r3, #0 } - 8003c12: 0018 movs r0, r3 - 8003c14: 46bd mov sp, r7 - 8003c16: b008 add sp, #32 - 8003c18: bd80 pop {r7, pc} - 8003c1a: 46c0 nop @ (mov r8, r8) - 8003c1c: 40021000 .word 0x40021000 - 8003c20: 40007000 .word 0x40007000 - 8003c24: 00001388 .word 0x00001388 - 8003c28: efffffff .word 0xefffffff - 8003c2c: feffffff .word 0xfeffffff - 8003c30: 1fc1808c .word 0x1fc1808c - 8003c34: effefffc .word 0xeffefffc + 8003266: 0018 movs r0, r3 + 8003268: 46bd mov sp, r7 + 800326a: b008 add sp, #32 + 800326c: bd80 pop {r7, pc} + 800326e: 46c0 nop @ (mov r8, r8) + 8003270: 40021000 .word 0x40021000 + 8003274: 40007000 .word 0x40007000 + 8003278: 00001388 .word 0x00001388 + 800327c: efffffff .word 0xefffffff + 8003280: feffffff .word 0xfeffffff + 8003284: 1fc1808c .word 0x1fc1808c + 8003288: effefffc .word 0xeffefffc -08003c38 : +0800328c : * HPRE[3:0] bits to ensure that HCLK not exceed the maximum allowed frequency * (for more details refer to section above "Initialization/de-initialization functions") * @retval None */ HAL_StatusTypeDef HAL_RCC_ClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t FLatency) { - 8003c38: b580 push {r7, lr} - 8003c3a: b084 sub sp, #16 - 8003c3c: af00 add r7, sp, #0 - 8003c3e: 6078 str r0, [r7, #4] - 8003c40: 6039 str r1, [r7, #0] + 800328c: b580 push {r7, lr} + 800328e: b084 sub sp, #16 + 8003290: af00 add r7, sp, #0 + 8003292: 6078 str r0, [r7, #4] + 8003294: 6039 str r1, [r7, #0] uint32_t tickstart; /* Check Null pointer */ if (RCC_ClkInitStruct == NULL) - 8003c42: 687b ldr r3, [r7, #4] - 8003c44: 2b00 cmp r3, #0 - 8003c46: d101 bne.n 8003c4c + 8003296: 687b ldr r3, [r7, #4] + 8003298: 2b00 cmp r3, #0 + 800329a: d101 bne.n 80032a0 { return HAL_ERROR; - 8003c48: 2301 movs r3, #1 - 8003c4a: e0e9 b.n 8003e20 + 800329c: 2301 movs r3, #1 + 800329e: e0e9 b.n 8003474 /* To correctly read data from FLASH memory, the number of wait states (LATENCY) must be correctly programmed according to the frequency of the FLASH clock (HCLK) and the supply voltage of the device. */ /* Increasing the number of wait states because of higher CPU frequency */ if (FLatency > __HAL_FLASH_GET_LATENCY()) - 8003c4c: 4b76 ldr r3, [pc, #472] @ (8003e28 ) - 8003c4e: 681b ldr r3, [r3, #0] - 8003c50: 2207 movs r2, #7 - 8003c52: 4013 ands r3, r2 - 8003c54: 683a ldr r2, [r7, #0] - 8003c56: 429a cmp r2, r3 - 8003c58: d91e bls.n 8003c98 + 80032a0: 4b76 ldr r3, [pc, #472] @ (800347c ) + 80032a2: 681b ldr r3, [r3, #0] + 80032a4: 2207 movs r2, #7 + 80032a6: 4013 ands r3, r2 + 80032a8: 683a ldr r2, [r7, #0] + 80032aa: 429a cmp r2, r3 + 80032ac: d91e bls.n 80032ec { /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */ __HAL_FLASH_SET_LATENCY(FLatency); - 8003c5a: 4b73 ldr r3, [pc, #460] @ (8003e28 ) - 8003c5c: 681b ldr r3, [r3, #0] - 8003c5e: 2207 movs r2, #7 - 8003c60: 4393 bics r3, r2 - 8003c62: 0019 movs r1, r3 - 8003c64: 4b70 ldr r3, [pc, #448] @ (8003e28 ) - 8003c66: 683a ldr r2, [r7, #0] - 8003c68: 430a orrs r2, r1 - 8003c6a: 601a str r2, [r3, #0] + 80032ae: 4b73 ldr r3, [pc, #460] @ (800347c ) + 80032b0: 681b ldr r3, [r3, #0] + 80032b2: 2207 movs r2, #7 + 80032b4: 4393 bics r3, r2 + 80032b6: 0019 movs r1, r3 + 80032b8: 4b70 ldr r3, [pc, #448] @ (800347c ) + 80032ba: 683a ldr r2, [r7, #0] + 80032bc: 430a orrs r2, r1 + 80032be: 601a str r2, [r3, #0] /* Check that the new number of wait states is taken into account to access the Flash memory by polling the FLASH_ACR register */ tickstart = HAL_GetTick(); - 8003c6c: f7fd fc5e bl 800152c - 8003c70: 0003 movs r3, r0 - 8003c72: 60fb str r3, [r7, #12] + 80032c0: f7fe f9d4 bl 800166c + 80032c4: 0003 movs r3, r0 + 80032c6: 60fb str r3, [r7, #12] while ((FLASH->ACR & FLASH_ACR_LATENCY) != FLatency) - 8003c74: e009 b.n 8003c8a + 80032c8: e009 b.n 80032de { if ((HAL_GetTick() - tickstart) > CLOCKSWITCH_TIMEOUT_VALUE) - 8003c76: f7fd fc59 bl 800152c - 8003c7a: 0002 movs r2, r0 - 8003c7c: 68fb ldr r3, [r7, #12] - 8003c7e: 1ad3 subs r3, r2, r3 - 8003c80: 4a6a ldr r2, [pc, #424] @ (8003e2c ) - 8003c82: 4293 cmp r3, r2 - 8003c84: d901 bls.n 8003c8a + 80032ca: f7fe f9cf bl 800166c + 80032ce: 0002 movs r2, r0 + 80032d0: 68fb ldr r3, [r7, #12] + 80032d2: 1ad3 subs r3, r2, r3 + 80032d4: 4a6a ldr r2, [pc, #424] @ (8003480 ) + 80032d6: 4293 cmp r3, r2 + 80032d8: d901 bls.n 80032de { return HAL_TIMEOUT; - 8003c86: 2303 movs r3, #3 - 8003c88: e0ca b.n 8003e20 + 80032da: 2303 movs r3, #3 + 80032dc: e0ca b.n 8003474 while ((FLASH->ACR & FLASH_ACR_LATENCY) != FLatency) - 8003c8a: 4b67 ldr r3, [pc, #412] @ (8003e28 ) - 8003c8c: 681b ldr r3, [r3, #0] - 8003c8e: 2207 movs r2, #7 - 8003c90: 4013 ands r3, r2 - 8003c92: 683a ldr r2, [r7, #0] - 8003c94: 429a cmp r2, r3 - 8003c96: d1ee bne.n 8003c76 + 80032de: 4b67 ldr r3, [pc, #412] @ (800347c ) + 80032e0: 681b ldr r3, [r3, #0] + 80032e2: 2207 movs r2, #7 + 80032e4: 4013 ands r3, r2 + 80032e6: 683a ldr r2, [r7, #0] + 80032e8: 429a cmp r2, r3 + 80032ea: d1ee bne.n 80032ca } } } /*-------------------------- HCLK Configuration --------------------------*/ if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_HCLK) == RCC_CLOCKTYPE_HCLK) - 8003c98: 687b ldr r3, [r7, #4] - 8003c9a: 681b ldr r3, [r3, #0] - 8003c9c: 2202 movs r2, #2 - 8003c9e: 4013 ands r3, r2 - 8003ca0: d015 beq.n 8003cce + 80032ec: 687b ldr r3, [r7, #4] + 80032ee: 681b ldr r3, [r3, #0] + 80032f0: 2202 movs r2, #2 + 80032f2: 4013 ands r3, r2 + 80032f4: d015 beq.n 8003322 { /* Set the highest APB divider in order to ensure that we do not go through a non-spec phase whatever we decrease or increase HCLK. */ if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1) - 8003ca2: 687b ldr r3, [r7, #4] - 8003ca4: 681b ldr r3, [r3, #0] - 8003ca6: 2204 movs r2, #4 - 8003ca8: 4013 ands r3, r2 - 8003caa: d006 beq.n 8003cba + 80032f6: 687b ldr r3, [r7, #4] + 80032f8: 681b ldr r3, [r3, #0] + 80032fa: 2204 movs r2, #4 + 80032fc: 4013 ands r3, r2 + 80032fe: d006 beq.n 800330e { MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE, RCC_HCLK_DIV16); - 8003cac: 4b60 ldr r3, [pc, #384] @ (8003e30 ) - 8003cae: 689a ldr r2, [r3, #8] - 8003cb0: 4b5f ldr r3, [pc, #380] @ (8003e30 ) - 8003cb2: 21e0 movs r1, #224 @ 0xe0 - 8003cb4: 01c9 lsls r1, r1, #7 - 8003cb6: 430a orrs r2, r1 - 8003cb8: 609a str r2, [r3, #8] + 8003300: 4b60 ldr r3, [pc, #384] @ (8003484 ) + 8003302: 689a ldr r2, [r3, #8] + 8003304: 4b5f ldr r3, [pc, #380] @ (8003484 ) + 8003306: 21e0 movs r1, #224 @ 0xe0 + 8003308: 01c9 lsls r1, r1, #7 + 800330a: 430a orrs r2, r1 + 800330c: 609a str r2, [r3, #8] } /* Set the new HCLK clock divider */ assert_param(IS_RCC_HCLK(RCC_ClkInitStruct->AHBCLKDivider)); MODIFY_REG(RCC->CFGR, RCC_CFGR_HPRE, RCC_ClkInitStruct->AHBCLKDivider); - 8003cba: 4b5d ldr r3, [pc, #372] @ (8003e30 ) - 8003cbc: 689b ldr r3, [r3, #8] - 8003cbe: 4a5d ldr r2, [pc, #372] @ (8003e34 ) - 8003cc0: 4013 ands r3, r2 - 8003cc2: 0019 movs r1, r3 - 8003cc4: 687b ldr r3, [r7, #4] - 8003cc6: 689a ldr r2, [r3, #8] - 8003cc8: 4b59 ldr r3, [pc, #356] @ (8003e30 ) - 8003cca: 430a orrs r2, r1 - 8003ccc: 609a str r2, [r3, #8] + 800330e: 4b5d ldr r3, [pc, #372] @ (8003484 ) + 8003310: 689b ldr r3, [r3, #8] + 8003312: 4a5d ldr r2, [pc, #372] @ (8003488 ) + 8003314: 4013 ands r3, r2 + 8003316: 0019 movs r1, r3 + 8003318: 687b ldr r3, [r7, #4] + 800331a: 689a ldr r2, [r3, #8] + 800331c: 4b59 ldr r3, [pc, #356] @ (8003484 ) + 800331e: 430a orrs r2, r1 + 8003320: 609a str r2, [r3, #8] } /*------------------------- SYSCLK Configuration ---------------------------*/ if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_SYSCLK) == RCC_CLOCKTYPE_SYSCLK) - 8003cce: 687b ldr r3, [r7, #4] - 8003cd0: 681b ldr r3, [r3, #0] - 8003cd2: 2201 movs r2, #1 - 8003cd4: 4013 ands r3, r2 - 8003cd6: d057 beq.n 8003d88 + 8003322: 687b ldr r3, [r7, #4] + 8003324: 681b ldr r3, [r3, #0] + 8003326: 2201 movs r2, #1 + 8003328: 4013 ands r3, r2 + 800332a: d057 beq.n 80033dc { assert_param(IS_RCC_SYSCLKSOURCE(RCC_ClkInitStruct->SYSCLKSource)); /* HSE is selected as System Clock Source */ if (RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSE) - 8003cd8: 687b ldr r3, [r7, #4] - 8003cda: 685b ldr r3, [r3, #4] - 8003cdc: 2b01 cmp r3, #1 - 8003cde: d107 bne.n 8003cf0 + 800332c: 687b ldr r3, [r7, #4] + 800332e: 685b ldr r3, [r3, #4] + 8003330: 2b01 cmp r3, #1 + 8003332: d107 bne.n 8003344 { /* Check the HSE ready flag */ if (READ_BIT(RCC->CR, RCC_CR_HSERDY) == 0U) - 8003ce0: 4b53 ldr r3, [pc, #332] @ (8003e30 ) - 8003ce2: 681a ldr r2, [r3, #0] - 8003ce4: 2380 movs r3, #128 @ 0x80 - 8003ce6: 029b lsls r3, r3, #10 - 8003ce8: 4013 ands r3, r2 - 8003cea: d12b bne.n 8003d44 + 8003334: 4b53 ldr r3, [pc, #332] @ (8003484 ) + 8003336: 681a ldr r2, [r3, #0] + 8003338: 2380 movs r3, #128 @ 0x80 + 800333a: 029b lsls r3, r3, #10 + 800333c: 4013 ands r3, r2 + 800333e: d12b bne.n 8003398 { return HAL_ERROR; - 8003cec: 2301 movs r3, #1 - 8003cee: e097 b.n 8003e20 + 8003340: 2301 movs r3, #1 + 8003342: e097 b.n 8003474 } } /* PLL is selected as System Clock Source */ else if (RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK) - 8003cf0: 687b ldr r3, [r7, #4] - 8003cf2: 685b ldr r3, [r3, #4] - 8003cf4: 2b02 cmp r3, #2 - 8003cf6: d107 bne.n 8003d08 + 8003344: 687b ldr r3, [r7, #4] + 8003346: 685b ldr r3, [r3, #4] + 8003348: 2b02 cmp r3, #2 + 800334a: d107 bne.n 800335c { /* Check the PLL ready flag */ if (READ_BIT(RCC->CR, RCC_CR_PLLRDY) == 0U) - 8003cf8: 4b4d ldr r3, [pc, #308] @ (8003e30 ) - 8003cfa: 681a ldr r2, [r3, #0] - 8003cfc: 2380 movs r3, #128 @ 0x80 - 8003cfe: 049b lsls r3, r3, #18 - 8003d00: 4013 ands r3, r2 - 8003d02: d11f bne.n 8003d44 + 800334c: 4b4d ldr r3, [pc, #308] @ (8003484 ) + 800334e: 681a ldr r2, [r3, #0] + 8003350: 2380 movs r3, #128 @ 0x80 + 8003352: 049b lsls r3, r3, #18 + 8003354: 4013 ands r3, r2 + 8003356: d11f bne.n 8003398 { return HAL_ERROR; - 8003d04: 2301 movs r3, #1 - 8003d06: e08b b.n 8003e20 + 8003358: 2301 movs r3, #1 + 800335a: e08b b.n 8003474 } } /* HSI is selected as System Clock Source */ else if (RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSI) - 8003d08: 687b ldr r3, [r7, #4] - 8003d0a: 685b ldr r3, [r3, #4] - 8003d0c: 2b00 cmp r3, #0 - 8003d0e: d107 bne.n 8003d20 + 800335c: 687b ldr r3, [r7, #4] + 800335e: 685b ldr r3, [r3, #4] + 8003360: 2b00 cmp r3, #0 + 8003362: d107 bne.n 8003374 { /* Check the HSI ready flag */ if (READ_BIT(RCC->CR, RCC_CR_HSIRDY) == 0U) - 8003d10: 4b47 ldr r3, [pc, #284] @ (8003e30 ) - 8003d12: 681a ldr r2, [r3, #0] - 8003d14: 2380 movs r3, #128 @ 0x80 - 8003d16: 00db lsls r3, r3, #3 - 8003d18: 4013 ands r3, r2 - 8003d1a: d113 bne.n 8003d44 + 8003364: 4b47 ldr r3, [pc, #284] @ (8003484 ) + 8003366: 681a ldr r2, [r3, #0] + 8003368: 2380 movs r3, #128 @ 0x80 + 800336a: 00db lsls r3, r3, #3 + 800336c: 4013 ands r3, r2 + 800336e: d113 bne.n 8003398 { return HAL_ERROR; - 8003d1c: 2301 movs r3, #1 - 8003d1e: e07f b.n 8003e20 + 8003370: 2301 movs r3, #1 + 8003372: e07f b.n 8003474 } } /* LSI is selected as System Clock Source */ else if (RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_LSI) - 8003d20: 687b ldr r3, [r7, #4] - 8003d22: 685b ldr r3, [r3, #4] - 8003d24: 2b03 cmp r3, #3 - 8003d26: d106 bne.n 8003d36 + 8003374: 687b ldr r3, [r7, #4] + 8003376: 685b ldr r3, [r3, #4] + 8003378: 2b03 cmp r3, #3 + 800337a: d106 bne.n 800338a { /* Check the LSI ready flag */ if (READ_BIT(RCC->CSR, RCC_CSR_LSIRDY) == 0U) - 8003d28: 4b41 ldr r3, [pc, #260] @ (8003e30 ) - 8003d2a: 6e1b ldr r3, [r3, #96] @ 0x60 - 8003d2c: 2202 movs r2, #2 - 8003d2e: 4013 ands r3, r2 - 8003d30: d108 bne.n 8003d44 + 800337c: 4b41 ldr r3, [pc, #260] @ (8003484 ) + 800337e: 6e1b ldr r3, [r3, #96] @ 0x60 + 8003380: 2202 movs r2, #2 + 8003382: 4013 ands r3, r2 + 8003384: d108 bne.n 8003398 { return HAL_ERROR; - 8003d32: 2301 movs r3, #1 - 8003d34: e074 b.n 8003e20 + 8003386: 2301 movs r3, #1 + 8003388: e074 b.n 8003474 } /* LSE is selected as System Clock Source */ else { /* Check the LSE ready flag */ if (READ_BIT(RCC->BDCR, RCC_BDCR_LSERDY) == 0U) - 8003d36: 4b3e ldr r3, [pc, #248] @ (8003e30 ) - 8003d38: 6ddb ldr r3, [r3, #92] @ 0x5c - 8003d3a: 2202 movs r2, #2 - 8003d3c: 4013 ands r3, r2 - 8003d3e: d101 bne.n 8003d44 + 800338a: 4b3e ldr r3, [pc, #248] @ (8003484 ) + 800338c: 6ddb ldr r3, [r3, #92] @ 0x5c + 800338e: 2202 movs r2, #2 + 8003390: 4013 ands r3, r2 + 8003392: d101 bne.n 8003398 { return HAL_ERROR; - 8003d40: 2301 movs r3, #1 - 8003d42: e06d b.n 8003e20 + 8003394: 2301 movs r3, #1 + 8003396: e06d b.n 8003474 } } MODIFY_REG(RCC->CFGR, RCC_CFGR_SW, RCC_ClkInitStruct->SYSCLKSource); - 8003d44: 4b3a ldr r3, [pc, #232] @ (8003e30 ) - 8003d46: 689b ldr r3, [r3, #8] - 8003d48: 2207 movs r2, #7 - 8003d4a: 4393 bics r3, r2 - 8003d4c: 0019 movs r1, r3 - 8003d4e: 687b ldr r3, [r7, #4] - 8003d50: 685a ldr r2, [r3, #4] - 8003d52: 4b37 ldr r3, [pc, #220] @ (8003e30 ) - 8003d54: 430a orrs r2, r1 - 8003d56: 609a str r2, [r3, #8] + 8003398: 4b3a ldr r3, [pc, #232] @ (8003484 ) + 800339a: 689b ldr r3, [r3, #8] + 800339c: 2207 movs r2, #7 + 800339e: 4393 bics r3, r2 + 80033a0: 0019 movs r1, r3 + 80033a2: 687b ldr r3, [r7, #4] + 80033a4: 685a ldr r2, [r3, #4] + 80033a6: 4b37 ldr r3, [pc, #220] @ (8003484 ) + 80033a8: 430a orrs r2, r1 + 80033aa: 609a str r2, [r3, #8] /* Get Start Tick*/ tickstart = HAL_GetTick(); - 8003d58: f7fd fbe8 bl 800152c - 8003d5c: 0003 movs r3, r0 - 8003d5e: 60fb str r3, [r7, #12] + 80033ac: f7fe f95e bl 800166c + 80033b0: 0003 movs r3, r0 + 80033b2: 60fb str r3, [r7, #12] while (__HAL_RCC_GET_SYSCLK_SOURCE() != (RCC_ClkInitStruct->SYSCLKSource << RCC_CFGR_SWS_Pos)) - 8003d60: e009 b.n 8003d76 + 80033b4: e009 b.n 80033ca { if ((HAL_GetTick() - tickstart) > CLOCKSWITCH_TIMEOUT_VALUE) - 8003d62: f7fd fbe3 bl 800152c - 8003d66: 0002 movs r2, r0 - 8003d68: 68fb ldr r3, [r7, #12] - 8003d6a: 1ad3 subs r3, r2, r3 - 8003d6c: 4a2f ldr r2, [pc, #188] @ (8003e2c ) - 8003d6e: 4293 cmp r3, r2 - 8003d70: d901 bls.n 8003d76 + 80033b6: f7fe f959 bl 800166c + 80033ba: 0002 movs r2, r0 + 80033bc: 68fb ldr r3, [r7, #12] + 80033be: 1ad3 subs r3, r2, r3 + 80033c0: 4a2f ldr r2, [pc, #188] @ (8003480 ) + 80033c2: 4293 cmp r3, r2 + 80033c4: d901 bls.n 80033ca { return HAL_TIMEOUT; - 8003d72: 2303 movs r3, #3 - 8003d74: e054 b.n 8003e20 + 80033c6: 2303 movs r3, #3 + 80033c8: e054 b.n 8003474 while (__HAL_RCC_GET_SYSCLK_SOURCE() != (RCC_ClkInitStruct->SYSCLKSource << RCC_CFGR_SWS_Pos)) - 8003d76: 4b2e ldr r3, [pc, #184] @ (8003e30 ) - 8003d78: 689b ldr r3, [r3, #8] - 8003d7a: 2238 movs r2, #56 @ 0x38 - 8003d7c: 401a ands r2, r3 - 8003d7e: 687b ldr r3, [r7, #4] - 8003d80: 685b ldr r3, [r3, #4] - 8003d82: 00db lsls r3, r3, #3 - 8003d84: 429a cmp r2, r3 - 8003d86: d1ec bne.n 8003d62 + 80033ca: 4b2e ldr r3, [pc, #184] @ (8003484 ) + 80033cc: 689b ldr r3, [r3, #8] + 80033ce: 2238 movs r2, #56 @ 0x38 + 80033d0: 401a ands r2, r3 + 80033d2: 687b ldr r3, [r7, #4] + 80033d4: 685b ldr r3, [r3, #4] + 80033d6: 00db lsls r3, r3, #3 + 80033d8: 429a cmp r2, r3 + 80033da: d1ec bne.n 80033b6 } } } /* Decreasing the number of wait states because of lower CPU frequency */ if (FLatency < __HAL_FLASH_GET_LATENCY()) - 8003d88: 4b27 ldr r3, [pc, #156] @ (8003e28 ) - 8003d8a: 681b ldr r3, [r3, #0] - 8003d8c: 2207 movs r2, #7 - 8003d8e: 4013 ands r3, r2 - 8003d90: 683a ldr r2, [r7, #0] - 8003d92: 429a cmp r2, r3 - 8003d94: d21e bcs.n 8003dd4 + 80033dc: 4b27 ldr r3, [pc, #156] @ (800347c ) + 80033de: 681b ldr r3, [r3, #0] + 80033e0: 2207 movs r2, #7 + 80033e2: 4013 ands r3, r2 + 80033e4: 683a ldr r2, [r7, #0] + 80033e6: 429a cmp r2, r3 + 80033e8: d21e bcs.n 8003428 { /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */ __HAL_FLASH_SET_LATENCY(FLatency); - 8003d96: 4b24 ldr r3, [pc, #144] @ (8003e28 ) - 8003d98: 681b ldr r3, [r3, #0] - 8003d9a: 2207 movs r2, #7 - 8003d9c: 4393 bics r3, r2 - 8003d9e: 0019 movs r1, r3 - 8003da0: 4b21 ldr r3, [pc, #132] @ (8003e28 ) - 8003da2: 683a ldr r2, [r7, #0] - 8003da4: 430a orrs r2, r1 - 8003da6: 601a str r2, [r3, #0] + 80033ea: 4b24 ldr r3, [pc, #144] @ (800347c ) + 80033ec: 681b ldr r3, [r3, #0] + 80033ee: 2207 movs r2, #7 + 80033f0: 4393 bics r3, r2 + 80033f2: 0019 movs r1, r3 + 80033f4: 4b21 ldr r3, [pc, #132] @ (800347c ) + 80033f6: 683a ldr r2, [r7, #0] + 80033f8: 430a orrs r2, r1 + 80033fa: 601a str r2, [r3, #0] /* Check that the new number of wait states is taken into account to access the Flash memory by polling the FLASH_ACR register */ tickstart = HAL_GetTick(); - 8003da8: f7fd fbc0 bl 800152c - 8003dac: 0003 movs r3, r0 - 8003dae: 60fb str r3, [r7, #12] + 80033fc: f7fe f936 bl 800166c + 8003400: 0003 movs r3, r0 + 8003402: 60fb str r3, [r7, #12] while ((FLASH->ACR & FLASH_ACR_LATENCY) != FLatency) - 8003db0: e009 b.n 8003dc6 + 8003404: e009 b.n 800341a { if ((HAL_GetTick() - tickstart) > CLOCKSWITCH_TIMEOUT_VALUE) - 8003db2: f7fd fbbb bl 800152c - 8003db6: 0002 movs r2, r0 - 8003db8: 68fb ldr r3, [r7, #12] - 8003dba: 1ad3 subs r3, r2, r3 - 8003dbc: 4a1b ldr r2, [pc, #108] @ (8003e2c ) - 8003dbe: 4293 cmp r3, r2 - 8003dc0: d901 bls.n 8003dc6 + 8003406: f7fe f931 bl 800166c + 800340a: 0002 movs r2, r0 + 800340c: 68fb ldr r3, [r7, #12] + 800340e: 1ad3 subs r3, r2, r3 + 8003410: 4a1b ldr r2, [pc, #108] @ (8003480 ) + 8003412: 4293 cmp r3, r2 + 8003414: d901 bls.n 800341a { return HAL_TIMEOUT; - 8003dc2: 2303 movs r3, #3 - 8003dc4: e02c b.n 8003e20 + 8003416: 2303 movs r3, #3 + 8003418: e02c b.n 8003474 while ((FLASH->ACR & FLASH_ACR_LATENCY) != FLatency) - 8003dc6: 4b18 ldr r3, [pc, #96] @ (8003e28 ) - 8003dc8: 681b ldr r3, [r3, #0] - 8003dca: 2207 movs r2, #7 - 8003dcc: 4013 ands r3, r2 - 8003dce: 683a ldr r2, [r7, #0] - 8003dd0: 429a cmp r2, r3 - 8003dd2: d1ee bne.n 8003db2 + 800341a: 4b18 ldr r3, [pc, #96] @ (800347c ) + 800341c: 681b ldr r3, [r3, #0] + 800341e: 2207 movs r2, #7 + 8003420: 4013 ands r3, r2 + 8003422: 683a ldr r2, [r7, #0] + 8003424: 429a cmp r2, r3 + 8003426: d1ee bne.n 8003406 } } } /*-------------------------- PCLK1 Configuration ---------------------------*/ if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1) - 8003dd4: 687b ldr r3, [r7, #4] - 8003dd6: 681b ldr r3, [r3, #0] - 8003dd8: 2204 movs r2, #4 - 8003dda: 4013 ands r3, r2 - 8003ddc: d009 beq.n 8003df2 + 8003428: 687b ldr r3, [r7, #4] + 800342a: 681b ldr r3, [r3, #0] + 800342c: 2204 movs r2, #4 + 800342e: 4013 ands r3, r2 + 8003430: d009 beq.n 8003446 { assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB1CLKDivider)); MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE, RCC_ClkInitStruct->APB1CLKDivider); - 8003dde: 4b14 ldr r3, [pc, #80] @ (8003e30 ) - 8003de0: 689b ldr r3, [r3, #8] - 8003de2: 4a15 ldr r2, [pc, #84] @ (8003e38 ) - 8003de4: 4013 ands r3, r2 - 8003de6: 0019 movs r1, r3 - 8003de8: 687b ldr r3, [r7, #4] - 8003dea: 68da ldr r2, [r3, #12] - 8003dec: 4b10 ldr r3, [pc, #64] @ (8003e30 ) - 8003dee: 430a orrs r2, r1 - 8003df0: 609a str r2, [r3, #8] + 8003432: 4b14 ldr r3, [pc, #80] @ (8003484 ) + 8003434: 689b ldr r3, [r3, #8] + 8003436: 4a15 ldr r2, [pc, #84] @ (800348c ) + 8003438: 4013 ands r3, r2 + 800343a: 0019 movs r1, r3 + 800343c: 687b ldr r3, [r7, #4] + 800343e: 68da ldr r2, [r3, #12] + 8003440: 4b10 ldr r3, [pc, #64] @ (8003484 ) + 8003442: 430a orrs r2, r1 + 8003444: 609a str r2, [r3, #8] } /* Update the SystemCoreClock global variable */ SystemCoreClock = (HAL_RCC_GetSysClockFreq() >> ((AHBPrescTable[(RCC->CFGR & RCC_CFGR_HPRE) >> RCC_CFGR_HPRE_Pos]) & 0x1FU)); - 8003df2: f000 f829 bl 8003e48 - 8003df6: 0001 movs r1, r0 - 8003df8: 4b0d ldr r3, [pc, #52] @ (8003e30 ) - 8003dfa: 689b ldr r3, [r3, #8] - 8003dfc: 0a1b lsrs r3, r3, #8 - 8003dfe: 220f movs r2, #15 - 8003e00: 401a ands r2, r3 - 8003e02: 4b0e ldr r3, [pc, #56] @ (8003e3c ) - 8003e04: 0092 lsls r2, r2, #2 - 8003e06: 58d3 ldr r3, [r2, r3] - 8003e08: 221f movs r2, #31 - 8003e0a: 4013 ands r3, r2 - 8003e0c: 000a movs r2, r1 - 8003e0e: 40da lsrs r2, r3 - 8003e10: 4b0b ldr r3, [pc, #44] @ (8003e40 ) - 8003e12: 601a str r2, [r3, #0] + 8003446: f000 f829 bl 800349c + 800344a: 0001 movs r1, r0 + 800344c: 4b0d ldr r3, [pc, #52] @ (8003484 ) + 800344e: 689b ldr r3, [r3, #8] + 8003450: 0a1b lsrs r3, r3, #8 + 8003452: 220f movs r2, #15 + 8003454: 401a ands r2, r3 + 8003456: 4b0e ldr r3, [pc, #56] @ (8003490 ) + 8003458: 0092 lsls r2, r2, #2 + 800345a: 58d3 ldr r3, [r2, r3] + 800345c: 221f movs r2, #31 + 800345e: 4013 ands r3, r2 + 8003460: 000a movs r2, r1 + 8003462: 40da lsrs r2, r3 + 8003464: 4b0b ldr r3, [pc, #44] @ (8003494 ) + 8003466: 601a str r2, [r3, #0] /* Configure the source of time base considering new system clocks settings*/ return HAL_InitTick(uwTickPrio); - 8003e14: 4b0b ldr r3, [pc, #44] @ (8003e44 ) - 8003e16: 681b ldr r3, [r3, #0] - 8003e18: 0018 movs r0, r3 - 8003e1a: f7fd fb2b bl 8001474 - 8003e1e: 0003 movs r3, r0 + 8003468: 4b0b ldr r3, [pc, #44] @ (8003498 ) + 800346a: 681b ldr r3, [r3, #0] + 800346c: 0018 movs r0, r3 + 800346e: f7fe f8a1 bl 80015b4 + 8003472: 0003 movs r3, r0 } - 8003e20: 0018 movs r0, r3 - 8003e22: 46bd mov sp, r7 - 8003e24: b004 add sp, #16 - 8003e26: bd80 pop {r7, pc} - 8003e28: 40022000 .word 0x40022000 - 8003e2c: 00001388 .word 0x00001388 - 8003e30: 40021000 .word 0x40021000 - 8003e34: fffff0ff .word 0xfffff0ff - 8003e38: ffff8fff .word 0xffff8fff - 8003e3c: 08005f20 .word 0x08005f20 - 8003e40: 20000000 .word 0x20000000 - 8003e44: 20000004 .word 0x20000004 + 8003474: 0018 movs r0, r3 + 8003476: 46bd mov sp, r7 + 8003478: b004 add sp, #16 + 800347a: bd80 pop {r7, pc} + 800347c: 40022000 .word 0x40022000 + 8003480: 00001388 .word 0x00001388 + 8003484: 40021000 .word 0x40021000 + 8003488: fffff0ff .word 0xfffff0ff + 800348c: ffff8fff .word 0xffff8fff + 8003490: 08006240 .word 0x08006240 + 8003494: 20000000 .word 0x20000000 + 8003498: 20000004 .word 0x20000004 -08003e48 : +0800349c : * * * @retval SYSCLK frequency */ uint32_t HAL_RCC_GetSysClockFreq(void) { - 8003e48: b580 push {r7, lr} - 8003e4a: b086 sub sp, #24 - 8003e4c: af00 add r7, sp, #0 + 800349c: b580 push {r7, lr} + 800349e: b086 sub sp, #24 + 80034a0: af00 add r7, sp, #0 uint32_t pllvco, pllsource, pllr, pllm, hsidiv; uint32_t sysclockfreq; if (__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_HSI) - 8003e4e: 4b3c ldr r3, [pc, #240] @ (8003f40 ) - 8003e50: 689b ldr r3, [r3, #8] - 8003e52: 2238 movs r2, #56 @ 0x38 - 8003e54: 4013 ands r3, r2 - 8003e56: d10f bne.n 8003e78 + 80034a2: 4b3c ldr r3, [pc, #240] @ (8003594 ) + 80034a4: 689b ldr r3, [r3, #8] + 80034a6: 2238 movs r2, #56 @ 0x38 + 80034a8: 4013 ands r3, r2 + 80034aa: d10f bne.n 80034cc { /* HSISYS can be derived for HSI16 */ hsidiv = (1UL << ((READ_BIT(RCC->CR, RCC_CR_HSIDIV)) >> RCC_CR_HSIDIV_Pos)); - 8003e58: 4b39 ldr r3, [pc, #228] @ (8003f40 ) - 8003e5a: 681b ldr r3, [r3, #0] - 8003e5c: 0adb lsrs r3, r3, #11 - 8003e5e: 2207 movs r2, #7 - 8003e60: 4013 ands r3, r2 - 8003e62: 2201 movs r2, #1 - 8003e64: 409a lsls r2, r3 - 8003e66: 0013 movs r3, r2 - 8003e68: 603b str r3, [r7, #0] + 80034ac: 4b39 ldr r3, [pc, #228] @ (8003594 ) + 80034ae: 681b ldr r3, [r3, #0] + 80034b0: 0adb lsrs r3, r3, #11 + 80034b2: 2207 movs r2, #7 + 80034b4: 4013 ands r3, r2 + 80034b6: 2201 movs r2, #1 + 80034b8: 409a lsls r2, r3 + 80034ba: 0013 movs r3, r2 + 80034bc: 603b str r3, [r7, #0] /* HSI used as system clock source */ sysclockfreq = (HSI_VALUE / hsidiv); - 8003e6a: 6839 ldr r1, [r7, #0] - 8003e6c: 4835 ldr r0, [pc, #212] @ (8003f44 ) - 8003e6e: f7fc f951 bl 8000114 <__udivsi3> - 8003e72: 0003 movs r3, r0 - 8003e74: 613b str r3, [r7, #16] - 8003e76: e05d b.n 8003f34 + 80034be: 6839 ldr r1, [r7, #0] + 80034c0: 4835 ldr r0, [pc, #212] @ (8003598 ) + 80034c2: f7fc fe27 bl 8000114 <__udivsi3> + 80034c6: 0003 movs r3, r0 + 80034c8: 613b str r3, [r7, #16] + 80034ca: e05d b.n 8003588 } else if (__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_HSE) - 8003e78: 4b31 ldr r3, [pc, #196] @ (8003f40 ) - 8003e7a: 689b ldr r3, [r3, #8] - 8003e7c: 2238 movs r2, #56 @ 0x38 - 8003e7e: 4013 ands r3, r2 - 8003e80: 2b08 cmp r3, #8 - 8003e82: d102 bne.n 8003e8a + 80034cc: 4b31 ldr r3, [pc, #196] @ (8003594 ) + 80034ce: 689b ldr r3, [r3, #8] + 80034d0: 2238 movs r2, #56 @ 0x38 + 80034d2: 4013 ands r3, r2 + 80034d4: 2b08 cmp r3, #8 + 80034d6: d102 bne.n 80034de { /* HSE used as system clock source */ sysclockfreq = HSE_VALUE; - 8003e84: 4b30 ldr r3, [pc, #192] @ (8003f48 ) - 8003e86: 613b str r3, [r7, #16] - 8003e88: e054 b.n 8003f34 + 80034d8: 4b30 ldr r3, [pc, #192] @ (800359c ) + 80034da: 613b str r3, [r7, #16] + 80034dc: e054 b.n 8003588 } else if (__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_PLLCLK) - 8003e8a: 4b2d ldr r3, [pc, #180] @ (8003f40 ) - 8003e8c: 689b ldr r3, [r3, #8] - 8003e8e: 2238 movs r2, #56 @ 0x38 - 8003e90: 4013 ands r3, r2 - 8003e92: 2b10 cmp r3, #16 - 8003e94: d138 bne.n 8003f08 + 80034de: 4b2d ldr r3, [pc, #180] @ (8003594 ) + 80034e0: 689b ldr r3, [r3, #8] + 80034e2: 2238 movs r2, #56 @ 0x38 + 80034e4: 4013 ands r3, r2 + 80034e6: 2b10 cmp r3, #16 + 80034e8: d138 bne.n 800355c /* PLL used as system clock source */ /* PLL_VCO = ((HSE_VALUE or HSI_VALUE)/ PLLM) * PLLN SYSCLK = PLL_VCO / PLLR */ pllsource = (RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC); - 8003e96: 4b2a ldr r3, [pc, #168] @ (8003f40 ) - 8003e98: 68db ldr r3, [r3, #12] - 8003e9a: 2203 movs r2, #3 - 8003e9c: 4013 ands r3, r2 - 8003e9e: 60fb str r3, [r7, #12] + 80034ea: 4b2a ldr r3, [pc, #168] @ (8003594 ) + 80034ec: 68db ldr r3, [r3, #12] + 80034ee: 2203 movs r2, #3 + 80034f0: 4013 ands r3, r2 + 80034f2: 60fb str r3, [r7, #12] pllm = ((RCC->PLLCFGR & RCC_PLLCFGR_PLLM) >> RCC_PLLCFGR_PLLM_Pos) + 1U ; - 8003ea0: 4b27 ldr r3, [pc, #156] @ (8003f40 ) - 8003ea2: 68db ldr r3, [r3, #12] - 8003ea4: 091b lsrs r3, r3, #4 - 8003ea6: 2207 movs r2, #7 - 8003ea8: 4013 ands r3, r2 - 8003eaa: 3301 adds r3, #1 - 8003eac: 60bb str r3, [r7, #8] + 80034f4: 4b27 ldr r3, [pc, #156] @ (8003594 ) + 80034f6: 68db ldr r3, [r3, #12] + 80034f8: 091b lsrs r3, r3, #4 + 80034fa: 2207 movs r2, #7 + 80034fc: 4013 ands r3, r2 + 80034fe: 3301 adds r3, #1 + 8003500: 60bb str r3, [r7, #8] switch (pllsource) - 8003eae: 68fb ldr r3, [r7, #12] - 8003eb0: 2b03 cmp r3, #3 - 8003eb2: d10d bne.n 8003ed0 + 8003502: 68fb ldr r3, [r7, #12] + 8003504: 2b03 cmp r3, #3 + 8003506: d10d bne.n 8003524 { case RCC_PLLSOURCE_HSE: /* HSE used as PLL clock source */ pllvco = (HSE_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos); - 8003eb4: 68b9 ldr r1, [r7, #8] - 8003eb6: 4824 ldr r0, [pc, #144] @ (8003f48 ) - 8003eb8: f7fc f92c bl 8000114 <__udivsi3> - 8003ebc: 0003 movs r3, r0 - 8003ebe: 0019 movs r1, r3 - 8003ec0: 4b1f ldr r3, [pc, #124] @ (8003f40 ) - 8003ec2: 68db ldr r3, [r3, #12] - 8003ec4: 0a1b lsrs r3, r3, #8 - 8003ec6: 227f movs r2, #127 @ 0x7f - 8003ec8: 4013 ands r3, r2 - 8003eca: 434b muls r3, r1 - 8003ecc: 617b str r3, [r7, #20] + 8003508: 68b9 ldr r1, [r7, #8] + 800350a: 4824 ldr r0, [pc, #144] @ (800359c ) + 800350c: f7fc fe02 bl 8000114 <__udivsi3> + 8003510: 0003 movs r3, r0 + 8003512: 0019 movs r1, r3 + 8003514: 4b1f ldr r3, [pc, #124] @ (8003594 ) + 8003516: 68db ldr r3, [r3, #12] + 8003518: 0a1b lsrs r3, r3, #8 + 800351a: 227f movs r2, #127 @ 0x7f + 800351c: 4013 ands r3, r2 + 800351e: 434b muls r3, r1 + 8003520: 617b str r3, [r7, #20] break; - 8003ece: e00d b.n 8003eec + 8003522: e00d b.n 8003540 case RCC_PLLSOURCE_HSI: /* HSI16 used as PLL clock source */ default: /* HSI16 used as PLL clock source */ pllvco = (HSI_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos) ; - 8003ed0: 68b9 ldr r1, [r7, #8] - 8003ed2: 481c ldr r0, [pc, #112] @ (8003f44 ) - 8003ed4: f7fc f91e bl 8000114 <__udivsi3> - 8003ed8: 0003 movs r3, r0 - 8003eda: 0019 movs r1, r3 - 8003edc: 4b18 ldr r3, [pc, #96] @ (8003f40 ) - 8003ede: 68db ldr r3, [r3, #12] - 8003ee0: 0a1b lsrs r3, r3, #8 - 8003ee2: 227f movs r2, #127 @ 0x7f - 8003ee4: 4013 ands r3, r2 - 8003ee6: 434b muls r3, r1 - 8003ee8: 617b str r3, [r7, #20] + 8003524: 68b9 ldr r1, [r7, #8] + 8003526: 481c ldr r0, [pc, #112] @ (8003598 ) + 8003528: f7fc fdf4 bl 8000114 <__udivsi3> + 800352c: 0003 movs r3, r0 + 800352e: 0019 movs r1, r3 + 8003530: 4b18 ldr r3, [pc, #96] @ (8003594 ) + 8003532: 68db ldr r3, [r3, #12] + 8003534: 0a1b lsrs r3, r3, #8 + 8003536: 227f movs r2, #127 @ 0x7f + 8003538: 4013 ands r3, r2 + 800353a: 434b muls r3, r1 + 800353c: 617b str r3, [r7, #20] break; - 8003eea: 46c0 nop @ (mov r8, r8) + 800353e: 46c0 nop @ (mov r8, r8) } pllr = (((RCC->PLLCFGR & RCC_PLLCFGR_PLLR) >> RCC_PLLCFGR_PLLR_Pos) + 1U); - 8003eec: 4b14 ldr r3, [pc, #80] @ (8003f40 ) - 8003eee: 68db ldr r3, [r3, #12] - 8003ef0: 0f5b lsrs r3, r3, #29 - 8003ef2: 2207 movs r2, #7 - 8003ef4: 4013 ands r3, r2 - 8003ef6: 3301 adds r3, #1 - 8003ef8: 607b str r3, [r7, #4] + 8003540: 4b14 ldr r3, [pc, #80] @ (8003594 ) + 8003542: 68db ldr r3, [r3, #12] + 8003544: 0f5b lsrs r3, r3, #29 + 8003546: 2207 movs r2, #7 + 8003548: 4013 ands r3, r2 + 800354a: 3301 adds r3, #1 + 800354c: 607b str r3, [r7, #4] sysclockfreq = pllvco / pllr; - 8003efa: 6879 ldr r1, [r7, #4] - 8003efc: 6978 ldr r0, [r7, #20] - 8003efe: f7fc f909 bl 8000114 <__udivsi3> - 8003f02: 0003 movs r3, r0 - 8003f04: 613b str r3, [r7, #16] - 8003f06: e015 b.n 8003f34 + 800354e: 6879 ldr r1, [r7, #4] + 8003550: 6978 ldr r0, [r7, #20] + 8003552: f7fc fddf bl 8000114 <__udivsi3> + 8003556: 0003 movs r3, r0 + 8003558: 613b str r3, [r7, #16] + 800355a: e015 b.n 8003588 } else if (__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_LSE) - 8003f08: 4b0d ldr r3, [pc, #52] @ (8003f40 ) - 8003f0a: 689b ldr r3, [r3, #8] - 8003f0c: 2238 movs r2, #56 @ 0x38 - 8003f0e: 4013 ands r3, r2 - 8003f10: 2b20 cmp r3, #32 - 8003f12: d103 bne.n 8003f1c + 800355c: 4b0d ldr r3, [pc, #52] @ (8003594 ) + 800355e: 689b ldr r3, [r3, #8] + 8003560: 2238 movs r2, #56 @ 0x38 + 8003562: 4013 ands r3, r2 + 8003564: 2b20 cmp r3, #32 + 8003566: d103 bne.n 8003570 { /* LSE used as system clock source */ sysclockfreq = LSE_VALUE; - 8003f14: 2380 movs r3, #128 @ 0x80 - 8003f16: 021b lsls r3, r3, #8 - 8003f18: 613b str r3, [r7, #16] - 8003f1a: e00b b.n 8003f34 + 8003568: 2380 movs r3, #128 @ 0x80 + 800356a: 021b lsls r3, r3, #8 + 800356c: 613b str r3, [r7, #16] + 800356e: e00b b.n 8003588 } else if (__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_LSI) - 8003f1c: 4b08 ldr r3, [pc, #32] @ (8003f40 ) - 8003f1e: 689b ldr r3, [r3, #8] - 8003f20: 2238 movs r2, #56 @ 0x38 - 8003f22: 4013 ands r3, r2 - 8003f24: 2b18 cmp r3, #24 - 8003f26: d103 bne.n 8003f30 + 8003570: 4b08 ldr r3, [pc, #32] @ (8003594 ) + 8003572: 689b ldr r3, [r3, #8] + 8003574: 2238 movs r2, #56 @ 0x38 + 8003576: 4013 ands r3, r2 + 8003578: 2b18 cmp r3, #24 + 800357a: d103 bne.n 8003584 { /* LSI used as system clock source */ sysclockfreq = LSI_VALUE; - 8003f28: 23fa movs r3, #250 @ 0xfa - 8003f2a: 01db lsls r3, r3, #7 - 8003f2c: 613b str r3, [r7, #16] - 8003f2e: e001 b.n 8003f34 + 800357c: 23fa movs r3, #250 @ 0xfa + 800357e: 01db lsls r3, r3, #7 + 8003580: 613b str r3, [r7, #16] + 8003582: e001 b.n 8003588 } else { sysclockfreq = 0U; - 8003f30: 2300 movs r3, #0 - 8003f32: 613b str r3, [r7, #16] + 8003584: 2300 movs r3, #0 + 8003586: 613b str r3, [r7, #16] } return sysclockfreq; - 8003f34: 693b ldr r3, [r7, #16] + 8003588: 693b ldr r3, [r7, #16] } - 8003f36: 0018 movs r0, r3 - 8003f38: 46bd mov sp, r7 - 8003f3a: b006 add sp, #24 - 8003f3c: bd80 pop {r7, pc} - 8003f3e: 46c0 nop @ (mov r8, r8) - 8003f40: 40021000 .word 0x40021000 - 8003f44: 00f42400 .word 0x00f42400 - 8003f48: 007a1200 .word 0x007a1200 + 800358a: 0018 movs r0, r3 + 800358c: 46bd mov sp, r7 + 800358e: b006 add sp, #24 + 8003590: bd80 pop {r7, pc} + 8003592: 46c0 nop @ (mov r8, r8) + 8003594: 40021000 .word 0x40021000 + 8003598: 00f42400 .word 0x00f42400 + 800359c: 007a1200 .word 0x007a1200 -08003f4c : +080035a0 : * * @note The SystemCoreClock CMSIS variable is used to store System Clock Frequency. * @retval HCLK frequency in Hz */ uint32_t HAL_RCC_GetHCLKFreq(void) { - 8003f4c: b580 push {r7, lr} - 8003f4e: af00 add r7, sp, #0 + 80035a0: b580 push {r7, lr} + 80035a2: af00 add r7, sp, #0 return SystemCoreClock; - 8003f50: 4b02 ldr r3, [pc, #8] @ (8003f5c ) - 8003f52: 681b ldr r3, [r3, #0] + 80035a4: 4b02 ldr r3, [pc, #8] @ (80035b0 ) + 80035a6: 681b ldr r3, [r3, #0] } - 8003f54: 0018 movs r0, r3 - 8003f56: 46bd mov sp, r7 - 8003f58: bd80 pop {r7, pc} - 8003f5a: 46c0 nop @ (mov r8, r8) - 8003f5c: 20000000 .word 0x20000000 + 80035a8: 0018 movs r0, r3 + 80035aa: 46bd mov sp, r7 + 80035ac: bd80 pop {r7, pc} + 80035ae: 46c0 nop @ (mov r8, r8) + 80035b0: 20000000 .word 0x20000000 -08003f60 : +080035b4 : * @note Each time PCLK1 changes, this function must be called to update the * right PCLK1 value. Otherwise, any configuration based on this function will be incorrect. * @retval PCLK1 frequency in Hz */ uint32_t HAL_RCC_GetPCLK1Freq(void) { - 8003f60: b5b0 push {r4, r5, r7, lr} - 8003f62: af00 add r7, sp, #0 + 80035b4: b5b0 push {r4, r5, r7, lr} + 80035b6: af00 add r7, sp, #0 /* Get HCLK source and Compute PCLK1 frequency ---------------------------*/ return ((uint32_t)(__LL_RCC_CALC_PCLK1_FREQ(HAL_RCC_GetHCLKFreq(), LL_RCC_GetAPB1Prescaler()))); - 8003f64: f7ff fff2 bl 8003f4c - 8003f68: 0004 movs r4, r0 - 8003f6a: f7ff fb49 bl 8003600 - 8003f6e: 0003 movs r3, r0 - 8003f70: 0b1a lsrs r2, r3, #12 - 8003f72: 4b05 ldr r3, [pc, #20] @ (8003f88 ) - 8003f74: 0092 lsls r2, r2, #2 - 8003f76: 58d3 ldr r3, [r2, r3] - 8003f78: 221f movs r2, #31 - 8003f7a: 4013 ands r3, r2 - 8003f7c: 40dc lsrs r4, r3 - 8003f7e: 0023 movs r3, r4 + 80035b8: f7ff fff2 bl 80035a0 + 80035bc: 0004 movs r4, r0 + 80035be: f7ff fb49 bl 8002c54 + 80035c2: 0003 movs r3, r0 + 80035c4: 0b1a lsrs r2, r3, #12 + 80035c6: 4b05 ldr r3, [pc, #20] @ (80035dc ) + 80035c8: 0092 lsls r2, r2, #2 + 80035ca: 58d3 ldr r3, [r2, r3] + 80035cc: 221f movs r2, #31 + 80035ce: 4013 ands r3, r2 + 80035d0: 40dc lsrs r4, r3 + 80035d2: 0023 movs r3, r4 } - 8003f80: 0018 movs r0, r3 - 8003f82: 46bd mov sp, r7 - 8003f84: bdb0 pop {r4, r5, r7, pc} - 8003f86: 46c0 nop @ (mov r8, r8) - 8003f88: 08005f60 .word 0x08005f60 + 80035d4: 0018 movs r0, r3 + 80035d6: 46bd mov sp, r7 + 80035d8: bdb0 pop {r4, r5, r7, pc} + 80035da: 46c0 nop @ (mov r8, r8) + 80035dc: 08006280 .word 0x08006280 -08003f8c : +080035e0 : * the RTC clock source: in this case the access to Backup domain is enabled. * * @retval HAL status */ HAL_StatusTypeDef HAL_RCCEx_PeriphCLKConfig(RCC_PeriphCLKInitTypeDef *PeriphClkInit) { - 8003f8c: b580 push {r7, lr} - 8003f8e: b086 sub sp, #24 - 8003f90: af00 add r7, sp, #0 - 8003f92: 6078 str r0, [r7, #4] + 80035e0: b580 push {r7, lr} + 80035e2: b086 sub sp, #24 + 80035e4: af00 add r7, sp, #0 + 80035e6: 6078 str r0, [r7, #4] uint32_t tmpregister; uint32_t tickstart; HAL_StatusTypeDef ret = HAL_OK; /* Intermediate status */ - 8003f94: 2313 movs r3, #19 - 8003f96: 18fb adds r3, r7, r3 - 8003f98: 2200 movs r2, #0 - 8003f9a: 701a strb r2, [r3, #0] + 80035e8: 2313 movs r3, #19 + 80035ea: 18fb adds r3, r7, r3 + 80035ec: 2200 movs r2, #0 + 80035ee: 701a strb r2, [r3, #0] HAL_StatusTypeDef status = HAL_OK; /* Final status */ - 8003f9c: 2312 movs r3, #18 - 8003f9e: 18fb adds r3, r7, r3 - 8003fa0: 2200 movs r2, #0 - 8003fa2: 701a strb r2, [r3, #0] + 80035f0: 2312 movs r3, #18 + 80035f2: 18fb adds r3, r7, r3 + 80035f4: 2200 movs r2, #0 + 80035f6: 701a strb r2, [r3, #0] /* Check the parameters */ assert_param(IS_RCC_PERIPHCLOCK(PeriphClkInit->PeriphClockSelection)); /*-------------------------- RTC clock source configuration ----------------------*/ if ((PeriphClkInit->PeriphClockSelection & RCC_PERIPHCLK_RTC) == RCC_PERIPHCLK_RTC) - 8003fa4: 687b ldr r3, [r7, #4] - 8003fa6: 681a ldr r2, [r3, #0] - 8003fa8: 2380 movs r3, #128 @ 0x80 - 8003faa: 029b lsls r3, r3, #10 - 8003fac: 4013 ands r3, r2 - 8003fae: d100 bne.n 8003fb2 - 8003fb0: e0a3 b.n 80040fa + 80035f8: 687b ldr r3, [r7, #4] + 80035fa: 681a ldr r2, [r3, #0] + 80035fc: 2380 movs r3, #128 @ 0x80 + 80035fe: 029b lsls r3, r3, #10 + 8003600: 4013 ands r3, r2 + 8003602: d100 bne.n 8003606 + 8003604: e0a3 b.n 800374e { FlagStatus pwrclkchanged = RESET; - 8003fb2: 2011 movs r0, #17 - 8003fb4: 183b adds r3, r7, r0 - 8003fb6: 2200 movs r2, #0 - 8003fb8: 701a strb r2, [r3, #0] + 8003606: 2011 movs r0, #17 + 8003608: 183b adds r3, r7, r0 + 800360a: 2200 movs r2, #0 + 800360c: 701a strb r2, [r3, #0] /* Check for RTC Parameters used to output RTCCLK */ assert_param(IS_RCC_RTCCLKSOURCE(PeriphClkInit->RTCClockSelection)); /* Enable Power Clock */ if (__HAL_RCC_PWR_IS_CLK_DISABLED()) - 8003fba: 4b86 ldr r3, [pc, #536] @ (80041d4 ) - 8003fbc: 6bda ldr r2, [r3, #60] @ 0x3c - 8003fbe: 2380 movs r3, #128 @ 0x80 - 8003fc0: 055b lsls r3, r3, #21 - 8003fc2: 4013 ands r3, r2 - 8003fc4: d110 bne.n 8003fe8 + 800360e: 4b86 ldr r3, [pc, #536] @ (8003828 ) + 8003610: 6bda ldr r2, [r3, #60] @ 0x3c + 8003612: 2380 movs r3, #128 @ 0x80 + 8003614: 055b lsls r3, r3, #21 + 8003616: 4013 ands r3, r2 + 8003618: d110 bne.n 800363c { __HAL_RCC_PWR_CLK_ENABLE(); - 8003fc6: 4b83 ldr r3, [pc, #524] @ (80041d4 ) - 8003fc8: 6bda ldr r2, [r3, #60] @ 0x3c - 8003fca: 4b82 ldr r3, [pc, #520] @ (80041d4 ) - 8003fcc: 2180 movs r1, #128 @ 0x80 - 8003fce: 0549 lsls r1, r1, #21 - 8003fd0: 430a orrs r2, r1 - 8003fd2: 63da str r2, [r3, #60] @ 0x3c - 8003fd4: 4b7f ldr r3, [pc, #508] @ (80041d4 ) - 8003fd6: 6bda ldr r2, [r3, #60] @ 0x3c - 8003fd8: 2380 movs r3, #128 @ 0x80 - 8003fda: 055b lsls r3, r3, #21 - 8003fdc: 4013 ands r3, r2 - 8003fde: 60bb str r3, [r7, #8] - 8003fe0: 68bb ldr r3, [r7, #8] + 800361a: 4b83 ldr r3, [pc, #524] @ (8003828 ) + 800361c: 6bda ldr r2, [r3, #60] @ 0x3c + 800361e: 4b82 ldr r3, [pc, #520] @ (8003828 ) + 8003620: 2180 movs r1, #128 @ 0x80 + 8003622: 0549 lsls r1, r1, #21 + 8003624: 430a orrs r2, r1 + 8003626: 63da str r2, [r3, #60] @ 0x3c + 8003628: 4b7f ldr r3, [pc, #508] @ (8003828 ) + 800362a: 6bda ldr r2, [r3, #60] @ 0x3c + 800362c: 2380 movs r3, #128 @ 0x80 + 800362e: 055b lsls r3, r3, #21 + 8003630: 4013 ands r3, r2 + 8003632: 60bb str r3, [r7, #8] + 8003634: 68bb ldr r3, [r7, #8] pwrclkchanged = SET; - 8003fe2: 183b adds r3, r7, r0 - 8003fe4: 2201 movs r2, #1 - 8003fe6: 701a strb r2, [r3, #0] + 8003636: 183b adds r3, r7, r0 + 8003638: 2201 movs r2, #1 + 800363a: 701a strb r2, [r3, #0] } /* Enable write access to Backup domain */ SET_BIT(PWR->CR1, PWR_CR1_DBP); - 8003fe8: 4b7b ldr r3, [pc, #492] @ (80041d8 ) - 8003fea: 681a ldr r2, [r3, #0] - 8003fec: 4b7a ldr r3, [pc, #488] @ (80041d8 ) - 8003fee: 2180 movs r1, #128 @ 0x80 - 8003ff0: 0049 lsls r1, r1, #1 - 8003ff2: 430a orrs r2, r1 - 8003ff4: 601a str r2, [r3, #0] + 800363c: 4b7b ldr r3, [pc, #492] @ (800382c ) + 800363e: 681a ldr r2, [r3, #0] + 8003640: 4b7a ldr r3, [pc, #488] @ (800382c ) + 8003642: 2180 movs r1, #128 @ 0x80 + 8003644: 0049 lsls r1, r1, #1 + 8003646: 430a orrs r2, r1 + 8003648: 601a str r2, [r3, #0] /* Wait for Backup domain Write protection disable */ tickstart = HAL_GetTick(); - 8003ff6: f7fd fa99 bl 800152c - 8003ffa: 0003 movs r3, r0 - 8003ffc: 60fb str r3, [r7, #12] + 800364a: f7fe f80f bl 800166c + 800364e: 0003 movs r3, r0 + 8003650: 60fb str r3, [r7, #12] while ((PWR->CR1 & PWR_CR1_DBP) == 0U) - 8003ffe: e00b b.n 8004018 + 8003652: e00b b.n 800366c { if ((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE) - 8004000: f7fd fa94 bl 800152c - 8004004: 0002 movs r2, r0 - 8004006: 68fb ldr r3, [r7, #12] - 8004008: 1ad3 subs r3, r2, r3 - 800400a: 2b02 cmp r3, #2 - 800400c: d904 bls.n 8004018 + 8003654: f7fe f80a bl 800166c + 8003658: 0002 movs r2, r0 + 800365a: 68fb ldr r3, [r7, #12] + 800365c: 1ad3 subs r3, r2, r3 + 800365e: 2b02 cmp r3, #2 + 8003660: d904 bls.n 800366c { ret = HAL_TIMEOUT; - 800400e: 2313 movs r3, #19 - 8004010: 18fb adds r3, r7, r3 - 8004012: 2203 movs r2, #3 - 8004014: 701a strb r2, [r3, #0] + 8003662: 2313 movs r3, #19 + 8003664: 18fb adds r3, r7, r3 + 8003666: 2203 movs r2, #3 + 8003668: 701a strb r2, [r3, #0] break; - 8004016: e005 b.n 8004024 + 800366a: e005 b.n 8003678 while ((PWR->CR1 & PWR_CR1_DBP) == 0U) - 8004018: 4b6f ldr r3, [pc, #444] @ (80041d8 ) - 800401a: 681a ldr r2, [r3, #0] - 800401c: 2380 movs r3, #128 @ 0x80 - 800401e: 005b lsls r3, r3, #1 - 8004020: 4013 ands r3, r2 - 8004022: d0ed beq.n 8004000 + 800366c: 4b6f ldr r3, [pc, #444] @ (800382c ) + 800366e: 681a ldr r2, [r3, #0] + 8003670: 2380 movs r3, #128 @ 0x80 + 8003672: 005b lsls r3, r3, #1 + 8003674: 4013 ands r3, r2 + 8003676: d0ed beq.n 8003654 } } if (ret == HAL_OK) - 8004024: 2313 movs r3, #19 - 8004026: 18fb adds r3, r7, r3 - 8004028: 781b ldrb r3, [r3, #0] - 800402a: 2b00 cmp r3, #0 - 800402c: d154 bne.n 80040d8 + 8003678: 2313 movs r3, #19 + 800367a: 18fb adds r3, r7, r3 + 800367c: 781b ldrb r3, [r3, #0] + 800367e: 2b00 cmp r3, #0 + 8003680: d154 bne.n 800372c { /* Reset the Backup domain only if the RTC Clock source selection is modified from default */ tmpregister = READ_BIT(RCC->BDCR, RCC_BDCR_RTCSEL); - 800402e: 4b69 ldr r3, [pc, #420] @ (80041d4 ) - 8004030: 6dda ldr r2, [r3, #92] @ 0x5c - 8004032: 23c0 movs r3, #192 @ 0xc0 - 8004034: 009b lsls r3, r3, #2 - 8004036: 4013 ands r3, r2 - 8004038: 617b str r3, [r7, #20] + 8003682: 4b69 ldr r3, [pc, #420] @ (8003828 ) + 8003684: 6dda ldr r2, [r3, #92] @ 0x5c + 8003686: 23c0 movs r3, #192 @ 0xc0 + 8003688: 009b lsls r3, r3, #2 + 800368a: 4013 ands r3, r2 + 800368c: 617b str r3, [r7, #20] /* Reset the Backup domain only if the RTC Clock source selection is modified */ if ((tmpregister != RCC_RTCCLKSOURCE_NONE) && (tmpregister != PeriphClkInit->RTCClockSelection)) - 800403a: 697b ldr r3, [r7, #20] - 800403c: 2b00 cmp r3, #0 - 800403e: d019 beq.n 8004074 - 8004040: 687b ldr r3, [r7, #4] - 8004042: 699b ldr r3, [r3, #24] - 8004044: 697a ldr r2, [r7, #20] - 8004046: 429a cmp r2, r3 - 8004048: d014 beq.n 8004074 + 800368e: 697b ldr r3, [r7, #20] + 8003690: 2b00 cmp r3, #0 + 8003692: d019 beq.n 80036c8 + 8003694: 687b ldr r3, [r7, #4] + 8003696: 699b ldr r3, [r3, #24] + 8003698: 697a ldr r2, [r7, #20] + 800369a: 429a cmp r2, r3 + 800369c: d014 beq.n 80036c8 { /* Store the content of BDCR register before the reset of Backup Domain */ tmpregister = READ_BIT(RCC->BDCR, ~(RCC_BDCR_RTCSEL)); - 800404a: 4b62 ldr r3, [pc, #392] @ (80041d4 ) - 800404c: 6ddb ldr r3, [r3, #92] @ 0x5c - 800404e: 4a63 ldr r2, [pc, #396] @ (80041dc ) - 8004050: 4013 ands r3, r2 - 8004052: 617b str r3, [r7, #20] + 800369e: 4b62 ldr r3, [pc, #392] @ (8003828 ) + 80036a0: 6ddb ldr r3, [r3, #92] @ 0x5c + 80036a2: 4a63 ldr r2, [pc, #396] @ (8003830 ) + 80036a4: 4013 ands r3, r2 + 80036a6: 617b str r3, [r7, #20] /* RTC Clock selection can be changed only if the Backup Domain is reset */ __HAL_RCC_BACKUPRESET_FORCE(); - 8004054: 4b5f ldr r3, [pc, #380] @ (80041d4 ) - 8004056: 6dda ldr r2, [r3, #92] @ 0x5c - 8004058: 4b5e ldr r3, [pc, #376] @ (80041d4 ) - 800405a: 2180 movs r1, #128 @ 0x80 - 800405c: 0249 lsls r1, r1, #9 - 800405e: 430a orrs r2, r1 - 8004060: 65da str r2, [r3, #92] @ 0x5c + 80036a8: 4b5f ldr r3, [pc, #380] @ (8003828 ) + 80036aa: 6dda ldr r2, [r3, #92] @ 0x5c + 80036ac: 4b5e ldr r3, [pc, #376] @ (8003828 ) + 80036ae: 2180 movs r1, #128 @ 0x80 + 80036b0: 0249 lsls r1, r1, #9 + 80036b2: 430a orrs r2, r1 + 80036b4: 65da str r2, [r3, #92] @ 0x5c __HAL_RCC_BACKUPRESET_RELEASE(); - 8004062: 4b5c ldr r3, [pc, #368] @ (80041d4 ) - 8004064: 6dda ldr r2, [r3, #92] @ 0x5c - 8004066: 4b5b ldr r3, [pc, #364] @ (80041d4 ) - 8004068: 495d ldr r1, [pc, #372] @ (80041e0 ) - 800406a: 400a ands r2, r1 - 800406c: 65da str r2, [r3, #92] @ 0x5c + 80036b6: 4b5c ldr r3, [pc, #368] @ (8003828 ) + 80036b8: 6dda ldr r2, [r3, #92] @ 0x5c + 80036ba: 4b5b ldr r3, [pc, #364] @ (8003828 ) + 80036bc: 495d ldr r1, [pc, #372] @ (8003834 ) + 80036be: 400a ands r2, r1 + 80036c0: 65da str r2, [r3, #92] @ 0x5c /* Restore the Content of BDCR register */ RCC->BDCR = tmpregister; - 800406e: 4b59 ldr r3, [pc, #356] @ (80041d4 ) - 8004070: 697a ldr r2, [r7, #20] - 8004072: 65da str r2, [r3, #92] @ 0x5c + 80036c2: 4b59 ldr r3, [pc, #356] @ (8003828 ) + 80036c4: 697a ldr r2, [r7, #20] + 80036c6: 65da str r2, [r3, #92] @ 0x5c } /* Wait for LSE reactivation if LSE was enable prior to Backup Domain reset */ if (HAL_IS_BIT_SET(tmpregister, RCC_BDCR_LSEON)) - 8004074: 697b ldr r3, [r7, #20] - 8004076: 2201 movs r2, #1 - 8004078: 4013 ands r3, r2 - 800407a: d016 beq.n 80040aa + 80036c8: 697b ldr r3, [r7, #20] + 80036ca: 2201 movs r2, #1 + 80036cc: 4013 ands r3, r2 + 80036ce: d016 beq.n 80036fe { /* Get Start Tick*/ tickstart = HAL_GetTick(); - 800407c: f7fd fa56 bl 800152c - 8004080: 0003 movs r3, r0 - 8004082: 60fb str r3, [r7, #12] + 80036d0: f7fd ffcc bl 800166c + 80036d4: 0003 movs r3, r0 + 80036d6: 60fb str r3, [r7, #12] /* Wait till LSE is ready */ while (READ_BIT(RCC->BDCR, RCC_BDCR_LSERDY) == 0U) - 8004084: e00c b.n 80040a0 + 80036d8: e00c b.n 80036f4 { if ((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE) - 8004086: f7fd fa51 bl 800152c - 800408a: 0002 movs r2, r0 - 800408c: 68fb ldr r3, [r7, #12] - 800408e: 1ad3 subs r3, r2, r3 - 8004090: 4a54 ldr r2, [pc, #336] @ (80041e4 ) - 8004092: 4293 cmp r3, r2 - 8004094: d904 bls.n 80040a0 + 80036da: f7fd ffc7 bl 800166c + 80036de: 0002 movs r2, r0 + 80036e0: 68fb ldr r3, [r7, #12] + 80036e2: 1ad3 subs r3, r2, r3 + 80036e4: 4a54 ldr r2, [pc, #336] @ (8003838 ) + 80036e6: 4293 cmp r3, r2 + 80036e8: d904 bls.n 80036f4 { ret = HAL_TIMEOUT; - 8004096: 2313 movs r3, #19 - 8004098: 18fb adds r3, r7, r3 - 800409a: 2203 movs r2, #3 - 800409c: 701a strb r2, [r3, #0] + 80036ea: 2313 movs r3, #19 + 80036ec: 18fb adds r3, r7, r3 + 80036ee: 2203 movs r2, #3 + 80036f0: 701a strb r2, [r3, #0] break; - 800409e: e004 b.n 80040aa + 80036f2: e004 b.n 80036fe while (READ_BIT(RCC->BDCR, RCC_BDCR_LSERDY) == 0U) - 80040a0: 4b4c ldr r3, [pc, #304] @ (80041d4 ) - 80040a2: 6ddb ldr r3, [r3, #92] @ 0x5c - 80040a4: 2202 movs r2, #2 - 80040a6: 4013 ands r3, r2 - 80040a8: d0ed beq.n 8004086 + 80036f4: 4b4c ldr r3, [pc, #304] @ (8003828 ) + 80036f6: 6ddb ldr r3, [r3, #92] @ 0x5c + 80036f8: 2202 movs r2, #2 + 80036fa: 4013 ands r3, r2 + 80036fc: d0ed beq.n 80036da } } } if (ret == HAL_OK) - 80040aa: 2313 movs r3, #19 - 80040ac: 18fb adds r3, r7, r3 - 80040ae: 781b ldrb r3, [r3, #0] - 80040b0: 2b00 cmp r3, #0 - 80040b2: d10a bne.n 80040ca + 80036fe: 2313 movs r3, #19 + 8003700: 18fb adds r3, r7, r3 + 8003702: 781b ldrb r3, [r3, #0] + 8003704: 2b00 cmp r3, #0 + 8003706: d10a bne.n 800371e { /* Apply new RTC clock source selection */ __HAL_RCC_RTC_CONFIG(PeriphClkInit->RTCClockSelection); - 80040b4: 4b47 ldr r3, [pc, #284] @ (80041d4 ) - 80040b6: 6ddb ldr r3, [r3, #92] @ 0x5c - 80040b8: 4a48 ldr r2, [pc, #288] @ (80041dc ) - 80040ba: 4013 ands r3, r2 - 80040bc: 0019 movs r1, r3 - 80040be: 687b ldr r3, [r7, #4] - 80040c0: 699a ldr r2, [r3, #24] - 80040c2: 4b44 ldr r3, [pc, #272] @ (80041d4 ) - 80040c4: 430a orrs r2, r1 - 80040c6: 65da str r2, [r3, #92] @ 0x5c - 80040c8: e00c b.n 80040e4 + 8003708: 4b47 ldr r3, [pc, #284] @ (8003828 ) + 800370a: 6ddb ldr r3, [r3, #92] @ 0x5c + 800370c: 4a48 ldr r2, [pc, #288] @ (8003830 ) + 800370e: 4013 ands r3, r2 + 8003710: 0019 movs r1, r3 + 8003712: 687b ldr r3, [r7, #4] + 8003714: 699a ldr r2, [r3, #24] + 8003716: 4b44 ldr r3, [pc, #272] @ (8003828 ) + 8003718: 430a orrs r2, r1 + 800371a: 65da str r2, [r3, #92] @ 0x5c + 800371c: e00c b.n 8003738 } else { /* set overall return value */ status = ret; - 80040ca: 2312 movs r3, #18 - 80040cc: 18fb adds r3, r7, r3 - 80040ce: 2213 movs r2, #19 - 80040d0: 18ba adds r2, r7, r2 - 80040d2: 7812 ldrb r2, [r2, #0] - 80040d4: 701a strb r2, [r3, #0] - 80040d6: e005 b.n 80040e4 + 800371e: 2312 movs r3, #18 + 8003720: 18fb adds r3, r7, r3 + 8003722: 2213 movs r2, #19 + 8003724: 18ba adds r2, r7, r2 + 8003726: 7812 ldrb r2, [r2, #0] + 8003728: 701a strb r2, [r3, #0] + 800372a: e005 b.n 8003738 } } else { /* set overall return value */ status = ret; - 80040d8: 2312 movs r3, #18 - 80040da: 18fb adds r3, r7, r3 - 80040dc: 2213 movs r2, #19 - 80040de: 18ba adds r2, r7, r2 - 80040e0: 7812 ldrb r2, [r2, #0] - 80040e2: 701a strb r2, [r3, #0] + 800372c: 2312 movs r3, #18 + 800372e: 18fb adds r3, r7, r3 + 8003730: 2213 movs r2, #19 + 8003732: 18ba adds r2, r7, r2 + 8003734: 7812 ldrb r2, [r2, #0] + 8003736: 701a strb r2, [r3, #0] } /* Restore clock configuration if changed */ if (pwrclkchanged == SET) - 80040e4: 2311 movs r3, #17 - 80040e6: 18fb adds r3, r7, r3 - 80040e8: 781b ldrb r3, [r3, #0] - 80040ea: 2b01 cmp r3, #1 - 80040ec: d105 bne.n 80040fa + 8003738: 2311 movs r3, #17 + 800373a: 18fb adds r3, r7, r3 + 800373c: 781b ldrb r3, [r3, #0] + 800373e: 2b01 cmp r3, #1 + 8003740: d105 bne.n 800374e { __HAL_RCC_PWR_CLK_DISABLE(); - 80040ee: 4b39 ldr r3, [pc, #228] @ (80041d4 ) - 80040f0: 6bda ldr r2, [r3, #60] @ 0x3c - 80040f2: 4b38 ldr r3, [pc, #224] @ (80041d4 ) - 80040f4: 493c ldr r1, [pc, #240] @ (80041e8 ) - 80040f6: 400a ands r2, r1 - 80040f8: 63da str r2, [r3, #60] @ 0x3c + 8003742: 4b39 ldr r3, [pc, #228] @ (8003828 ) + 8003744: 6bda ldr r2, [r3, #60] @ 0x3c + 8003746: 4b38 ldr r3, [pc, #224] @ (8003828 ) + 8003748: 493c ldr r1, [pc, #240] @ (800383c ) + 800374a: 400a ands r2, r1 + 800374c: 63da str r2, [r3, #60] @ 0x3c } } /*-------------------------- USART1 clock source configuration -------------------*/ if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USART1) == RCC_PERIPHCLK_USART1) - 80040fa: 687b ldr r3, [r7, #4] - 80040fc: 681b ldr r3, [r3, #0] - 80040fe: 2201 movs r2, #1 - 8004100: 4013 ands r3, r2 - 8004102: d009 beq.n 8004118 + 800374e: 687b ldr r3, [r7, #4] + 8003750: 681b ldr r3, [r3, #0] + 8003752: 2201 movs r2, #1 + 8003754: 4013 ands r3, r2 + 8003756: d009 beq.n 800376c { /* Check the parameters */ assert_param(IS_RCC_USART1CLKSOURCE(PeriphClkInit->Usart1ClockSelection)); /* Configure the USART1 clock source */ __HAL_RCC_USART1_CONFIG(PeriphClkInit->Usart1ClockSelection); - 8004104: 4b33 ldr r3, [pc, #204] @ (80041d4 ) - 8004106: 6d5b ldr r3, [r3, #84] @ 0x54 - 8004108: 2203 movs r2, #3 - 800410a: 4393 bics r3, r2 - 800410c: 0019 movs r1, r3 - 800410e: 687b ldr r3, [r7, #4] - 8004110: 685a ldr r2, [r3, #4] - 8004112: 4b30 ldr r3, [pc, #192] @ (80041d4 ) - 8004114: 430a orrs r2, r1 - 8004116: 655a str r2, [r3, #84] @ 0x54 + 8003758: 4b33 ldr r3, [pc, #204] @ (8003828 ) + 800375a: 6d5b ldr r3, [r3, #84] @ 0x54 + 800375c: 2203 movs r2, #3 + 800375e: 4393 bics r3, r2 + 8003760: 0019 movs r1, r3 + 8003762: 687b ldr r3, [r7, #4] + 8003764: 685a ldr r2, [r3, #4] + 8003766: 4b30 ldr r3, [pc, #192] @ (8003828 ) + 8003768: 430a orrs r2, r1 + 800376a: 655a str r2, [r3, #84] @ 0x54 } #if defined(RCC_CCIPR_USART2SEL) /*-------------------------- USART2 clock source configuration -------------------*/ if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USART2) == RCC_PERIPHCLK_USART2) - 8004118: 687b ldr r3, [r7, #4] - 800411a: 681b ldr r3, [r3, #0] - 800411c: 2202 movs r2, #2 - 800411e: 4013 ands r3, r2 - 8004120: d009 beq.n 8004136 + 800376c: 687b ldr r3, [r7, #4] + 800376e: 681b ldr r3, [r3, #0] + 8003770: 2202 movs r2, #2 + 8003772: 4013 ands r3, r2 + 8003774: d009 beq.n 800378a { /* Check the parameters */ assert_param(IS_RCC_USART2CLKSOURCE(PeriphClkInit->Usart2ClockSelection)); /* Configure the USART2 clock source */ __HAL_RCC_USART2_CONFIG(PeriphClkInit->Usart2ClockSelection); - 8004122: 4b2c ldr r3, [pc, #176] @ (80041d4 ) - 8004124: 6d5b ldr r3, [r3, #84] @ 0x54 - 8004126: 220c movs r2, #12 - 8004128: 4393 bics r3, r2 - 800412a: 0019 movs r1, r3 - 800412c: 687b ldr r3, [r7, #4] - 800412e: 689a ldr r2, [r3, #8] - 8004130: 4b28 ldr r3, [pc, #160] @ (80041d4 ) - 8004132: 430a orrs r2, r1 - 8004134: 655a str r2, [r3, #84] @ 0x54 + 8003776: 4b2c ldr r3, [pc, #176] @ (8003828 ) + 8003778: 6d5b ldr r3, [r3, #84] @ 0x54 + 800377a: 220c movs r2, #12 + 800377c: 4393 bics r3, r2 + 800377e: 0019 movs r1, r3 + 8003780: 687b ldr r3, [r7, #4] + 8003782: 689a ldr r2, [r3, #8] + 8003784: 4b28 ldr r3, [pc, #160] @ (8003828 ) + 8003786: 430a orrs r2, r1 + 8003788: 655a str r2, [r3, #84] @ 0x54 __HAL_RCC_LPTIM2_CONFIG(PeriphClkInit->Lptim2ClockSelection); } #endif /* RCC_CCIPR_LPTIM2SEL */ /*-------------------------- I2C1 clock source configuration ---------------------*/ if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2C1) == RCC_PERIPHCLK_I2C1) - 8004136: 687b ldr r3, [r7, #4] - 8004138: 681b ldr r3, [r3, #0] - 800413a: 2220 movs r2, #32 - 800413c: 4013 ands r3, r2 - 800413e: d009 beq.n 8004154 + 800378a: 687b ldr r3, [r7, #4] + 800378c: 681b ldr r3, [r3, #0] + 800378e: 2220 movs r2, #32 + 8003790: 4013 ands r3, r2 + 8003792: d009 beq.n 80037a8 { /* Check the parameters */ assert_param(IS_RCC_I2C1CLKSOURCE(PeriphClkInit->I2c1ClockSelection)); /* Configure the I2C1 clock source */ __HAL_RCC_I2C1_CONFIG(PeriphClkInit->I2c1ClockSelection); - 8004140: 4b24 ldr r3, [pc, #144] @ (80041d4 ) - 8004142: 6d5b ldr r3, [r3, #84] @ 0x54 - 8004144: 4a29 ldr r2, [pc, #164] @ (80041ec ) - 8004146: 4013 ands r3, r2 - 8004148: 0019 movs r1, r3 - 800414a: 687b ldr r3, [r7, #4] - 800414c: 68da ldr r2, [r3, #12] - 800414e: 4b21 ldr r3, [pc, #132] @ (80041d4 ) - 8004150: 430a orrs r2, r1 - 8004152: 655a str r2, [r3, #84] @ 0x54 + 8003794: 4b24 ldr r3, [pc, #144] @ (8003828 ) + 8003796: 6d5b ldr r3, [r3, #84] @ 0x54 + 8003798: 4a29 ldr r2, [pc, #164] @ (8003840 ) + 800379a: 4013 ands r3, r2 + 800379c: 0019 movs r1, r3 + 800379e: 687b ldr r3, [r7, #4] + 80037a0: 68da ldr r2, [r3, #12] + 80037a2: 4b21 ldr r3, [pc, #132] @ (8003828 ) + 80037a4: 430a orrs r2, r1 + 80037a6: 655a str r2, [r3, #84] @ 0x54 __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLLQCLK); } } #endif /* RNG */ /*-------------------------- ADC clock source configuration ----------------------*/ if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_ADC) == RCC_PERIPHCLK_ADC) - 8004154: 687b ldr r3, [r7, #4] - 8004156: 681a ldr r2, [r3, #0] - 8004158: 2380 movs r3, #128 @ 0x80 - 800415a: 01db lsls r3, r3, #7 - 800415c: 4013 ands r3, r2 - 800415e: d015 beq.n 800418c + 80037a8: 687b ldr r3, [r7, #4] + 80037aa: 681a ldr r2, [r3, #0] + 80037ac: 2380 movs r3, #128 @ 0x80 + 80037ae: 01db lsls r3, r3, #7 + 80037b0: 4013 ands r3, r2 + 80037b2: d015 beq.n 80037e0 { /* Check the parameters */ assert_param(IS_RCC_ADCCLKSOURCE(PeriphClkInit->AdcClockSelection)); /* Configure the ADC interface clock source */ __HAL_RCC_ADC_CONFIG(PeriphClkInit->AdcClockSelection); - 8004160: 4b1c ldr r3, [pc, #112] @ (80041d4 ) - 8004162: 6d5b ldr r3, [r3, #84] @ 0x54 - 8004164: 009b lsls r3, r3, #2 - 8004166: 0899 lsrs r1, r3, #2 - 8004168: 687b ldr r3, [r7, #4] - 800416a: 695a ldr r2, [r3, #20] - 800416c: 4b19 ldr r3, [pc, #100] @ (80041d4 ) - 800416e: 430a orrs r2, r1 - 8004170: 655a str r2, [r3, #84] @ 0x54 + 80037b4: 4b1c ldr r3, [pc, #112] @ (8003828 ) + 80037b6: 6d5b ldr r3, [r3, #84] @ 0x54 + 80037b8: 009b lsls r3, r3, #2 + 80037ba: 0899 lsrs r1, r3, #2 + 80037bc: 687b ldr r3, [r7, #4] + 80037be: 695a ldr r2, [r3, #20] + 80037c0: 4b19 ldr r3, [pc, #100] @ (8003828 ) + 80037c2: 430a orrs r2, r1 + 80037c4: 655a str r2, [r3, #84] @ 0x54 if (PeriphClkInit->AdcClockSelection == RCC_ADCCLKSOURCE_PLLADC) - 8004172: 687b ldr r3, [r7, #4] - 8004174: 695a ldr r2, [r3, #20] - 8004176: 2380 movs r3, #128 @ 0x80 - 8004178: 05db lsls r3, r3, #23 - 800417a: 429a cmp r2, r3 - 800417c: d106 bne.n 800418c + 80037c6: 687b ldr r3, [r7, #4] + 80037c8: 695a ldr r2, [r3, #20] + 80037ca: 2380 movs r3, #128 @ 0x80 + 80037cc: 05db lsls r3, r3, #23 + 80037ce: 429a cmp r2, r3 + 80037d0: d106 bne.n 80037e0 { /* Enable PLLPCLK output */ __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLLPCLK); - 800417e: 4b15 ldr r3, [pc, #84] @ (80041d4 ) - 8004180: 68da ldr r2, [r3, #12] - 8004182: 4b14 ldr r3, [pc, #80] @ (80041d4 ) - 8004184: 2180 movs r1, #128 @ 0x80 - 8004186: 0249 lsls r1, r1, #9 - 8004188: 430a orrs r2, r1 - 800418a: 60da str r2, [r3, #12] + 80037d2: 4b15 ldr r3, [pc, #84] @ (8003828 ) + 80037d4: 68da ldr r2, [r3, #12] + 80037d6: 4b14 ldr r3, [pc, #80] @ (8003828 ) + 80037d8: 2180 movs r1, #128 @ 0x80 + 80037da: 0249 lsls r1, r1, #9 + 80037dc: 430a orrs r2, r1 + 80037de: 60da str r2, [r3, #12] } } #endif /* RCC_CCIPR_TIM15SEL */ /*-------------------------- I2S1 clock source configuration ---------------------*/ if (((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2S1) == RCC_PERIPHCLK_I2S1) - 800418c: 687b ldr r3, [r7, #4] - 800418e: 681a ldr r2, [r3, #0] - 8004190: 2380 movs r3, #128 @ 0x80 - 8004192: 011b lsls r3, r3, #4 - 8004194: 4013 ands r3, r2 - 8004196: d016 beq.n 80041c6 + 80037e0: 687b ldr r3, [r7, #4] + 80037e2: 681a ldr r2, [r3, #0] + 80037e4: 2380 movs r3, #128 @ 0x80 + 80037e6: 011b lsls r3, r3, #4 + 80037e8: 4013 ands r3, r2 + 80037ea: d016 beq.n 800381a { /* Check the parameters */ assert_param(IS_RCC_I2S1CLKSOURCE(PeriphClkInit->I2s1ClockSelection)); /* Configure the I2S1 clock source */ __HAL_RCC_I2S1_CONFIG(PeriphClkInit->I2s1ClockSelection); - 8004198: 4b0e ldr r3, [pc, #56] @ (80041d4 ) - 800419a: 6d5b ldr r3, [r3, #84] @ 0x54 - 800419c: 4a14 ldr r2, [pc, #80] @ (80041f0 ) - 800419e: 4013 ands r3, r2 - 80041a0: 0019 movs r1, r3 - 80041a2: 687b ldr r3, [r7, #4] - 80041a4: 691a ldr r2, [r3, #16] - 80041a6: 4b0b ldr r3, [pc, #44] @ (80041d4 ) - 80041a8: 430a orrs r2, r1 - 80041aa: 655a str r2, [r3, #84] @ 0x54 + 80037ec: 4b0e ldr r3, [pc, #56] @ (8003828 ) + 80037ee: 6d5b ldr r3, [r3, #84] @ 0x54 + 80037f0: 4a14 ldr r2, [pc, #80] @ (8003844 ) + 80037f2: 4013 ands r3, r2 + 80037f4: 0019 movs r1, r3 + 80037f6: 687b ldr r3, [r7, #4] + 80037f8: 691a ldr r2, [r3, #16] + 80037fa: 4b0b ldr r3, [pc, #44] @ (8003828 ) + 80037fc: 430a orrs r2, r1 + 80037fe: 655a str r2, [r3, #84] @ 0x54 if (PeriphClkInit->I2s1ClockSelection == RCC_I2S1CLKSOURCE_PLL) - 80041ac: 687b ldr r3, [r7, #4] - 80041ae: 691a ldr r2, [r3, #16] - 80041b0: 2380 movs r3, #128 @ 0x80 - 80041b2: 01db lsls r3, r3, #7 - 80041b4: 429a cmp r2, r3 - 80041b6: d106 bne.n 80041c6 + 8003800: 687b ldr r3, [r7, #4] + 8003802: 691a ldr r2, [r3, #16] + 8003804: 2380 movs r3, #128 @ 0x80 + 8003806: 01db lsls r3, r3, #7 + 8003808: 429a cmp r2, r3 + 800380a: d106 bne.n 800381a { /* Enable PLLPCLK output */ __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLLPCLK); - 80041b8: 4b06 ldr r3, [pc, #24] @ (80041d4 ) - 80041ba: 68da ldr r2, [r3, #12] - 80041bc: 4b05 ldr r3, [pc, #20] @ (80041d4 ) - 80041be: 2180 movs r1, #128 @ 0x80 - 80041c0: 0249 lsls r1, r1, #9 - 80041c2: 430a orrs r2, r1 - 80041c4: 60da str r2, [r3, #12] + 800380c: 4b06 ldr r3, [pc, #24] @ (8003828 ) + 800380e: 68da ldr r2, [r3, #12] + 8003810: 4b05 ldr r3, [pc, #20] @ (8003828 ) + 8003812: 2180 movs r1, #128 @ 0x80 + 8003814: 0249 lsls r1, r1, #9 + 8003816: 430a orrs r2, r1 + 8003818: 60da str r2, [r3, #12] __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLLQCLK); } } #endif /* FDCAN1 || FDCAN2 */ return status; - 80041c6: 2312 movs r3, #18 - 80041c8: 18fb adds r3, r7, r3 - 80041ca: 781b ldrb r3, [r3, #0] + 800381a: 2312 movs r3, #18 + 800381c: 18fb adds r3, r7, r3 + 800381e: 781b ldrb r3, [r3, #0] } - 80041cc: 0018 movs r0, r3 - 80041ce: 46bd mov sp, r7 - 80041d0: b006 add sp, #24 - 80041d2: bd80 pop {r7, pc} - 80041d4: 40021000 .word 0x40021000 - 80041d8: 40007000 .word 0x40007000 - 80041dc: fffffcff .word 0xfffffcff - 80041e0: fffeffff .word 0xfffeffff - 80041e4: 00001388 .word 0x00001388 - 80041e8: efffffff .word 0xefffffff - 80041ec: ffffcfff .word 0xffffcfff - 80041f0: ffff3fff .word 0xffff3fff + 8003820: 0018 movs r0, r3 + 8003822: 46bd mov sp, r7 + 8003824: b006 add sp, #24 + 8003826: bd80 pop {r7, pc} + 8003828: 40021000 .word 0x40021000 + 800382c: 40007000 .word 0x40007000 + 8003830: fffffcff .word 0xfffffcff + 8003834: fffeffff .word 0xfffeffff + 8003838: 00001388 .word 0x00001388 + 800383c: efffffff .word 0xefffffff + 8003840: ffffcfff .word 0xffffcfff + 8003844: ffff3fff .word 0xffff3fff -080041f4 : +08003848 : * @param hspi pointer to a SPI_HandleTypeDef structure that contains * the configuration information for SPI module. * @retval HAL status */ HAL_StatusTypeDef HAL_SPI_Init(SPI_HandleTypeDef *hspi) { - 80041f4: b580 push {r7, lr} - 80041f6: b084 sub sp, #16 - 80041f8: af00 add r7, sp, #0 - 80041fa: 6078 str r0, [r7, #4] + 8003848: b580 push {r7, lr} + 800384a: b084 sub sp, #16 + 800384c: af00 add r7, sp, #0 + 800384e: 6078 str r0, [r7, #4] uint32_t frxth; /* Check the SPI handle allocation */ if (hspi == NULL) - 80041fc: 687b ldr r3, [r7, #4] - 80041fe: 2b00 cmp r3, #0 - 8004200: d101 bne.n 8004206 + 8003850: 687b ldr r3, [r7, #4] + 8003852: 2b00 cmp r3, #0 + 8003854: d101 bne.n 800385a { return HAL_ERROR; - 8004202: 2301 movs r3, #1 - 8004204: e0a8 b.n 8004358 + 8003856: 2301 movs r3, #1 + 8003858: e0a8 b.n 80039ac assert_param(IS_SPI_NSS(hspi->Init.NSS)); assert_param(IS_SPI_NSSP(hspi->Init.NSSPMode)); assert_param(IS_SPI_BAUDRATE_PRESCALER(hspi->Init.BaudRatePrescaler)); assert_param(IS_SPI_FIRST_BIT(hspi->Init.FirstBit)); assert_param(IS_SPI_TIMODE(hspi->Init.TIMode)); if (hspi->Init.TIMode == SPI_TIMODE_DISABLE) - 8004206: 687b ldr r3, [r7, #4] - 8004208: 6a5b ldr r3, [r3, #36] @ 0x24 - 800420a: 2b00 cmp r3, #0 - 800420c: d109 bne.n 8004222 + 800385a: 687b ldr r3, [r7, #4] + 800385c: 6a5b ldr r3, [r3, #36] @ 0x24 + 800385e: 2b00 cmp r3, #0 + 8003860: d109 bne.n 8003876 { assert_param(IS_SPI_CPOL(hspi->Init.CLKPolarity)); assert_param(IS_SPI_CPHA(hspi->Init.CLKPhase)); if (hspi->Init.Mode == SPI_MODE_MASTER) - 800420e: 687b ldr r3, [r7, #4] - 8004210: 685a ldr r2, [r3, #4] - 8004212: 2382 movs r3, #130 @ 0x82 - 8004214: 005b lsls r3, r3, #1 - 8004216: 429a cmp r2, r3 - 8004218: d009 beq.n 800422e + 8003862: 687b ldr r3, [r7, #4] + 8003864: 685a ldr r2, [r3, #4] + 8003866: 2382 movs r3, #130 @ 0x82 + 8003868: 005b lsls r3, r3, #1 + 800386a: 429a cmp r2, r3 + 800386c: d009 beq.n 8003882 assert_param(IS_SPI_BAUDRATE_PRESCALER(hspi->Init.BaudRatePrescaler)); } else { /* Baudrate prescaler not use in Motoraola Slave mode. force to default value */ hspi->Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2; - 800421a: 687b ldr r3, [r7, #4] - 800421c: 2200 movs r2, #0 - 800421e: 61da str r2, [r3, #28] - 8004220: e005 b.n 800422e + 800386e: 687b ldr r3, [r7, #4] + 8003870: 2200 movs r2, #0 + 8003872: 61da str r2, [r3, #28] + 8003874: e005 b.n 8003882 else { assert_param(IS_SPI_BAUDRATE_PRESCALER(hspi->Init.BaudRatePrescaler)); /* Force polarity and phase to TI protocaol requirements */ hspi->Init.CLKPolarity = SPI_POLARITY_LOW; - 8004222: 687b ldr r3, [r7, #4] - 8004224: 2200 movs r2, #0 - 8004226: 611a str r2, [r3, #16] + 8003876: 687b ldr r3, [r7, #4] + 8003878: 2200 movs r2, #0 + 800387a: 611a str r2, [r3, #16] hspi->Init.CLKPhase = SPI_PHASE_1EDGE; - 8004228: 687b ldr r3, [r7, #4] - 800422a: 2200 movs r2, #0 - 800422c: 615a str r2, [r3, #20] + 800387c: 687b ldr r3, [r7, #4] + 800387e: 2200 movs r2, #0 + 8003880: 615a str r2, [r3, #20] { assert_param(IS_SPI_CRC_POLYNOMIAL(hspi->Init.CRCPolynomial)); assert_param(IS_SPI_CRC_LENGTH(hspi->Init.CRCLength)); } #else hspi->Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; - 800422e: 687b ldr r3, [r7, #4] - 8004230: 2200 movs r2, #0 - 8004232: 629a str r2, [r3, #40] @ 0x28 + 8003882: 687b ldr r3, [r7, #4] + 8003884: 2200 movs r2, #0 + 8003886: 629a str r2, [r3, #40] @ 0x28 #endif /* USE_SPI_CRC */ if (hspi->State == HAL_SPI_STATE_RESET) - 8004234: 687b ldr r3, [r7, #4] - 8004236: 225d movs r2, #93 @ 0x5d - 8004238: 5c9b ldrb r3, [r3, r2] - 800423a: b2db uxtb r3, r3 - 800423c: 2b00 cmp r3, #0 - 800423e: d107 bne.n 8004250 + 8003888: 687b ldr r3, [r7, #4] + 800388a: 225d movs r2, #93 @ 0x5d + 800388c: 5c9b ldrb r3, [r3, r2] + 800388e: b2db uxtb r3, r3 + 8003890: 2b00 cmp r3, #0 + 8003892: d107 bne.n 80038a4 { /* Allocate lock resource and initialize it */ hspi->Lock = HAL_UNLOCKED; - 8004240: 687b ldr r3, [r7, #4] - 8004242: 225c movs r2, #92 @ 0x5c - 8004244: 2100 movs r1, #0 - 8004246: 5499 strb r1, [r3, r2] + 8003894: 687b ldr r3, [r7, #4] + 8003896: 225c movs r2, #92 @ 0x5c + 8003898: 2100 movs r1, #0 + 800389a: 5499 strb r1, [r3, r2] /* Init the low level hardware : GPIO, CLOCK, NVIC... */ hspi->MspInitCallback(hspi); #else /* Init the low level hardware : GPIO, CLOCK, NVIC... */ HAL_SPI_MspInit(hspi); - 8004248: 687b ldr r3, [r7, #4] - 800424a: 0018 movs r0, r3 - 800424c: f7fc ff4a bl 80010e4 + 800389c: 687b ldr r3, [r7, #4] + 800389e: 0018 movs r0, r3 + 80038a0: f7fd fcc0 bl 8001224 #endif /* USE_HAL_SPI_REGISTER_CALLBACKS */ } hspi->State = HAL_SPI_STATE_BUSY; - 8004250: 687b ldr r3, [r7, #4] - 8004252: 225d movs r2, #93 @ 0x5d - 8004254: 2102 movs r1, #2 - 8004256: 5499 strb r1, [r3, r2] + 80038a4: 687b ldr r3, [r7, #4] + 80038a6: 225d movs r2, #93 @ 0x5d + 80038a8: 2102 movs r1, #2 + 80038aa: 5499 strb r1, [r3, r2] /* Disable the selected SPI peripheral */ __HAL_SPI_DISABLE(hspi); - 8004258: 687b ldr r3, [r7, #4] - 800425a: 681b ldr r3, [r3, #0] - 800425c: 681a ldr r2, [r3, #0] - 800425e: 687b ldr r3, [r7, #4] - 8004260: 681b ldr r3, [r3, #0] - 8004262: 2140 movs r1, #64 @ 0x40 - 8004264: 438a bics r2, r1 - 8004266: 601a str r2, [r3, #0] + 80038ac: 687b ldr r3, [r7, #4] + 80038ae: 681b ldr r3, [r3, #0] + 80038b0: 681a ldr r2, [r3, #0] + 80038b2: 687b ldr r3, [r7, #4] + 80038b4: 681b ldr r3, [r3, #0] + 80038b6: 2140 movs r1, #64 @ 0x40 + 80038b8: 438a bics r2, r1 + 80038ba: 601a str r2, [r3, #0] /* Align by default the rs fifo threshold on the data size */ if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) - 8004268: 687b ldr r3, [r7, #4] - 800426a: 68da ldr r2, [r3, #12] - 800426c: 23e0 movs r3, #224 @ 0xe0 - 800426e: 00db lsls r3, r3, #3 - 8004270: 429a cmp r2, r3 - 8004272: d902 bls.n 800427a + 80038bc: 687b ldr r3, [r7, #4] + 80038be: 68da ldr r2, [r3, #12] + 80038c0: 23e0 movs r3, #224 @ 0xe0 + 80038c2: 00db lsls r3, r3, #3 + 80038c4: 429a cmp r2, r3 + 80038c6: d902 bls.n 80038ce { frxth = SPI_RXFIFO_THRESHOLD_HF; - 8004274: 2300 movs r3, #0 - 8004276: 60fb str r3, [r7, #12] - 8004278: e002 b.n 8004280 + 80038c8: 2300 movs r3, #0 + 80038ca: 60fb str r3, [r7, #12] + 80038cc: e002 b.n 80038d4 } else { frxth = SPI_RXFIFO_THRESHOLD_QF; - 800427a: 2380 movs r3, #128 @ 0x80 - 800427c: 015b lsls r3, r3, #5 - 800427e: 60fb str r3, [r7, #12] + 80038ce: 2380 movs r3, #128 @ 0x80 + 80038d0: 015b lsls r3, r3, #5 + 80038d2: 60fb str r3, [r7, #12] } /* CRC calculation is valid only for 16Bit and 8 Bit */ if ((hspi->Init.DataSize != SPI_DATASIZE_16BIT) && (hspi->Init.DataSize != SPI_DATASIZE_8BIT)) - 8004280: 687b ldr r3, [r7, #4] - 8004282: 68da ldr r2, [r3, #12] - 8004284: 23f0 movs r3, #240 @ 0xf0 - 8004286: 011b lsls r3, r3, #4 - 8004288: 429a cmp r2, r3 - 800428a: d008 beq.n 800429e - 800428c: 687b ldr r3, [r7, #4] - 800428e: 68da ldr r2, [r3, #12] - 8004290: 23e0 movs r3, #224 @ 0xe0 - 8004292: 00db lsls r3, r3, #3 - 8004294: 429a cmp r2, r3 - 8004296: d002 beq.n 800429e + 80038d4: 687b ldr r3, [r7, #4] + 80038d6: 68da ldr r2, [r3, #12] + 80038d8: 23f0 movs r3, #240 @ 0xf0 + 80038da: 011b lsls r3, r3, #4 + 80038dc: 429a cmp r2, r3 + 80038de: d008 beq.n 80038f2 + 80038e0: 687b ldr r3, [r7, #4] + 80038e2: 68da ldr r2, [r3, #12] + 80038e4: 23e0 movs r3, #224 @ 0xe0 + 80038e6: 00db lsls r3, r3, #3 + 80038e8: 429a cmp r2, r3 + 80038ea: d002 beq.n 80038f2 { /* CRC must be disabled */ hspi->Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; - 8004298: 687b ldr r3, [r7, #4] - 800429a: 2200 movs r2, #0 - 800429c: 629a str r2, [r3, #40] @ 0x28 + 80038ec: 687b ldr r3, [r7, #4] + 80038ee: 2200 movs r2, #0 + 80038f0: 629a str r2, [r3, #40] @ 0x28 } /*----------------------- SPIx CR1 & CR2 Configuration ---------------------*/ /* Configure : SPI Mode, Communication Mode, Clock polarity and phase, NSS management, Communication speed, First bit and CRC calculation state */ WRITE_REG(hspi->Instance->CR1, ((hspi->Init.Mode & (SPI_CR1_MSTR | SPI_CR1_SSI)) | - 800429e: 687b ldr r3, [r7, #4] - 80042a0: 685a ldr r2, [r3, #4] - 80042a2: 2382 movs r3, #130 @ 0x82 - 80042a4: 005b lsls r3, r3, #1 - 80042a6: 401a ands r2, r3 - 80042a8: 687b ldr r3, [r7, #4] - 80042aa: 6899 ldr r1, [r3, #8] - 80042ac: 2384 movs r3, #132 @ 0x84 - 80042ae: 021b lsls r3, r3, #8 - 80042b0: 400b ands r3, r1 - 80042b2: 431a orrs r2, r3 - 80042b4: 687b ldr r3, [r7, #4] - 80042b6: 691b ldr r3, [r3, #16] - 80042b8: 2102 movs r1, #2 - 80042ba: 400b ands r3, r1 - 80042bc: 431a orrs r2, r3 - 80042be: 687b ldr r3, [r7, #4] - 80042c0: 695b ldr r3, [r3, #20] - 80042c2: 2101 movs r1, #1 - 80042c4: 400b ands r3, r1 - 80042c6: 431a orrs r2, r3 - 80042c8: 687b ldr r3, [r7, #4] - 80042ca: 6999 ldr r1, [r3, #24] - 80042cc: 2380 movs r3, #128 @ 0x80 - 80042ce: 009b lsls r3, r3, #2 - 80042d0: 400b ands r3, r1 - 80042d2: 431a orrs r2, r3 - 80042d4: 687b ldr r3, [r7, #4] - 80042d6: 69db ldr r3, [r3, #28] - 80042d8: 2138 movs r1, #56 @ 0x38 - 80042da: 400b ands r3, r1 - 80042dc: 431a orrs r2, r3 - 80042de: 687b ldr r3, [r7, #4] - 80042e0: 6a1b ldr r3, [r3, #32] - 80042e2: 2180 movs r1, #128 @ 0x80 - 80042e4: 400b ands r3, r1 - 80042e6: 431a orrs r2, r3 - 80042e8: 0011 movs r1, r2 - 80042ea: 687b ldr r3, [r7, #4] - 80042ec: 6a9a ldr r2, [r3, #40] @ 0x28 - 80042ee: 2380 movs r3, #128 @ 0x80 - 80042f0: 019b lsls r3, r3, #6 - 80042f2: 401a ands r2, r3 - 80042f4: 687b ldr r3, [r7, #4] - 80042f6: 681b ldr r3, [r3, #0] - 80042f8: 430a orrs r2, r1 - 80042fa: 601a str r2, [r3, #0] + 80038f2: 687b ldr r3, [r7, #4] + 80038f4: 685a ldr r2, [r3, #4] + 80038f6: 2382 movs r3, #130 @ 0x82 + 80038f8: 005b lsls r3, r3, #1 + 80038fa: 401a ands r2, r3 + 80038fc: 687b ldr r3, [r7, #4] + 80038fe: 6899 ldr r1, [r3, #8] + 8003900: 2384 movs r3, #132 @ 0x84 + 8003902: 021b lsls r3, r3, #8 + 8003904: 400b ands r3, r1 + 8003906: 431a orrs r2, r3 + 8003908: 687b ldr r3, [r7, #4] + 800390a: 691b ldr r3, [r3, #16] + 800390c: 2102 movs r1, #2 + 800390e: 400b ands r3, r1 + 8003910: 431a orrs r2, r3 + 8003912: 687b ldr r3, [r7, #4] + 8003914: 695b ldr r3, [r3, #20] + 8003916: 2101 movs r1, #1 + 8003918: 400b ands r3, r1 + 800391a: 431a orrs r2, r3 + 800391c: 687b ldr r3, [r7, #4] + 800391e: 6999 ldr r1, [r3, #24] + 8003920: 2380 movs r3, #128 @ 0x80 + 8003922: 009b lsls r3, r3, #2 + 8003924: 400b ands r3, r1 + 8003926: 431a orrs r2, r3 + 8003928: 687b ldr r3, [r7, #4] + 800392a: 69db ldr r3, [r3, #28] + 800392c: 2138 movs r1, #56 @ 0x38 + 800392e: 400b ands r3, r1 + 8003930: 431a orrs r2, r3 + 8003932: 687b ldr r3, [r7, #4] + 8003934: 6a1b ldr r3, [r3, #32] + 8003936: 2180 movs r1, #128 @ 0x80 + 8003938: 400b ands r3, r1 + 800393a: 431a orrs r2, r3 + 800393c: 0011 movs r1, r2 + 800393e: 687b ldr r3, [r7, #4] + 8003940: 6a9a ldr r2, [r3, #40] @ 0x28 + 8003942: 2380 movs r3, #128 @ 0x80 + 8003944: 019b lsls r3, r3, #6 + 8003946: 401a ands r2, r3 + 8003948: 687b ldr r3, [r7, #4] + 800394a: 681b ldr r3, [r3, #0] + 800394c: 430a orrs r2, r1 + 800394e: 601a str r2, [r3, #0] } } #endif /* USE_SPI_CRC */ /* Configure : NSS management, TI Mode, NSS Pulse, Data size and Rx Fifo threshold */ WRITE_REG(hspi->Instance->CR2, (((hspi->Init.NSS >> 16U) & SPI_CR2_SSOE) | - 80042fc: 687b ldr r3, [r7, #4] - 80042fe: 699b ldr r3, [r3, #24] - 8004300: 0c1b lsrs r3, r3, #16 - 8004302: 2204 movs r2, #4 - 8004304: 401a ands r2, r3 - 8004306: 687b ldr r3, [r7, #4] - 8004308: 6a5b ldr r3, [r3, #36] @ 0x24 - 800430a: 2110 movs r1, #16 - 800430c: 400b ands r3, r1 - 800430e: 431a orrs r2, r3 - 8004310: 687b ldr r3, [r7, #4] - 8004312: 6b5b ldr r3, [r3, #52] @ 0x34 - 8004314: 2108 movs r1, #8 - 8004316: 400b ands r3, r1 - 8004318: 431a orrs r2, r3 - 800431a: 687b ldr r3, [r7, #4] - 800431c: 68d9 ldr r1, [r3, #12] - 800431e: 23f0 movs r3, #240 @ 0xf0 - 8004320: 011b lsls r3, r3, #4 - 8004322: 400b ands r3, r1 - 8004324: 431a orrs r2, r3 - 8004326: 0011 movs r1, r2 - 8004328: 68fa ldr r2, [r7, #12] - 800432a: 2380 movs r3, #128 @ 0x80 - 800432c: 015b lsls r3, r3, #5 - 800432e: 401a ands r2, r3 - 8004330: 687b ldr r3, [r7, #4] - 8004332: 681b ldr r3, [r3, #0] - 8004334: 430a orrs r2, r1 - 8004336: 605a str r2, [r3, #4] + 8003950: 687b ldr r3, [r7, #4] + 8003952: 699b ldr r3, [r3, #24] + 8003954: 0c1b lsrs r3, r3, #16 + 8003956: 2204 movs r2, #4 + 8003958: 401a ands r2, r3 + 800395a: 687b ldr r3, [r7, #4] + 800395c: 6a5b ldr r3, [r3, #36] @ 0x24 + 800395e: 2110 movs r1, #16 + 8003960: 400b ands r3, r1 + 8003962: 431a orrs r2, r3 + 8003964: 687b ldr r3, [r7, #4] + 8003966: 6b5b ldr r3, [r3, #52] @ 0x34 + 8003968: 2108 movs r1, #8 + 800396a: 400b ands r3, r1 + 800396c: 431a orrs r2, r3 + 800396e: 687b ldr r3, [r7, #4] + 8003970: 68d9 ldr r1, [r3, #12] + 8003972: 23f0 movs r3, #240 @ 0xf0 + 8003974: 011b lsls r3, r3, #4 + 8003976: 400b ands r3, r1 + 8003978: 431a orrs r2, r3 + 800397a: 0011 movs r1, r2 + 800397c: 68fa ldr r2, [r7, #12] + 800397e: 2380 movs r3, #128 @ 0x80 + 8003980: 015b lsls r3, r3, #5 + 8003982: 401a ands r2, r3 + 8003984: 687b ldr r3, [r7, #4] + 8003986: 681b ldr r3, [r3, #0] + 8003988: 430a orrs r2, r1 + 800398a: 605a str r2, [r3, #4] } #endif /* USE_SPI_CRC */ #if defined(SPI_I2SCFGR_I2SMOD) /* Activate the SPI mode (Make sure that I2SMOD bit in I2SCFGR register is reset) */ CLEAR_BIT(hspi->Instance->I2SCFGR, SPI_I2SCFGR_I2SMOD); - 8004338: 687b ldr r3, [r7, #4] - 800433a: 681b ldr r3, [r3, #0] - 800433c: 69da ldr r2, [r3, #28] - 800433e: 687b ldr r3, [r7, #4] - 8004340: 681b ldr r3, [r3, #0] - 8004342: 4907 ldr r1, [pc, #28] @ (8004360 ) - 8004344: 400a ands r2, r1 - 8004346: 61da str r2, [r3, #28] + 800398c: 687b ldr r3, [r7, #4] + 800398e: 681b ldr r3, [r3, #0] + 8003990: 69da ldr r2, [r3, #28] + 8003992: 687b ldr r3, [r7, #4] + 8003994: 681b ldr r3, [r3, #0] + 8003996: 4907 ldr r1, [pc, #28] @ (80039b4 ) + 8003998: 400a ands r2, r1 + 800399a: 61da str r2, [r3, #28] #endif /* SPI_I2SCFGR_I2SMOD */ hspi->ErrorCode = HAL_SPI_ERROR_NONE; - 8004348: 687b ldr r3, [r7, #4] - 800434a: 2200 movs r2, #0 - 800434c: 661a str r2, [r3, #96] @ 0x60 + 800399c: 687b ldr r3, [r7, #4] + 800399e: 2200 movs r2, #0 + 80039a0: 661a str r2, [r3, #96] @ 0x60 hspi->State = HAL_SPI_STATE_READY; - 800434e: 687b ldr r3, [r7, #4] - 8004350: 225d movs r2, #93 @ 0x5d - 8004352: 2101 movs r1, #1 - 8004354: 5499 strb r1, [r3, r2] + 80039a2: 687b ldr r3, [r7, #4] + 80039a4: 225d movs r2, #93 @ 0x5d + 80039a6: 2101 movs r1, #1 + 80039a8: 5499 strb r1, [r3, r2] return HAL_OK; - 8004356: 2300 movs r3, #0 + 80039aa: 2300 movs r3, #0 } - 8004358: 0018 movs r0, r3 - 800435a: 46bd mov sp, r7 - 800435c: b004 add sp, #16 - 800435e: bd80 pop {r7, pc} - 8004360: fffff7ff .word 0xfffff7ff + 80039ac: 0018 movs r0, r3 + 80039ae: 46bd mov sp, r7 + 80039b0: b004 add sp, #16 + 80039b2: bd80 pop {r7, pc} + 80039b4: fffff7ff .word 0xfffff7ff -08004364 : +080039b8 : + * @param Size amount of data to be sent + * @param Timeout Timeout duration + * @retval HAL status + */ +HAL_StatusTypeDef HAL_SPI_Transmit(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size, uint32_t Timeout) +{ + 80039b8: b580 push {r7, lr} + 80039ba: b088 sub sp, #32 + 80039bc: af00 add r7, sp, #0 + 80039be: 60f8 str r0, [r7, #12] + 80039c0: 60b9 str r1, [r7, #8] + 80039c2: 603b str r3, [r7, #0] + 80039c4: 1dbb adds r3, r7, #6 + 80039c6: 801a strh r2, [r3, #0] + uint32_t tickstart; + HAL_StatusTypeDef errorcode = HAL_OK; + 80039c8: 231f movs r3, #31 + 80039ca: 18fb adds r3, r7, r3 + 80039cc: 2200 movs r2, #0 + 80039ce: 701a strb r2, [r3, #0] + + /* Check Direction parameter */ + assert_param(IS_SPI_DIRECTION_2LINES_OR_1LINE(hspi->Init.Direction)); + + /* Process Locked */ + __HAL_LOCK(hspi); + 80039d0: 68fb ldr r3, [r7, #12] + 80039d2: 225c movs r2, #92 @ 0x5c + 80039d4: 5c9b ldrb r3, [r3, r2] + 80039d6: 2b01 cmp r3, #1 + 80039d8: d101 bne.n 80039de + 80039da: 2302 movs r3, #2 + 80039dc: e147 b.n 8003c6e + 80039de: 68fb ldr r3, [r7, #12] + 80039e0: 225c movs r2, #92 @ 0x5c + 80039e2: 2101 movs r1, #1 + 80039e4: 5499 strb r1, [r3, r2] + + /* Init tickstart for timeout management*/ + tickstart = HAL_GetTick(); + 80039e6: f7fd fe41 bl 800166c + 80039ea: 0003 movs r3, r0 + 80039ec: 61bb str r3, [r7, #24] + initial_TxXferCount = Size; + 80039ee: 2316 movs r3, #22 + 80039f0: 18fb adds r3, r7, r3 + 80039f2: 1dba adds r2, r7, #6 + 80039f4: 8812 ldrh r2, [r2, #0] + 80039f6: 801a strh r2, [r3, #0] + + if (hspi->State != HAL_SPI_STATE_READY) + 80039f8: 68fb ldr r3, [r7, #12] + 80039fa: 225d movs r2, #93 @ 0x5d + 80039fc: 5c9b ldrb r3, [r3, r2] + 80039fe: b2db uxtb r3, r3 + 8003a00: 2b01 cmp r3, #1 + 8003a02: d004 beq.n 8003a0e + { + errorcode = HAL_BUSY; + 8003a04: 231f movs r3, #31 + 8003a06: 18fb adds r3, r7, r3 + 8003a08: 2202 movs r2, #2 + 8003a0a: 701a strb r2, [r3, #0] + goto error; + 8003a0c: e128 b.n 8003c60 + } + + if ((pData == NULL) || (Size == 0U)) + 8003a0e: 68bb ldr r3, [r7, #8] + 8003a10: 2b00 cmp r3, #0 + 8003a12: d003 beq.n 8003a1c + 8003a14: 1dbb adds r3, r7, #6 + 8003a16: 881b ldrh r3, [r3, #0] + 8003a18: 2b00 cmp r3, #0 + 8003a1a: d104 bne.n 8003a26 + { + errorcode = HAL_ERROR; + 8003a1c: 231f movs r3, #31 + 8003a1e: 18fb adds r3, r7, r3 + 8003a20: 2201 movs r2, #1 + 8003a22: 701a strb r2, [r3, #0] + goto error; + 8003a24: e11c b.n 8003c60 + } + + /* Set the transaction information */ + hspi->State = HAL_SPI_STATE_BUSY_TX; + 8003a26: 68fb ldr r3, [r7, #12] + 8003a28: 225d movs r2, #93 @ 0x5d + 8003a2a: 2103 movs r1, #3 + 8003a2c: 5499 strb r1, [r3, r2] + hspi->ErrorCode = HAL_SPI_ERROR_NONE; + 8003a2e: 68fb ldr r3, [r7, #12] + 8003a30: 2200 movs r2, #0 + 8003a32: 661a str r2, [r3, #96] @ 0x60 + hspi->pTxBuffPtr = (uint8_t *)pData; + 8003a34: 68fb ldr r3, [r7, #12] + 8003a36: 68ba ldr r2, [r7, #8] + 8003a38: 639a str r2, [r3, #56] @ 0x38 + hspi->TxXferSize = Size; + 8003a3a: 68fb ldr r3, [r7, #12] + 8003a3c: 1dba adds r2, r7, #6 + 8003a3e: 8812 ldrh r2, [r2, #0] + 8003a40: 879a strh r2, [r3, #60] @ 0x3c + hspi->TxXferCount = Size; + 8003a42: 68fb ldr r3, [r7, #12] + 8003a44: 1dba adds r2, r7, #6 + 8003a46: 8812 ldrh r2, [r2, #0] + 8003a48: 87da strh r2, [r3, #62] @ 0x3e + + /*Init field not used in handle to zero */ + hspi->pRxBuffPtr = (uint8_t *)NULL; + 8003a4a: 68fb ldr r3, [r7, #12] + 8003a4c: 2200 movs r2, #0 + 8003a4e: 641a str r2, [r3, #64] @ 0x40 + hspi->RxXferSize = 0U; + 8003a50: 68fb ldr r3, [r7, #12] + 8003a52: 2244 movs r2, #68 @ 0x44 + 8003a54: 2100 movs r1, #0 + 8003a56: 5299 strh r1, [r3, r2] + hspi->RxXferCount = 0U; + 8003a58: 68fb ldr r3, [r7, #12] + 8003a5a: 2246 movs r2, #70 @ 0x46 + 8003a5c: 2100 movs r1, #0 + 8003a5e: 5299 strh r1, [r3, r2] + hspi->TxISR = NULL; + 8003a60: 68fb ldr r3, [r7, #12] + 8003a62: 2200 movs r2, #0 + 8003a64: 651a str r2, [r3, #80] @ 0x50 + hspi->RxISR = NULL; + 8003a66: 68fb ldr r3, [r7, #12] + 8003a68: 2200 movs r2, #0 + 8003a6a: 64da str r2, [r3, #76] @ 0x4c + + /* Configure communication direction : 1Line */ + if (hspi->Init.Direction == SPI_DIRECTION_1LINE) + 8003a6c: 68fb ldr r3, [r7, #12] + 8003a6e: 689a ldr r2, [r3, #8] + 8003a70: 2380 movs r3, #128 @ 0x80 + 8003a72: 021b lsls r3, r3, #8 + 8003a74: 429a cmp r2, r3 + 8003a76: d110 bne.n 8003a9a + { + /* Disable SPI Peripheral before set 1Line direction (BIDIOE bit) */ + __HAL_SPI_DISABLE(hspi); + 8003a78: 68fb ldr r3, [r7, #12] + 8003a7a: 681b ldr r3, [r3, #0] + 8003a7c: 681a ldr r2, [r3, #0] + 8003a7e: 68fb ldr r3, [r7, #12] + 8003a80: 681b ldr r3, [r3, #0] + 8003a82: 2140 movs r1, #64 @ 0x40 + 8003a84: 438a bics r2, r1 + 8003a86: 601a str r2, [r3, #0] + SPI_1LINE_TX(hspi); + 8003a88: 68fb ldr r3, [r7, #12] + 8003a8a: 681b ldr r3, [r3, #0] + 8003a8c: 681a ldr r2, [r3, #0] + 8003a8e: 68fb ldr r3, [r7, #12] + 8003a90: 681b ldr r3, [r3, #0] + 8003a92: 2180 movs r1, #128 @ 0x80 + 8003a94: 01c9 lsls r1, r1, #7 + 8003a96: 430a orrs r2, r1 + 8003a98: 601a str r2, [r3, #0] + SPI_RESET_CRC(hspi); + } +#endif /* USE_SPI_CRC */ + + /* Check if the SPI is already enabled */ + if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) + 8003a9a: 68fb ldr r3, [r7, #12] + 8003a9c: 681b ldr r3, [r3, #0] + 8003a9e: 681b ldr r3, [r3, #0] + 8003aa0: 2240 movs r2, #64 @ 0x40 + 8003aa2: 4013 ands r3, r2 + 8003aa4: 2b40 cmp r3, #64 @ 0x40 + 8003aa6: d007 beq.n 8003ab8 + { + /* Enable SPI peripheral */ + __HAL_SPI_ENABLE(hspi); + 8003aa8: 68fb ldr r3, [r7, #12] + 8003aaa: 681b ldr r3, [r3, #0] + 8003aac: 681a ldr r2, [r3, #0] + 8003aae: 68fb ldr r3, [r7, #12] + 8003ab0: 681b ldr r3, [r3, #0] + 8003ab2: 2140 movs r1, #64 @ 0x40 + 8003ab4: 430a orrs r2, r1 + 8003ab6: 601a str r2, [r3, #0] + } + + /* Transmit data in 16 Bit mode */ + if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) + 8003ab8: 68fb ldr r3, [r7, #12] + 8003aba: 68da ldr r2, [r3, #12] + 8003abc: 23e0 movs r3, #224 @ 0xe0 + 8003abe: 00db lsls r3, r3, #3 + 8003ac0: 429a cmp r2, r3 + 8003ac2: d952 bls.n 8003b6a + { + if ((hspi->Init.Mode == SPI_MODE_SLAVE) || (initial_TxXferCount == 0x01U)) + 8003ac4: 68fb ldr r3, [r7, #12] + 8003ac6: 685b ldr r3, [r3, #4] + 8003ac8: 2b00 cmp r3, #0 + 8003aca: d004 beq.n 8003ad6 + 8003acc: 2316 movs r3, #22 + 8003ace: 18fb adds r3, r7, r3 + 8003ad0: 881b ldrh r3, [r3, #0] + 8003ad2: 2b01 cmp r3, #1 + 8003ad4: d143 bne.n 8003b5e + { + hspi->Instance->DR = *((uint16_t *)hspi->pTxBuffPtr); + 8003ad6: 68fb ldr r3, [r7, #12] + 8003ad8: 6b9b ldr r3, [r3, #56] @ 0x38 + 8003ada: 881a ldrh r2, [r3, #0] + 8003adc: 68fb ldr r3, [r7, #12] + 8003ade: 681b ldr r3, [r3, #0] + 8003ae0: 60da str r2, [r3, #12] + hspi->pTxBuffPtr += sizeof(uint16_t); + 8003ae2: 68fb ldr r3, [r7, #12] + 8003ae4: 6b9b ldr r3, [r3, #56] @ 0x38 + 8003ae6: 1c9a adds r2, r3, #2 + 8003ae8: 68fb ldr r3, [r7, #12] + 8003aea: 639a str r2, [r3, #56] @ 0x38 + hspi->TxXferCount--; + 8003aec: 68fb ldr r3, [r7, #12] + 8003aee: 8fdb ldrh r3, [r3, #62] @ 0x3e + 8003af0: b29b uxth r3, r3 + 8003af2: 3b01 subs r3, #1 + 8003af4: b29a uxth r2, r3 + 8003af6: 68fb ldr r3, [r7, #12] + 8003af8: 87da strh r2, [r3, #62] @ 0x3e + } + /* Transmit data in 16 Bit mode */ + while (hspi->TxXferCount > 0U) + 8003afa: e030 b.n 8003b5e + { + /* Wait until TXE flag is set to send data */ + if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXE)) + 8003afc: 68fb ldr r3, [r7, #12] + 8003afe: 681b ldr r3, [r3, #0] + 8003b00: 689b ldr r3, [r3, #8] + 8003b02: 2202 movs r2, #2 + 8003b04: 4013 ands r3, r2 + 8003b06: 2b02 cmp r3, #2 + 8003b08: d112 bne.n 8003b30 + { + hspi->Instance->DR = *((uint16_t *)hspi->pTxBuffPtr); + 8003b0a: 68fb ldr r3, [r7, #12] + 8003b0c: 6b9b ldr r3, [r3, #56] @ 0x38 + 8003b0e: 881a ldrh r2, [r3, #0] + 8003b10: 68fb ldr r3, [r7, #12] + 8003b12: 681b ldr r3, [r3, #0] + 8003b14: 60da str r2, [r3, #12] + hspi->pTxBuffPtr += sizeof(uint16_t); + 8003b16: 68fb ldr r3, [r7, #12] + 8003b18: 6b9b ldr r3, [r3, #56] @ 0x38 + 8003b1a: 1c9a adds r2, r3, #2 + 8003b1c: 68fb ldr r3, [r7, #12] + 8003b1e: 639a str r2, [r3, #56] @ 0x38 + hspi->TxXferCount--; + 8003b20: 68fb ldr r3, [r7, #12] + 8003b22: 8fdb ldrh r3, [r3, #62] @ 0x3e + 8003b24: b29b uxth r3, r3 + 8003b26: 3b01 subs r3, #1 + 8003b28: b29a uxth r2, r3 + 8003b2a: 68fb ldr r3, [r7, #12] + 8003b2c: 87da strh r2, [r3, #62] @ 0x3e + 8003b2e: e016 b.n 8003b5e + } + else + { + /* Timeout management */ + if ((((HAL_GetTick() - tickstart) >= Timeout) && (Timeout != HAL_MAX_DELAY)) || (Timeout == 0U)) + 8003b30: f7fd fd9c bl 800166c + 8003b34: 0002 movs r2, r0 + 8003b36: 69bb ldr r3, [r7, #24] + 8003b38: 1ad3 subs r3, r2, r3 + 8003b3a: 683a ldr r2, [r7, #0] + 8003b3c: 429a cmp r2, r3 + 8003b3e: d802 bhi.n 8003b46 + 8003b40: 683b ldr r3, [r7, #0] + 8003b42: 3301 adds r3, #1 + 8003b44: d102 bne.n 8003b4c + 8003b46: 683b ldr r3, [r7, #0] + 8003b48: 2b00 cmp r3, #0 + 8003b4a: d108 bne.n 8003b5e + { + errorcode = HAL_TIMEOUT; + 8003b4c: 231f movs r3, #31 + 8003b4e: 18fb adds r3, r7, r3 + 8003b50: 2203 movs r2, #3 + 8003b52: 701a strb r2, [r3, #0] + hspi->State = HAL_SPI_STATE_READY; + 8003b54: 68fb ldr r3, [r7, #12] + 8003b56: 225d movs r2, #93 @ 0x5d + 8003b58: 2101 movs r1, #1 + 8003b5a: 5499 strb r1, [r3, r2] + goto error; + 8003b5c: e080 b.n 8003c60 + while (hspi->TxXferCount > 0U) + 8003b5e: 68fb ldr r3, [r7, #12] + 8003b60: 8fdb ldrh r3, [r3, #62] @ 0x3e + 8003b62: b29b uxth r3, r3 + 8003b64: 2b00 cmp r3, #0 + 8003b66: d1c9 bne.n 8003afc + 8003b68: e053 b.n 8003c12 + } + } + /* Transmit data in 8 Bit mode */ + else + { + if ((hspi->Init.Mode == SPI_MODE_SLAVE) || (initial_TxXferCount == 0x01U)) + 8003b6a: 68fb ldr r3, [r7, #12] + 8003b6c: 685b ldr r3, [r3, #4] + 8003b6e: 2b00 cmp r3, #0 + 8003b70: d004 beq.n 8003b7c + 8003b72: 2316 movs r3, #22 + 8003b74: 18fb adds r3, r7, r3 + 8003b76: 881b ldrh r3, [r3, #0] + 8003b78: 2b01 cmp r3, #1 + 8003b7a: d145 bne.n 8003c08 + { + *((__IO uint8_t *)&hspi->Instance->DR) = (*hspi->pTxBuffPtr); + 8003b7c: 68fb ldr r3, [r7, #12] + 8003b7e: 6b9a ldr r2, [r3, #56] @ 0x38 + 8003b80: 68fb ldr r3, [r7, #12] + 8003b82: 681b ldr r3, [r3, #0] + 8003b84: 330c adds r3, #12 + 8003b86: 7812 ldrb r2, [r2, #0] + 8003b88: 701a strb r2, [r3, #0] + hspi->pTxBuffPtr += sizeof(uint8_t); + 8003b8a: 68fb ldr r3, [r7, #12] + 8003b8c: 6b9b ldr r3, [r3, #56] @ 0x38 + 8003b8e: 1c5a adds r2, r3, #1 + 8003b90: 68fb ldr r3, [r7, #12] + 8003b92: 639a str r2, [r3, #56] @ 0x38 + hspi->TxXferCount--; + 8003b94: 68fb ldr r3, [r7, #12] + 8003b96: 8fdb ldrh r3, [r3, #62] @ 0x3e + 8003b98: b29b uxth r3, r3 + 8003b9a: 3b01 subs r3, #1 + 8003b9c: b29a uxth r2, r3 + 8003b9e: 68fb ldr r3, [r7, #12] + 8003ba0: 87da strh r2, [r3, #62] @ 0x3e + } + while (hspi->TxXferCount > 0U) + 8003ba2: e031 b.n 8003c08 + { + /* Wait until TXE flag is set to send data */ + if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXE)) + 8003ba4: 68fb ldr r3, [r7, #12] + 8003ba6: 681b ldr r3, [r3, #0] + 8003ba8: 689b ldr r3, [r3, #8] + 8003baa: 2202 movs r2, #2 + 8003bac: 4013 ands r3, r2 + 8003bae: 2b02 cmp r3, #2 + 8003bb0: d113 bne.n 8003bda + { + *((__IO uint8_t *)&hspi->Instance->DR) = (*hspi->pTxBuffPtr); + 8003bb2: 68fb ldr r3, [r7, #12] + 8003bb4: 6b9a ldr r2, [r3, #56] @ 0x38 + 8003bb6: 68fb ldr r3, [r7, #12] + 8003bb8: 681b ldr r3, [r3, #0] + 8003bba: 330c adds r3, #12 + 8003bbc: 7812 ldrb r2, [r2, #0] + 8003bbe: 701a strb r2, [r3, #0] + hspi->pTxBuffPtr += sizeof(uint8_t); + 8003bc0: 68fb ldr r3, [r7, #12] + 8003bc2: 6b9b ldr r3, [r3, #56] @ 0x38 + 8003bc4: 1c5a adds r2, r3, #1 + 8003bc6: 68fb ldr r3, [r7, #12] + 8003bc8: 639a str r2, [r3, #56] @ 0x38 + hspi->TxXferCount--; + 8003bca: 68fb ldr r3, [r7, #12] + 8003bcc: 8fdb ldrh r3, [r3, #62] @ 0x3e + 8003bce: b29b uxth r3, r3 + 8003bd0: 3b01 subs r3, #1 + 8003bd2: b29a uxth r2, r3 + 8003bd4: 68fb ldr r3, [r7, #12] + 8003bd6: 87da strh r2, [r3, #62] @ 0x3e + 8003bd8: e016 b.n 8003c08 + } + else + { + /* Timeout management */ + if ((((HAL_GetTick() - tickstart) >= Timeout) && (Timeout != HAL_MAX_DELAY)) || (Timeout == 0U)) + 8003bda: f7fd fd47 bl 800166c + 8003bde: 0002 movs r2, r0 + 8003be0: 69bb ldr r3, [r7, #24] + 8003be2: 1ad3 subs r3, r2, r3 + 8003be4: 683a ldr r2, [r7, #0] + 8003be6: 429a cmp r2, r3 + 8003be8: d802 bhi.n 8003bf0 + 8003bea: 683b ldr r3, [r7, #0] + 8003bec: 3301 adds r3, #1 + 8003bee: d102 bne.n 8003bf6 + 8003bf0: 683b ldr r3, [r7, #0] + 8003bf2: 2b00 cmp r3, #0 + 8003bf4: d108 bne.n 8003c08 + { + errorcode = HAL_TIMEOUT; + 8003bf6: 231f movs r3, #31 + 8003bf8: 18fb adds r3, r7, r3 + 8003bfa: 2203 movs r2, #3 + 8003bfc: 701a strb r2, [r3, #0] + hspi->State = HAL_SPI_STATE_READY; + 8003bfe: 68fb ldr r3, [r7, #12] + 8003c00: 225d movs r2, #93 @ 0x5d + 8003c02: 2101 movs r1, #1 + 8003c04: 5499 strb r1, [r3, r2] + goto error; + 8003c06: e02b b.n 8003c60 + while (hspi->TxXferCount > 0U) + 8003c08: 68fb ldr r3, [r7, #12] + 8003c0a: 8fdb ldrh r3, [r3, #62] @ 0x3e + 8003c0c: b29b uxth r3, r3 + 8003c0e: 2b00 cmp r3, #0 + 8003c10: d1c8 bne.n 8003ba4 + SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); + } +#endif /* USE_SPI_CRC */ + + /* Check the end of the transaction */ + if (SPI_EndRxTxTransaction(hspi, Timeout, tickstart) != HAL_OK) + 8003c12: 69ba ldr r2, [r7, #24] + 8003c14: 6839 ldr r1, [r7, #0] + 8003c16: 68fb ldr r3, [r7, #12] + 8003c18: 0018 movs r0, r3 + 8003c1a: f000 fcef bl 80045fc + 8003c1e: 1e03 subs r3, r0, #0 + 8003c20: d002 beq.n 8003c28 + { + hspi->ErrorCode = HAL_SPI_ERROR_FLAG; + 8003c22: 68fb ldr r3, [r7, #12] + 8003c24: 2220 movs r2, #32 + 8003c26: 661a str r2, [r3, #96] @ 0x60 + } + + /* Clear overrun flag in 2 Lines communication mode because received is not read */ + if (hspi->Init.Direction == SPI_DIRECTION_2LINES) + 8003c28: 68fb ldr r3, [r7, #12] + 8003c2a: 689b ldr r3, [r3, #8] + 8003c2c: 2b00 cmp r3, #0 + 8003c2e: d10a bne.n 8003c46 + { + __HAL_SPI_CLEAR_OVRFLAG(hspi); + 8003c30: 2300 movs r3, #0 + 8003c32: 613b str r3, [r7, #16] + 8003c34: 68fb ldr r3, [r7, #12] + 8003c36: 681b ldr r3, [r3, #0] + 8003c38: 68db ldr r3, [r3, #12] + 8003c3a: 613b str r3, [r7, #16] + 8003c3c: 68fb ldr r3, [r7, #12] + 8003c3e: 681b ldr r3, [r3, #0] + 8003c40: 689b ldr r3, [r3, #8] + 8003c42: 613b str r3, [r7, #16] + 8003c44: 693b ldr r3, [r7, #16] + } + + if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) + 8003c46: 68fb ldr r3, [r7, #12] + 8003c48: 6e1b ldr r3, [r3, #96] @ 0x60 + 8003c4a: 2b00 cmp r3, #0 + 8003c4c: d004 beq.n 8003c58 + { + errorcode = HAL_ERROR; + 8003c4e: 231f movs r3, #31 + 8003c50: 18fb adds r3, r7, r3 + 8003c52: 2201 movs r2, #1 + 8003c54: 701a strb r2, [r3, #0] + 8003c56: e003 b.n 8003c60 + } + else + { + hspi->State = HAL_SPI_STATE_READY; + 8003c58: 68fb ldr r3, [r7, #12] + 8003c5a: 225d movs r2, #93 @ 0x5d + 8003c5c: 2101 movs r1, #1 + 8003c5e: 5499 strb r1, [r3, r2] + } + +error: + /* Process Unlocked */ + __HAL_UNLOCK(hspi); + 8003c60: 68fb ldr r3, [r7, #12] + 8003c62: 225c movs r2, #92 @ 0x5c + 8003c64: 2100 movs r1, #0 + 8003c66: 5499 strb r1, [r3, r2] + return errorcode; + 8003c68: 231f movs r3, #31 + 8003c6a: 18fb adds r3, r7, r3 + 8003c6c: 781b ldrb r3, [r3, #0] +} + 8003c6e: 0018 movs r0, r3 + 8003c70: 46bd mov sp, r7 + 8003c72: b008 add sp, #32 + 8003c74: bd80 pop {r7, pc} + ... + +08003c78 : + * @param Size amount of data to be received + * @param Timeout Timeout duration + * @retval HAL status + */ +HAL_StatusTypeDef HAL_SPI_Receive(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size, uint32_t Timeout) +{ + 8003c78: b590 push {r4, r7, lr} + 8003c7a: b089 sub sp, #36 @ 0x24 + 8003c7c: af02 add r7, sp, #8 + 8003c7e: 60f8 str r0, [r7, #12] + 8003c80: 60b9 str r1, [r7, #8] + 8003c82: 603b str r3, [r7, #0] + 8003c84: 1dbb adds r3, r7, #6 + 8003c86: 801a strh r2, [r3, #0] + __IO uint32_t tmpreg = 0U; + __IO uint8_t *ptmpreg8; + __IO uint8_t tmpreg8 = 0; +#endif /* USE_SPI_CRC */ + uint32_t tickstart; + HAL_StatusTypeDef errorcode = HAL_OK; + 8003c88: 2117 movs r1, #23 + 8003c8a: 187b adds r3, r7, r1 + 8003c8c: 2200 movs r2, #0 + 8003c8e: 701a strb r2, [r3, #0] + + if (hspi->State != HAL_SPI_STATE_READY) + 8003c90: 68fb ldr r3, [r7, #12] + 8003c92: 225d movs r2, #93 @ 0x5d + 8003c94: 5c9b ldrb r3, [r3, r2] + 8003c96: b2db uxtb r3, r3 + 8003c98: 2b01 cmp r3, #1 + 8003c9a: d003 beq.n 8003ca4 + { + errorcode = HAL_BUSY; + 8003c9c: 187b adds r3, r7, r1 + 8003c9e: 2202 movs r2, #2 + 8003ca0: 701a strb r2, [r3, #0] + goto error; + 8003ca2: e12b b.n 8003efc + } + + if ((hspi->Init.Mode == SPI_MODE_MASTER) && (hspi->Init.Direction == SPI_DIRECTION_2LINES)) + 8003ca4: 68fb ldr r3, [r7, #12] + 8003ca6: 685a ldr r2, [r3, #4] + 8003ca8: 2382 movs r3, #130 @ 0x82 + 8003caa: 005b lsls r3, r3, #1 + 8003cac: 429a cmp r2, r3 + 8003cae: d113 bne.n 8003cd8 + 8003cb0: 68fb ldr r3, [r7, #12] + 8003cb2: 689b ldr r3, [r3, #8] + 8003cb4: 2b00 cmp r3, #0 + 8003cb6: d10f bne.n 8003cd8 + { + hspi->State = HAL_SPI_STATE_BUSY_RX; + 8003cb8: 68fb ldr r3, [r7, #12] + 8003cba: 225d movs r2, #93 @ 0x5d + 8003cbc: 2104 movs r1, #4 + 8003cbe: 5499 strb r1, [r3, r2] + /* Call transmit-receive function to send Dummy data on Tx line and generate clock on CLK line */ + return HAL_SPI_TransmitReceive(hspi, pData, pData, Size, Timeout); + 8003cc0: 1dbb adds r3, r7, #6 + 8003cc2: 881c ldrh r4, [r3, #0] + 8003cc4: 68ba ldr r2, [r7, #8] + 8003cc6: 68b9 ldr r1, [r7, #8] + 8003cc8: 68f8 ldr r0, [r7, #12] + 8003cca: 683b ldr r3, [r7, #0] + 8003ccc: 9300 str r3, [sp, #0] + 8003cce: 0023 movs r3, r4 + 8003cd0: f000 f924 bl 8003f1c + 8003cd4: 0003 movs r3, r0 + 8003cd6: e118 b.n 8003f0a + } + + /* Process Locked */ + __HAL_LOCK(hspi); + 8003cd8: 68fb ldr r3, [r7, #12] + 8003cda: 225c movs r2, #92 @ 0x5c + 8003cdc: 5c9b ldrb r3, [r3, r2] + 8003cde: 2b01 cmp r3, #1 + 8003ce0: d101 bne.n 8003ce6 + 8003ce2: 2302 movs r3, #2 + 8003ce4: e111 b.n 8003f0a + 8003ce6: 68fb ldr r3, [r7, #12] + 8003ce8: 225c movs r2, #92 @ 0x5c + 8003cea: 2101 movs r1, #1 + 8003cec: 5499 strb r1, [r3, r2] + + /* Init tickstart for timeout management*/ + tickstart = HAL_GetTick(); + 8003cee: f7fd fcbd bl 800166c + 8003cf2: 0003 movs r3, r0 + 8003cf4: 613b str r3, [r7, #16] + + if ((pData == NULL) || (Size == 0U)) + 8003cf6: 68bb ldr r3, [r7, #8] + 8003cf8: 2b00 cmp r3, #0 + 8003cfa: d003 beq.n 8003d04 + 8003cfc: 1dbb adds r3, r7, #6 + 8003cfe: 881b ldrh r3, [r3, #0] + 8003d00: 2b00 cmp r3, #0 + 8003d02: d104 bne.n 8003d0e + { + errorcode = HAL_ERROR; + 8003d04: 2317 movs r3, #23 + 8003d06: 18fb adds r3, r7, r3 + 8003d08: 2201 movs r2, #1 + 8003d0a: 701a strb r2, [r3, #0] + goto error; + 8003d0c: e0f6 b.n 8003efc + } + + /* Set the transaction information */ + hspi->State = HAL_SPI_STATE_BUSY_RX; + 8003d0e: 68fb ldr r3, [r7, #12] + 8003d10: 225d movs r2, #93 @ 0x5d + 8003d12: 2104 movs r1, #4 + 8003d14: 5499 strb r1, [r3, r2] + hspi->ErrorCode = HAL_SPI_ERROR_NONE; + 8003d16: 68fb ldr r3, [r7, #12] + 8003d18: 2200 movs r2, #0 + 8003d1a: 661a str r2, [r3, #96] @ 0x60 + hspi->pRxBuffPtr = (uint8_t *)pData; + 8003d1c: 68fb ldr r3, [r7, #12] + 8003d1e: 68ba ldr r2, [r7, #8] + 8003d20: 641a str r2, [r3, #64] @ 0x40 + hspi->RxXferSize = Size; + 8003d22: 68fb ldr r3, [r7, #12] + 8003d24: 1dba adds r2, r7, #6 + 8003d26: 2144 movs r1, #68 @ 0x44 + 8003d28: 8812 ldrh r2, [r2, #0] + 8003d2a: 525a strh r2, [r3, r1] + hspi->RxXferCount = Size; + 8003d2c: 68fb ldr r3, [r7, #12] + 8003d2e: 1dba adds r2, r7, #6 + 8003d30: 2146 movs r1, #70 @ 0x46 + 8003d32: 8812 ldrh r2, [r2, #0] + 8003d34: 525a strh r2, [r3, r1] + + /*Init field not used in handle to zero */ + hspi->pTxBuffPtr = (uint8_t *)NULL; + 8003d36: 68fb ldr r3, [r7, #12] + 8003d38: 2200 movs r2, #0 + 8003d3a: 639a str r2, [r3, #56] @ 0x38 + hspi->TxXferSize = 0U; + 8003d3c: 68fb ldr r3, [r7, #12] + 8003d3e: 2200 movs r2, #0 + 8003d40: 879a strh r2, [r3, #60] @ 0x3c + hspi->TxXferCount = 0U; + 8003d42: 68fb ldr r3, [r7, #12] + 8003d44: 2200 movs r2, #0 + 8003d46: 87da strh r2, [r3, #62] @ 0x3e + hspi->RxISR = NULL; + 8003d48: 68fb ldr r3, [r7, #12] + 8003d4a: 2200 movs r2, #0 + 8003d4c: 64da str r2, [r3, #76] @ 0x4c + hspi->TxISR = NULL; + 8003d4e: 68fb ldr r3, [r7, #12] + 8003d50: 2200 movs r2, #0 + 8003d52: 651a str r2, [r3, #80] @ 0x50 + hspi->RxXferCount--; + } +#endif /* USE_SPI_CRC */ + + /* Set the Rx Fifo threshold */ + if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) + 8003d54: 68fb ldr r3, [r7, #12] + 8003d56: 68da ldr r2, [r3, #12] + 8003d58: 23e0 movs r3, #224 @ 0xe0 + 8003d5a: 00db lsls r3, r3, #3 + 8003d5c: 429a cmp r2, r3 + 8003d5e: d908 bls.n 8003d72 + { + /* Set RX Fifo threshold according the reception data length: 16bit */ + CLEAR_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); + 8003d60: 68fb ldr r3, [r7, #12] + 8003d62: 681b ldr r3, [r3, #0] + 8003d64: 685a ldr r2, [r3, #4] + 8003d66: 68fb ldr r3, [r7, #12] + 8003d68: 681b ldr r3, [r3, #0] + 8003d6a: 496a ldr r1, [pc, #424] @ (8003f14 ) + 8003d6c: 400a ands r2, r1 + 8003d6e: 605a str r2, [r3, #4] + 8003d70: e008 b.n 8003d84 + } + else + { + /* Set RX Fifo threshold according the reception data length: 8bit */ + SET_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); + 8003d72: 68fb ldr r3, [r7, #12] + 8003d74: 681b ldr r3, [r3, #0] + 8003d76: 685a ldr r2, [r3, #4] + 8003d78: 68fb ldr r3, [r7, #12] + 8003d7a: 681b ldr r3, [r3, #0] + 8003d7c: 2180 movs r1, #128 @ 0x80 + 8003d7e: 0149 lsls r1, r1, #5 + 8003d80: 430a orrs r2, r1 + 8003d82: 605a str r2, [r3, #4] + } + + /* Configure communication direction: 1Line */ + if (hspi->Init.Direction == SPI_DIRECTION_1LINE) + 8003d84: 68fb ldr r3, [r7, #12] + 8003d86: 689a ldr r2, [r3, #8] + 8003d88: 2380 movs r3, #128 @ 0x80 + 8003d8a: 021b lsls r3, r3, #8 + 8003d8c: 429a cmp r2, r3 + 8003d8e: d10f bne.n 8003db0 + { + /* Disable SPI Peripheral before set 1Line direction (BIDIOE bit) */ + __HAL_SPI_DISABLE(hspi); + 8003d90: 68fb ldr r3, [r7, #12] + 8003d92: 681b ldr r3, [r3, #0] + 8003d94: 681a ldr r2, [r3, #0] + 8003d96: 68fb ldr r3, [r7, #12] + 8003d98: 681b ldr r3, [r3, #0] + 8003d9a: 2140 movs r1, #64 @ 0x40 + 8003d9c: 438a bics r2, r1 + 8003d9e: 601a str r2, [r3, #0] + SPI_1LINE_RX(hspi); + 8003da0: 68fb ldr r3, [r7, #12] + 8003da2: 681b ldr r3, [r3, #0] + 8003da4: 681a ldr r2, [r3, #0] + 8003da6: 68fb ldr r3, [r7, #12] + 8003da8: 681b ldr r3, [r3, #0] + 8003daa: 495b ldr r1, [pc, #364] @ (8003f18 ) + 8003dac: 400a ands r2, r1 + 8003dae: 601a str r2, [r3, #0] + } + + /* Check if the SPI is already enabled */ + if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) + 8003db0: 68fb ldr r3, [r7, #12] + 8003db2: 681b ldr r3, [r3, #0] + 8003db4: 681b ldr r3, [r3, #0] + 8003db6: 2240 movs r2, #64 @ 0x40 + 8003db8: 4013 ands r3, r2 + 8003dba: 2b40 cmp r3, #64 @ 0x40 + 8003dbc: d007 beq.n 8003dce + { + /* Enable SPI peripheral */ + __HAL_SPI_ENABLE(hspi); + 8003dbe: 68fb ldr r3, [r7, #12] + 8003dc0: 681b ldr r3, [r3, #0] + 8003dc2: 681a ldr r2, [r3, #0] + 8003dc4: 68fb ldr r3, [r7, #12] + 8003dc6: 681b ldr r3, [r3, #0] + 8003dc8: 2140 movs r1, #64 @ 0x40 + 8003dca: 430a orrs r2, r1 + 8003dcc: 601a str r2, [r3, #0] + } + + /* Receive data in 8 Bit mode */ + if (hspi->Init.DataSize <= SPI_DATASIZE_8BIT) + 8003dce: 68fb ldr r3, [r7, #12] + 8003dd0: 68da ldr r2, [r3, #12] + 8003dd2: 23e0 movs r3, #224 @ 0xe0 + 8003dd4: 00db lsls r3, r3, #3 + 8003dd6: 429a cmp r2, r3 + 8003dd8: d900 bls.n 8003ddc + 8003dda: e071 b.n 8003ec0 + { + /* Transfer loop */ + while (hspi->RxXferCount > 0U) + 8003ddc: e035 b.n 8003e4a + { + /* Check the RXNE flag */ + if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_RXNE)) + 8003dde: 68fb ldr r3, [r7, #12] + 8003de0: 681b ldr r3, [r3, #0] + 8003de2: 689b ldr r3, [r3, #8] + 8003de4: 2201 movs r2, #1 + 8003de6: 4013 ands r3, r2 + 8003de8: 2b01 cmp r3, #1 + 8003dea: d117 bne.n 8003e1c + { + /* read the received data */ + (* (uint8_t *)hspi->pRxBuffPtr) = *(__IO uint8_t *)&hspi->Instance->DR; + 8003dec: 68fb ldr r3, [r7, #12] + 8003dee: 681b ldr r3, [r3, #0] + 8003df0: 330c adds r3, #12 + 8003df2: 001a movs r2, r3 + 8003df4: 68fb ldr r3, [r7, #12] + 8003df6: 6c1b ldr r3, [r3, #64] @ 0x40 + 8003df8: 7812 ldrb r2, [r2, #0] + 8003dfa: b2d2 uxtb r2, r2 + 8003dfc: 701a strb r2, [r3, #0] + hspi->pRxBuffPtr += sizeof(uint8_t); + 8003dfe: 68fb ldr r3, [r7, #12] + 8003e00: 6c1b ldr r3, [r3, #64] @ 0x40 + 8003e02: 1c5a adds r2, r3, #1 + 8003e04: 68fb ldr r3, [r7, #12] + 8003e06: 641a str r2, [r3, #64] @ 0x40 + hspi->RxXferCount--; + 8003e08: 68fb ldr r3, [r7, #12] + 8003e0a: 2246 movs r2, #70 @ 0x46 + 8003e0c: 5a9b ldrh r3, [r3, r2] + 8003e0e: b29b uxth r3, r3 + 8003e10: 3b01 subs r3, #1 + 8003e12: b299 uxth r1, r3 + 8003e14: 68fb ldr r3, [r7, #12] + 8003e16: 2246 movs r2, #70 @ 0x46 + 8003e18: 5299 strh r1, [r3, r2] + 8003e1a: e016 b.n 8003e4a + } + else + { + /* Timeout management */ + if ((((HAL_GetTick() - tickstart) >= Timeout) && (Timeout != HAL_MAX_DELAY)) || (Timeout == 0U)) + 8003e1c: f7fd fc26 bl 800166c + 8003e20: 0002 movs r2, r0 + 8003e22: 693b ldr r3, [r7, #16] + 8003e24: 1ad3 subs r3, r2, r3 + 8003e26: 683a ldr r2, [r7, #0] + 8003e28: 429a cmp r2, r3 + 8003e2a: d802 bhi.n 8003e32 + 8003e2c: 683b ldr r3, [r7, #0] + 8003e2e: 3301 adds r3, #1 + 8003e30: d102 bne.n 8003e38 + 8003e32: 683b ldr r3, [r7, #0] + 8003e34: 2b00 cmp r3, #0 + 8003e36: d108 bne.n 8003e4a + { + errorcode = HAL_TIMEOUT; + 8003e38: 2317 movs r3, #23 + 8003e3a: 18fb adds r3, r7, r3 + 8003e3c: 2203 movs r2, #3 + 8003e3e: 701a strb r2, [r3, #0] + hspi->State = HAL_SPI_STATE_READY; + 8003e40: 68fb ldr r3, [r7, #12] + 8003e42: 225d movs r2, #93 @ 0x5d + 8003e44: 2101 movs r1, #1 + 8003e46: 5499 strb r1, [r3, r2] + goto error; + 8003e48: e058 b.n 8003efc + while (hspi->RxXferCount > 0U) + 8003e4a: 68fb ldr r3, [r7, #12] + 8003e4c: 2246 movs r2, #70 @ 0x46 + 8003e4e: 5a9b ldrh r3, [r3, r2] + 8003e50: b29b uxth r3, r3 + 8003e52: 2b00 cmp r3, #0 + 8003e54: d1c3 bne.n 8003dde + 8003e56: e039 b.n 8003ecc + { + /* Transfer loop */ + while (hspi->RxXferCount > 0U) + { + /* Check the RXNE flag */ + if (__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_RXNE)) + 8003e58: 68fb ldr r3, [r7, #12] + 8003e5a: 681b ldr r3, [r3, #0] + 8003e5c: 689b ldr r3, [r3, #8] + 8003e5e: 2201 movs r2, #1 + 8003e60: 4013 ands r3, r2 + 8003e62: 2b01 cmp r3, #1 + 8003e64: d115 bne.n 8003e92 + { + *((uint16_t *)hspi->pRxBuffPtr) = (uint16_t)hspi->Instance->DR; + 8003e66: 68fb ldr r3, [r7, #12] + 8003e68: 681b ldr r3, [r3, #0] + 8003e6a: 68da ldr r2, [r3, #12] + 8003e6c: 68fb ldr r3, [r7, #12] + 8003e6e: 6c1b ldr r3, [r3, #64] @ 0x40 + 8003e70: b292 uxth r2, r2 + 8003e72: 801a strh r2, [r3, #0] + hspi->pRxBuffPtr += sizeof(uint16_t); + 8003e74: 68fb ldr r3, [r7, #12] + 8003e76: 6c1b ldr r3, [r3, #64] @ 0x40 + 8003e78: 1c9a adds r2, r3, #2 + 8003e7a: 68fb ldr r3, [r7, #12] + 8003e7c: 641a str r2, [r3, #64] @ 0x40 + hspi->RxXferCount--; + 8003e7e: 68fb ldr r3, [r7, #12] + 8003e80: 2246 movs r2, #70 @ 0x46 + 8003e82: 5a9b ldrh r3, [r3, r2] + 8003e84: b29b uxth r3, r3 + 8003e86: 3b01 subs r3, #1 + 8003e88: b299 uxth r1, r3 + 8003e8a: 68fb ldr r3, [r7, #12] + 8003e8c: 2246 movs r2, #70 @ 0x46 + 8003e8e: 5299 strh r1, [r3, r2] + 8003e90: e016 b.n 8003ec0 + } + else + { + /* Timeout management */ + if ((((HAL_GetTick() - tickstart) >= Timeout) && (Timeout != HAL_MAX_DELAY)) || (Timeout == 0U)) + 8003e92: f7fd fbeb bl 800166c + 8003e96: 0002 movs r2, r0 + 8003e98: 693b ldr r3, [r7, #16] + 8003e9a: 1ad3 subs r3, r2, r3 + 8003e9c: 683a ldr r2, [r7, #0] + 8003e9e: 429a cmp r2, r3 + 8003ea0: d802 bhi.n 8003ea8 + 8003ea2: 683b ldr r3, [r7, #0] + 8003ea4: 3301 adds r3, #1 + 8003ea6: d102 bne.n 8003eae + 8003ea8: 683b ldr r3, [r7, #0] + 8003eaa: 2b00 cmp r3, #0 + 8003eac: d108 bne.n 8003ec0 + { + errorcode = HAL_TIMEOUT; + 8003eae: 2317 movs r3, #23 + 8003eb0: 18fb adds r3, r7, r3 + 8003eb2: 2203 movs r2, #3 + 8003eb4: 701a strb r2, [r3, #0] + hspi->State = HAL_SPI_STATE_READY; + 8003eb6: 68fb ldr r3, [r7, #12] + 8003eb8: 225d movs r2, #93 @ 0x5d + 8003eba: 2101 movs r1, #1 + 8003ebc: 5499 strb r1, [r3, r2] + goto error; + 8003ebe: e01d b.n 8003efc + while (hspi->RxXferCount > 0U) + 8003ec0: 68fb ldr r3, [r7, #12] + 8003ec2: 2246 movs r2, #70 @ 0x46 + 8003ec4: 5a9b ldrh r3, [r3, r2] + 8003ec6: b29b uxth r3, r3 + 8003ec8: 2b00 cmp r3, #0 + 8003eca: d1c5 bne.n 8003e58 + } + } +#endif /* USE_SPI_CRC */ + + /* Check the end of the transaction */ + if (SPI_EndRxTransaction(hspi, Timeout, tickstart) != HAL_OK) + 8003ecc: 693a ldr r2, [r7, #16] + 8003ece: 6839 ldr r1, [r7, #0] + 8003ed0: 68fb ldr r3, [r7, #12] + 8003ed2: 0018 movs r0, r3 + 8003ed4: f000 fb34 bl 8004540 + 8003ed8: 1e03 subs r3, r0, #0 + 8003eda: d002 beq.n 8003ee2 + { + hspi->ErrorCode = HAL_SPI_ERROR_FLAG; + 8003edc: 68fb ldr r3, [r7, #12] + 8003ede: 2220 movs r2, #32 + 8003ee0: 661a str r2, [r3, #96] @ 0x60 + SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_CRC); + __HAL_SPI_CLEAR_CRCERRFLAG(hspi); + } +#endif /* USE_SPI_CRC */ + + if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) + 8003ee2: 68fb ldr r3, [r7, #12] + 8003ee4: 6e1b ldr r3, [r3, #96] @ 0x60 + 8003ee6: 2b00 cmp r3, #0 + 8003ee8: d004 beq.n 8003ef4 + { + errorcode = HAL_ERROR; + 8003eea: 2317 movs r3, #23 + 8003eec: 18fb adds r3, r7, r3 + 8003eee: 2201 movs r2, #1 + 8003ef0: 701a strb r2, [r3, #0] + 8003ef2: e003 b.n 8003efc + } + else + { + hspi->State = HAL_SPI_STATE_READY; + 8003ef4: 68fb ldr r3, [r7, #12] + 8003ef6: 225d movs r2, #93 @ 0x5d + 8003ef8: 2101 movs r1, #1 + 8003efa: 5499 strb r1, [r3, r2] + } + +error : + __HAL_UNLOCK(hspi); + 8003efc: 68fb ldr r3, [r7, #12] + 8003efe: 225c movs r2, #92 @ 0x5c + 8003f00: 2100 movs r1, #0 + 8003f02: 5499 strb r1, [r3, r2] + return errorcode; + 8003f04: 2317 movs r3, #23 + 8003f06: 18fb adds r3, r7, r3 + 8003f08: 781b ldrb r3, [r3, #0] +} + 8003f0a: 0018 movs r0, r3 + 8003f0c: 46bd mov sp, r7 + 8003f0e: b007 add sp, #28 + 8003f10: bd90 pop {r4, r7, pc} + 8003f12: 46c0 nop @ (mov r8, r8) + 8003f14: ffffefff .word 0xffffefff + 8003f18: ffffbfff .word 0xffffbfff + +08003f1c : + * @param Timeout Timeout duration + * @retval HAL status + */ +HAL_StatusTypeDef HAL_SPI_TransmitReceive(SPI_HandleTypeDef *hspi, uint8_t *pTxData, uint8_t *pRxData, uint16_t Size, + uint32_t Timeout) +{ + 8003f1c: b580 push {r7, lr} + 8003f1e: b08a sub sp, #40 @ 0x28 + 8003f20: af00 add r7, sp, #0 + 8003f22: 60f8 str r0, [r7, #12] + 8003f24: 60b9 str r1, [r7, #8] + 8003f26: 607a str r2, [r7, #4] + 8003f28: 001a movs r2, r3 + 8003f2a: 1cbb adds r3, r7, #2 + 8003f2c: 801a strh r2, [r3, #0] + __IO uint8_t *ptmpreg8; + __IO uint8_t tmpreg8 = 0; +#endif /* USE_SPI_CRC */ + + /* Variable used to alternate Rx and Tx during transfer */ + uint32_t txallowed = 1U; + 8003f2e: 2301 movs r3, #1 + 8003f30: 627b str r3, [r7, #36] @ 0x24 + HAL_StatusTypeDef errorcode = HAL_OK; + 8003f32: 2323 movs r3, #35 @ 0x23 + 8003f34: 18fb adds r3, r7, r3 + 8003f36: 2200 movs r2, #0 + 8003f38: 701a strb r2, [r3, #0] + + /* Check Direction parameter */ + assert_param(IS_SPI_DIRECTION_2LINES(hspi->Init.Direction)); + + /* Process Locked */ + __HAL_LOCK(hspi); + 8003f3a: 68fb ldr r3, [r7, #12] + 8003f3c: 225c movs r2, #92 @ 0x5c + 8003f3e: 5c9b ldrb r3, [r3, r2] + 8003f40: 2b01 cmp r3, #1 + 8003f42: d101 bne.n 8003f48 + 8003f44: 2302 movs r3, #2 + 8003f46: e1c4 b.n 80042d2 + 8003f48: 68fb ldr r3, [r7, #12] + 8003f4a: 225c movs r2, #92 @ 0x5c + 8003f4c: 2101 movs r1, #1 + 8003f4e: 5499 strb r1, [r3, r2] + + /* Init tickstart for timeout management*/ + tickstart = HAL_GetTick(); + 8003f50: f7fd fb8c bl 800166c + 8003f54: 0003 movs r3, r0 + 8003f56: 61fb str r3, [r7, #28] + + /* Init temporary variables */ + tmp_state = hspi->State; + 8003f58: 201b movs r0, #27 + 8003f5a: 183b adds r3, r7, r0 + 8003f5c: 68fa ldr r2, [r7, #12] + 8003f5e: 215d movs r1, #93 @ 0x5d + 8003f60: 5c52 ldrb r2, [r2, r1] + 8003f62: 701a strb r2, [r3, #0] + tmp_mode = hspi->Init.Mode; + 8003f64: 68fb ldr r3, [r7, #12] + 8003f66: 685b ldr r3, [r3, #4] + 8003f68: 617b str r3, [r7, #20] + initial_TxXferCount = Size; + 8003f6a: 2312 movs r3, #18 + 8003f6c: 18fb adds r3, r7, r3 + 8003f6e: 1cba adds r2, r7, #2 + 8003f70: 8812 ldrh r2, [r2, #0] + 8003f72: 801a strh r2, [r3, #0] +#if (USE_SPI_CRC != 0U) + spi_cr1 = READ_REG(hspi->Instance->CR1); + spi_cr2 = READ_REG(hspi->Instance->CR2); +#endif /* USE_SPI_CRC */ + + if (!((tmp_state == HAL_SPI_STATE_READY) || \ + 8003f74: 183b adds r3, r7, r0 + 8003f76: 781b ldrb r3, [r3, #0] + 8003f78: 2b01 cmp r3, #1 + 8003f7a: d011 beq.n 8003fa0 + 8003f7c: 697a ldr r2, [r7, #20] + 8003f7e: 2382 movs r3, #130 @ 0x82 + 8003f80: 005b lsls r3, r3, #1 + 8003f82: 429a cmp r2, r3 + 8003f84: d107 bne.n 8003f96 + ((tmp_mode == SPI_MODE_MASTER) && (hspi->Init.Direction == SPI_DIRECTION_2LINES) && (tmp_state == HAL_SPI_STATE_BUSY_RX)))) + 8003f86: 68fb ldr r3, [r7, #12] + 8003f88: 689b ldr r3, [r3, #8] + 8003f8a: 2b00 cmp r3, #0 + 8003f8c: d103 bne.n 8003f96 + 8003f8e: 183b adds r3, r7, r0 + 8003f90: 781b ldrb r3, [r3, #0] + 8003f92: 2b04 cmp r3, #4 + 8003f94: d004 beq.n 8003fa0 + { + errorcode = HAL_BUSY; + 8003f96: 2323 movs r3, #35 @ 0x23 + 8003f98: 18fb adds r3, r7, r3 + 8003f9a: 2202 movs r2, #2 + 8003f9c: 701a strb r2, [r3, #0] + goto error; + 8003f9e: e191 b.n 80042c4 + } + + if ((pTxData == NULL) || (pRxData == NULL) || (Size == 0U)) + 8003fa0: 68bb ldr r3, [r7, #8] + 8003fa2: 2b00 cmp r3, #0 + 8003fa4: d006 beq.n 8003fb4 + 8003fa6: 687b ldr r3, [r7, #4] + 8003fa8: 2b00 cmp r3, #0 + 8003faa: d003 beq.n 8003fb4 + 8003fac: 1cbb adds r3, r7, #2 + 8003fae: 881b ldrh r3, [r3, #0] + 8003fb0: 2b00 cmp r3, #0 + 8003fb2: d104 bne.n 8003fbe + { + errorcode = HAL_ERROR; + 8003fb4: 2323 movs r3, #35 @ 0x23 + 8003fb6: 18fb adds r3, r7, r3 + 8003fb8: 2201 movs r2, #1 + 8003fba: 701a strb r2, [r3, #0] + goto error; + 8003fbc: e182 b.n 80042c4 + } + + /* Don't overwrite in case of HAL_SPI_STATE_BUSY_RX */ + if (hspi->State != HAL_SPI_STATE_BUSY_RX) + 8003fbe: 68fb ldr r3, [r7, #12] + 8003fc0: 225d movs r2, #93 @ 0x5d + 8003fc2: 5c9b ldrb r3, [r3, r2] + 8003fc4: b2db uxtb r3, r3 + 8003fc6: 2b04 cmp r3, #4 + 8003fc8: d003 beq.n 8003fd2 + { + hspi->State = HAL_SPI_STATE_BUSY_TX_RX; + 8003fca: 68fb ldr r3, [r7, #12] + 8003fcc: 225d movs r2, #93 @ 0x5d + 8003fce: 2105 movs r1, #5 + 8003fd0: 5499 strb r1, [r3, r2] + } + + /* Set the transaction information */ + hspi->ErrorCode = HAL_SPI_ERROR_NONE; + 8003fd2: 68fb ldr r3, [r7, #12] + 8003fd4: 2200 movs r2, #0 + 8003fd6: 661a str r2, [r3, #96] @ 0x60 + hspi->pRxBuffPtr = (uint8_t *)pRxData; + 8003fd8: 68fb ldr r3, [r7, #12] + 8003fda: 687a ldr r2, [r7, #4] + 8003fdc: 641a str r2, [r3, #64] @ 0x40 + hspi->RxXferCount = Size; + 8003fde: 68fb ldr r3, [r7, #12] + 8003fe0: 1cba adds r2, r7, #2 + 8003fe2: 2146 movs r1, #70 @ 0x46 + 8003fe4: 8812 ldrh r2, [r2, #0] + 8003fe6: 525a strh r2, [r3, r1] + hspi->RxXferSize = Size; + 8003fe8: 68fb ldr r3, [r7, #12] + 8003fea: 1cba adds r2, r7, #2 + 8003fec: 2144 movs r1, #68 @ 0x44 + 8003fee: 8812 ldrh r2, [r2, #0] + 8003ff0: 525a strh r2, [r3, r1] + hspi->pTxBuffPtr = (uint8_t *)pTxData; + 8003ff2: 68fb ldr r3, [r7, #12] + 8003ff4: 68ba ldr r2, [r7, #8] + 8003ff6: 639a str r2, [r3, #56] @ 0x38 + hspi->TxXferCount = Size; + 8003ff8: 68fb ldr r3, [r7, #12] + 8003ffa: 1cba adds r2, r7, #2 + 8003ffc: 8812 ldrh r2, [r2, #0] + 8003ffe: 87da strh r2, [r3, #62] @ 0x3e + hspi->TxXferSize = Size; + 8004000: 68fb ldr r3, [r7, #12] + 8004002: 1cba adds r2, r7, #2 + 8004004: 8812 ldrh r2, [r2, #0] + 8004006: 879a strh r2, [r3, #60] @ 0x3c + + /*Init field not used in handle to zero */ + hspi->RxISR = NULL; + 8004008: 68fb ldr r3, [r7, #12] + 800400a: 2200 movs r2, #0 + 800400c: 64da str r2, [r3, #76] @ 0x4c + hspi->TxISR = NULL; + 800400e: 68fb ldr r3, [r7, #12] + 8004010: 2200 movs r2, #0 + 8004012: 651a str r2, [r3, #80] @ 0x50 + SPI_RESET_CRC(hspi); + } +#endif /* USE_SPI_CRC */ + + /* Set the Rx Fifo threshold */ + if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) + 8004014: 68fb ldr r3, [r7, #12] + 8004016: 68da ldr r2, [r3, #12] + 8004018: 23e0 movs r3, #224 @ 0xe0 + 800401a: 00db lsls r3, r3, #3 + 800401c: 429a cmp r2, r3 + 800401e: d908 bls.n 8004032 + { + /* Set fiforxthreshold according the reception data length: 16bit */ + CLEAR_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); + 8004020: 68fb ldr r3, [r7, #12] + 8004022: 681b ldr r3, [r3, #0] + 8004024: 685a ldr r2, [r3, #4] + 8004026: 68fb ldr r3, [r7, #12] + 8004028: 681b ldr r3, [r3, #0] + 800402a: 49ac ldr r1, [pc, #688] @ (80042dc ) + 800402c: 400a ands r2, r1 + 800402e: 605a str r2, [r3, #4] + 8004030: e008 b.n 8004044 + } + else + { + /* Set fiforxthreshold according the reception data length: 8bit */ + SET_BIT(hspi->Instance->CR2, SPI_RXFIFO_THRESHOLD); + 8004032: 68fb ldr r3, [r7, #12] + 8004034: 681b ldr r3, [r3, #0] + 8004036: 685a ldr r2, [r3, #4] + 8004038: 68fb ldr r3, [r7, #12] + 800403a: 681b ldr r3, [r3, #0] + 800403c: 2180 movs r1, #128 @ 0x80 + 800403e: 0149 lsls r1, r1, #5 + 8004040: 430a orrs r2, r1 + 8004042: 605a str r2, [r3, #4] + } + + /* Check if the SPI is already enabled */ + if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) + 8004044: 68fb ldr r3, [r7, #12] + 8004046: 681b ldr r3, [r3, #0] + 8004048: 681b ldr r3, [r3, #0] + 800404a: 2240 movs r2, #64 @ 0x40 + 800404c: 4013 ands r3, r2 + 800404e: 2b40 cmp r3, #64 @ 0x40 + 8004050: d007 beq.n 8004062 + { + /* Enable SPI peripheral */ + __HAL_SPI_ENABLE(hspi); + 8004052: 68fb ldr r3, [r7, #12] + 8004054: 681b ldr r3, [r3, #0] + 8004056: 681a ldr r2, [r3, #0] + 8004058: 68fb ldr r3, [r7, #12] + 800405a: 681b ldr r3, [r3, #0] + 800405c: 2140 movs r1, #64 @ 0x40 + 800405e: 430a orrs r2, r1 + 8004060: 601a str r2, [r3, #0] + } + + /* Transmit and Receive data in 16 Bit mode */ + if (hspi->Init.DataSize > SPI_DATASIZE_8BIT) + 8004062: 68fb ldr r3, [r7, #12] + 8004064: 68da ldr r2, [r3, #12] + 8004066: 23e0 movs r3, #224 @ 0xe0 + 8004068: 00db lsls r3, r3, #3 + 800406a: 429a cmp r2, r3 + 800406c: d800 bhi.n 8004070 + 800406e: e083 b.n 8004178 + { + if ((hspi->Init.Mode == SPI_MODE_SLAVE) || (initial_TxXferCount == 0x01U)) + 8004070: 68fb ldr r3, [r7, #12] + 8004072: 685b ldr r3, [r3, #4] + 8004074: 2b00 cmp r3, #0 + 8004076: d005 beq.n 8004084 + 8004078: 2312 movs r3, #18 + 800407a: 18fb adds r3, r7, r3 + 800407c: 881b ldrh r3, [r3, #0] + 800407e: 2b01 cmp r3, #1 + 8004080: d000 beq.n 8004084 + 8004082: e06d b.n 8004160 + { + hspi->Instance->DR = *((uint16_t *)hspi->pTxBuffPtr); + 8004084: 68fb ldr r3, [r7, #12] + 8004086: 6b9b ldr r3, [r3, #56] @ 0x38 + 8004088: 881a ldrh r2, [r3, #0] + 800408a: 68fb ldr r3, [r7, #12] + 800408c: 681b ldr r3, [r3, #0] + 800408e: 60da str r2, [r3, #12] + hspi->pTxBuffPtr += sizeof(uint16_t); + 8004090: 68fb ldr r3, [r7, #12] + 8004092: 6b9b ldr r3, [r3, #56] @ 0x38 + 8004094: 1c9a adds r2, r3, #2 + 8004096: 68fb ldr r3, [r7, #12] + 8004098: 639a str r2, [r3, #56] @ 0x38 + hspi->TxXferCount--; + 800409a: 68fb ldr r3, [r7, #12] + 800409c: 8fdb ldrh r3, [r3, #62] @ 0x3e + 800409e: b29b uxth r3, r3 + 80040a0: 3b01 subs r3, #1 + 80040a2: b29a uxth r2, r3 + 80040a4: 68fb ldr r3, [r7, #12] + 80040a6: 87da strh r2, [r3, #62] @ 0x3e + SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); + } +#endif /* USE_SPI_CRC */ + + } + while ((hspi->TxXferCount > 0U) || (hspi->RxXferCount > 0U)) + 80040a8: e05a b.n 8004160 + { + /* Check TXE flag */ + if ((__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXE)) && (hspi->TxXferCount > 0U) && (txallowed == 1U)) + 80040aa: 68fb ldr r3, [r7, #12] + 80040ac: 681b ldr r3, [r3, #0] + 80040ae: 689b ldr r3, [r3, #8] + 80040b0: 2202 movs r2, #2 + 80040b2: 4013 ands r3, r2 + 80040b4: 2b02 cmp r3, #2 + 80040b6: d11b bne.n 80040f0 + 80040b8: 68fb ldr r3, [r7, #12] + 80040ba: 8fdb ldrh r3, [r3, #62] @ 0x3e + 80040bc: b29b uxth r3, r3 + 80040be: 2b00 cmp r3, #0 + 80040c0: d016 beq.n 80040f0 + 80040c2: 6a7b ldr r3, [r7, #36] @ 0x24 + 80040c4: 2b01 cmp r3, #1 + 80040c6: d113 bne.n 80040f0 + { + hspi->Instance->DR = *((uint16_t *)hspi->pTxBuffPtr); + 80040c8: 68fb ldr r3, [r7, #12] + 80040ca: 6b9b ldr r3, [r3, #56] @ 0x38 + 80040cc: 881a ldrh r2, [r3, #0] + 80040ce: 68fb ldr r3, [r7, #12] + 80040d0: 681b ldr r3, [r3, #0] + 80040d2: 60da str r2, [r3, #12] + hspi->pTxBuffPtr += sizeof(uint16_t); + 80040d4: 68fb ldr r3, [r7, #12] + 80040d6: 6b9b ldr r3, [r3, #56] @ 0x38 + 80040d8: 1c9a adds r2, r3, #2 + 80040da: 68fb ldr r3, [r7, #12] + 80040dc: 639a str r2, [r3, #56] @ 0x38 + hspi->TxXferCount--; + 80040de: 68fb ldr r3, [r7, #12] + 80040e0: 8fdb ldrh r3, [r3, #62] @ 0x3e + 80040e2: b29b uxth r3, r3 + 80040e4: 3b01 subs r3, #1 + 80040e6: b29a uxth r2, r3 + 80040e8: 68fb ldr r3, [r7, #12] + 80040ea: 87da strh r2, [r3, #62] @ 0x3e + /* Next Data is a reception (Rx). Tx not allowed */ + txallowed = 0U; + 80040ec: 2300 movs r3, #0 + 80040ee: 627b str r3, [r7, #36] @ 0x24 + } +#endif /* USE_SPI_CRC */ + } + + /* Check RXNE flag */ + if ((__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_RXNE)) && (hspi->RxXferCount > 0U)) + 80040f0: 68fb ldr r3, [r7, #12] + 80040f2: 681b ldr r3, [r3, #0] + 80040f4: 689b ldr r3, [r3, #8] + 80040f6: 2201 movs r2, #1 + 80040f8: 4013 ands r3, r2 + 80040fa: 2b01 cmp r3, #1 + 80040fc: d11c bne.n 8004138 + 80040fe: 68fb ldr r3, [r7, #12] + 8004100: 2246 movs r2, #70 @ 0x46 + 8004102: 5a9b ldrh r3, [r3, r2] + 8004104: b29b uxth r3, r3 + 8004106: 2b00 cmp r3, #0 + 8004108: d016 beq.n 8004138 + { + *((uint16_t *)hspi->pRxBuffPtr) = (uint16_t)hspi->Instance->DR; + 800410a: 68fb ldr r3, [r7, #12] + 800410c: 681b ldr r3, [r3, #0] + 800410e: 68da ldr r2, [r3, #12] + 8004110: 68fb ldr r3, [r7, #12] + 8004112: 6c1b ldr r3, [r3, #64] @ 0x40 + 8004114: b292 uxth r2, r2 + 8004116: 801a strh r2, [r3, #0] + hspi->pRxBuffPtr += sizeof(uint16_t); + 8004118: 68fb ldr r3, [r7, #12] + 800411a: 6c1b ldr r3, [r3, #64] @ 0x40 + 800411c: 1c9a adds r2, r3, #2 + 800411e: 68fb ldr r3, [r7, #12] + 8004120: 641a str r2, [r3, #64] @ 0x40 + hspi->RxXferCount--; + 8004122: 68fb ldr r3, [r7, #12] + 8004124: 2246 movs r2, #70 @ 0x46 + 8004126: 5a9b ldrh r3, [r3, r2] + 8004128: b29b uxth r3, r3 + 800412a: 3b01 subs r3, #1 + 800412c: b299 uxth r1, r3 + 800412e: 68fb ldr r3, [r7, #12] + 8004130: 2246 movs r2, #70 @ 0x46 + 8004132: 5299 strh r1, [r3, r2] + /* Next Data is a Transmission (Tx). Tx is allowed */ + txallowed = 1U; + 8004134: 2301 movs r3, #1 + 8004136: 627b str r3, [r7, #36] @ 0x24 + } + if (((HAL_GetTick() - tickstart) >= Timeout) && (Timeout != HAL_MAX_DELAY)) + 8004138: f7fd fa98 bl 800166c + 800413c: 0002 movs r2, r0 + 800413e: 69fb ldr r3, [r7, #28] + 8004140: 1ad3 subs r3, r2, r3 + 8004142: 6b3a ldr r2, [r7, #48] @ 0x30 + 8004144: 429a cmp r2, r3 + 8004146: d80b bhi.n 8004160 + 8004148: 6b3b ldr r3, [r7, #48] @ 0x30 + 800414a: 3301 adds r3, #1 + 800414c: d008 beq.n 8004160 + { + errorcode = HAL_TIMEOUT; + 800414e: 2323 movs r3, #35 @ 0x23 + 8004150: 18fb adds r3, r7, r3 + 8004152: 2203 movs r2, #3 + 8004154: 701a strb r2, [r3, #0] + hspi->State = HAL_SPI_STATE_READY; + 8004156: 68fb ldr r3, [r7, #12] + 8004158: 225d movs r2, #93 @ 0x5d + 800415a: 2101 movs r1, #1 + 800415c: 5499 strb r1, [r3, r2] + goto error; + 800415e: e0b1 b.n 80042c4 + while ((hspi->TxXferCount > 0U) || (hspi->RxXferCount > 0U)) + 8004160: 68fb ldr r3, [r7, #12] + 8004162: 8fdb ldrh r3, [r3, #62] @ 0x3e + 8004164: b29b uxth r3, r3 + 8004166: 2b00 cmp r3, #0 + 8004168: d19f bne.n 80040aa + 800416a: 68fb ldr r3, [r7, #12] + 800416c: 2246 movs r2, #70 @ 0x46 + 800416e: 5a9b ldrh r3, [r3, r2] + 8004170: b29b uxth r3, r3 + 8004172: 2b00 cmp r3, #0 + 8004174: d199 bne.n 80040aa + 8004176: e089 b.n 800428c + } + } + /* Transmit and Receive data in 8 Bit mode */ + else + { + if ((hspi->Init.Mode == SPI_MODE_SLAVE) || (initial_TxXferCount == 0x01U)) + 8004178: 68fb ldr r3, [r7, #12] + 800417a: 685b ldr r3, [r3, #4] + 800417c: 2b00 cmp r3, #0 + 800417e: d005 beq.n 800418c + 8004180: 2312 movs r3, #18 + 8004182: 18fb adds r3, r7, r3 + 8004184: 881b ldrh r3, [r3, #0] + 8004186: 2b01 cmp r3, #1 + 8004188: d000 beq.n 800418c + 800418a: e074 b.n 8004276 + { + *((__IO uint8_t *)&hspi->Instance->DR) = (*hspi->pTxBuffPtr); + 800418c: 68fb ldr r3, [r7, #12] + 800418e: 6b9a ldr r2, [r3, #56] @ 0x38 + 8004190: 68fb ldr r3, [r7, #12] + 8004192: 681b ldr r3, [r3, #0] + 8004194: 330c adds r3, #12 + 8004196: 7812 ldrb r2, [r2, #0] + 8004198: 701a strb r2, [r3, #0] + hspi->pTxBuffPtr += sizeof(uint8_t); + 800419a: 68fb ldr r3, [r7, #12] + 800419c: 6b9b ldr r3, [r3, #56] @ 0x38 + 800419e: 1c5a adds r2, r3, #1 + 80041a0: 68fb ldr r3, [r7, #12] + 80041a2: 639a str r2, [r3, #56] @ 0x38 + hspi->TxXferCount--; + 80041a4: 68fb ldr r3, [r7, #12] + 80041a6: 8fdb ldrh r3, [r3, #62] @ 0x3e + 80041a8: b29b uxth r3, r3 + 80041aa: 3b01 subs r3, #1 + 80041ac: b29a uxth r2, r3 + 80041ae: 68fb ldr r3, [r7, #12] + 80041b0: 87da strh r2, [r3, #62] @ 0x3e + } + SET_BIT(hspi->Instance->CR1, SPI_CR1_CRCNEXT); + } +#endif /* USE_SPI_CRC */ + } + while ((hspi->TxXferCount > 0U) || (hspi->RxXferCount > 0U)) + 80041b2: e060 b.n 8004276 + { + /* Check TXE flag */ + if ((__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_TXE)) && (hspi->TxXferCount > 0U) && (txallowed == 1U)) + 80041b4: 68fb ldr r3, [r7, #12] + 80041b6: 681b ldr r3, [r3, #0] + 80041b8: 689b ldr r3, [r3, #8] + 80041ba: 2202 movs r2, #2 + 80041bc: 4013 ands r3, r2 + 80041be: 2b02 cmp r3, #2 + 80041c0: d11c bne.n 80041fc + 80041c2: 68fb ldr r3, [r7, #12] + 80041c4: 8fdb ldrh r3, [r3, #62] @ 0x3e + 80041c6: b29b uxth r3, r3 + 80041c8: 2b00 cmp r3, #0 + 80041ca: d017 beq.n 80041fc + 80041cc: 6a7b ldr r3, [r7, #36] @ 0x24 + 80041ce: 2b01 cmp r3, #1 + 80041d0: d114 bne.n 80041fc + { + *(__IO uint8_t *)&hspi->Instance->DR = (*hspi->pTxBuffPtr); + 80041d2: 68fb ldr r3, [r7, #12] + 80041d4: 6b9a ldr r2, [r3, #56] @ 0x38 + 80041d6: 68fb ldr r3, [r7, #12] + 80041d8: 681b ldr r3, [r3, #0] + 80041da: 330c adds r3, #12 + 80041dc: 7812 ldrb r2, [r2, #0] + 80041de: 701a strb r2, [r3, #0] + hspi->pTxBuffPtr++; + 80041e0: 68fb ldr r3, [r7, #12] + 80041e2: 6b9b ldr r3, [r3, #56] @ 0x38 + 80041e4: 1c5a adds r2, r3, #1 + 80041e6: 68fb ldr r3, [r7, #12] + 80041e8: 639a str r2, [r3, #56] @ 0x38 + hspi->TxXferCount--; + 80041ea: 68fb ldr r3, [r7, #12] + 80041ec: 8fdb ldrh r3, [r3, #62] @ 0x3e + 80041ee: b29b uxth r3, r3 + 80041f0: 3b01 subs r3, #1 + 80041f2: b29a uxth r2, r3 + 80041f4: 68fb ldr r3, [r7, #12] + 80041f6: 87da strh r2, [r3, #62] @ 0x3e + /* Next Data is a reception (Rx). Tx not allowed */ + txallowed = 0U; + 80041f8: 2300 movs r3, #0 + 80041fa: 627b str r3, [r7, #36] @ 0x24 + } +#endif /* USE_SPI_CRC */ + } + + /* Wait until RXNE flag is reset */ + if ((__HAL_SPI_GET_FLAG(hspi, SPI_FLAG_RXNE)) && (hspi->RxXferCount > 0U)) + 80041fc: 68fb ldr r3, [r7, #12] + 80041fe: 681b ldr r3, [r3, #0] + 8004200: 689b ldr r3, [r3, #8] + 8004202: 2201 movs r2, #1 + 8004204: 4013 ands r3, r2 + 8004206: 2b01 cmp r3, #1 + 8004208: d11e bne.n 8004248 + 800420a: 68fb ldr r3, [r7, #12] + 800420c: 2246 movs r2, #70 @ 0x46 + 800420e: 5a9b ldrh r3, [r3, r2] + 8004210: b29b uxth r3, r3 + 8004212: 2b00 cmp r3, #0 + 8004214: d018 beq.n 8004248 + { + (*(uint8_t *)hspi->pRxBuffPtr) = *(__IO uint8_t *)&hspi->Instance->DR; + 8004216: 68fb ldr r3, [r7, #12] + 8004218: 681b ldr r3, [r3, #0] + 800421a: 330c adds r3, #12 + 800421c: 001a movs r2, r3 + 800421e: 68fb ldr r3, [r7, #12] + 8004220: 6c1b ldr r3, [r3, #64] @ 0x40 + 8004222: 7812 ldrb r2, [r2, #0] + 8004224: b2d2 uxtb r2, r2 + 8004226: 701a strb r2, [r3, #0] + hspi->pRxBuffPtr++; + 8004228: 68fb ldr r3, [r7, #12] + 800422a: 6c1b ldr r3, [r3, #64] @ 0x40 + 800422c: 1c5a adds r2, r3, #1 + 800422e: 68fb ldr r3, [r7, #12] + 8004230: 641a str r2, [r3, #64] @ 0x40 + hspi->RxXferCount--; + 8004232: 68fb ldr r3, [r7, #12] + 8004234: 2246 movs r2, #70 @ 0x46 + 8004236: 5a9b ldrh r3, [r3, r2] + 8004238: b29b uxth r3, r3 + 800423a: 3b01 subs r3, #1 + 800423c: b299 uxth r1, r3 + 800423e: 68fb ldr r3, [r7, #12] + 8004240: 2246 movs r2, #70 @ 0x46 + 8004242: 5299 strh r1, [r3, r2] + /* Next Data is a Transmission (Tx). Tx is allowed */ + txallowed = 1U; + 8004244: 2301 movs r3, #1 + 8004246: 627b str r3, [r7, #36] @ 0x24 + } + if ((((HAL_GetTick() - tickstart) >= Timeout) && ((Timeout != HAL_MAX_DELAY))) || (Timeout == 0U)) + 8004248: f7fd fa10 bl 800166c + 800424c: 0002 movs r2, r0 + 800424e: 69fb ldr r3, [r7, #28] + 8004250: 1ad3 subs r3, r2, r3 + 8004252: 6b3a ldr r2, [r7, #48] @ 0x30 + 8004254: 429a cmp r2, r3 + 8004256: d802 bhi.n 800425e + 8004258: 6b3b ldr r3, [r7, #48] @ 0x30 + 800425a: 3301 adds r3, #1 + 800425c: d102 bne.n 8004264 + 800425e: 6b3b ldr r3, [r7, #48] @ 0x30 + 8004260: 2b00 cmp r3, #0 + 8004262: d108 bne.n 8004276 + { + errorcode = HAL_TIMEOUT; + 8004264: 2323 movs r3, #35 @ 0x23 + 8004266: 18fb adds r3, r7, r3 + 8004268: 2203 movs r2, #3 + 800426a: 701a strb r2, [r3, #0] + hspi->State = HAL_SPI_STATE_READY; + 800426c: 68fb ldr r3, [r7, #12] + 800426e: 225d movs r2, #93 @ 0x5d + 8004270: 2101 movs r1, #1 + 8004272: 5499 strb r1, [r3, r2] + goto error; + 8004274: e026 b.n 80042c4 + while ((hspi->TxXferCount > 0U) || (hspi->RxXferCount > 0U)) + 8004276: 68fb ldr r3, [r7, #12] + 8004278: 8fdb ldrh r3, [r3, #62] @ 0x3e + 800427a: b29b uxth r3, r3 + 800427c: 2b00 cmp r3, #0 + 800427e: d199 bne.n 80041b4 + 8004280: 68fb ldr r3, [r7, #12] + 8004282: 2246 movs r2, #70 @ 0x46 + 8004284: 5a9b ldrh r3, [r3, r2] + 8004286: b29b uxth r3, r3 + 8004288: 2b00 cmp r3, #0 + 800428a: d193 bne.n 80041b4 + errorcode = HAL_ERROR; + } +#endif /* USE_SPI_CRC */ + + /* Check the end of the transaction */ + if (SPI_EndRxTxTransaction(hspi, Timeout, tickstart) != HAL_OK) + 800428c: 69fa ldr r2, [r7, #28] + 800428e: 6b39 ldr r1, [r7, #48] @ 0x30 + 8004290: 68fb ldr r3, [r7, #12] + 8004292: 0018 movs r0, r3 + 8004294: f000 f9b2 bl 80045fc + 8004298: 1e03 subs r3, r0, #0 + 800429a: d006 beq.n 80042aa + { + errorcode = HAL_ERROR; + 800429c: 2323 movs r3, #35 @ 0x23 + 800429e: 18fb adds r3, r7, r3 + 80042a0: 2201 movs r2, #1 + 80042a2: 701a strb r2, [r3, #0] + hspi->ErrorCode = HAL_SPI_ERROR_FLAG; + 80042a4: 68fb ldr r3, [r7, #12] + 80042a6: 2220 movs r2, #32 + 80042a8: 661a str r2, [r3, #96] @ 0x60 + } + + if (hspi->ErrorCode != HAL_SPI_ERROR_NONE) + 80042aa: 68fb ldr r3, [r7, #12] + 80042ac: 6e1b ldr r3, [r3, #96] @ 0x60 + 80042ae: 2b00 cmp r3, #0 + 80042b0: d004 beq.n 80042bc + { + errorcode = HAL_ERROR; + 80042b2: 2323 movs r3, #35 @ 0x23 + 80042b4: 18fb adds r3, r7, r3 + 80042b6: 2201 movs r2, #1 + 80042b8: 701a strb r2, [r3, #0] + 80042ba: e003 b.n 80042c4 + } + else + { + hspi->State = HAL_SPI_STATE_READY; + 80042bc: 68fb ldr r3, [r7, #12] + 80042be: 225d movs r2, #93 @ 0x5d + 80042c0: 2101 movs r1, #1 + 80042c2: 5499 strb r1, [r3, r2] + } + +error : + __HAL_UNLOCK(hspi); + 80042c4: 68fb ldr r3, [r7, #12] + 80042c6: 225c movs r2, #92 @ 0x5c + 80042c8: 2100 movs r1, #0 + 80042ca: 5499 strb r1, [r3, r2] + return errorcode; + 80042cc: 2323 movs r3, #35 @ 0x23 + 80042ce: 18fb adds r3, r7, r3 + 80042d0: 781b ldrb r3, [r3, #0] +} + 80042d2: 0018 movs r0, r3 + 80042d4: 46bd mov sp, r7 + 80042d6: b00a add sp, #40 @ 0x28 + 80042d8: bd80 pop {r7, pc} + 80042da: 46c0 nop @ (mov r8, r8) + 80042dc: ffffefff .word 0xffffefff + +080042e0 : + * @param Tickstart tick start value + * @retval HAL status + */ +static HAL_StatusTypeDef SPI_WaitFlagStateUntilTimeout(SPI_HandleTypeDef *hspi, uint32_t Flag, FlagStatus State, + uint32_t Timeout, uint32_t Tickstart) +{ + 80042e0: b580 push {r7, lr} + 80042e2: b088 sub sp, #32 + 80042e4: af00 add r7, sp, #0 + 80042e6: 60f8 str r0, [r7, #12] + 80042e8: 60b9 str r1, [r7, #8] + 80042ea: 603b str r3, [r7, #0] + 80042ec: 1dfb adds r3, r7, #7 + 80042ee: 701a strb r2, [r3, #0] + __IO uint32_t count; + uint32_t tmp_timeout; + uint32_t tmp_tickstart; + + /* Adjust Timeout value in case of end of transfer */ + tmp_timeout = Timeout - (HAL_GetTick() - Tickstart); + 80042f0: f7fd f9bc bl 800166c + 80042f4: 0002 movs r2, r0 + 80042f6: 6abb ldr r3, [r7, #40] @ 0x28 + 80042f8: 1a9b subs r3, r3, r2 + 80042fa: 683a ldr r2, [r7, #0] + 80042fc: 18d3 adds r3, r2, r3 + 80042fe: 61fb str r3, [r7, #28] + tmp_tickstart = HAL_GetTick(); + 8004300: f7fd f9b4 bl 800166c + 8004304: 0003 movs r3, r0 + 8004306: 61bb str r3, [r7, #24] + + /* Calculate Timeout based on a software loop to avoid blocking issue if Systick is disabled */ + count = tmp_timeout * ((SystemCoreClock * 32U) >> 20U); + 8004308: 4b3a ldr r3, [pc, #232] @ (80043f4 ) + 800430a: 681b ldr r3, [r3, #0] + 800430c: 015b lsls r3, r3, #5 + 800430e: 0d1b lsrs r3, r3, #20 + 8004310: 69fa ldr r2, [r7, #28] + 8004312: 4353 muls r3, r2 + 8004314: 617b str r3, [r7, #20] + + while ((__HAL_SPI_GET_FLAG(hspi, Flag) ? SET : RESET) != State) + 8004316: e058 b.n 80043ca + { + if (Timeout != HAL_MAX_DELAY) + 8004318: 683b ldr r3, [r7, #0] + 800431a: 3301 adds r3, #1 + 800431c: d055 beq.n 80043ca + { + if (((HAL_GetTick() - tmp_tickstart) >= tmp_timeout) || (tmp_timeout == 0U)) + 800431e: f7fd f9a5 bl 800166c + 8004322: 0002 movs r2, r0 + 8004324: 69bb ldr r3, [r7, #24] + 8004326: 1ad3 subs r3, r2, r3 + 8004328: 69fa ldr r2, [r7, #28] + 800432a: 429a cmp r2, r3 + 800432c: d902 bls.n 8004334 + 800432e: 69fb ldr r3, [r7, #28] + 8004330: 2b00 cmp r3, #0 + 8004332: d142 bne.n 80043ba + /* Disable the SPI and reset the CRC: the CRC value should be cleared + on both master and slave sides in order to resynchronize the master + and slave for their respective CRC calculation */ + + /* Disable TXE, RXNE and ERR interrupts for the interrupt process */ + __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_TXE | SPI_IT_RXNE | SPI_IT_ERR)); + 8004334: 68fb ldr r3, [r7, #12] + 8004336: 681b ldr r3, [r3, #0] + 8004338: 685a ldr r2, [r3, #4] + 800433a: 68fb ldr r3, [r7, #12] + 800433c: 681b ldr r3, [r3, #0] + 800433e: 21e0 movs r1, #224 @ 0xe0 + 8004340: 438a bics r2, r1 + 8004342: 605a str r2, [r3, #4] + + if ((hspi->Init.Mode == SPI_MODE_MASTER) && ((hspi->Init.Direction == SPI_DIRECTION_1LINE) + 8004344: 68fb ldr r3, [r7, #12] + 8004346: 685a ldr r2, [r3, #4] + 8004348: 2382 movs r3, #130 @ 0x82 + 800434a: 005b lsls r3, r3, #1 + 800434c: 429a cmp r2, r3 + 800434e: d113 bne.n 8004378 + 8004350: 68fb ldr r3, [r7, #12] + 8004352: 689a ldr r2, [r3, #8] + 8004354: 2380 movs r3, #128 @ 0x80 + 8004356: 021b lsls r3, r3, #8 + 8004358: 429a cmp r2, r3 + 800435a: d005 beq.n 8004368 + || (hspi->Init.Direction == SPI_DIRECTION_2LINES_RXONLY))) + 800435c: 68fb ldr r3, [r7, #12] + 800435e: 689a ldr r2, [r3, #8] + 8004360: 2380 movs r3, #128 @ 0x80 + 8004362: 00db lsls r3, r3, #3 + 8004364: 429a cmp r2, r3 + 8004366: d107 bne.n 8004378 + { + /* Disable SPI peripheral */ + __HAL_SPI_DISABLE(hspi); + 8004368: 68fb ldr r3, [r7, #12] + 800436a: 681b ldr r3, [r3, #0] + 800436c: 681a ldr r2, [r3, #0] + 800436e: 68fb ldr r3, [r7, #12] + 8004370: 681b ldr r3, [r3, #0] + 8004372: 2140 movs r1, #64 @ 0x40 + 8004374: 438a bics r2, r1 + 8004376: 601a str r2, [r3, #0] + } + + /* Reset CRC Calculation */ + if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) + 8004378: 68fb ldr r3, [r7, #12] + 800437a: 6a9a ldr r2, [r3, #40] @ 0x28 + 800437c: 2380 movs r3, #128 @ 0x80 + 800437e: 019b lsls r3, r3, #6 + 8004380: 429a cmp r2, r3 + 8004382: d110 bne.n 80043a6 + { + SPI_RESET_CRC(hspi); + 8004384: 68fb ldr r3, [r7, #12] + 8004386: 681b ldr r3, [r3, #0] + 8004388: 681a ldr r2, [r3, #0] + 800438a: 68fb ldr r3, [r7, #12] + 800438c: 681b ldr r3, [r3, #0] + 800438e: 491a ldr r1, [pc, #104] @ (80043f8 ) + 8004390: 400a ands r2, r1 + 8004392: 601a str r2, [r3, #0] + 8004394: 68fb ldr r3, [r7, #12] + 8004396: 681b ldr r3, [r3, #0] + 8004398: 681a ldr r2, [r3, #0] + 800439a: 68fb ldr r3, [r7, #12] + 800439c: 681b ldr r3, [r3, #0] + 800439e: 2180 movs r1, #128 @ 0x80 + 80043a0: 0189 lsls r1, r1, #6 + 80043a2: 430a orrs r2, r1 + 80043a4: 601a str r2, [r3, #0] + } + + hspi->State = HAL_SPI_STATE_READY; + 80043a6: 68fb ldr r3, [r7, #12] + 80043a8: 225d movs r2, #93 @ 0x5d + 80043aa: 2101 movs r1, #1 + 80043ac: 5499 strb r1, [r3, r2] + + /* Process Unlocked */ + __HAL_UNLOCK(hspi); + 80043ae: 68fb ldr r3, [r7, #12] + 80043b0: 225c movs r2, #92 @ 0x5c + 80043b2: 2100 movs r1, #0 + 80043b4: 5499 strb r1, [r3, r2] + + return HAL_TIMEOUT; + 80043b6: 2303 movs r3, #3 + 80043b8: e017 b.n 80043ea + } + /* If Systick is disabled or not incremented, deactivate timeout to go in disable loop procedure */ + if (count == 0U) + 80043ba: 697b ldr r3, [r7, #20] + 80043bc: 2b00 cmp r3, #0 + 80043be: d101 bne.n 80043c4 + { + tmp_timeout = 0U; + 80043c0: 2300 movs r3, #0 + 80043c2: 61fb str r3, [r7, #28] + } + count--; + 80043c4: 697b ldr r3, [r7, #20] + 80043c6: 3b01 subs r3, #1 + 80043c8: 617b str r3, [r7, #20] + while ((__HAL_SPI_GET_FLAG(hspi, Flag) ? SET : RESET) != State) + 80043ca: 68fb ldr r3, [r7, #12] + 80043cc: 681b ldr r3, [r3, #0] + 80043ce: 689b ldr r3, [r3, #8] + 80043d0: 68ba ldr r2, [r7, #8] + 80043d2: 4013 ands r3, r2 + 80043d4: 68ba ldr r2, [r7, #8] + 80043d6: 1ad3 subs r3, r2, r3 + 80043d8: 425a negs r2, r3 + 80043da: 4153 adcs r3, r2 + 80043dc: b2db uxtb r3, r3 + 80043de: 001a movs r2, r3 + 80043e0: 1dfb adds r3, r7, #7 + 80043e2: 781b ldrb r3, [r3, #0] + 80043e4: 429a cmp r2, r3 + 80043e6: d197 bne.n 8004318 + } + } + + return HAL_OK; + 80043e8: 2300 movs r3, #0 +} + 80043ea: 0018 movs r0, r3 + 80043ec: 46bd mov sp, r7 + 80043ee: b008 add sp, #32 + 80043f0: bd80 pop {r7, pc} + 80043f2: 46c0 nop @ (mov r8, r8) + 80043f4: 20000000 .word 0x20000000 + 80043f8: ffffdfff .word 0xffffdfff + +080043fc : + * @param Tickstart tick start value + * @retval HAL status + */ +static HAL_StatusTypeDef SPI_WaitFifoStateUntilTimeout(SPI_HandleTypeDef *hspi, uint32_t Fifo, uint32_t State, + uint32_t Timeout, uint32_t Tickstart) +{ + 80043fc: b580 push {r7, lr} + 80043fe: b08a sub sp, #40 @ 0x28 + 8004400: af00 add r7, sp, #0 + 8004402: 60f8 str r0, [r7, #12] + 8004404: 60b9 str r1, [r7, #8] + 8004406: 607a str r2, [r7, #4] + 8004408: 603b str r3, [r7, #0] + __IO uint32_t count; + uint32_t tmp_timeout; + uint32_t tmp_tickstart; + __IO uint8_t *ptmpreg8; + __IO uint8_t tmpreg8 = 0; + 800440a: 2317 movs r3, #23 + 800440c: 18fb adds r3, r7, r3 + 800440e: 2200 movs r2, #0 + 8004410: 701a strb r2, [r3, #0] + + /* Adjust Timeout value in case of end of transfer */ + tmp_timeout = Timeout - (HAL_GetTick() - Tickstart); + 8004412: f7fd f92b bl 800166c + 8004416: 0002 movs r2, r0 + 8004418: 6b3b ldr r3, [r7, #48] @ 0x30 + 800441a: 1a9b subs r3, r3, r2 + 800441c: 683a ldr r2, [r7, #0] + 800441e: 18d3 adds r3, r2, r3 + 8004420: 627b str r3, [r7, #36] @ 0x24 + tmp_tickstart = HAL_GetTick(); + 8004422: f7fd f923 bl 800166c + 8004426: 0003 movs r3, r0 + 8004428: 623b str r3, [r7, #32] + + /* Initialize the 8bit temporary pointer */ + ptmpreg8 = (__IO uint8_t *)&hspi->Instance->DR; + 800442a: 68fb ldr r3, [r7, #12] + 800442c: 681b ldr r3, [r3, #0] + 800442e: 330c adds r3, #12 + 8004430: 61fb str r3, [r7, #28] + + /* Calculate Timeout based on a software loop to avoid blocking issue if Systick is disabled */ + count = tmp_timeout * ((SystemCoreClock * 35U) >> 20U); + 8004432: 4b41 ldr r3, [pc, #260] @ (8004538 ) + 8004434: 681a ldr r2, [r3, #0] + 8004436: 0013 movs r3, r2 + 8004438: 009b lsls r3, r3, #2 + 800443a: 189b adds r3, r3, r2 + 800443c: 00da lsls r2, r3, #3 + 800443e: 1ad3 subs r3, r2, r3 + 8004440: 0d1b lsrs r3, r3, #20 + 8004442: 6a7a ldr r2, [r7, #36] @ 0x24 + 8004444: 4353 muls r3, r2 + 8004446: 61bb str r3, [r7, #24] + + while ((hspi->Instance->SR & Fifo) != State) + 8004448: e068 b.n 800451c + { + if ((Fifo == SPI_SR_FRLVL) && (State == SPI_FRLVL_EMPTY)) + 800444a: 68ba ldr r2, [r7, #8] + 800444c: 23c0 movs r3, #192 @ 0xc0 + 800444e: 00db lsls r3, r3, #3 + 8004450: 429a cmp r2, r3 + 8004452: d10a bne.n 800446a + 8004454: 687b ldr r3, [r7, #4] + 8004456: 2b00 cmp r3, #0 + 8004458: d107 bne.n 800446a + { + /* Flush Data Register by a blank read */ + tmpreg8 = *ptmpreg8; + 800445a: 69fb ldr r3, [r7, #28] + 800445c: 781b ldrb r3, [r3, #0] + 800445e: b2da uxtb r2, r3 + 8004460: 2117 movs r1, #23 + 8004462: 187b adds r3, r7, r1 + 8004464: 701a strb r2, [r3, #0] + /* To avoid GCC warning */ + UNUSED(tmpreg8); + 8004466: 187b adds r3, r7, r1 + 8004468: 781b ldrb r3, [r3, #0] + } + + if (Timeout != HAL_MAX_DELAY) + 800446a: 683b ldr r3, [r7, #0] + 800446c: 3301 adds r3, #1 + 800446e: d055 beq.n 800451c + { + if (((HAL_GetTick() - tmp_tickstart) >= tmp_timeout) || (tmp_timeout == 0U)) + 8004470: f7fd f8fc bl 800166c + 8004474: 0002 movs r2, r0 + 8004476: 6a3b ldr r3, [r7, #32] + 8004478: 1ad3 subs r3, r2, r3 + 800447a: 6a7a ldr r2, [r7, #36] @ 0x24 + 800447c: 429a cmp r2, r3 + 800447e: d902 bls.n 8004486 + 8004480: 6a7b ldr r3, [r7, #36] @ 0x24 + 8004482: 2b00 cmp r3, #0 + 8004484: d142 bne.n 800450c + /* Disable the SPI and reset the CRC: the CRC value should be cleared + on both master and slave sides in order to resynchronize the master + and slave for their respective CRC calculation */ + + /* Disable TXE, RXNE and ERR interrupts for the interrupt process */ + __HAL_SPI_DISABLE_IT(hspi, (SPI_IT_TXE | SPI_IT_RXNE | SPI_IT_ERR)); + 8004486: 68fb ldr r3, [r7, #12] + 8004488: 681b ldr r3, [r3, #0] + 800448a: 685a ldr r2, [r3, #4] + 800448c: 68fb ldr r3, [r7, #12] + 800448e: 681b ldr r3, [r3, #0] + 8004490: 21e0 movs r1, #224 @ 0xe0 + 8004492: 438a bics r2, r1 + 8004494: 605a str r2, [r3, #4] + + if ((hspi->Init.Mode == SPI_MODE_MASTER) && ((hspi->Init.Direction == SPI_DIRECTION_1LINE) + 8004496: 68fb ldr r3, [r7, #12] + 8004498: 685a ldr r2, [r3, #4] + 800449a: 2382 movs r3, #130 @ 0x82 + 800449c: 005b lsls r3, r3, #1 + 800449e: 429a cmp r2, r3 + 80044a0: d113 bne.n 80044ca + 80044a2: 68fb ldr r3, [r7, #12] + 80044a4: 689a ldr r2, [r3, #8] + 80044a6: 2380 movs r3, #128 @ 0x80 + 80044a8: 021b lsls r3, r3, #8 + 80044aa: 429a cmp r2, r3 + 80044ac: d005 beq.n 80044ba + || (hspi->Init.Direction == SPI_DIRECTION_2LINES_RXONLY))) + 80044ae: 68fb ldr r3, [r7, #12] + 80044b0: 689a ldr r2, [r3, #8] + 80044b2: 2380 movs r3, #128 @ 0x80 + 80044b4: 00db lsls r3, r3, #3 + 80044b6: 429a cmp r2, r3 + 80044b8: d107 bne.n 80044ca + { + /* Disable SPI peripheral */ + __HAL_SPI_DISABLE(hspi); + 80044ba: 68fb ldr r3, [r7, #12] + 80044bc: 681b ldr r3, [r3, #0] + 80044be: 681a ldr r2, [r3, #0] + 80044c0: 68fb ldr r3, [r7, #12] + 80044c2: 681b ldr r3, [r3, #0] + 80044c4: 2140 movs r1, #64 @ 0x40 + 80044c6: 438a bics r2, r1 + 80044c8: 601a str r2, [r3, #0] + } + + /* Reset CRC Calculation */ + if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE) + 80044ca: 68fb ldr r3, [r7, #12] + 80044cc: 6a9a ldr r2, [r3, #40] @ 0x28 + 80044ce: 2380 movs r3, #128 @ 0x80 + 80044d0: 019b lsls r3, r3, #6 + 80044d2: 429a cmp r2, r3 + 80044d4: d110 bne.n 80044f8 + { + SPI_RESET_CRC(hspi); + 80044d6: 68fb ldr r3, [r7, #12] + 80044d8: 681b ldr r3, [r3, #0] + 80044da: 681a ldr r2, [r3, #0] + 80044dc: 68fb ldr r3, [r7, #12] + 80044de: 681b ldr r3, [r3, #0] + 80044e0: 4916 ldr r1, [pc, #88] @ (800453c ) + 80044e2: 400a ands r2, r1 + 80044e4: 601a str r2, [r3, #0] + 80044e6: 68fb ldr r3, [r7, #12] + 80044e8: 681b ldr r3, [r3, #0] + 80044ea: 681a ldr r2, [r3, #0] + 80044ec: 68fb ldr r3, [r7, #12] + 80044ee: 681b ldr r3, [r3, #0] + 80044f0: 2180 movs r1, #128 @ 0x80 + 80044f2: 0189 lsls r1, r1, #6 + 80044f4: 430a orrs r2, r1 + 80044f6: 601a str r2, [r3, #0] + } + + hspi->State = HAL_SPI_STATE_READY; + 80044f8: 68fb ldr r3, [r7, #12] + 80044fa: 225d movs r2, #93 @ 0x5d + 80044fc: 2101 movs r1, #1 + 80044fe: 5499 strb r1, [r3, r2] + + /* Process Unlocked */ + __HAL_UNLOCK(hspi); + 8004500: 68fb ldr r3, [r7, #12] + 8004502: 225c movs r2, #92 @ 0x5c + 8004504: 2100 movs r1, #0 + 8004506: 5499 strb r1, [r3, r2] + + return HAL_TIMEOUT; + 8004508: 2303 movs r3, #3 + 800450a: e010 b.n 800452e + } + /* If Systick is disabled or not incremented, deactivate timeout to go in disable loop procedure */ + if (count == 0U) + 800450c: 69bb ldr r3, [r7, #24] + 800450e: 2b00 cmp r3, #0 + 8004510: d101 bne.n 8004516 + { + tmp_timeout = 0U; + 8004512: 2300 movs r3, #0 + 8004514: 627b str r3, [r7, #36] @ 0x24 + } + count--; + 8004516: 69bb ldr r3, [r7, #24] + 8004518: 3b01 subs r3, #1 + 800451a: 61bb str r3, [r7, #24] + while ((hspi->Instance->SR & Fifo) != State) + 800451c: 68fb ldr r3, [r7, #12] + 800451e: 681b ldr r3, [r3, #0] + 8004520: 689b ldr r3, [r3, #8] + 8004522: 68ba ldr r2, [r7, #8] + 8004524: 4013 ands r3, r2 + 8004526: 687a ldr r2, [r7, #4] + 8004528: 429a cmp r2, r3 + 800452a: d18e bne.n 800444a + } + } + + return HAL_OK; + 800452c: 2300 movs r3, #0 +} + 800452e: 0018 movs r0, r3 + 8004530: 46bd mov sp, r7 + 8004532: b00a add sp, #40 @ 0x28 + 8004534: bd80 pop {r7, pc} + 8004536: 46c0 nop @ (mov r8, r8) + 8004538: 20000000 .word 0x20000000 + 800453c: ffffdfff .word 0xffffdfff + +08004540 : + * @param Timeout Timeout duration + * @param Tickstart tick start value + * @retval HAL status + */ +static HAL_StatusTypeDef SPI_EndRxTransaction(SPI_HandleTypeDef *hspi, uint32_t Timeout, uint32_t Tickstart) +{ + 8004540: b580 push {r7, lr} + 8004542: b086 sub sp, #24 + 8004544: af02 add r7, sp, #8 + 8004546: 60f8 str r0, [r7, #12] + 8004548: 60b9 str r1, [r7, #8] + 800454a: 607a str r2, [r7, #4] + if ((hspi->Init.Mode == SPI_MODE_MASTER) && ((hspi->Init.Direction == SPI_DIRECTION_1LINE) + 800454c: 68fb ldr r3, [r7, #12] + 800454e: 685a ldr r2, [r3, #4] + 8004550: 2382 movs r3, #130 @ 0x82 + 8004552: 005b lsls r3, r3, #1 + 8004554: 429a cmp r2, r3 + 8004556: d113 bne.n 8004580 + 8004558: 68fb ldr r3, [r7, #12] + 800455a: 689a ldr r2, [r3, #8] + 800455c: 2380 movs r3, #128 @ 0x80 + 800455e: 021b lsls r3, r3, #8 + 8004560: 429a cmp r2, r3 + 8004562: d005 beq.n 8004570 + || (hspi->Init.Direction == SPI_DIRECTION_2LINES_RXONLY))) + 8004564: 68fb ldr r3, [r7, #12] + 8004566: 689a ldr r2, [r3, #8] + 8004568: 2380 movs r3, #128 @ 0x80 + 800456a: 00db lsls r3, r3, #3 + 800456c: 429a cmp r2, r3 + 800456e: d107 bne.n 8004580 + { + /* Disable SPI peripheral */ + __HAL_SPI_DISABLE(hspi); + 8004570: 68fb ldr r3, [r7, #12] + 8004572: 681b ldr r3, [r3, #0] + 8004574: 681a ldr r2, [r3, #0] + 8004576: 68fb ldr r3, [r7, #12] + 8004578: 681b ldr r3, [r3, #0] + 800457a: 2140 movs r1, #64 @ 0x40 + 800457c: 438a bics r2, r1 + 800457e: 601a str r2, [r3, #0] + } + + /* Control the BSY flag */ + if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_BSY, RESET, Timeout, Tickstart) != HAL_OK) + 8004580: 68ba ldr r2, [r7, #8] + 8004582: 68f8 ldr r0, [r7, #12] + 8004584: 687b ldr r3, [r7, #4] + 8004586: 9300 str r3, [sp, #0] + 8004588: 0013 movs r3, r2 + 800458a: 2200 movs r2, #0 + 800458c: 2180 movs r1, #128 @ 0x80 + 800458e: f7ff fea7 bl 80042e0 + 8004592: 1e03 subs r3, r0, #0 + 8004594: d007 beq.n 80045a6 + { + SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); + 8004596: 68fb ldr r3, [r7, #12] + 8004598: 6e1b ldr r3, [r3, #96] @ 0x60 + 800459a: 2220 movs r2, #32 + 800459c: 431a orrs r2, r3 + 800459e: 68fb ldr r3, [r7, #12] + 80045a0: 661a str r2, [r3, #96] @ 0x60 + return HAL_TIMEOUT; + 80045a2: 2303 movs r3, #3 + 80045a4: e026 b.n 80045f4 + } + + if ((hspi->Init.Mode == SPI_MODE_MASTER) && ((hspi->Init.Direction == SPI_DIRECTION_1LINE) + 80045a6: 68fb ldr r3, [r7, #12] + 80045a8: 685a ldr r2, [r3, #4] + 80045aa: 2382 movs r3, #130 @ 0x82 + 80045ac: 005b lsls r3, r3, #1 + 80045ae: 429a cmp r2, r3 + 80045b0: d11f bne.n 80045f2 + 80045b2: 68fb ldr r3, [r7, #12] + 80045b4: 689a ldr r2, [r3, #8] + 80045b6: 2380 movs r3, #128 @ 0x80 + 80045b8: 021b lsls r3, r3, #8 + 80045ba: 429a cmp r2, r3 + 80045bc: d005 beq.n 80045ca + || (hspi->Init.Direction == SPI_DIRECTION_2LINES_RXONLY))) + 80045be: 68fb ldr r3, [r7, #12] + 80045c0: 689a ldr r2, [r3, #8] + 80045c2: 2380 movs r3, #128 @ 0x80 + 80045c4: 00db lsls r3, r3, #3 + 80045c6: 429a cmp r2, r3 + 80045c8: d113 bne.n 80045f2 + { + /* Empty the FRLVL fifo */ + if (SPI_WaitFifoStateUntilTimeout(hspi, SPI_FLAG_FRLVL, SPI_FRLVL_EMPTY, Timeout, Tickstart) != HAL_OK) + 80045ca: 68ba ldr r2, [r7, #8] + 80045cc: 23c0 movs r3, #192 @ 0xc0 + 80045ce: 00d9 lsls r1, r3, #3 + 80045d0: 68f8 ldr r0, [r7, #12] + 80045d2: 687b ldr r3, [r7, #4] + 80045d4: 9300 str r3, [sp, #0] + 80045d6: 0013 movs r3, r2 + 80045d8: 2200 movs r2, #0 + 80045da: f7ff ff0f bl 80043fc + 80045de: 1e03 subs r3, r0, #0 + 80045e0: d007 beq.n 80045f2 + { + SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); + 80045e2: 68fb ldr r3, [r7, #12] + 80045e4: 6e1b ldr r3, [r3, #96] @ 0x60 + 80045e6: 2220 movs r2, #32 + 80045e8: 431a orrs r2, r3 + 80045ea: 68fb ldr r3, [r7, #12] + 80045ec: 661a str r2, [r3, #96] @ 0x60 + return HAL_TIMEOUT; + 80045ee: 2303 movs r3, #3 + 80045f0: e000 b.n 80045f4 + } + } + return HAL_OK; + 80045f2: 2300 movs r3, #0 +} + 80045f4: 0018 movs r0, r3 + 80045f6: 46bd mov sp, r7 + 80045f8: b004 add sp, #16 + 80045fa: bd80 pop {r7, pc} + +080045fc : + * @param Timeout Timeout duration + * @param Tickstart tick start value + * @retval HAL status + */ +static HAL_StatusTypeDef SPI_EndRxTxTransaction(SPI_HandleTypeDef *hspi, uint32_t Timeout, uint32_t Tickstart) +{ + 80045fc: b580 push {r7, lr} + 80045fe: b086 sub sp, #24 + 8004600: af02 add r7, sp, #8 + 8004602: 60f8 str r0, [r7, #12] + 8004604: 60b9 str r1, [r7, #8] + 8004606: 607a str r2, [r7, #4] + /* Control if the TX fifo is empty */ + if (SPI_WaitFifoStateUntilTimeout(hspi, SPI_FLAG_FTLVL, SPI_FTLVL_EMPTY, Timeout, Tickstart) != HAL_OK) + 8004608: 68ba ldr r2, [r7, #8] + 800460a: 23c0 movs r3, #192 @ 0xc0 + 800460c: 0159 lsls r1, r3, #5 + 800460e: 68f8 ldr r0, [r7, #12] + 8004610: 687b ldr r3, [r7, #4] + 8004612: 9300 str r3, [sp, #0] + 8004614: 0013 movs r3, r2 + 8004616: 2200 movs r2, #0 + 8004618: f7ff fef0 bl 80043fc + 800461c: 1e03 subs r3, r0, #0 + 800461e: d007 beq.n 8004630 + { + SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); + 8004620: 68fb ldr r3, [r7, #12] + 8004622: 6e1b ldr r3, [r3, #96] @ 0x60 + 8004624: 2220 movs r2, #32 + 8004626: 431a orrs r2, r3 + 8004628: 68fb ldr r3, [r7, #12] + 800462a: 661a str r2, [r3, #96] @ 0x60 + return HAL_TIMEOUT; + 800462c: 2303 movs r3, #3 + 800462e: e027 b.n 8004680 + } + + /* Control the BSY flag */ + if (SPI_WaitFlagStateUntilTimeout(hspi, SPI_FLAG_BSY, RESET, Timeout, Tickstart) != HAL_OK) + 8004630: 68ba ldr r2, [r7, #8] + 8004632: 68f8 ldr r0, [r7, #12] + 8004634: 687b ldr r3, [r7, #4] + 8004636: 9300 str r3, [sp, #0] + 8004638: 0013 movs r3, r2 + 800463a: 2200 movs r2, #0 + 800463c: 2180 movs r1, #128 @ 0x80 + 800463e: f7ff fe4f bl 80042e0 + 8004642: 1e03 subs r3, r0, #0 + 8004644: d007 beq.n 8004656 + { + SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); + 8004646: 68fb ldr r3, [r7, #12] + 8004648: 6e1b ldr r3, [r3, #96] @ 0x60 + 800464a: 2220 movs r2, #32 + 800464c: 431a orrs r2, r3 + 800464e: 68fb ldr r3, [r7, #12] + 8004650: 661a str r2, [r3, #96] @ 0x60 + return HAL_TIMEOUT; + 8004652: 2303 movs r3, #3 + 8004654: e014 b.n 8004680 + } + + /* Control if the RX fifo is empty */ + if (SPI_WaitFifoStateUntilTimeout(hspi, SPI_FLAG_FRLVL, SPI_FRLVL_EMPTY, Timeout, Tickstart) != HAL_OK) + 8004656: 68ba ldr r2, [r7, #8] + 8004658: 23c0 movs r3, #192 @ 0xc0 + 800465a: 00d9 lsls r1, r3, #3 + 800465c: 68f8 ldr r0, [r7, #12] + 800465e: 687b ldr r3, [r7, #4] + 8004660: 9300 str r3, [sp, #0] + 8004662: 0013 movs r3, r2 + 8004664: 2200 movs r2, #0 + 8004666: f7ff fec9 bl 80043fc + 800466a: 1e03 subs r3, r0, #0 + 800466c: d007 beq.n 800467e + { + SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_FLAG); + 800466e: 68fb ldr r3, [r7, #12] + 8004670: 6e1b ldr r3, [r3, #96] @ 0x60 + 8004672: 2220 movs r2, #32 + 8004674: 431a orrs r2, r3 + 8004676: 68fb ldr r3, [r7, #12] + 8004678: 661a str r2, [r3, #96] @ 0x60 + return HAL_TIMEOUT; + 800467a: 2303 movs r3, #3 + 800467c: e000 b.n 8004680 + } + + return HAL_OK; + 800467e: 2300 movs r3, #0 +} + 8004680: 0018 movs r0, r3 + 8004682: 46bd mov sp, r7 + 8004684: b004 add sp, #16 + 8004686: bd80 pop {r7, pc} + +08004688 : * parameters in the UART_InitTypeDef and initialize the associated handle. * @param huart UART handle. * @retval HAL status */ HAL_StatusTypeDef HAL_UART_Init(UART_HandleTypeDef *huart) { - 8004364: b580 push {r7, lr} - 8004366: b082 sub sp, #8 - 8004368: af00 add r7, sp, #0 - 800436a: 6078 str r0, [r7, #4] + 8004688: b580 push {r7, lr} + 800468a: b082 sub sp, #8 + 800468c: af00 add r7, sp, #0 + 800468e: 6078 str r0, [r7, #4] /* Check the UART handle allocation */ if (huart == NULL) - 800436c: 687b ldr r3, [r7, #4] - 800436e: 2b00 cmp r3, #0 - 8004370: d101 bne.n 8004376 + 8004690: 687b ldr r3, [r7, #4] + 8004692: 2b00 cmp r3, #0 + 8004694: d101 bne.n 800469a { return HAL_ERROR; - 8004372: 2301 movs r3, #1 - 8004374: e046 b.n 8004404 + 8004696: 2301 movs r3, #1 + 8004698: e046 b.n 8004728 { /* Check the parameters */ assert_param((IS_UART_INSTANCE(huart->Instance)) || (IS_LPUART_INSTANCE(huart->Instance))); } if (huart->gState == HAL_UART_STATE_RESET) - 8004376: 687b ldr r3, [r7, #4] - 8004378: 2288 movs r2, #136 @ 0x88 - 800437a: 589b ldr r3, [r3, r2] - 800437c: 2b00 cmp r3, #0 - 800437e: d107 bne.n 8004390 + 800469a: 687b ldr r3, [r7, #4] + 800469c: 2288 movs r2, #136 @ 0x88 + 800469e: 589b ldr r3, [r3, r2] + 80046a0: 2b00 cmp r3, #0 + 80046a2: d107 bne.n 80046b4 { /* Allocate lock resource and initialize it */ huart->Lock = HAL_UNLOCKED; - 8004380: 687b ldr r3, [r7, #4] - 8004382: 2284 movs r2, #132 @ 0x84 - 8004384: 2100 movs r1, #0 - 8004386: 5499 strb r1, [r3, r2] + 80046a4: 687b ldr r3, [r7, #4] + 80046a6: 2284 movs r2, #132 @ 0x84 + 80046a8: 2100 movs r1, #0 + 80046aa: 5499 strb r1, [r3, r2] /* Init the low level hardware */ huart->MspInitCallback(huart); #else /* Init the low level hardware : GPIO, CLOCK */ HAL_UART_MspInit(huart); - 8004388: 687b ldr r3, [r7, #4] - 800438a: 0018 movs r0, r3 - 800438c: f7fc fef4 bl 8001178 + 80046ac: 687b ldr r3, [r7, #4] + 80046ae: 0018 movs r0, r3 + 80046b0: f7fc fe02 bl 80012b8 #endif /* (USE_HAL_UART_REGISTER_CALLBACKS) */ } huart->gState = HAL_UART_STATE_BUSY; - 8004390: 687b ldr r3, [r7, #4] - 8004392: 2288 movs r2, #136 @ 0x88 - 8004394: 2124 movs r1, #36 @ 0x24 - 8004396: 5099 str r1, [r3, r2] + 80046b4: 687b ldr r3, [r7, #4] + 80046b6: 2288 movs r2, #136 @ 0x88 + 80046b8: 2124 movs r1, #36 @ 0x24 + 80046ba: 5099 str r1, [r3, r2] __HAL_UART_DISABLE(huart); - 8004398: 687b ldr r3, [r7, #4] - 800439a: 681b ldr r3, [r3, #0] - 800439c: 681a ldr r2, [r3, #0] - 800439e: 687b ldr r3, [r7, #4] - 80043a0: 681b ldr r3, [r3, #0] - 80043a2: 2101 movs r1, #1 - 80043a4: 438a bics r2, r1 - 80043a6: 601a str r2, [r3, #0] + 80046bc: 687b ldr r3, [r7, #4] + 80046be: 681b ldr r3, [r3, #0] + 80046c0: 681a ldr r2, [r3, #0] + 80046c2: 687b ldr r3, [r7, #4] + 80046c4: 681b ldr r3, [r3, #0] + 80046c6: 2101 movs r1, #1 + 80046c8: 438a bics r2, r1 + 80046ca: 601a str r2, [r3, #0] /* Perform advanced settings configuration */ /* For some items, configuration requires to be done prior TE and RE bits are set */ if (huart->AdvancedInit.AdvFeatureInit != UART_ADVFEATURE_NO_INIT) - 80043a8: 687b ldr r3, [r7, #4] - 80043aa: 6a9b ldr r3, [r3, #40] @ 0x28 - 80043ac: 2b00 cmp r3, #0 - 80043ae: d003 beq.n 80043b8 + 80046cc: 687b ldr r3, [r7, #4] + 80046ce: 6a9b ldr r3, [r3, #40] @ 0x28 + 80046d0: 2b00 cmp r3, #0 + 80046d2: d003 beq.n 80046dc { UART_AdvFeatureConfig(huart); - 80043b0: 687b ldr r3, [r7, #4] - 80043b2: 0018 movs r0, r3 - 80043b4: f000 fa74 bl 80048a0 + 80046d4: 687b ldr r3, [r7, #4] + 80046d6: 0018 movs r0, r3 + 80046d8: f000 fa74 bl 8004bc4 } /* Set the UART Communication parameters */ if (UART_SetConfig(huart) == HAL_ERROR) - 80043b8: 687b ldr r3, [r7, #4] - 80043ba: 0018 movs r0, r3 - 80043bc: f000 f8cc bl 8004558 - 80043c0: 0003 movs r3, r0 - 80043c2: 2b01 cmp r3, #1 - 80043c4: d101 bne.n 80043ca + 80046dc: 687b ldr r3, [r7, #4] + 80046de: 0018 movs r0, r3 + 80046e0: f000 f8cc bl 800487c + 80046e4: 0003 movs r3, r0 + 80046e6: 2b01 cmp r3, #1 + 80046e8: d101 bne.n 80046ee { return HAL_ERROR; - 80043c6: 2301 movs r3, #1 - 80043c8: e01c b.n 8004404 + 80046ea: 2301 movs r3, #1 + 80046ec: e01c b.n 8004728 } /* In asynchronous mode, the following bits must be kept cleared: - LINEN and CLKEN bits in the USART_CR2 register, - SCEN, HDSEL and IREN bits in the USART_CR3 register.*/ CLEAR_BIT(huart->Instance->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN)); - 80043ca: 687b ldr r3, [r7, #4] - 80043cc: 681b ldr r3, [r3, #0] - 80043ce: 685a ldr r2, [r3, #4] - 80043d0: 687b ldr r3, [r7, #4] - 80043d2: 681b ldr r3, [r3, #0] - 80043d4: 490d ldr r1, [pc, #52] @ (800440c ) - 80043d6: 400a ands r2, r1 - 80043d8: 605a str r2, [r3, #4] + 80046ee: 687b ldr r3, [r7, #4] + 80046f0: 681b ldr r3, [r3, #0] + 80046f2: 685a ldr r2, [r3, #4] + 80046f4: 687b ldr r3, [r7, #4] + 80046f6: 681b ldr r3, [r3, #0] + 80046f8: 490d ldr r1, [pc, #52] @ (8004730 ) + 80046fa: 400a ands r2, r1 + 80046fc: 605a str r2, [r3, #4] CLEAR_BIT(huart->Instance->CR3, (USART_CR3_SCEN | USART_CR3_HDSEL | USART_CR3_IREN)); - 80043da: 687b ldr r3, [r7, #4] - 80043dc: 681b ldr r3, [r3, #0] - 80043de: 689a ldr r2, [r3, #8] - 80043e0: 687b ldr r3, [r7, #4] - 80043e2: 681b ldr r3, [r3, #0] - 80043e4: 212a movs r1, #42 @ 0x2a - 80043e6: 438a bics r2, r1 - 80043e8: 609a str r2, [r3, #8] + 80046fe: 687b ldr r3, [r7, #4] + 8004700: 681b ldr r3, [r3, #0] + 8004702: 689a ldr r2, [r3, #8] + 8004704: 687b ldr r3, [r7, #4] + 8004706: 681b ldr r3, [r3, #0] + 8004708: 212a movs r1, #42 @ 0x2a + 800470a: 438a bics r2, r1 + 800470c: 609a str r2, [r3, #8] __HAL_UART_ENABLE(huart); - 80043ea: 687b ldr r3, [r7, #4] - 80043ec: 681b ldr r3, [r3, #0] - 80043ee: 681a ldr r2, [r3, #0] - 80043f0: 687b ldr r3, [r7, #4] - 80043f2: 681b ldr r3, [r3, #0] - 80043f4: 2101 movs r1, #1 - 80043f6: 430a orrs r2, r1 - 80043f8: 601a str r2, [r3, #0] + 800470e: 687b ldr r3, [r7, #4] + 8004710: 681b ldr r3, [r3, #0] + 8004712: 681a ldr r2, [r3, #0] + 8004714: 687b ldr r3, [r7, #4] + 8004716: 681b ldr r3, [r3, #0] + 8004718: 2101 movs r1, #1 + 800471a: 430a orrs r2, r1 + 800471c: 601a str r2, [r3, #0] /* TEACK and/or REACK to check before moving huart->gState and huart->RxState to Ready */ return (UART_CheckIdleState(huart)); - 80043fa: 687b ldr r3, [r7, #4] - 80043fc: 0018 movs r0, r3 - 80043fe: f000 fb03 bl 8004a08 - 8004402: 0003 movs r3, r0 + 800471e: 687b ldr r3, [r7, #4] + 8004720: 0018 movs r0, r3 + 8004722: f000 fb03 bl 8004d2c + 8004726: 0003 movs r3, r0 } - 8004404: 0018 movs r0, r3 - 8004406: 46bd mov sp, r7 - 8004408: b002 add sp, #8 - 800440a: bd80 pop {r7, pc} - 800440c: ffffb7ff .word 0xffffb7ff + 8004728: 0018 movs r0, r3 + 800472a: 46bd mov sp, r7 + 800472c: b002 add sp, #8 + 800472e: bd80 pop {r7, pc} + 8004730: ffffb7ff .word 0xffffb7ff -08004410 : +08004734 : * @param Size Amount of data elements (u8 or u16) to be sent. * @param Timeout Timeout duration. * @retval HAL status */ HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, const uint8_t *pData, uint16_t Size, uint32_t Timeout) { - 8004410: b580 push {r7, lr} - 8004412: b08a sub sp, #40 @ 0x28 - 8004414: af02 add r7, sp, #8 - 8004416: 60f8 str r0, [r7, #12] - 8004418: 60b9 str r1, [r7, #8] - 800441a: 603b str r3, [r7, #0] - 800441c: 1dbb adds r3, r7, #6 - 800441e: 801a strh r2, [r3, #0] + 8004734: b580 push {r7, lr} + 8004736: b08a sub sp, #40 @ 0x28 + 8004738: af02 add r7, sp, #8 + 800473a: 60f8 str r0, [r7, #12] + 800473c: 60b9 str r1, [r7, #8] + 800473e: 603b str r3, [r7, #0] + 8004740: 1dbb adds r3, r7, #6 + 8004742: 801a strh r2, [r3, #0] const uint8_t *pdata8bits; const uint16_t *pdata16bits; uint32_t tickstart; /* Check that a Tx process is not already ongoing */ if (huart->gState == HAL_UART_STATE_READY) - 8004420: 68fb ldr r3, [r7, #12] - 8004422: 2288 movs r2, #136 @ 0x88 - 8004424: 589b ldr r3, [r3, r2] - 8004426: 2b20 cmp r3, #32 - 8004428: d000 beq.n 800442c - 800442a: e090 b.n 800454e + 8004744: 68fb ldr r3, [r7, #12] + 8004746: 2288 movs r2, #136 @ 0x88 + 8004748: 589b ldr r3, [r3, r2] + 800474a: 2b20 cmp r3, #32 + 800474c: d000 beq.n 8004750 + 800474e: e090 b.n 8004872 { if ((pData == NULL) || (Size == 0U)) - 800442c: 68bb ldr r3, [r7, #8] - 800442e: 2b00 cmp r3, #0 - 8004430: d003 beq.n 800443a - 8004432: 1dbb adds r3, r7, #6 - 8004434: 881b ldrh r3, [r3, #0] - 8004436: 2b00 cmp r3, #0 - 8004438: d101 bne.n 800443e + 8004750: 68bb ldr r3, [r7, #8] + 8004752: 2b00 cmp r3, #0 + 8004754: d003 beq.n 800475e + 8004756: 1dbb adds r3, r7, #6 + 8004758: 881b ldrh r3, [r3, #0] + 800475a: 2b00 cmp r3, #0 + 800475c: d101 bne.n 8004762 { return HAL_ERROR; - 800443a: 2301 movs r3, #1 - 800443c: e088 b.n 8004550 + 800475e: 2301 movs r3, #1 + 8004760: e088 b.n 8004874 } /* In case of 9bits/No Parity transfer, pData buffer provided as input parameter should be aligned on a u16 frontier, as data to be filled into TDR will be handled through a u16 cast. */ if ((huart->Init.WordLength == UART_WORDLENGTH_9B) && (huart->Init.Parity == UART_PARITY_NONE)) - 800443e: 68fb ldr r3, [r7, #12] - 8004440: 689a ldr r2, [r3, #8] - 8004442: 2380 movs r3, #128 @ 0x80 - 8004444: 015b lsls r3, r3, #5 - 8004446: 429a cmp r2, r3 - 8004448: d109 bne.n 800445e - 800444a: 68fb ldr r3, [r7, #12] - 800444c: 691b ldr r3, [r3, #16] - 800444e: 2b00 cmp r3, #0 - 8004450: d105 bne.n 800445e + 8004762: 68fb ldr r3, [r7, #12] + 8004764: 689a ldr r2, [r3, #8] + 8004766: 2380 movs r3, #128 @ 0x80 + 8004768: 015b lsls r3, r3, #5 + 800476a: 429a cmp r2, r3 + 800476c: d109 bne.n 8004782 + 800476e: 68fb ldr r3, [r7, #12] + 8004770: 691b ldr r3, [r3, #16] + 8004772: 2b00 cmp r3, #0 + 8004774: d105 bne.n 8004782 { if ((((uint32_t)pData) & 1U) != 0U) - 8004452: 68bb ldr r3, [r7, #8] - 8004454: 2201 movs r2, #1 - 8004456: 4013 ands r3, r2 - 8004458: d001 beq.n 800445e + 8004776: 68bb ldr r3, [r7, #8] + 8004778: 2201 movs r2, #1 + 800477a: 4013 ands r3, r2 + 800477c: d001 beq.n 8004782 { return HAL_ERROR; - 800445a: 2301 movs r3, #1 - 800445c: e078 b.n 8004550 + 800477e: 2301 movs r3, #1 + 8004780: e078 b.n 8004874 } } huart->ErrorCode = HAL_UART_ERROR_NONE; - 800445e: 68fb ldr r3, [r7, #12] - 8004460: 2290 movs r2, #144 @ 0x90 - 8004462: 2100 movs r1, #0 - 8004464: 5099 str r1, [r3, r2] + 8004782: 68fb ldr r3, [r7, #12] + 8004784: 2290 movs r2, #144 @ 0x90 + 8004786: 2100 movs r1, #0 + 8004788: 5099 str r1, [r3, r2] huart->gState = HAL_UART_STATE_BUSY_TX; - 8004466: 68fb ldr r3, [r7, #12] - 8004468: 2288 movs r2, #136 @ 0x88 - 800446a: 2121 movs r1, #33 @ 0x21 - 800446c: 5099 str r1, [r3, r2] + 800478a: 68fb ldr r3, [r7, #12] + 800478c: 2288 movs r2, #136 @ 0x88 + 800478e: 2121 movs r1, #33 @ 0x21 + 8004790: 5099 str r1, [r3, r2] /* Init tickstart for timeout management */ tickstart = HAL_GetTick(); - 800446e: f7fd f85d bl 800152c - 8004472: 0003 movs r3, r0 - 8004474: 617b str r3, [r7, #20] + 8004792: f7fc ff6b bl 800166c + 8004796: 0003 movs r3, r0 + 8004798: 617b str r3, [r7, #20] huart->TxXferSize = Size; - 8004476: 68fb ldr r3, [r7, #12] - 8004478: 1dba adds r2, r7, #6 - 800447a: 2154 movs r1, #84 @ 0x54 - 800447c: 8812 ldrh r2, [r2, #0] - 800447e: 525a strh r2, [r3, r1] + 800479a: 68fb ldr r3, [r7, #12] + 800479c: 1dba adds r2, r7, #6 + 800479e: 2154 movs r1, #84 @ 0x54 + 80047a0: 8812 ldrh r2, [r2, #0] + 80047a2: 525a strh r2, [r3, r1] huart->TxXferCount = Size; - 8004480: 68fb ldr r3, [r7, #12] - 8004482: 1dba adds r2, r7, #6 - 8004484: 2156 movs r1, #86 @ 0x56 - 8004486: 8812 ldrh r2, [r2, #0] - 8004488: 525a strh r2, [r3, r1] + 80047a4: 68fb ldr r3, [r7, #12] + 80047a6: 1dba adds r2, r7, #6 + 80047a8: 2156 movs r1, #86 @ 0x56 + 80047aa: 8812 ldrh r2, [r2, #0] + 80047ac: 525a strh r2, [r3, r1] /* In case of 9bits/No Parity transfer, pData needs to be handled as a uint16_t pointer */ if ((huart->Init.WordLength == UART_WORDLENGTH_9B) && (huart->Init.Parity == UART_PARITY_NONE)) - 800448a: 68fb ldr r3, [r7, #12] - 800448c: 689a ldr r2, [r3, #8] - 800448e: 2380 movs r3, #128 @ 0x80 - 8004490: 015b lsls r3, r3, #5 - 8004492: 429a cmp r2, r3 - 8004494: d108 bne.n 80044a8 - 8004496: 68fb ldr r3, [r7, #12] - 8004498: 691b ldr r3, [r3, #16] - 800449a: 2b00 cmp r3, #0 - 800449c: d104 bne.n 80044a8 + 80047ae: 68fb ldr r3, [r7, #12] + 80047b0: 689a ldr r2, [r3, #8] + 80047b2: 2380 movs r3, #128 @ 0x80 + 80047b4: 015b lsls r3, r3, #5 + 80047b6: 429a cmp r2, r3 + 80047b8: d108 bne.n 80047cc + 80047ba: 68fb ldr r3, [r7, #12] + 80047bc: 691b ldr r3, [r3, #16] + 80047be: 2b00 cmp r3, #0 + 80047c0: d104 bne.n 80047cc { pdata8bits = NULL; - 800449e: 2300 movs r3, #0 - 80044a0: 61fb str r3, [r7, #28] + 80047c2: 2300 movs r3, #0 + 80047c4: 61fb str r3, [r7, #28] pdata16bits = (const uint16_t *) pData; - 80044a2: 68bb ldr r3, [r7, #8] - 80044a4: 61bb str r3, [r7, #24] - 80044a6: e003 b.n 80044b0 + 80047c6: 68bb ldr r3, [r7, #8] + 80047c8: 61bb str r3, [r7, #24] + 80047ca: e003 b.n 80047d4 } else { pdata8bits = pData; - 80044a8: 68bb ldr r3, [r7, #8] - 80044aa: 61fb str r3, [r7, #28] + 80047cc: 68bb ldr r3, [r7, #8] + 80047ce: 61fb str r3, [r7, #28] pdata16bits = NULL; - 80044ac: 2300 movs r3, #0 - 80044ae: 61bb str r3, [r7, #24] + 80047d0: 2300 movs r3, #0 + 80047d2: 61bb str r3, [r7, #24] } while (huart->TxXferCount > 0U) - 80044b0: e030 b.n 8004514 + 80047d4: e030 b.n 8004838 { if (UART_WaitOnFlagUntilTimeout(huart, UART_FLAG_TXE, RESET, tickstart, Timeout) != HAL_OK) - 80044b2: 697a ldr r2, [r7, #20] - 80044b4: 68f8 ldr r0, [r7, #12] - 80044b6: 683b ldr r3, [r7, #0] - 80044b8: 9300 str r3, [sp, #0] - 80044ba: 0013 movs r3, r2 - 80044bc: 2200 movs r2, #0 - 80044be: 2180 movs r1, #128 @ 0x80 - 80044c0: f000 fb4c bl 8004b5c - 80044c4: 1e03 subs r3, r0, #0 - 80044c6: d005 beq.n 80044d4 + 80047d6: 697a ldr r2, [r7, #20] + 80047d8: 68f8 ldr r0, [r7, #12] + 80047da: 683b ldr r3, [r7, #0] + 80047dc: 9300 str r3, [sp, #0] + 80047de: 0013 movs r3, r2 + 80047e0: 2200 movs r2, #0 + 80047e2: 2180 movs r1, #128 @ 0x80 + 80047e4: f000 fb4c bl 8004e80 + 80047e8: 1e03 subs r3, r0, #0 + 80047ea: d005 beq.n 80047f8 { huart->gState = HAL_UART_STATE_READY; - 80044c8: 68fb ldr r3, [r7, #12] - 80044ca: 2288 movs r2, #136 @ 0x88 - 80044cc: 2120 movs r1, #32 - 80044ce: 5099 str r1, [r3, r2] + 80047ec: 68fb ldr r3, [r7, #12] + 80047ee: 2288 movs r2, #136 @ 0x88 + 80047f0: 2120 movs r1, #32 + 80047f2: 5099 str r1, [r3, r2] return HAL_TIMEOUT; - 80044d0: 2303 movs r3, #3 - 80044d2: e03d b.n 8004550 + 80047f4: 2303 movs r3, #3 + 80047f6: e03d b.n 8004874 } if (pdata8bits == NULL) - 80044d4: 69fb ldr r3, [r7, #28] - 80044d6: 2b00 cmp r3, #0 - 80044d8: d10b bne.n 80044f2 + 80047f8: 69fb ldr r3, [r7, #28] + 80047fa: 2b00 cmp r3, #0 + 80047fc: d10b bne.n 8004816 { huart->Instance->TDR = (uint16_t)(*pdata16bits & 0x01FFU); - 80044da: 69bb ldr r3, [r7, #24] - 80044dc: 881b ldrh r3, [r3, #0] - 80044de: 001a movs r2, r3 - 80044e0: 68fb ldr r3, [r7, #12] - 80044e2: 681b ldr r3, [r3, #0] - 80044e4: 05d2 lsls r2, r2, #23 - 80044e6: 0dd2 lsrs r2, r2, #23 - 80044e8: 629a str r2, [r3, #40] @ 0x28 + 80047fe: 69bb ldr r3, [r7, #24] + 8004800: 881b ldrh r3, [r3, #0] + 8004802: 001a movs r2, r3 + 8004804: 68fb ldr r3, [r7, #12] + 8004806: 681b ldr r3, [r3, #0] + 8004808: 05d2 lsls r2, r2, #23 + 800480a: 0dd2 lsrs r2, r2, #23 + 800480c: 629a str r2, [r3, #40] @ 0x28 pdata16bits++; - 80044ea: 69bb ldr r3, [r7, #24] - 80044ec: 3302 adds r3, #2 - 80044ee: 61bb str r3, [r7, #24] - 80044f0: e007 b.n 8004502 + 800480e: 69bb ldr r3, [r7, #24] + 8004810: 3302 adds r3, #2 + 8004812: 61bb str r3, [r7, #24] + 8004814: e007 b.n 8004826 } else { huart->Instance->TDR = (uint8_t)(*pdata8bits & 0xFFU); - 80044f2: 69fb ldr r3, [r7, #28] - 80044f4: 781a ldrb r2, [r3, #0] - 80044f6: 68fb ldr r3, [r7, #12] - 80044f8: 681b ldr r3, [r3, #0] - 80044fa: 629a str r2, [r3, #40] @ 0x28 + 8004816: 69fb ldr r3, [r7, #28] + 8004818: 781a ldrb r2, [r3, #0] + 800481a: 68fb ldr r3, [r7, #12] + 800481c: 681b ldr r3, [r3, #0] + 800481e: 629a str r2, [r3, #40] @ 0x28 pdata8bits++; - 80044fc: 69fb ldr r3, [r7, #28] - 80044fe: 3301 adds r3, #1 - 8004500: 61fb str r3, [r7, #28] + 8004820: 69fb ldr r3, [r7, #28] + 8004822: 3301 adds r3, #1 + 8004824: 61fb str r3, [r7, #28] } huart->TxXferCount--; - 8004502: 68fb ldr r3, [r7, #12] - 8004504: 2256 movs r2, #86 @ 0x56 - 8004506: 5a9b ldrh r3, [r3, r2] - 8004508: b29b uxth r3, r3 - 800450a: 3b01 subs r3, #1 - 800450c: b299 uxth r1, r3 - 800450e: 68fb ldr r3, [r7, #12] - 8004510: 2256 movs r2, #86 @ 0x56 - 8004512: 5299 strh r1, [r3, r2] + 8004826: 68fb ldr r3, [r7, #12] + 8004828: 2256 movs r2, #86 @ 0x56 + 800482a: 5a9b ldrh r3, [r3, r2] + 800482c: b29b uxth r3, r3 + 800482e: 3b01 subs r3, #1 + 8004830: b299 uxth r1, r3 + 8004832: 68fb ldr r3, [r7, #12] + 8004834: 2256 movs r2, #86 @ 0x56 + 8004836: 5299 strh r1, [r3, r2] while (huart->TxXferCount > 0U) - 8004514: 68fb ldr r3, [r7, #12] - 8004516: 2256 movs r2, #86 @ 0x56 - 8004518: 5a9b ldrh r3, [r3, r2] - 800451a: b29b uxth r3, r3 - 800451c: 2b00 cmp r3, #0 - 800451e: d1c8 bne.n 80044b2 + 8004838: 68fb ldr r3, [r7, #12] + 800483a: 2256 movs r2, #86 @ 0x56 + 800483c: 5a9b ldrh r3, [r3, r2] + 800483e: b29b uxth r3, r3 + 8004840: 2b00 cmp r3, #0 + 8004842: d1c8 bne.n 80047d6 } if (UART_WaitOnFlagUntilTimeout(huart, UART_FLAG_TC, RESET, tickstart, Timeout) != HAL_OK) - 8004520: 697a ldr r2, [r7, #20] - 8004522: 68f8 ldr r0, [r7, #12] - 8004524: 683b ldr r3, [r7, #0] - 8004526: 9300 str r3, [sp, #0] - 8004528: 0013 movs r3, r2 - 800452a: 2200 movs r2, #0 - 800452c: 2140 movs r1, #64 @ 0x40 - 800452e: f000 fb15 bl 8004b5c - 8004532: 1e03 subs r3, r0, #0 - 8004534: d005 beq.n 8004542 + 8004844: 697a ldr r2, [r7, #20] + 8004846: 68f8 ldr r0, [r7, #12] + 8004848: 683b ldr r3, [r7, #0] + 800484a: 9300 str r3, [sp, #0] + 800484c: 0013 movs r3, r2 + 800484e: 2200 movs r2, #0 + 8004850: 2140 movs r1, #64 @ 0x40 + 8004852: f000 fb15 bl 8004e80 + 8004856: 1e03 subs r3, r0, #0 + 8004858: d005 beq.n 8004866 { huart->gState = HAL_UART_STATE_READY; - 8004536: 68fb ldr r3, [r7, #12] - 8004538: 2288 movs r2, #136 @ 0x88 - 800453a: 2120 movs r1, #32 - 800453c: 5099 str r1, [r3, r2] + 800485a: 68fb ldr r3, [r7, #12] + 800485c: 2288 movs r2, #136 @ 0x88 + 800485e: 2120 movs r1, #32 + 8004860: 5099 str r1, [r3, r2] return HAL_TIMEOUT; - 800453e: 2303 movs r3, #3 - 8004540: e006 b.n 8004550 + 8004862: 2303 movs r3, #3 + 8004864: e006 b.n 8004874 } /* At end of Tx process, restore huart->gState to Ready */ huart->gState = HAL_UART_STATE_READY; - 8004542: 68fb ldr r3, [r7, #12] - 8004544: 2288 movs r2, #136 @ 0x88 - 8004546: 2120 movs r1, #32 - 8004548: 5099 str r1, [r3, r2] + 8004866: 68fb ldr r3, [r7, #12] + 8004868: 2288 movs r2, #136 @ 0x88 + 800486a: 2120 movs r1, #32 + 800486c: 5099 str r1, [r3, r2] return HAL_OK; - 800454a: 2300 movs r3, #0 - 800454c: e000 b.n 8004550 + 800486e: 2300 movs r3, #0 + 8004870: e000 b.n 8004874 } else { return HAL_BUSY; - 800454e: 2302 movs r3, #2 + 8004872: 2302 movs r3, #2 } } - 8004550: 0018 movs r0, r3 - 8004552: 46bd mov sp, r7 - 8004554: b008 add sp, #32 - 8004556: bd80 pop {r7, pc} + 8004874: 0018 movs r0, r3 + 8004876: 46bd mov sp, r7 + 8004878: b008 add sp, #32 + 800487a: bd80 pop {r7, pc} -08004558 : +0800487c : * @brief Configure the UART peripheral. * @param huart UART handle. * @retval HAL status */ HAL_StatusTypeDef UART_SetConfig(UART_HandleTypeDef *huart) { - 8004558: b580 push {r7, lr} - 800455a: b088 sub sp, #32 - 800455c: af00 add r7, sp, #0 - 800455e: 6078 str r0, [r7, #4] + 800487c: b580 push {r7, lr} + 800487e: b088 sub sp, #32 + 8004880: af00 add r7, sp, #0 + 8004882: 6078 str r0, [r7, #4] uint32_t tmpreg; uint16_t brrtemp; UART_ClockSourceTypeDef clocksource; uint32_t usartdiv; HAL_StatusTypeDef ret = HAL_OK; - 8004560: 231a movs r3, #26 - 8004562: 18fb adds r3, r7, r3 - 8004564: 2200 movs r2, #0 - 8004566: 701a strb r2, [r3, #0] + 8004884: 231a movs r3, #26 + 8004886: 18fb adds r3, r7, r3 + 8004888: 2200 movs r2, #0 + 800488a: 701a strb r2, [r3, #0] * the UART Word Length, Parity, Mode and oversampling: * set the M bits according to huart->Init.WordLength value * set PCE and PS bits according to huart->Init.Parity value * set TE and RE bits according to huart->Init.Mode value * set OVER8 bit according to huart->Init.OverSampling value */ tmpreg = (uint32_t)huart->Init.WordLength | huart->Init.Parity | huart->Init.Mode | huart->Init.OverSampling ; - 8004568: 687b ldr r3, [r7, #4] - 800456a: 689a ldr r2, [r3, #8] - 800456c: 687b ldr r3, [r7, #4] - 800456e: 691b ldr r3, [r3, #16] - 8004570: 431a orrs r2, r3 - 8004572: 687b ldr r3, [r7, #4] - 8004574: 695b ldr r3, [r3, #20] - 8004576: 431a orrs r2, r3 - 8004578: 687b ldr r3, [r7, #4] - 800457a: 69db ldr r3, [r3, #28] - 800457c: 4313 orrs r3, r2 - 800457e: 61fb str r3, [r7, #28] + 800488c: 687b ldr r3, [r7, #4] + 800488e: 689a ldr r2, [r3, #8] + 8004890: 687b ldr r3, [r7, #4] + 8004892: 691b ldr r3, [r3, #16] + 8004894: 431a orrs r2, r3 + 8004896: 687b ldr r3, [r7, #4] + 8004898: 695b ldr r3, [r3, #20] + 800489a: 431a orrs r2, r3 + 800489c: 687b ldr r3, [r7, #4] + 800489e: 69db ldr r3, [r3, #28] + 80048a0: 4313 orrs r3, r2 + 80048a2: 61fb str r3, [r7, #28] MODIFY_REG(huart->Instance->CR1, USART_CR1_FIELDS, tmpreg); - 8004580: 687b ldr r3, [r7, #4] - 8004582: 681b ldr r3, [r3, #0] - 8004584: 681b ldr r3, [r3, #0] - 8004586: 4abc ldr r2, [pc, #752] @ (8004878 ) - 8004588: 4013 ands r3, r2 - 800458a: 0019 movs r1, r3 - 800458c: 687b ldr r3, [r7, #4] - 800458e: 681b ldr r3, [r3, #0] - 8004590: 69fa ldr r2, [r7, #28] - 8004592: 430a orrs r2, r1 - 8004594: 601a str r2, [r3, #0] + 80048a4: 687b ldr r3, [r7, #4] + 80048a6: 681b ldr r3, [r3, #0] + 80048a8: 681b ldr r3, [r3, #0] + 80048aa: 4abc ldr r2, [pc, #752] @ (8004b9c ) + 80048ac: 4013 ands r3, r2 + 80048ae: 0019 movs r1, r3 + 80048b0: 687b ldr r3, [r7, #4] + 80048b2: 681b ldr r3, [r3, #0] + 80048b4: 69fa ldr r2, [r7, #28] + 80048b6: 430a orrs r2, r1 + 80048b8: 601a str r2, [r3, #0] /*-------------------------- USART CR2 Configuration -----------------------*/ /* Configure the UART Stop Bits: Set STOP[13:12] bits according * to huart->Init.StopBits value */ MODIFY_REG(huart->Instance->CR2, USART_CR2_STOP, huart->Init.StopBits); - 8004596: 687b ldr r3, [r7, #4] - 8004598: 681b ldr r3, [r3, #0] - 800459a: 685b ldr r3, [r3, #4] - 800459c: 4ab7 ldr r2, [pc, #732] @ (800487c ) - 800459e: 4013 ands r3, r2 - 80045a0: 0019 movs r1, r3 - 80045a2: 687b ldr r3, [r7, #4] - 80045a4: 68da ldr r2, [r3, #12] - 80045a6: 687b ldr r3, [r7, #4] - 80045a8: 681b ldr r3, [r3, #0] - 80045aa: 430a orrs r2, r1 - 80045ac: 605a str r2, [r3, #4] + 80048ba: 687b ldr r3, [r7, #4] + 80048bc: 681b ldr r3, [r3, #0] + 80048be: 685b ldr r3, [r3, #4] + 80048c0: 4ab7 ldr r2, [pc, #732] @ (8004ba0 ) + 80048c2: 4013 ands r3, r2 + 80048c4: 0019 movs r1, r3 + 80048c6: 687b ldr r3, [r7, #4] + 80048c8: 68da ldr r2, [r3, #12] + 80048ca: 687b ldr r3, [r7, #4] + 80048cc: 681b ldr r3, [r3, #0] + 80048ce: 430a orrs r2, r1 + 80048d0: 605a str r2, [r3, #4] /* Configure * - UART HardWare Flow Control: set CTSE and RTSE bits according * to huart->Init.HwFlowCtl value * - one-bit sampling method versus three samples' majority rule according * to huart->Init.OneBitSampling (not applicable to LPUART) */ tmpreg = (uint32_t)huart->Init.HwFlowCtl; - 80045ae: 687b ldr r3, [r7, #4] - 80045b0: 699b ldr r3, [r3, #24] - 80045b2: 61fb str r3, [r7, #28] + 80048d2: 687b ldr r3, [r7, #4] + 80048d4: 699b ldr r3, [r3, #24] + 80048d6: 61fb str r3, [r7, #28] if (!(UART_INSTANCE_LOWPOWER(huart))) { tmpreg |= huart->Init.OneBitSampling; - 80045b4: 687b ldr r3, [r7, #4] - 80045b6: 6a1b ldr r3, [r3, #32] - 80045b8: 69fa ldr r2, [r7, #28] - 80045ba: 4313 orrs r3, r2 - 80045bc: 61fb str r3, [r7, #28] + 80048d8: 687b ldr r3, [r7, #4] + 80048da: 6a1b ldr r3, [r3, #32] + 80048dc: 69fa ldr r2, [r7, #28] + 80048de: 4313 orrs r3, r2 + 80048e0: 61fb str r3, [r7, #28] } MODIFY_REG(huart->Instance->CR3, USART_CR3_FIELDS, tmpreg); - 80045be: 687b ldr r3, [r7, #4] - 80045c0: 681b ldr r3, [r3, #0] - 80045c2: 689b ldr r3, [r3, #8] - 80045c4: 4aae ldr r2, [pc, #696] @ (8004880 ) - 80045c6: 4013 ands r3, r2 - 80045c8: 0019 movs r1, r3 - 80045ca: 687b ldr r3, [r7, #4] - 80045cc: 681b ldr r3, [r3, #0] - 80045ce: 69fa ldr r2, [r7, #28] - 80045d0: 430a orrs r2, r1 - 80045d2: 609a str r2, [r3, #8] + 80048e2: 687b ldr r3, [r7, #4] + 80048e4: 681b ldr r3, [r3, #0] + 80048e6: 689b ldr r3, [r3, #8] + 80048e8: 4aae ldr r2, [pc, #696] @ (8004ba4 ) + 80048ea: 4013 ands r3, r2 + 80048ec: 0019 movs r1, r3 + 80048ee: 687b ldr r3, [r7, #4] + 80048f0: 681b ldr r3, [r3, #0] + 80048f2: 69fa ldr r2, [r7, #28] + 80048f4: 430a orrs r2, r1 + 80048f6: 609a str r2, [r3, #8] /*-------------------------- USART PRESC Configuration -----------------------*/ /* Configure * - UART Clock Prescaler : set PRESCALER according to huart->Init.ClockPrescaler value */ MODIFY_REG(huart->Instance->PRESC, USART_PRESC_PRESCALER, huart->Init.ClockPrescaler); - 80045d4: 687b ldr r3, [r7, #4] - 80045d6: 681b ldr r3, [r3, #0] - 80045d8: 6adb ldr r3, [r3, #44] @ 0x2c - 80045da: 220f movs r2, #15 - 80045dc: 4393 bics r3, r2 - 80045de: 0019 movs r1, r3 - 80045e0: 687b ldr r3, [r7, #4] - 80045e2: 6a5a ldr r2, [r3, #36] @ 0x24 - 80045e4: 687b ldr r3, [r7, #4] - 80045e6: 681b ldr r3, [r3, #0] - 80045e8: 430a orrs r2, r1 - 80045ea: 62da str r2, [r3, #44] @ 0x2c + 80048f8: 687b ldr r3, [r7, #4] + 80048fa: 681b ldr r3, [r3, #0] + 80048fc: 6adb ldr r3, [r3, #44] @ 0x2c + 80048fe: 220f movs r2, #15 + 8004900: 4393 bics r3, r2 + 8004902: 0019 movs r1, r3 + 8004904: 687b ldr r3, [r7, #4] + 8004906: 6a5a ldr r2, [r3, #36] @ 0x24 + 8004908: 687b ldr r3, [r7, #4] + 800490a: 681b ldr r3, [r3, #0] + 800490c: 430a orrs r2, r1 + 800490e: 62da str r2, [r3, #44] @ 0x2c /*-------------------------- USART BRR Configuration -----------------------*/ UART_GETCLOCKSOURCE(huart, clocksource); - 80045ec: 687b ldr r3, [r7, #4] - 80045ee: 681b ldr r3, [r3, #0] - 80045f0: 4aa4 ldr r2, [pc, #656] @ (8004884 ) - 80045f2: 4293 cmp r3, r2 - 80045f4: d127 bne.n 8004646 - 80045f6: 4ba4 ldr r3, [pc, #656] @ (8004888 ) - 80045f8: 6d5b ldr r3, [r3, #84] @ 0x54 - 80045fa: 2203 movs r2, #3 - 80045fc: 4013 ands r3, r2 - 80045fe: 2b03 cmp r3, #3 - 8004600: d017 beq.n 8004632 - 8004602: d81b bhi.n 800463c - 8004604: 2b02 cmp r3, #2 - 8004606: d00a beq.n 800461e - 8004608: d818 bhi.n 800463c - 800460a: 2b00 cmp r3, #0 - 800460c: d002 beq.n 8004614 - 800460e: 2b01 cmp r3, #1 - 8004610: d00a beq.n 8004628 - 8004612: e013 b.n 800463c - 8004614: 231b movs r3, #27 - 8004616: 18fb adds r3, r7, r3 - 8004618: 2200 movs r2, #0 - 800461a: 701a strb r2, [r3, #0] - 800461c: e058 b.n 80046d0 - 800461e: 231b movs r3, #27 - 8004620: 18fb adds r3, r7, r3 - 8004622: 2202 movs r2, #2 - 8004624: 701a strb r2, [r3, #0] - 8004626: e053 b.n 80046d0 - 8004628: 231b movs r3, #27 - 800462a: 18fb adds r3, r7, r3 - 800462c: 2204 movs r2, #4 - 800462e: 701a strb r2, [r3, #0] - 8004630: e04e b.n 80046d0 - 8004632: 231b movs r3, #27 - 8004634: 18fb adds r3, r7, r3 - 8004636: 2208 movs r2, #8 - 8004638: 701a strb r2, [r3, #0] - 800463a: e049 b.n 80046d0 - 800463c: 231b movs r3, #27 - 800463e: 18fb adds r3, r7, r3 - 8004640: 2210 movs r2, #16 - 8004642: 701a strb r2, [r3, #0] - 8004644: e044 b.n 80046d0 - 8004646: 687b ldr r3, [r7, #4] - 8004648: 681b ldr r3, [r3, #0] - 800464a: 4a90 ldr r2, [pc, #576] @ (800488c ) - 800464c: 4293 cmp r3, r2 - 800464e: d127 bne.n 80046a0 - 8004650: 4b8d ldr r3, [pc, #564] @ (8004888 ) - 8004652: 6d5b ldr r3, [r3, #84] @ 0x54 - 8004654: 220c movs r2, #12 - 8004656: 4013 ands r3, r2 - 8004658: 2b0c cmp r3, #12 - 800465a: d017 beq.n 800468c - 800465c: d81b bhi.n 8004696 - 800465e: 2b08 cmp r3, #8 - 8004660: d00a beq.n 8004678 - 8004662: d818 bhi.n 8004696 - 8004664: 2b00 cmp r3, #0 - 8004666: d002 beq.n 800466e - 8004668: 2b04 cmp r3, #4 - 800466a: d00a beq.n 8004682 - 800466c: e013 b.n 8004696 - 800466e: 231b movs r3, #27 - 8004670: 18fb adds r3, r7, r3 - 8004672: 2200 movs r2, #0 - 8004674: 701a strb r2, [r3, #0] - 8004676: e02b b.n 80046d0 - 8004678: 231b movs r3, #27 - 800467a: 18fb adds r3, r7, r3 - 800467c: 2202 movs r2, #2 - 800467e: 701a strb r2, [r3, #0] - 8004680: e026 b.n 80046d0 - 8004682: 231b movs r3, #27 - 8004684: 18fb adds r3, r7, r3 - 8004686: 2204 movs r2, #4 - 8004688: 701a strb r2, [r3, #0] - 800468a: e021 b.n 80046d0 - 800468c: 231b movs r3, #27 - 800468e: 18fb adds r3, r7, r3 - 8004690: 2208 movs r2, #8 - 8004692: 701a strb r2, [r3, #0] - 8004694: e01c b.n 80046d0 - 8004696: 231b movs r3, #27 - 8004698: 18fb adds r3, r7, r3 - 800469a: 2210 movs r2, #16 - 800469c: 701a strb r2, [r3, #0] - 800469e: e017 b.n 80046d0 - 80046a0: 687b ldr r3, [r7, #4] - 80046a2: 681b ldr r3, [r3, #0] - 80046a4: 4a7a ldr r2, [pc, #488] @ (8004890 ) - 80046a6: 4293 cmp r3, r2 - 80046a8: d104 bne.n 80046b4 - 80046aa: 231b movs r3, #27 - 80046ac: 18fb adds r3, r7, r3 - 80046ae: 2200 movs r2, #0 - 80046b0: 701a strb r2, [r3, #0] - 80046b2: e00d b.n 80046d0 - 80046b4: 687b ldr r3, [r7, #4] - 80046b6: 681b ldr r3, [r3, #0] - 80046b8: 4a76 ldr r2, [pc, #472] @ (8004894 ) - 80046ba: 4293 cmp r3, r2 - 80046bc: d104 bne.n 80046c8 - 80046be: 231b movs r3, #27 - 80046c0: 18fb adds r3, r7, r3 - 80046c2: 2200 movs r2, #0 - 80046c4: 701a strb r2, [r3, #0] - 80046c6: e003 b.n 80046d0 - 80046c8: 231b movs r3, #27 - 80046ca: 18fb adds r3, r7, r3 - 80046cc: 2210 movs r2, #16 - 80046ce: 701a strb r2, [r3, #0] + 8004910: 687b ldr r3, [r7, #4] + 8004912: 681b ldr r3, [r3, #0] + 8004914: 4aa4 ldr r2, [pc, #656] @ (8004ba8 ) + 8004916: 4293 cmp r3, r2 + 8004918: d127 bne.n 800496a + 800491a: 4ba4 ldr r3, [pc, #656] @ (8004bac ) + 800491c: 6d5b ldr r3, [r3, #84] @ 0x54 + 800491e: 2203 movs r2, #3 + 8004920: 4013 ands r3, r2 + 8004922: 2b03 cmp r3, #3 + 8004924: d017 beq.n 8004956 + 8004926: d81b bhi.n 8004960 + 8004928: 2b02 cmp r3, #2 + 800492a: d00a beq.n 8004942 + 800492c: d818 bhi.n 8004960 + 800492e: 2b00 cmp r3, #0 + 8004930: d002 beq.n 8004938 + 8004932: 2b01 cmp r3, #1 + 8004934: d00a beq.n 800494c + 8004936: e013 b.n 8004960 + 8004938: 231b movs r3, #27 + 800493a: 18fb adds r3, r7, r3 + 800493c: 2200 movs r2, #0 + 800493e: 701a strb r2, [r3, #0] + 8004940: e058 b.n 80049f4 + 8004942: 231b movs r3, #27 + 8004944: 18fb adds r3, r7, r3 + 8004946: 2202 movs r2, #2 + 8004948: 701a strb r2, [r3, #0] + 800494a: e053 b.n 80049f4 + 800494c: 231b movs r3, #27 + 800494e: 18fb adds r3, r7, r3 + 8004950: 2204 movs r2, #4 + 8004952: 701a strb r2, [r3, #0] + 8004954: e04e b.n 80049f4 + 8004956: 231b movs r3, #27 + 8004958: 18fb adds r3, r7, r3 + 800495a: 2208 movs r2, #8 + 800495c: 701a strb r2, [r3, #0] + 800495e: e049 b.n 80049f4 + 8004960: 231b movs r3, #27 + 8004962: 18fb adds r3, r7, r3 + 8004964: 2210 movs r2, #16 + 8004966: 701a strb r2, [r3, #0] + 8004968: e044 b.n 80049f4 + 800496a: 687b ldr r3, [r7, #4] + 800496c: 681b ldr r3, [r3, #0] + 800496e: 4a90 ldr r2, [pc, #576] @ (8004bb0 ) + 8004970: 4293 cmp r3, r2 + 8004972: d127 bne.n 80049c4 + 8004974: 4b8d ldr r3, [pc, #564] @ (8004bac ) + 8004976: 6d5b ldr r3, [r3, #84] @ 0x54 + 8004978: 220c movs r2, #12 + 800497a: 4013 ands r3, r2 + 800497c: 2b0c cmp r3, #12 + 800497e: d017 beq.n 80049b0 + 8004980: d81b bhi.n 80049ba + 8004982: 2b08 cmp r3, #8 + 8004984: d00a beq.n 800499c + 8004986: d818 bhi.n 80049ba + 8004988: 2b00 cmp r3, #0 + 800498a: d002 beq.n 8004992 + 800498c: 2b04 cmp r3, #4 + 800498e: d00a beq.n 80049a6 + 8004990: e013 b.n 80049ba + 8004992: 231b movs r3, #27 + 8004994: 18fb adds r3, r7, r3 + 8004996: 2200 movs r2, #0 + 8004998: 701a strb r2, [r3, #0] + 800499a: e02b b.n 80049f4 + 800499c: 231b movs r3, #27 + 800499e: 18fb adds r3, r7, r3 + 80049a0: 2202 movs r2, #2 + 80049a2: 701a strb r2, [r3, #0] + 80049a4: e026 b.n 80049f4 + 80049a6: 231b movs r3, #27 + 80049a8: 18fb adds r3, r7, r3 + 80049aa: 2204 movs r2, #4 + 80049ac: 701a strb r2, [r3, #0] + 80049ae: e021 b.n 80049f4 + 80049b0: 231b movs r3, #27 + 80049b2: 18fb adds r3, r7, r3 + 80049b4: 2208 movs r2, #8 + 80049b6: 701a strb r2, [r3, #0] + 80049b8: e01c b.n 80049f4 + 80049ba: 231b movs r3, #27 + 80049bc: 18fb adds r3, r7, r3 + 80049be: 2210 movs r2, #16 + 80049c0: 701a strb r2, [r3, #0] + 80049c2: e017 b.n 80049f4 + 80049c4: 687b ldr r3, [r7, #4] + 80049c6: 681b ldr r3, [r3, #0] + 80049c8: 4a7a ldr r2, [pc, #488] @ (8004bb4 ) + 80049ca: 4293 cmp r3, r2 + 80049cc: d104 bne.n 80049d8 + 80049ce: 231b movs r3, #27 + 80049d0: 18fb adds r3, r7, r3 + 80049d2: 2200 movs r2, #0 + 80049d4: 701a strb r2, [r3, #0] + 80049d6: e00d b.n 80049f4 + 80049d8: 687b ldr r3, [r7, #4] + 80049da: 681b ldr r3, [r3, #0] + 80049dc: 4a76 ldr r2, [pc, #472] @ (8004bb8 ) + 80049de: 4293 cmp r3, r2 + 80049e0: d104 bne.n 80049ec + 80049e2: 231b movs r3, #27 + 80049e4: 18fb adds r3, r7, r3 + 80049e6: 2200 movs r2, #0 + 80049e8: 701a strb r2, [r3, #0] + 80049ea: e003 b.n 80049f4 + 80049ec: 231b movs r3, #27 + 80049ee: 18fb adds r3, r7, r3 + 80049f0: 2210 movs r2, #16 + 80049f2: 701a strb r2, [r3, #0] } /* if ( (lpuart_ker_ck_pres < (3 * huart->Init.BaudRate) ) || (lpuart_ker_ck_pres > (4096 * huart->Init.BaudRate) )) */ } /* if (pclk != 0) */ } /* Check UART Over Sampling to set Baud Rate Register */ else if (huart->Init.OverSampling == UART_OVERSAMPLING_8) - 80046d0: 687b ldr r3, [r7, #4] - 80046d2: 69da ldr r2, [r3, #28] - 80046d4: 2380 movs r3, #128 @ 0x80 - 80046d6: 021b lsls r3, r3, #8 - 80046d8: 429a cmp r2, r3 - 80046da: d000 beq.n 80046de - 80046dc: e065 b.n 80047aa + 80049f4: 687b ldr r3, [r7, #4] + 80049f6: 69da ldr r2, [r3, #28] + 80049f8: 2380 movs r3, #128 @ 0x80 + 80049fa: 021b lsls r3, r3, #8 + 80049fc: 429a cmp r2, r3 + 80049fe: d000 beq.n 8004a02 + 8004a00: e065 b.n 8004ace { switch (clocksource) - 80046de: 231b movs r3, #27 - 80046e0: 18fb adds r3, r7, r3 - 80046e2: 781b ldrb r3, [r3, #0] - 80046e4: 2b08 cmp r3, #8 - 80046e6: d015 beq.n 8004714 - 80046e8: dc18 bgt.n 800471c - 80046ea: 2b04 cmp r3, #4 - 80046ec: d00d beq.n 800470a - 80046ee: dc15 bgt.n 800471c - 80046f0: 2b00 cmp r3, #0 - 80046f2: d002 beq.n 80046fa - 80046f4: 2b02 cmp r3, #2 - 80046f6: d005 beq.n 8004704 - 80046f8: e010 b.n 800471c + 8004a02: 231b movs r3, #27 + 8004a04: 18fb adds r3, r7, r3 + 8004a06: 781b ldrb r3, [r3, #0] + 8004a08: 2b08 cmp r3, #8 + 8004a0a: d015 beq.n 8004a38 + 8004a0c: dc18 bgt.n 8004a40 + 8004a0e: 2b04 cmp r3, #4 + 8004a10: d00d beq.n 8004a2e + 8004a12: dc15 bgt.n 8004a40 + 8004a14: 2b00 cmp r3, #0 + 8004a16: d002 beq.n 8004a1e + 8004a18: 2b02 cmp r3, #2 + 8004a1a: d005 beq.n 8004a28 + 8004a1c: e010 b.n 8004a40 { case UART_CLOCKSOURCE_PCLK1: pclk = HAL_RCC_GetPCLK1Freq(); - 80046fa: f7ff fc31 bl 8003f60 - 80046fe: 0003 movs r3, r0 - 8004700: 617b str r3, [r7, #20] + 8004a1e: f7fe fdc9 bl 80035b4 + 8004a22: 0003 movs r3, r0 + 8004a24: 617b str r3, [r7, #20] break; - 8004702: e012 b.n 800472a + 8004a26: e012 b.n 8004a4e case UART_CLOCKSOURCE_HSI: pclk = (uint32_t) HSI_VALUE; - 8004704: 4b64 ldr r3, [pc, #400] @ (8004898 ) - 8004706: 617b str r3, [r7, #20] + 8004a28: 4b64 ldr r3, [pc, #400] @ (8004bbc ) + 8004a2a: 617b str r3, [r7, #20] break; - 8004708: e00f b.n 800472a + 8004a2c: e00f b.n 8004a4e case UART_CLOCKSOURCE_SYSCLK: pclk = HAL_RCC_GetSysClockFreq(); - 800470a: f7ff fb9d bl 8003e48 - 800470e: 0003 movs r3, r0 - 8004710: 617b str r3, [r7, #20] + 8004a2e: f7fe fd35 bl 800349c + 8004a32: 0003 movs r3, r0 + 8004a34: 617b str r3, [r7, #20] break; - 8004712: e00a b.n 800472a + 8004a36: e00a b.n 8004a4e case UART_CLOCKSOURCE_LSE: pclk = (uint32_t) LSE_VALUE; - 8004714: 2380 movs r3, #128 @ 0x80 - 8004716: 021b lsls r3, r3, #8 - 8004718: 617b str r3, [r7, #20] + 8004a38: 2380 movs r3, #128 @ 0x80 + 8004a3a: 021b lsls r3, r3, #8 + 8004a3c: 617b str r3, [r7, #20] break; - 800471a: e006 b.n 800472a + 8004a3e: e006 b.n 8004a4e default: pclk = 0U; - 800471c: 2300 movs r3, #0 - 800471e: 617b str r3, [r7, #20] + 8004a40: 2300 movs r3, #0 + 8004a42: 617b str r3, [r7, #20] ret = HAL_ERROR; - 8004720: 231a movs r3, #26 - 8004722: 18fb adds r3, r7, r3 - 8004724: 2201 movs r2, #1 - 8004726: 701a strb r2, [r3, #0] + 8004a44: 231a movs r3, #26 + 8004a46: 18fb adds r3, r7, r3 + 8004a48: 2201 movs r2, #1 + 8004a4a: 701a strb r2, [r3, #0] break; - 8004728: 46c0 nop @ (mov r8, r8) + 8004a4c: 46c0 nop @ (mov r8, r8) } /* USARTDIV must be greater than or equal to 0d16 */ if (pclk != 0U) - 800472a: 697b ldr r3, [r7, #20] - 800472c: 2b00 cmp r3, #0 - 800472e: d100 bne.n 8004732 - 8004730: e08d b.n 800484e + 8004a4e: 697b ldr r3, [r7, #20] + 8004a50: 2b00 cmp r3, #0 + 8004a52: d100 bne.n 8004a56 + 8004a54: e08d b.n 8004b72 { usartdiv = (uint32_t)(UART_DIV_SAMPLING8(pclk, huart->Init.BaudRate, huart->Init.ClockPrescaler)); - 8004732: 687b ldr r3, [r7, #4] - 8004734: 6a5a ldr r2, [r3, #36] @ 0x24 - 8004736: 4b59 ldr r3, [pc, #356] @ (800489c ) - 8004738: 0052 lsls r2, r2, #1 - 800473a: 5ad3 ldrh r3, [r2, r3] - 800473c: 0019 movs r1, r3 - 800473e: 6978 ldr r0, [r7, #20] - 8004740: f7fb fce8 bl 8000114 <__udivsi3> - 8004744: 0003 movs r3, r0 - 8004746: 005a lsls r2, r3, #1 - 8004748: 687b ldr r3, [r7, #4] - 800474a: 685b ldr r3, [r3, #4] - 800474c: 085b lsrs r3, r3, #1 - 800474e: 18d2 adds r2, r2, r3 - 8004750: 687b ldr r3, [r7, #4] - 8004752: 685b ldr r3, [r3, #4] - 8004754: 0019 movs r1, r3 - 8004756: 0010 movs r0, r2 - 8004758: f7fb fcdc bl 8000114 <__udivsi3> - 800475c: 0003 movs r3, r0 - 800475e: 613b str r3, [r7, #16] + 8004a56: 687b ldr r3, [r7, #4] + 8004a58: 6a5a ldr r2, [r3, #36] @ 0x24 + 8004a5a: 4b59 ldr r3, [pc, #356] @ (8004bc0 ) + 8004a5c: 0052 lsls r2, r2, #1 + 8004a5e: 5ad3 ldrh r3, [r2, r3] + 8004a60: 0019 movs r1, r3 + 8004a62: 6978 ldr r0, [r7, #20] + 8004a64: f7fb fb56 bl 8000114 <__udivsi3> + 8004a68: 0003 movs r3, r0 + 8004a6a: 005a lsls r2, r3, #1 + 8004a6c: 687b ldr r3, [r7, #4] + 8004a6e: 685b ldr r3, [r3, #4] + 8004a70: 085b lsrs r3, r3, #1 + 8004a72: 18d2 adds r2, r2, r3 + 8004a74: 687b ldr r3, [r7, #4] + 8004a76: 685b ldr r3, [r3, #4] + 8004a78: 0019 movs r1, r3 + 8004a7a: 0010 movs r0, r2 + 8004a7c: f7fb fb4a bl 8000114 <__udivsi3> + 8004a80: 0003 movs r3, r0 + 8004a82: 613b str r3, [r7, #16] if ((usartdiv >= UART_BRR_MIN) && (usartdiv <= UART_BRR_MAX)) - 8004760: 693b ldr r3, [r7, #16] - 8004762: 2b0f cmp r3, #15 - 8004764: d91c bls.n 80047a0 - 8004766: 693a ldr r2, [r7, #16] - 8004768: 2380 movs r3, #128 @ 0x80 - 800476a: 025b lsls r3, r3, #9 - 800476c: 429a cmp r2, r3 - 800476e: d217 bcs.n 80047a0 + 8004a84: 693b ldr r3, [r7, #16] + 8004a86: 2b0f cmp r3, #15 + 8004a88: d91c bls.n 8004ac4 + 8004a8a: 693a ldr r2, [r7, #16] + 8004a8c: 2380 movs r3, #128 @ 0x80 + 8004a8e: 025b lsls r3, r3, #9 + 8004a90: 429a cmp r2, r3 + 8004a92: d217 bcs.n 8004ac4 { brrtemp = (uint16_t)(usartdiv & 0xFFF0U); - 8004770: 693b ldr r3, [r7, #16] - 8004772: b29a uxth r2, r3 - 8004774: 200e movs r0, #14 - 8004776: 183b adds r3, r7, r0 - 8004778: 210f movs r1, #15 - 800477a: 438a bics r2, r1 - 800477c: 801a strh r2, [r3, #0] + 8004a94: 693b ldr r3, [r7, #16] + 8004a96: b29a uxth r2, r3 + 8004a98: 200e movs r0, #14 + 8004a9a: 183b adds r3, r7, r0 + 8004a9c: 210f movs r1, #15 + 8004a9e: 438a bics r2, r1 + 8004aa0: 801a strh r2, [r3, #0] brrtemp |= (uint16_t)((usartdiv & (uint16_t)0x000FU) >> 1U); - 800477e: 693b ldr r3, [r7, #16] - 8004780: 085b lsrs r3, r3, #1 - 8004782: b29b uxth r3, r3 - 8004784: 2207 movs r2, #7 - 8004786: 4013 ands r3, r2 - 8004788: b299 uxth r1, r3 - 800478a: 183b adds r3, r7, r0 - 800478c: 183a adds r2, r7, r0 - 800478e: 8812 ldrh r2, [r2, #0] - 8004790: 430a orrs r2, r1 - 8004792: 801a strh r2, [r3, #0] + 8004aa2: 693b ldr r3, [r7, #16] + 8004aa4: 085b lsrs r3, r3, #1 + 8004aa6: b29b uxth r3, r3 + 8004aa8: 2207 movs r2, #7 + 8004aaa: 4013 ands r3, r2 + 8004aac: b299 uxth r1, r3 + 8004aae: 183b adds r3, r7, r0 + 8004ab0: 183a adds r2, r7, r0 + 8004ab2: 8812 ldrh r2, [r2, #0] + 8004ab4: 430a orrs r2, r1 + 8004ab6: 801a strh r2, [r3, #0] huart->Instance->BRR = brrtemp; - 8004794: 687b ldr r3, [r7, #4] - 8004796: 681b ldr r3, [r3, #0] - 8004798: 183a adds r2, r7, r0 - 800479a: 8812 ldrh r2, [r2, #0] - 800479c: 60da str r2, [r3, #12] - 800479e: e056 b.n 800484e + 8004ab8: 687b ldr r3, [r7, #4] + 8004aba: 681b ldr r3, [r3, #0] + 8004abc: 183a adds r2, r7, r0 + 8004abe: 8812 ldrh r2, [r2, #0] + 8004ac0: 60da str r2, [r3, #12] + 8004ac2: e056 b.n 8004b72 } else { ret = HAL_ERROR; - 80047a0: 231a movs r3, #26 - 80047a2: 18fb adds r3, r7, r3 - 80047a4: 2201 movs r2, #1 - 80047a6: 701a strb r2, [r3, #0] - 80047a8: e051 b.n 800484e + 8004ac4: 231a movs r3, #26 + 8004ac6: 18fb adds r3, r7, r3 + 8004ac8: 2201 movs r2, #1 + 8004aca: 701a strb r2, [r3, #0] + 8004acc: e051 b.n 8004b72 } } } else { switch (clocksource) - 80047aa: 231b movs r3, #27 - 80047ac: 18fb adds r3, r7, r3 - 80047ae: 781b ldrb r3, [r3, #0] - 80047b0: 2b08 cmp r3, #8 - 80047b2: d015 beq.n 80047e0 - 80047b4: dc18 bgt.n 80047e8 - 80047b6: 2b04 cmp r3, #4 - 80047b8: d00d beq.n 80047d6 - 80047ba: dc15 bgt.n 80047e8 - 80047bc: 2b00 cmp r3, #0 - 80047be: d002 beq.n 80047c6 - 80047c0: 2b02 cmp r3, #2 - 80047c2: d005 beq.n 80047d0 - 80047c4: e010 b.n 80047e8 + 8004ace: 231b movs r3, #27 + 8004ad0: 18fb adds r3, r7, r3 + 8004ad2: 781b ldrb r3, [r3, #0] + 8004ad4: 2b08 cmp r3, #8 + 8004ad6: d015 beq.n 8004b04 + 8004ad8: dc18 bgt.n 8004b0c + 8004ada: 2b04 cmp r3, #4 + 8004adc: d00d beq.n 8004afa + 8004ade: dc15 bgt.n 8004b0c + 8004ae0: 2b00 cmp r3, #0 + 8004ae2: d002 beq.n 8004aea + 8004ae4: 2b02 cmp r3, #2 + 8004ae6: d005 beq.n 8004af4 + 8004ae8: e010 b.n 8004b0c { case UART_CLOCKSOURCE_PCLK1: pclk = HAL_RCC_GetPCLK1Freq(); - 80047c6: f7ff fbcb bl 8003f60 - 80047ca: 0003 movs r3, r0 - 80047cc: 617b str r3, [r7, #20] + 8004aea: f7fe fd63 bl 80035b4 + 8004aee: 0003 movs r3, r0 + 8004af0: 617b str r3, [r7, #20] break; - 80047ce: e012 b.n 80047f6 + 8004af2: e012 b.n 8004b1a case UART_CLOCKSOURCE_HSI: pclk = (uint32_t) HSI_VALUE; - 80047d0: 4b31 ldr r3, [pc, #196] @ (8004898 ) - 80047d2: 617b str r3, [r7, #20] + 8004af4: 4b31 ldr r3, [pc, #196] @ (8004bbc ) + 8004af6: 617b str r3, [r7, #20] break; - 80047d4: e00f b.n 80047f6 + 8004af8: e00f b.n 8004b1a case UART_CLOCKSOURCE_SYSCLK: pclk = HAL_RCC_GetSysClockFreq(); - 80047d6: f7ff fb37 bl 8003e48 - 80047da: 0003 movs r3, r0 - 80047dc: 617b str r3, [r7, #20] + 8004afa: f7fe fccf bl 800349c + 8004afe: 0003 movs r3, r0 + 8004b00: 617b str r3, [r7, #20] break; - 80047de: e00a b.n 80047f6 + 8004b02: e00a b.n 8004b1a case UART_CLOCKSOURCE_LSE: pclk = (uint32_t) LSE_VALUE; - 80047e0: 2380 movs r3, #128 @ 0x80 - 80047e2: 021b lsls r3, r3, #8 - 80047e4: 617b str r3, [r7, #20] + 8004b04: 2380 movs r3, #128 @ 0x80 + 8004b06: 021b lsls r3, r3, #8 + 8004b08: 617b str r3, [r7, #20] break; - 80047e6: e006 b.n 80047f6 + 8004b0a: e006 b.n 8004b1a default: pclk = 0U; - 80047e8: 2300 movs r3, #0 - 80047ea: 617b str r3, [r7, #20] + 8004b0c: 2300 movs r3, #0 + 8004b0e: 617b str r3, [r7, #20] ret = HAL_ERROR; - 80047ec: 231a movs r3, #26 - 80047ee: 18fb adds r3, r7, r3 - 80047f0: 2201 movs r2, #1 - 80047f2: 701a strb r2, [r3, #0] + 8004b10: 231a movs r3, #26 + 8004b12: 18fb adds r3, r7, r3 + 8004b14: 2201 movs r2, #1 + 8004b16: 701a strb r2, [r3, #0] break; - 80047f4: 46c0 nop @ (mov r8, r8) + 8004b18: 46c0 nop @ (mov r8, r8) } if (pclk != 0U) - 80047f6: 697b ldr r3, [r7, #20] - 80047f8: 2b00 cmp r3, #0 - 80047fa: d028 beq.n 800484e + 8004b1a: 697b ldr r3, [r7, #20] + 8004b1c: 2b00 cmp r3, #0 + 8004b1e: d028 beq.n 8004b72 { /* USARTDIV must be greater than or equal to 0d16 */ usartdiv = (uint32_t)(UART_DIV_SAMPLING16(pclk, huart->Init.BaudRate, huart->Init.ClockPrescaler)); - 80047fc: 687b ldr r3, [r7, #4] - 80047fe: 6a5a ldr r2, [r3, #36] @ 0x24 - 8004800: 4b26 ldr r3, [pc, #152] @ (800489c ) - 8004802: 0052 lsls r2, r2, #1 - 8004804: 5ad3 ldrh r3, [r2, r3] - 8004806: 0019 movs r1, r3 - 8004808: 6978 ldr r0, [r7, #20] - 800480a: f7fb fc83 bl 8000114 <__udivsi3> - 800480e: 0003 movs r3, r0 - 8004810: 001a movs r2, r3 - 8004812: 687b ldr r3, [r7, #4] - 8004814: 685b ldr r3, [r3, #4] - 8004816: 085b lsrs r3, r3, #1 - 8004818: 18d2 adds r2, r2, r3 - 800481a: 687b ldr r3, [r7, #4] - 800481c: 685b ldr r3, [r3, #4] - 800481e: 0019 movs r1, r3 - 8004820: 0010 movs r0, r2 - 8004822: f7fb fc77 bl 8000114 <__udivsi3> - 8004826: 0003 movs r3, r0 - 8004828: 613b str r3, [r7, #16] + 8004b20: 687b ldr r3, [r7, #4] + 8004b22: 6a5a ldr r2, [r3, #36] @ 0x24 + 8004b24: 4b26 ldr r3, [pc, #152] @ (8004bc0 ) + 8004b26: 0052 lsls r2, r2, #1 + 8004b28: 5ad3 ldrh r3, [r2, r3] + 8004b2a: 0019 movs r1, r3 + 8004b2c: 6978 ldr r0, [r7, #20] + 8004b2e: f7fb faf1 bl 8000114 <__udivsi3> + 8004b32: 0003 movs r3, r0 + 8004b34: 001a movs r2, r3 + 8004b36: 687b ldr r3, [r7, #4] + 8004b38: 685b ldr r3, [r3, #4] + 8004b3a: 085b lsrs r3, r3, #1 + 8004b3c: 18d2 adds r2, r2, r3 + 8004b3e: 687b ldr r3, [r7, #4] + 8004b40: 685b ldr r3, [r3, #4] + 8004b42: 0019 movs r1, r3 + 8004b44: 0010 movs r0, r2 + 8004b46: f7fb fae5 bl 8000114 <__udivsi3> + 8004b4a: 0003 movs r3, r0 + 8004b4c: 613b str r3, [r7, #16] if ((usartdiv >= UART_BRR_MIN) && (usartdiv <= UART_BRR_MAX)) - 800482a: 693b ldr r3, [r7, #16] - 800482c: 2b0f cmp r3, #15 - 800482e: d90a bls.n 8004846 - 8004830: 693a ldr r2, [r7, #16] - 8004832: 2380 movs r3, #128 @ 0x80 - 8004834: 025b lsls r3, r3, #9 - 8004836: 429a cmp r2, r3 - 8004838: d205 bcs.n 8004846 + 8004b4e: 693b ldr r3, [r7, #16] + 8004b50: 2b0f cmp r3, #15 + 8004b52: d90a bls.n 8004b6a + 8004b54: 693a ldr r2, [r7, #16] + 8004b56: 2380 movs r3, #128 @ 0x80 + 8004b58: 025b lsls r3, r3, #9 + 8004b5a: 429a cmp r2, r3 + 8004b5c: d205 bcs.n 8004b6a { huart->Instance->BRR = (uint16_t)usartdiv; - 800483a: 693b ldr r3, [r7, #16] - 800483c: b29a uxth r2, r3 - 800483e: 687b ldr r3, [r7, #4] - 8004840: 681b ldr r3, [r3, #0] - 8004842: 60da str r2, [r3, #12] - 8004844: e003 b.n 800484e + 8004b5e: 693b ldr r3, [r7, #16] + 8004b60: b29a uxth r2, r3 + 8004b62: 687b ldr r3, [r7, #4] + 8004b64: 681b ldr r3, [r3, #0] + 8004b66: 60da str r2, [r3, #12] + 8004b68: e003 b.n 8004b72 } else { ret = HAL_ERROR; - 8004846: 231a movs r3, #26 - 8004848: 18fb adds r3, r7, r3 - 800484a: 2201 movs r2, #1 - 800484c: 701a strb r2, [r3, #0] + 8004b6a: 231a movs r3, #26 + 8004b6c: 18fb adds r3, r7, r3 + 8004b6e: 2201 movs r2, #1 + 8004b70: 701a strb r2, [r3, #0] } } } /* Initialize the number of data to process during RX/TX ISR execution */ huart->NbTxDataToProcess = 1; - 800484e: 687b ldr r3, [r7, #4] - 8004850: 226a movs r2, #106 @ 0x6a - 8004852: 2101 movs r1, #1 - 8004854: 5299 strh r1, [r3, r2] + 8004b72: 687b ldr r3, [r7, #4] + 8004b74: 226a movs r2, #106 @ 0x6a + 8004b76: 2101 movs r1, #1 + 8004b78: 5299 strh r1, [r3, r2] huart->NbRxDataToProcess = 1; - 8004856: 687b ldr r3, [r7, #4] - 8004858: 2268 movs r2, #104 @ 0x68 - 800485a: 2101 movs r1, #1 - 800485c: 5299 strh r1, [r3, r2] + 8004b7a: 687b ldr r3, [r7, #4] + 8004b7c: 2268 movs r2, #104 @ 0x68 + 8004b7e: 2101 movs r1, #1 + 8004b80: 5299 strh r1, [r3, r2] /* Clear ISR function pointers */ huart->RxISR = NULL; - 800485e: 687b ldr r3, [r7, #4] - 8004860: 2200 movs r2, #0 - 8004862: 675a str r2, [r3, #116] @ 0x74 + 8004b82: 687b ldr r3, [r7, #4] + 8004b84: 2200 movs r2, #0 + 8004b86: 675a str r2, [r3, #116] @ 0x74 huart->TxISR = NULL; - 8004864: 687b ldr r3, [r7, #4] - 8004866: 2200 movs r2, #0 - 8004868: 679a str r2, [r3, #120] @ 0x78 + 8004b88: 687b ldr r3, [r7, #4] + 8004b8a: 2200 movs r2, #0 + 8004b8c: 679a str r2, [r3, #120] @ 0x78 return ret; - 800486a: 231a movs r3, #26 - 800486c: 18fb adds r3, r7, r3 - 800486e: 781b ldrb r3, [r3, #0] + 8004b8e: 231a movs r3, #26 + 8004b90: 18fb adds r3, r7, r3 + 8004b92: 781b ldrb r3, [r3, #0] } - 8004870: 0018 movs r0, r3 - 8004872: 46bd mov sp, r7 - 8004874: b008 add sp, #32 - 8004876: bd80 pop {r7, pc} - 8004878: cfff69f3 .word 0xcfff69f3 - 800487c: ffffcfff .word 0xffffcfff - 8004880: 11fff4ff .word 0x11fff4ff - 8004884: 40013800 .word 0x40013800 - 8004888: 40021000 .word 0x40021000 - 800488c: 40004400 .word 0x40004400 - 8004890: 40004800 .word 0x40004800 - 8004894: 40004c00 .word 0x40004c00 - 8004898: 00f42400 .word 0x00f42400 - 800489c: 08005f80 .word 0x08005f80 + 8004b94: 0018 movs r0, r3 + 8004b96: 46bd mov sp, r7 + 8004b98: b008 add sp, #32 + 8004b9a: bd80 pop {r7, pc} + 8004b9c: cfff69f3 .word 0xcfff69f3 + 8004ba0: ffffcfff .word 0xffffcfff + 8004ba4: 11fff4ff .word 0x11fff4ff + 8004ba8: 40013800 .word 0x40013800 + 8004bac: 40021000 .word 0x40021000 + 8004bb0: 40004400 .word 0x40004400 + 8004bb4: 40004800 .word 0x40004800 + 8004bb8: 40004c00 .word 0x40004c00 + 8004bbc: 00f42400 .word 0x00f42400 + 8004bc0: 080062a0 .word 0x080062a0 -080048a0 : +08004bc4 : * @brief Configure the UART peripheral advanced features. * @param huart UART handle. * @retval None */ void UART_AdvFeatureConfig(UART_HandleTypeDef *huart) { - 80048a0: b580 push {r7, lr} - 80048a2: b082 sub sp, #8 - 80048a4: af00 add r7, sp, #0 - 80048a6: 6078 str r0, [r7, #4] + 8004bc4: b580 push {r7, lr} + 8004bc6: b082 sub sp, #8 + 8004bc8: af00 add r7, sp, #0 + 8004bca: 6078 str r0, [r7, #4] /* Check whether the set of advanced features to configure is properly set */ assert_param(IS_UART_ADVFEATURE_INIT(huart->AdvancedInit.AdvFeatureInit)); /* if required, configure RX/TX pins swap */ if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_SWAP_INIT)) - 80048a8: 687b ldr r3, [r7, #4] - 80048aa: 6a9b ldr r3, [r3, #40] @ 0x28 - 80048ac: 2208 movs r2, #8 - 80048ae: 4013 ands r3, r2 - 80048b0: d00b beq.n 80048ca + 8004bcc: 687b ldr r3, [r7, #4] + 8004bce: 6a9b ldr r3, [r3, #40] @ 0x28 + 8004bd0: 2208 movs r2, #8 + 8004bd2: 4013 ands r3, r2 + 8004bd4: d00b beq.n 8004bee { assert_param(IS_UART_ADVFEATURE_SWAP(huart->AdvancedInit.Swap)); MODIFY_REG(huart->Instance->CR2, USART_CR2_SWAP, huart->AdvancedInit.Swap); - 80048b2: 687b ldr r3, [r7, #4] - 80048b4: 681b ldr r3, [r3, #0] - 80048b6: 685b ldr r3, [r3, #4] - 80048b8: 4a4a ldr r2, [pc, #296] @ (80049e4 ) - 80048ba: 4013 ands r3, r2 - 80048bc: 0019 movs r1, r3 - 80048be: 687b ldr r3, [r7, #4] - 80048c0: 6b9a ldr r2, [r3, #56] @ 0x38 - 80048c2: 687b ldr r3, [r7, #4] - 80048c4: 681b ldr r3, [r3, #0] - 80048c6: 430a orrs r2, r1 - 80048c8: 605a str r2, [r3, #4] + 8004bd6: 687b ldr r3, [r7, #4] + 8004bd8: 681b ldr r3, [r3, #0] + 8004bda: 685b ldr r3, [r3, #4] + 8004bdc: 4a4a ldr r2, [pc, #296] @ (8004d08 ) + 8004bde: 4013 ands r3, r2 + 8004be0: 0019 movs r1, r3 + 8004be2: 687b ldr r3, [r7, #4] + 8004be4: 6b9a ldr r2, [r3, #56] @ 0x38 + 8004be6: 687b ldr r3, [r7, #4] + 8004be8: 681b ldr r3, [r3, #0] + 8004bea: 430a orrs r2, r1 + 8004bec: 605a str r2, [r3, #4] } /* if required, configure TX pin active level inversion */ if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_TXINVERT_INIT)) - 80048ca: 687b ldr r3, [r7, #4] - 80048cc: 6a9b ldr r3, [r3, #40] @ 0x28 - 80048ce: 2201 movs r2, #1 - 80048d0: 4013 ands r3, r2 - 80048d2: d00b beq.n 80048ec + 8004bee: 687b ldr r3, [r7, #4] + 8004bf0: 6a9b ldr r3, [r3, #40] @ 0x28 + 8004bf2: 2201 movs r2, #1 + 8004bf4: 4013 ands r3, r2 + 8004bf6: d00b beq.n 8004c10 { assert_param(IS_UART_ADVFEATURE_TXINV(huart->AdvancedInit.TxPinLevelInvert)); MODIFY_REG(huart->Instance->CR2, USART_CR2_TXINV, huart->AdvancedInit.TxPinLevelInvert); - 80048d4: 687b ldr r3, [r7, #4] - 80048d6: 681b ldr r3, [r3, #0] - 80048d8: 685b ldr r3, [r3, #4] - 80048da: 4a43 ldr r2, [pc, #268] @ (80049e8 ) - 80048dc: 4013 ands r3, r2 - 80048de: 0019 movs r1, r3 - 80048e0: 687b ldr r3, [r7, #4] - 80048e2: 6ada ldr r2, [r3, #44] @ 0x2c - 80048e4: 687b ldr r3, [r7, #4] - 80048e6: 681b ldr r3, [r3, #0] - 80048e8: 430a orrs r2, r1 - 80048ea: 605a str r2, [r3, #4] + 8004bf8: 687b ldr r3, [r7, #4] + 8004bfa: 681b ldr r3, [r3, #0] + 8004bfc: 685b ldr r3, [r3, #4] + 8004bfe: 4a43 ldr r2, [pc, #268] @ (8004d0c ) + 8004c00: 4013 ands r3, r2 + 8004c02: 0019 movs r1, r3 + 8004c04: 687b ldr r3, [r7, #4] + 8004c06: 6ada ldr r2, [r3, #44] @ 0x2c + 8004c08: 687b ldr r3, [r7, #4] + 8004c0a: 681b ldr r3, [r3, #0] + 8004c0c: 430a orrs r2, r1 + 8004c0e: 605a str r2, [r3, #4] } /* if required, configure RX pin active level inversion */ if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_RXINVERT_INIT)) - 80048ec: 687b ldr r3, [r7, #4] - 80048ee: 6a9b ldr r3, [r3, #40] @ 0x28 - 80048f0: 2202 movs r2, #2 - 80048f2: 4013 ands r3, r2 - 80048f4: d00b beq.n 800490e + 8004c10: 687b ldr r3, [r7, #4] + 8004c12: 6a9b ldr r3, [r3, #40] @ 0x28 + 8004c14: 2202 movs r2, #2 + 8004c16: 4013 ands r3, r2 + 8004c18: d00b beq.n 8004c32 { assert_param(IS_UART_ADVFEATURE_RXINV(huart->AdvancedInit.RxPinLevelInvert)); MODIFY_REG(huart->Instance->CR2, USART_CR2_RXINV, huart->AdvancedInit.RxPinLevelInvert); - 80048f6: 687b ldr r3, [r7, #4] - 80048f8: 681b ldr r3, [r3, #0] - 80048fa: 685b ldr r3, [r3, #4] - 80048fc: 4a3b ldr r2, [pc, #236] @ (80049ec ) - 80048fe: 4013 ands r3, r2 - 8004900: 0019 movs r1, r3 - 8004902: 687b ldr r3, [r7, #4] - 8004904: 6b1a ldr r2, [r3, #48] @ 0x30 - 8004906: 687b ldr r3, [r7, #4] - 8004908: 681b ldr r3, [r3, #0] - 800490a: 430a orrs r2, r1 - 800490c: 605a str r2, [r3, #4] + 8004c1a: 687b ldr r3, [r7, #4] + 8004c1c: 681b ldr r3, [r3, #0] + 8004c1e: 685b ldr r3, [r3, #4] + 8004c20: 4a3b ldr r2, [pc, #236] @ (8004d10 ) + 8004c22: 4013 ands r3, r2 + 8004c24: 0019 movs r1, r3 + 8004c26: 687b ldr r3, [r7, #4] + 8004c28: 6b1a ldr r2, [r3, #48] @ 0x30 + 8004c2a: 687b ldr r3, [r7, #4] + 8004c2c: 681b ldr r3, [r3, #0] + 8004c2e: 430a orrs r2, r1 + 8004c30: 605a str r2, [r3, #4] } /* if required, configure data inversion */ if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_DATAINVERT_INIT)) - 800490e: 687b ldr r3, [r7, #4] - 8004910: 6a9b ldr r3, [r3, #40] @ 0x28 - 8004912: 2204 movs r2, #4 - 8004914: 4013 ands r3, r2 - 8004916: d00b beq.n 8004930 + 8004c32: 687b ldr r3, [r7, #4] + 8004c34: 6a9b ldr r3, [r3, #40] @ 0x28 + 8004c36: 2204 movs r2, #4 + 8004c38: 4013 ands r3, r2 + 8004c3a: d00b beq.n 8004c54 { assert_param(IS_UART_ADVFEATURE_DATAINV(huart->AdvancedInit.DataInvert)); MODIFY_REG(huart->Instance->CR2, USART_CR2_DATAINV, huart->AdvancedInit.DataInvert); - 8004918: 687b ldr r3, [r7, #4] - 800491a: 681b ldr r3, [r3, #0] - 800491c: 685b ldr r3, [r3, #4] - 800491e: 4a34 ldr r2, [pc, #208] @ (80049f0 ) - 8004920: 4013 ands r3, r2 - 8004922: 0019 movs r1, r3 - 8004924: 687b ldr r3, [r7, #4] - 8004926: 6b5a ldr r2, [r3, #52] @ 0x34 - 8004928: 687b ldr r3, [r7, #4] - 800492a: 681b ldr r3, [r3, #0] - 800492c: 430a orrs r2, r1 - 800492e: 605a str r2, [r3, #4] + 8004c3c: 687b ldr r3, [r7, #4] + 8004c3e: 681b ldr r3, [r3, #0] + 8004c40: 685b ldr r3, [r3, #4] + 8004c42: 4a34 ldr r2, [pc, #208] @ (8004d14 ) + 8004c44: 4013 ands r3, r2 + 8004c46: 0019 movs r1, r3 + 8004c48: 687b ldr r3, [r7, #4] + 8004c4a: 6b5a ldr r2, [r3, #52] @ 0x34 + 8004c4c: 687b ldr r3, [r7, #4] + 8004c4e: 681b ldr r3, [r3, #0] + 8004c50: 430a orrs r2, r1 + 8004c52: 605a str r2, [r3, #4] } /* if required, configure RX overrun detection disabling */ if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_RXOVERRUNDISABLE_INIT)) - 8004930: 687b ldr r3, [r7, #4] - 8004932: 6a9b ldr r3, [r3, #40] @ 0x28 - 8004934: 2210 movs r2, #16 - 8004936: 4013 ands r3, r2 - 8004938: d00b beq.n 8004952 + 8004c54: 687b ldr r3, [r7, #4] + 8004c56: 6a9b ldr r3, [r3, #40] @ 0x28 + 8004c58: 2210 movs r2, #16 + 8004c5a: 4013 ands r3, r2 + 8004c5c: d00b beq.n 8004c76 { assert_param(IS_UART_OVERRUN(huart->AdvancedInit.OverrunDisable)); MODIFY_REG(huart->Instance->CR3, USART_CR3_OVRDIS, huart->AdvancedInit.OverrunDisable); - 800493a: 687b ldr r3, [r7, #4] - 800493c: 681b ldr r3, [r3, #0] - 800493e: 689b ldr r3, [r3, #8] - 8004940: 4a2c ldr r2, [pc, #176] @ (80049f4 ) - 8004942: 4013 ands r3, r2 - 8004944: 0019 movs r1, r3 - 8004946: 687b ldr r3, [r7, #4] - 8004948: 6bda ldr r2, [r3, #60] @ 0x3c - 800494a: 687b ldr r3, [r7, #4] - 800494c: 681b ldr r3, [r3, #0] - 800494e: 430a orrs r2, r1 - 8004950: 609a str r2, [r3, #8] + 8004c5e: 687b ldr r3, [r7, #4] + 8004c60: 681b ldr r3, [r3, #0] + 8004c62: 689b ldr r3, [r3, #8] + 8004c64: 4a2c ldr r2, [pc, #176] @ (8004d18 ) + 8004c66: 4013 ands r3, r2 + 8004c68: 0019 movs r1, r3 + 8004c6a: 687b ldr r3, [r7, #4] + 8004c6c: 6bda ldr r2, [r3, #60] @ 0x3c + 8004c6e: 687b ldr r3, [r7, #4] + 8004c70: 681b ldr r3, [r3, #0] + 8004c72: 430a orrs r2, r1 + 8004c74: 609a str r2, [r3, #8] } /* if required, configure DMA disabling on reception error */ if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_DMADISABLEONERROR_INIT)) - 8004952: 687b ldr r3, [r7, #4] - 8004954: 6a9b ldr r3, [r3, #40] @ 0x28 - 8004956: 2220 movs r2, #32 - 8004958: 4013 ands r3, r2 - 800495a: d00b beq.n 8004974 + 8004c76: 687b ldr r3, [r7, #4] + 8004c78: 6a9b ldr r3, [r3, #40] @ 0x28 + 8004c7a: 2220 movs r2, #32 + 8004c7c: 4013 ands r3, r2 + 8004c7e: d00b beq.n 8004c98 { assert_param(IS_UART_ADVFEATURE_DMAONRXERROR(huart->AdvancedInit.DMADisableonRxError)); MODIFY_REG(huart->Instance->CR3, USART_CR3_DDRE, huart->AdvancedInit.DMADisableonRxError); - 800495c: 687b ldr r3, [r7, #4] - 800495e: 681b ldr r3, [r3, #0] - 8004960: 689b ldr r3, [r3, #8] - 8004962: 4a25 ldr r2, [pc, #148] @ (80049f8 ) - 8004964: 4013 ands r3, r2 - 8004966: 0019 movs r1, r3 - 8004968: 687b ldr r3, [r7, #4] - 800496a: 6c1a ldr r2, [r3, #64] @ 0x40 - 800496c: 687b ldr r3, [r7, #4] - 800496e: 681b ldr r3, [r3, #0] - 8004970: 430a orrs r2, r1 - 8004972: 609a str r2, [r3, #8] + 8004c80: 687b ldr r3, [r7, #4] + 8004c82: 681b ldr r3, [r3, #0] + 8004c84: 689b ldr r3, [r3, #8] + 8004c86: 4a25 ldr r2, [pc, #148] @ (8004d1c ) + 8004c88: 4013 ands r3, r2 + 8004c8a: 0019 movs r1, r3 + 8004c8c: 687b ldr r3, [r7, #4] + 8004c8e: 6c1a ldr r2, [r3, #64] @ 0x40 + 8004c90: 687b ldr r3, [r7, #4] + 8004c92: 681b ldr r3, [r3, #0] + 8004c94: 430a orrs r2, r1 + 8004c96: 609a str r2, [r3, #8] } /* if required, configure auto Baud rate detection scheme */ if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_AUTOBAUDRATE_INIT)) - 8004974: 687b ldr r3, [r7, #4] - 8004976: 6a9b ldr r3, [r3, #40] @ 0x28 - 8004978: 2240 movs r2, #64 @ 0x40 - 800497a: 4013 ands r3, r2 - 800497c: d01d beq.n 80049ba + 8004c98: 687b ldr r3, [r7, #4] + 8004c9a: 6a9b ldr r3, [r3, #40] @ 0x28 + 8004c9c: 2240 movs r2, #64 @ 0x40 + 8004c9e: 4013 ands r3, r2 + 8004ca0: d01d beq.n 8004cde { assert_param(IS_USART_AUTOBAUDRATE_DETECTION_INSTANCE(huart->Instance)); assert_param(IS_UART_ADVFEATURE_AUTOBAUDRATE(huart->AdvancedInit.AutoBaudRateEnable)); MODIFY_REG(huart->Instance->CR2, USART_CR2_ABREN, huart->AdvancedInit.AutoBaudRateEnable); - 800497e: 687b ldr r3, [r7, #4] - 8004980: 681b ldr r3, [r3, #0] - 8004982: 685b ldr r3, [r3, #4] - 8004984: 4a1d ldr r2, [pc, #116] @ (80049fc ) - 8004986: 4013 ands r3, r2 - 8004988: 0019 movs r1, r3 - 800498a: 687b ldr r3, [r7, #4] - 800498c: 6c5a ldr r2, [r3, #68] @ 0x44 - 800498e: 687b ldr r3, [r7, #4] - 8004990: 681b ldr r3, [r3, #0] - 8004992: 430a orrs r2, r1 - 8004994: 605a str r2, [r3, #4] + 8004ca2: 687b ldr r3, [r7, #4] + 8004ca4: 681b ldr r3, [r3, #0] + 8004ca6: 685b ldr r3, [r3, #4] + 8004ca8: 4a1d ldr r2, [pc, #116] @ (8004d20 ) + 8004caa: 4013 ands r3, r2 + 8004cac: 0019 movs r1, r3 + 8004cae: 687b ldr r3, [r7, #4] + 8004cb0: 6c5a ldr r2, [r3, #68] @ 0x44 + 8004cb2: 687b ldr r3, [r7, #4] + 8004cb4: 681b ldr r3, [r3, #0] + 8004cb6: 430a orrs r2, r1 + 8004cb8: 605a str r2, [r3, #4] /* set auto Baudrate detection parameters if detection is enabled */ if (huart->AdvancedInit.AutoBaudRateEnable == UART_ADVFEATURE_AUTOBAUDRATE_ENABLE) - 8004996: 687b ldr r3, [r7, #4] - 8004998: 6c5a ldr r2, [r3, #68] @ 0x44 - 800499a: 2380 movs r3, #128 @ 0x80 - 800499c: 035b lsls r3, r3, #13 - 800499e: 429a cmp r2, r3 - 80049a0: d10b bne.n 80049ba + 8004cba: 687b ldr r3, [r7, #4] + 8004cbc: 6c5a ldr r2, [r3, #68] @ 0x44 + 8004cbe: 2380 movs r3, #128 @ 0x80 + 8004cc0: 035b lsls r3, r3, #13 + 8004cc2: 429a cmp r2, r3 + 8004cc4: d10b bne.n 8004cde { assert_param(IS_UART_ADVFEATURE_AUTOBAUDRATEMODE(huart->AdvancedInit.AutoBaudRateMode)); MODIFY_REG(huart->Instance->CR2, USART_CR2_ABRMODE, huart->AdvancedInit.AutoBaudRateMode); - 80049a2: 687b ldr r3, [r7, #4] - 80049a4: 681b ldr r3, [r3, #0] - 80049a6: 685b ldr r3, [r3, #4] - 80049a8: 4a15 ldr r2, [pc, #84] @ (8004a00 ) - 80049aa: 4013 ands r3, r2 - 80049ac: 0019 movs r1, r3 - 80049ae: 687b ldr r3, [r7, #4] - 80049b0: 6c9a ldr r2, [r3, #72] @ 0x48 - 80049b2: 687b ldr r3, [r7, #4] - 80049b4: 681b ldr r3, [r3, #0] - 80049b6: 430a orrs r2, r1 - 80049b8: 605a str r2, [r3, #4] + 8004cc6: 687b ldr r3, [r7, #4] + 8004cc8: 681b ldr r3, [r3, #0] + 8004cca: 685b ldr r3, [r3, #4] + 8004ccc: 4a15 ldr r2, [pc, #84] @ (8004d24 ) + 8004cce: 4013 ands r3, r2 + 8004cd0: 0019 movs r1, r3 + 8004cd2: 687b ldr r3, [r7, #4] + 8004cd4: 6c9a ldr r2, [r3, #72] @ 0x48 + 8004cd6: 687b ldr r3, [r7, #4] + 8004cd8: 681b ldr r3, [r3, #0] + 8004cda: 430a orrs r2, r1 + 8004cdc: 605a str r2, [r3, #4] } } /* if required, configure MSB first on communication line */ if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_MSBFIRST_INIT)) - 80049ba: 687b ldr r3, [r7, #4] - 80049bc: 6a9b ldr r3, [r3, #40] @ 0x28 - 80049be: 2280 movs r2, #128 @ 0x80 - 80049c0: 4013 ands r3, r2 - 80049c2: d00b beq.n 80049dc + 8004cde: 687b ldr r3, [r7, #4] + 8004ce0: 6a9b ldr r3, [r3, #40] @ 0x28 + 8004ce2: 2280 movs r2, #128 @ 0x80 + 8004ce4: 4013 ands r3, r2 + 8004ce6: d00b beq.n 8004d00 { assert_param(IS_UART_ADVFEATURE_MSBFIRST(huart->AdvancedInit.MSBFirst)); MODIFY_REG(huart->Instance->CR2, USART_CR2_MSBFIRST, huart->AdvancedInit.MSBFirst); - 80049c4: 687b ldr r3, [r7, #4] - 80049c6: 681b ldr r3, [r3, #0] - 80049c8: 685b ldr r3, [r3, #4] - 80049ca: 4a0e ldr r2, [pc, #56] @ (8004a04 ) - 80049cc: 4013 ands r3, r2 - 80049ce: 0019 movs r1, r3 - 80049d0: 687b ldr r3, [r7, #4] - 80049d2: 6cda ldr r2, [r3, #76] @ 0x4c - 80049d4: 687b ldr r3, [r7, #4] - 80049d6: 681b ldr r3, [r3, #0] - 80049d8: 430a orrs r2, r1 - 80049da: 605a str r2, [r3, #4] + 8004ce8: 687b ldr r3, [r7, #4] + 8004cea: 681b ldr r3, [r3, #0] + 8004cec: 685b ldr r3, [r3, #4] + 8004cee: 4a0e ldr r2, [pc, #56] @ (8004d28 ) + 8004cf0: 4013 ands r3, r2 + 8004cf2: 0019 movs r1, r3 + 8004cf4: 687b ldr r3, [r7, #4] + 8004cf6: 6cda ldr r2, [r3, #76] @ 0x4c + 8004cf8: 687b ldr r3, [r7, #4] + 8004cfa: 681b ldr r3, [r3, #0] + 8004cfc: 430a orrs r2, r1 + 8004cfe: 605a str r2, [r3, #4] } } - 80049dc: 46c0 nop @ (mov r8, r8) - 80049de: 46bd mov sp, r7 - 80049e0: b002 add sp, #8 - 80049e2: bd80 pop {r7, pc} - 80049e4: ffff7fff .word 0xffff7fff - 80049e8: fffdffff .word 0xfffdffff - 80049ec: fffeffff .word 0xfffeffff - 80049f0: fffbffff .word 0xfffbffff - 80049f4: ffffefff .word 0xffffefff - 80049f8: ffffdfff .word 0xffffdfff - 80049fc: ffefffff .word 0xffefffff - 8004a00: ff9fffff .word 0xff9fffff - 8004a04: fff7ffff .word 0xfff7ffff + 8004d00: 46c0 nop @ (mov r8, r8) + 8004d02: 46bd mov sp, r7 + 8004d04: b002 add sp, #8 + 8004d06: bd80 pop {r7, pc} + 8004d08: ffff7fff .word 0xffff7fff + 8004d0c: fffdffff .word 0xfffdffff + 8004d10: fffeffff .word 0xfffeffff + 8004d14: fffbffff .word 0xfffbffff + 8004d18: ffffefff .word 0xffffefff + 8004d1c: ffffdfff .word 0xffffdfff + 8004d20: ffefffff .word 0xffefffff + 8004d24: ff9fffff .word 0xff9fffff + 8004d28: fff7ffff .word 0xfff7ffff -08004a08 : +08004d2c : * @brief Check the UART Idle State. * @param huart UART handle. * @retval HAL status */ HAL_StatusTypeDef UART_CheckIdleState(UART_HandleTypeDef *huart) { - 8004a08: b580 push {r7, lr} - 8004a0a: b092 sub sp, #72 @ 0x48 - 8004a0c: af02 add r7, sp, #8 - 8004a0e: 6078 str r0, [r7, #4] + 8004d2c: b580 push {r7, lr} + 8004d2e: b092 sub sp, #72 @ 0x48 + 8004d30: af02 add r7, sp, #8 + 8004d32: 6078 str r0, [r7, #4] uint32_t tickstart; /* Initialize the UART ErrorCode */ huart->ErrorCode = HAL_UART_ERROR_NONE; - 8004a10: 687b ldr r3, [r7, #4] - 8004a12: 2290 movs r2, #144 @ 0x90 - 8004a14: 2100 movs r1, #0 - 8004a16: 5099 str r1, [r3, r2] + 8004d34: 687b ldr r3, [r7, #4] + 8004d36: 2290 movs r2, #144 @ 0x90 + 8004d38: 2100 movs r1, #0 + 8004d3a: 5099 str r1, [r3, r2] /* Init tickstart for timeout management */ tickstart = HAL_GetTick(); - 8004a18: f7fc fd88 bl 800152c - 8004a1c: 0003 movs r3, r0 - 8004a1e: 63fb str r3, [r7, #60] @ 0x3c + 8004d3c: f7fc fc96 bl 800166c + 8004d40: 0003 movs r3, r0 + 8004d42: 63fb str r3, [r7, #60] @ 0x3c /* Check if the Transmitter is enabled */ if ((huart->Instance->CR1 & USART_CR1_TE) == USART_CR1_TE) - 8004a20: 687b ldr r3, [r7, #4] - 8004a22: 681b ldr r3, [r3, #0] - 8004a24: 681b ldr r3, [r3, #0] - 8004a26: 2208 movs r2, #8 - 8004a28: 4013 ands r3, r2 - 8004a2a: 2b08 cmp r3, #8 - 8004a2c: d12d bne.n 8004a8a + 8004d44: 687b ldr r3, [r7, #4] + 8004d46: 681b ldr r3, [r3, #0] + 8004d48: 681b ldr r3, [r3, #0] + 8004d4a: 2208 movs r2, #8 + 8004d4c: 4013 ands r3, r2 + 8004d4e: 2b08 cmp r3, #8 + 8004d50: d12d bne.n 8004dae { /* Wait until TEACK flag is set */ if (UART_WaitOnFlagUntilTimeout(huart, USART_ISR_TEACK, RESET, tickstart, HAL_UART_TIMEOUT_VALUE) != HAL_OK) - 8004a2e: 6bfb ldr r3, [r7, #60] @ 0x3c - 8004a30: 2280 movs r2, #128 @ 0x80 - 8004a32: 0391 lsls r1, r2, #14 - 8004a34: 6878 ldr r0, [r7, #4] - 8004a36: 4a47 ldr r2, [pc, #284] @ (8004b54 ) - 8004a38: 9200 str r2, [sp, #0] - 8004a3a: 2200 movs r2, #0 - 8004a3c: f000 f88e bl 8004b5c - 8004a40: 1e03 subs r3, r0, #0 - 8004a42: d022 beq.n 8004a8a + 8004d52: 6bfb ldr r3, [r7, #60] @ 0x3c + 8004d54: 2280 movs r2, #128 @ 0x80 + 8004d56: 0391 lsls r1, r2, #14 + 8004d58: 6878 ldr r0, [r7, #4] + 8004d5a: 4a47 ldr r2, [pc, #284] @ (8004e78 ) + 8004d5c: 9200 str r2, [sp, #0] + 8004d5e: 2200 movs r2, #0 + 8004d60: f000 f88e bl 8004e80 + 8004d64: 1e03 subs r3, r0, #0 + 8004d66: d022 beq.n 8004dae */ __STATIC_FORCEINLINE uint32_t __get_PRIMASK(void) { uint32_t result; __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); - 8004a44: f3ef 8310 mrs r3, PRIMASK - 8004a48: 627b str r3, [r7, #36] @ 0x24 + 8004d68: f3ef 8310 mrs r3, PRIMASK + 8004d6c: 627b str r3, [r7, #36] @ 0x24 return(result); - 8004a4a: 6a7b ldr r3, [r7, #36] @ 0x24 + 8004d6e: 6a7b ldr r3, [r7, #36] @ 0x24 { /* Disable TXE interrupt for the interrupt process */ ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_TXEIE_TXFNFIE)); - 8004a4c: 63bb str r3, [r7, #56] @ 0x38 - 8004a4e: 2301 movs r3, #1 - 8004a50: 62bb str r3, [r7, #40] @ 0x28 + 8004d70: 63bb str r3, [r7, #56] @ 0x38 + 8004d72: 2301 movs r3, #1 + 8004d74: 62bb str r3, [r7, #40] @ 0x28 \details Assigns the given value to the Priority Mask Register. \param [in] priMask Priority Mask */ __STATIC_FORCEINLINE void __set_PRIMASK(uint32_t priMask) { __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); - 8004a52: 6abb ldr r3, [r7, #40] @ 0x28 - 8004a54: f383 8810 msr PRIMASK, r3 + 8004d76: 6abb ldr r3, [r7, #40] @ 0x28 + 8004d78: f383 8810 msr PRIMASK, r3 } - 8004a58: 46c0 nop @ (mov r8, r8) - 8004a5a: 687b ldr r3, [r7, #4] - 8004a5c: 681b ldr r3, [r3, #0] - 8004a5e: 681a ldr r2, [r3, #0] - 8004a60: 687b ldr r3, [r7, #4] - 8004a62: 681b ldr r3, [r3, #0] - 8004a64: 2180 movs r1, #128 @ 0x80 - 8004a66: 438a bics r2, r1 - 8004a68: 601a str r2, [r3, #0] - 8004a6a: 6bbb ldr r3, [r7, #56] @ 0x38 - 8004a6c: 62fb str r3, [r7, #44] @ 0x2c + 8004d7c: 46c0 nop @ (mov r8, r8) + 8004d7e: 687b ldr r3, [r7, #4] + 8004d80: 681b ldr r3, [r3, #0] + 8004d82: 681a ldr r2, [r3, #0] + 8004d84: 687b ldr r3, [r7, #4] + 8004d86: 681b ldr r3, [r3, #0] + 8004d88: 2180 movs r1, #128 @ 0x80 + 8004d8a: 438a bics r2, r1 + 8004d8c: 601a str r2, [r3, #0] + 8004d8e: 6bbb ldr r3, [r7, #56] @ 0x38 + 8004d90: 62fb str r3, [r7, #44] @ 0x2c __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); - 8004a6e: 6afb ldr r3, [r7, #44] @ 0x2c - 8004a70: f383 8810 msr PRIMASK, r3 + 8004d92: 6afb ldr r3, [r7, #44] @ 0x2c + 8004d94: f383 8810 msr PRIMASK, r3 } - 8004a74: 46c0 nop @ (mov r8, r8) + 8004d98: 46c0 nop @ (mov r8, r8) huart->gState = HAL_UART_STATE_READY; - 8004a76: 687b ldr r3, [r7, #4] - 8004a78: 2288 movs r2, #136 @ 0x88 - 8004a7a: 2120 movs r1, #32 - 8004a7c: 5099 str r1, [r3, r2] + 8004d9a: 687b ldr r3, [r7, #4] + 8004d9c: 2288 movs r2, #136 @ 0x88 + 8004d9e: 2120 movs r1, #32 + 8004da0: 5099 str r1, [r3, r2] __HAL_UNLOCK(huart); - 8004a7e: 687b ldr r3, [r7, #4] - 8004a80: 2284 movs r2, #132 @ 0x84 - 8004a82: 2100 movs r1, #0 - 8004a84: 5499 strb r1, [r3, r2] + 8004da2: 687b ldr r3, [r7, #4] + 8004da4: 2284 movs r2, #132 @ 0x84 + 8004da6: 2100 movs r1, #0 + 8004da8: 5499 strb r1, [r3, r2] /* Timeout occurred */ return HAL_TIMEOUT; - 8004a86: 2303 movs r3, #3 - 8004a88: e060 b.n 8004b4c + 8004daa: 2303 movs r3, #3 + 8004dac: e060 b.n 8004e70 } } /* Check if the Receiver is enabled */ if ((huart->Instance->CR1 & USART_CR1_RE) == USART_CR1_RE) - 8004a8a: 687b ldr r3, [r7, #4] - 8004a8c: 681b ldr r3, [r3, #0] - 8004a8e: 681b ldr r3, [r3, #0] - 8004a90: 2204 movs r2, #4 - 8004a92: 4013 ands r3, r2 - 8004a94: 2b04 cmp r3, #4 - 8004a96: d146 bne.n 8004b26 + 8004dae: 687b ldr r3, [r7, #4] + 8004db0: 681b ldr r3, [r3, #0] + 8004db2: 681b ldr r3, [r3, #0] + 8004db4: 2204 movs r2, #4 + 8004db6: 4013 ands r3, r2 + 8004db8: 2b04 cmp r3, #4 + 8004dba: d146 bne.n 8004e4a { /* Wait until REACK flag is set */ if (UART_WaitOnFlagUntilTimeout(huart, USART_ISR_REACK, RESET, tickstart, HAL_UART_TIMEOUT_VALUE) != HAL_OK) - 8004a98: 6bfb ldr r3, [r7, #60] @ 0x3c - 8004a9a: 2280 movs r2, #128 @ 0x80 - 8004a9c: 03d1 lsls r1, r2, #15 - 8004a9e: 6878 ldr r0, [r7, #4] - 8004aa0: 4a2c ldr r2, [pc, #176] @ (8004b54 ) - 8004aa2: 9200 str r2, [sp, #0] - 8004aa4: 2200 movs r2, #0 - 8004aa6: f000 f859 bl 8004b5c - 8004aaa: 1e03 subs r3, r0, #0 - 8004aac: d03b beq.n 8004b26 + 8004dbc: 6bfb ldr r3, [r7, #60] @ 0x3c + 8004dbe: 2280 movs r2, #128 @ 0x80 + 8004dc0: 03d1 lsls r1, r2, #15 + 8004dc2: 6878 ldr r0, [r7, #4] + 8004dc4: 4a2c ldr r2, [pc, #176] @ (8004e78 ) + 8004dc6: 9200 str r2, [sp, #0] + 8004dc8: 2200 movs r2, #0 + 8004dca: f000 f859 bl 8004e80 + 8004dce: 1e03 subs r3, r0, #0 + 8004dd0: d03b beq.n 8004e4a __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); - 8004aae: f3ef 8310 mrs r3, PRIMASK - 8004ab2: 60fb str r3, [r7, #12] + 8004dd2: f3ef 8310 mrs r3, PRIMASK + 8004dd6: 60fb str r3, [r7, #12] return(result); - 8004ab4: 68fb ldr r3, [r7, #12] + 8004dd8: 68fb ldr r3, [r7, #12] { /* Disable RXNE, PE and ERR (Frame error, noise error, overrun error) interrupts for the interrupt process */ ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE)); - 8004ab6: 637b str r3, [r7, #52] @ 0x34 - 8004ab8: 2301 movs r3, #1 - 8004aba: 613b str r3, [r7, #16] + 8004dda: 637b str r3, [r7, #52] @ 0x34 + 8004ddc: 2301 movs r3, #1 + 8004dde: 613b str r3, [r7, #16] __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); - 8004abc: 693b ldr r3, [r7, #16] - 8004abe: f383 8810 msr PRIMASK, r3 + 8004de0: 693b ldr r3, [r7, #16] + 8004de2: f383 8810 msr PRIMASK, r3 } - 8004ac2: 46c0 nop @ (mov r8, r8) - 8004ac4: 687b ldr r3, [r7, #4] - 8004ac6: 681b ldr r3, [r3, #0] - 8004ac8: 681a ldr r2, [r3, #0] - 8004aca: 687b ldr r3, [r7, #4] - 8004acc: 681b ldr r3, [r3, #0] - 8004ace: 4922 ldr r1, [pc, #136] @ (8004b58 ) - 8004ad0: 400a ands r2, r1 - 8004ad2: 601a str r2, [r3, #0] - 8004ad4: 6b7b ldr r3, [r7, #52] @ 0x34 - 8004ad6: 617b str r3, [r7, #20] + 8004de6: 46c0 nop @ (mov r8, r8) + 8004de8: 687b ldr r3, [r7, #4] + 8004dea: 681b ldr r3, [r3, #0] + 8004dec: 681a ldr r2, [r3, #0] + 8004dee: 687b ldr r3, [r7, #4] + 8004df0: 681b ldr r3, [r3, #0] + 8004df2: 4922 ldr r1, [pc, #136] @ (8004e7c ) + 8004df4: 400a ands r2, r1 + 8004df6: 601a str r2, [r3, #0] + 8004df8: 6b7b ldr r3, [r7, #52] @ 0x34 + 8004dfa: 617b str r3, [r7, #20] __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); - 8004ad8: 697b ldr r3, [r7, #20] - 8004ada: f383 8810 msr PRIMASK, r3 + 8004dfc: 697b ldr r3, [r7, #20] + 8004dfe: f383 8810 msr PRIMASK, r3 } - 8004ade: 46c0 nop @ (mov r8, r8) + 8004e02: 46c0 nop @ (mov r8, r8) __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); - 8004ae0: f3ef 8310 mrs r3, PRIMASK - 8004ae4: 61bb str r3, [r7, #24] + 8004e04: f3ef 8310 mrs r3, PRIMASK + 8004e08: 61bb str r3, [r7, #24] return(result); - 8004ae6: 69bb ldr r3, [r7, #24] + 8004e0a: 69bb ldr r3, [r7, #24] ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE); - 8004ae8: 633b str r3, [r7, #48] @ 0x30 - 8004aea: 2301 movs r3, #1 - 8004aec: 61fb str r3, [r7, #28] + 8004e0c: 633b str r3, [r7, #48] @ 0x30 + 8004e0e: 2301 movs r3, #1 + 8004e10: 61fb str r3, [r7, #28] __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); - 8004aee: 69fb ldr r3, [r7, #28] - 8004af0: f383 8810 msr PRIMASK, r3 + 8004e12: 69fb ldr r3, [r7, #28] + 8004e14: f383 8810 msr PRIMASK, r3 } - 8004af4: 46c0 nop @ (mov r8, r8) - 8004af6: 687b ldr r3, [r7, #4] - 8004af8: 681b ldr r3, [r3, #0] - 8004afa: 689a ldr r2, [r3, #8] - 8004afc: 687b ldr r3, [r7, #4] - 8004afe: 681b ldr r3, [r3, #0] - 8004b00: 2101 movs r1, #1 - 8004b02: 438a bics r2, r1 - 8004b04: 609a str r2, [r3, #8] - 8004b06: 6b3b ldr r3, [r7, #48] @ 0x30 - 8004b08: 623b str r3, [r7, #32] + 8004e18: 46c0 nop @ (mov r8, r8) + 8004e1a: 687b ldr r3, [r7, #4] + 8004e1c: 681b ldr r3, [r3, #0] + 8004e1e: 689a ldr r2, [r3, #8] + 8004e20: 687b ldr r3, [r7, #4] + 8004e22: 681b ldr r3, [r3, #0] + 8004e24: 2101 movs r1, #1 + 8004e26: 438a bics r2, r1 + 8004e28: 609a str r2, [r3, #8] + 8004e2a: 6b3b ldr r3, [r7, #48] @ 0x30 + 8004e2c: 623b str r3, [r7, #32] __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); - 8004b0a: 6a3b ldr r3, [r7, #32] - 8004b0c: f383 8810 msr PRIMASK, r3 + 8004e2e: 6a3b ldr r3, [r7, #32] + 8004e30: f383 8810 msr PRIMASK, r3 } - 8004b10: 46c0 nop @ (mov r8, r8) + 8004e34: 46c0 nop @ (mov r8, r8) huart->RxState = HAL_UART_STATE_READY; - 8004b12: 687b ldr r3, [r7, #4] - 8004b14: 228c movs r2, #140 @ 0x8c - 8004b16: 2120 movs r1, #32 - 8004b18: 5099 str r1, [r3, r2] + 8004e36: 687b ldr r3, [r7, #4] + 8004e38: 228c movs r2, #140 @ 0x8c + 8004e3a: 2120 movs r1, #32 + 8004e3c: 5099 str r1, [r3, r2] __HAL_UNLOCK(huart); - 8004b1a: 687b ldr r3, [r7, #4] - 8004b1c: 2284 movs r2, #132 @ 0x84 - 8004b1e: 2100 movs r1, #0 - 8004b20: 5499 strb r1, [r3, r2] + 8004e3e: 687b ldr r3, [r7, #4] + 8004e40: 2284 movs r2, #132 @ 0x84 + 8004e42: 2100 movs r1, #0 + 8004e44: 5499 strb r1, [r3, r2] /* Timeout occurred */ return HAL_TIMEOUT; - 8004b22: 2303 movs r3, #3 - 8004b24: e012 b.n 8004b4c + 8004e46: 2303 movs r3, #3 + 8004e48: e012 b.n 8004e70 } } /* Initialize the UART State */ huart->gState = HAL_UART_STATE_READY; - 8004b26: 687b ldr r3, [r7, #4] - 8004b28: 2288 movs r2, #136 @ 0x88 - 8004b2a: 2120 movs r1, #32 - 8004b2c: 5099 str r1, [r3, r2] + 8004e4a: 687b ldr r3, [r7, #4] + 8004e4c: 2288 movs r2, #136 @ 0x88 + 8004e4e: 2120 movs r1, #32 + 8004e50: 5099 str r1, [r3, r2] huart->RxState = HAL_UART_STATE_READY; - 8004b2e: 687b ldr r3, [r7, #4] - 8004b30: 228c movs r2, #140 @ 0x8c - 8004b32: 2120 movs r1, #32 - 8004b34: 5099 str r1, [r3, r2] + 8004e52: 687b ldr r3, [r7, #4] + 8004e54: 228c movs r2, #140 @ 0x8c + 8004e56: 2120 movs r1, #32 + 8004e58: 5099 str r1, [r3, r2] huart->ReceptionType = HAL_UART_RECEPTION_STANDARD; - 8004b36: 687b ldr r3, [r7, #4] - 8004b38: 2200 movs r2, #0 - 8004b3a: 66da str r2, [r3, #108] @ 0x6c + 8004e5a: 687b ldr r3, [r7, #4] + 8004e5c: 2200 movs r2, #0 + 8004e5e: 66da str r2, [r3, #108] @ 0x6c huart->RxEventType = HAL_UART_RXEVENT_TC; - 8004b3c: 687b ldr r3, [r7, #4] - 8004b3e: 2200 movs r2, #0 - 8004b40: 671a str r2, [r3, #112] @ 0x70 + 8004e60: 687b ldr r3, [r7, #4] + 8004e62: 2200 movs r2, #0 + 8004e64: 671a str r2, [r3, #112] @ 0x70 __HAL_UNLOCK(huart); - 8004b42: 687b ldr r3, [r7, #4] - 8004b44: 2284 movs r2, #132 @ 0x84 - 8004b46: 2100 movs r1, #0 - 8004b48: 5499 strb r1, [r3, r2] + 8004e66: 687b ldr r3, [r7, #4] + 8004e68: 2284 movs r2, #132 @ 0x84 + 8004e6a: 2100 movs r1, #0 + 8004e6c: 5499 strb r1, [r3, r2] return HAL_OK; - 8004b4a: 2300 movs r3, #0 + 8004e6e: 2300 movs r3, #0 } - 8004b4c: 0018 movs r0, r3 - 8004b4e: 46bd mov sp, r7 - 8004b50: b010 add sp, #64 @ 0x40 - 8004b52: bd80 pop {r7, pc} - 8004b54: 01ffffff .word 0x01ffffff - 8004b58: fffffedf .word 0xfffffedf + 8004e70: 0018 movs r0, r3 + 8004e72: 46bd mov sp, r7 + 8004e74: b010 add sp, #64 @ 0x40 + 8004e76: bd80 pop {r7, pc} + 8004e78: 01ffffff .word 0x01ffffff + 8004e7c: fffffedf .word 0xfffffedf -08004b5c : +08004e80 : * @param Timeout Timeout duration * @retval HAL status */ HAL_StatusTypeDef UART_WaitOnFlagUntilTimeout(UART_HandleTypeDef *huart, uint32_t Flag, FlagStatus Status, uint32_t Tickstart, uint32_t Timeout) { - 8004b5c: b580 push {r7, lr} - 8004b5e: b084 sub sp, #16 - 8004b60: af00 add r7, sp, #0 - 8004b62: 60f8 str r0, [r7, #12] - 8004b64: 60b9 str r1, [r7, #8] - 8004b66: 603b str r3, [r7, #0] - 8004b68: 1dfb adds r3, r7, #7 - 8004b6a: 701a strb r2, [r3, #0] + 8004e80: b580 push {r7, lr} + 8004e82: b084 sub sp, #16 + 8004e84: af00 add r7, sp, #0 + 8004e86: 60f8 str r0, [r7, #12] + 8004e88: 60b9 str r1, [r7, #8] + 8004e8a: 603b str r3, [r7, #0] + 8004e8c: 1dfb adds r3, r7, #7 + 8004e8e: 701a strb r2, [r3, #0] /* Wait until flag is set */ while ((__HAL_UART_GET_FLAG(huart, Flag) ? SET : RESET) == Status) - 8004b6c: e051 b.n 8004c12 + 8004e90: e051 b.n 8004f36 { /* Check for the Timeout */ if (Timeout != HAL_MAX_DELAY) - 8004b6e: 69bb ldr r3, [r7, #24] - 8004b70: 3301 adds r3, #1 - 8004b72: d04e beq.n 8004c12 + 8004e92: 69bb ldr r3, [r7, #24] + 8004e94: 3301 adds r3, #1 + 8004e96: d04e beq.n 8004f36 { if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U)) - 8004b74: f7fc fcda bl 800152c - 8004b78: 0002 movs r2, r0 - 8004b7a: 683b ldr r3, [r7, #0] - 8004b7c: 1ad3 subs r3, r2, r3 - 8004b7e: 69ba ldr r2, [r7, #24] - 8004b80: 429a cmp r2, r3 - 8004b82: d302 bcc.n 8004b8a - 8004b84: 69bb ldr r3, [r7, #24] - 8004b86: 2b00 cmp r3, #0 - 8004b88: d101 bne.n 8004b8e + 8004e98: f7fc fbe8 bl 800166c + 8004e9c: 0002 movs r2, r0 + 8004e9e: 683b ldr r3, [r7, #0] + 8004ea0: 1ad3 subs r3, r2, r3 + 8004ea2: 69ba ldr r2, [r7, #24] + 8004ea4: 429a cmp r2, r3 + 8004ea6: d302 bcc.n 8004eae + 8004ea8: 69bb ldr r3, [r7, #24] + 8004eaa: 2b00 cmp r3, #0 + 8004eac: d101 bne.n 8004eb2 { return HAL_TIMEOUT; - 8004b8a: 2303 movs r3, #3 - 8004b8c: e051 b.n 8004c32 + 8004eae: 2303 movs r3, #3 + 8004eb0: e051 b.n 8004f56 } if ((READ_BIT(huart->Instance->CR1, USART_CR1_RE) != 0U) && (Flag != UART_FLAG_TXE) && (Flag != UART_FLAG_TC)) - 8004b8e: 68fb ldr r3, [r7, #12] - 8004b90: 681b ldr r3, [r3, #0] - 8004b92: 681b ldr r3, [r3, #0] - 8004b94: 2204 movs r2, #4 - 8004b96: 4013 ands r3, r2 - 8004b98: d03b beq.n 8004c12 - 8004b9a: 68bb ldr r3, [r7, #8] - 8004b9c: 2b80 cmp r3, #128 @ 0x80 - 8004b9e: d038 beq.n 8004c12 - 8004ba0: 68bb ldr r3, [r7, #8] - 8004ba2: 2b40 cmp r3, #64 @ 0x40 - 8004ba4: d035 beq.n 8004c12 + 8004eb2: 68fb ldr r3, [r7, #12] + 8004eb4: 681b ldr r3, [r3, #0] + 8004eb6: 681b ldr r3, [r3, #0] + 8004eb8: 2204 movs r2, #4 + 8004eba: 4013 ands r3, r2 + 8004ebc: d03b beq.n 8004f36 + 8004ebe: 68bb ldr r3, [r7, #8] + 8004ec0: 2b80 cmp r3, #128 @ 0x80 + 8004ec2: d038 beq.n 8004f36 + 8004ec4: 68bb ldr r3, [r7, #8] + 8004ec6: 2b40 cmp r3, #64 @ 0x40 + 8004ec8: d035 beq.n 8004f36 { if (__HAL_UART_GET_FLAG(huart, UART_FLAG_ORE) == SET) - 8004ba6: 68fb ldr r3, [r7, #12] - 8004ba8: 681b ldr r3, [r3, #0] - 8004baa: 69db ldr r3, [r3, #28] - 8004bac: 2208 movs r2, #8 - 8004bae: 4013 ands r3, r2 - 8004bb0: 2b08 cmp r3, #8 - 8004bb2: d111 bne.n 8004bd8 + 8004eca: 68fb ldr r3, [r7, #12] + 8004ecc: 681b ldr r3, [r3, #0] + 8004ece: 69db ldr r3, [r3, #28] + 8004ed0: 2208 movs r2, #8 + 8004ed2: 4013 ands r3, r2 + 8004ed4: 2b08 cmp r3, #8 + 8004ed6: d111 bne.n 8004efc { /* Clear Overrun Error flag*/ __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_OREF); - 8004bb4: 68fb ldr r3, [r7, #12] - 8004bb6: 681b ldr r3, [r3, #0] - 8004bb8: 2208 movs r2, #8 - 8004bba: 621a str r2, [r3, #32] + 8004ed8: 68fb ldr r3, [r7, #12] + 8004eda: 681b ldr r3, [r3, #0] + 8004edc: 2208 movs r2, #8 + 8004ede: 621a str r2, [r3, #32] /* Blocking error : transfer is aborted Set the UART state ready to be able to start again the process, Disable Rx Interrupts if ongoing */ UART_EndRxTransfer(huart); - 8004bbc: 68fb ldr r3, [r7, #12] - 8004bbe: 0018 movs r0, r3 - 8004bc0: f000 f83c bl 8004c3c + 8004ee0: 68fb ldr r3, [r7, #12] + 8004ee2: 0018 movs r0, r3 + 8004ee4: f000 f83c bl 8004f60 huart->ErrorCode = HAL_UART_ERROR_ORE; - 8004bc4: 68fb ldr r3, [r7, #12] - 8004bc6: 2290 movs r2, #144 @ 0x90 - 8004bc8: 2108 movs r1, #8 - 8004bca: 5099 str r1, [r3, r2] + 8004ee8: 68fb ldr r3, [r7, #12] + 8004eea: 2290 movs r2, #144 @ 0x90 + 8004eec: 2108 movs r1, #8 + 8004eee: 5099 str r1, [r3, r2] /* Process Unlocked */ __HAL_UNLOCK(huart); - 8004bcc: 68fb ldr r3, [r7, #12] - 8004bce: 2284 movs r2, #132 @ 0x84 - 8004bd0: 2100 movs r1, #0 - 8004bd2: 5499 strb r1, [r3, r2] + 8004ef0: 68fb ldr r3, [r7, #12] + 8004ef2: 2284 movs r2, #132 @ 0x84 + 8004ef4: 2100 movs r1, #0 + 8004ef6: 5499 strb r1, [r3, r2] return HAL_ERROR; - 8004bd4: 2301 movs r3, #1 - 8004bd6: e02c b.n 8004c32 + 8004ef8: 2301 movs r3, #1 + 8004efa: e02c b.n 8004f56 } if (__HAL_UART_GET_FLAG(huart, UART_FLAG_RTOF) == SET) - 8004bd8: 68fb ldr r3, [r7, #12] - 8004bda: 681b ldr r3, [r3, #0] - 8004bdc: 69da ldr r2, [r3, #28] - 8004bde: 2380 movs r3, #128 @ 0x80 - 8004be0: 011b lsls r3, r3, #4 - 8004be2: 401a ands r2, r3 - 8004be4: 2380 movs r3, #128 @ 0x80 - 8004be6: 011b lsls r3, r3, #4 - 8004be8: 429a cmp r2, r3 - 8004bea: d112 bne.n 8004c12 + 8004efc: 68fb ldr r3, [r7, #12] + 8004efe: 681b ldr r3, [r3, #0] + 8004f00: 69da ldr r2, [r3, #28] + 8004f02: 2380 movs r3, #128 @ 0x80 + 8004f04: 011b lsls r3, r3, #4 + 8004f06: 401a ands r2, r3 + 8004f08: 2380 movs r3, #128 @ 0x80 + 8004f0a: 011b lsls r3, r3, #4 + 8004f0c: 429a cmp r2, r3 + 8004f0e: d112 bne.n 8004f36 { /* Clear Receiver Timeout flag*/ __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_RTOF); - 8004bec: 68fb ldr r3, [r7, #12] - 8004bee: 681b ldr r3, [r3, #0] - 8004bf0: 2280 movs r2, #128 @ 0x80 - 8004bf2: 0112 lsls r2, r2, #4 - 8004bf4: 621a str r2, [r3, #32] + 8004f10: 68fb ldr r3, [r7, #12] + 8004f12: 681b ldr r3, [r3, #0] + 8004f14: 2280 movs r2, #128 @ 0x80 + 8004f16: 0112 lsls r2, r2, #4 + 8004f18: 621a str r2, [r3, #32] /* Blocking error : transfer is aborted Set the UART state ready to be able to start again the process, Disable Rx Interrupts if ongoing */ UART_EndRxTransfer(huart); - 8004bf6: 68fb ldr r3, [r7, #12] - 8004bf8: 0018 movs r0, r3 - 8004bfa: f000 f81f bl 8004c3c + 8004f1a: 68fb ldr r3, [r7, #12] + 8004f1c: 0018 movs r0, r3 + 8004f1e: f000 f81f bl 8004f60 huart->ErrorCode = HAL_UART_ERROR_RTO; - 8004bfe: 68fb ldr r3, [r7, #12] - 8004c00: 2290 movs r2, #144 @ 0x90 - 8004c02: 2120 movs r1, #32 - 8004c04: 5099 str r1, [r3, r2] + 8004f22: 68fb ldr r3, [r7, #12] + 8004f24: 2290 movs r2, #144 @ 0x90 + 8004f26: 2120 movs r1, #32 + 8004f28: 5099 str r1, [r3, r2] /* Process Unlocked */ __HAL_UNLOCK(huart); - 8004c06: 68fb ldr r3, [r7, #12] - 8004c08: 2284 movs r2, #132 @ 0x84 - 8004c0a: 2100 movs r1, #0 - 8004c0c: 5499 strb r1, [r3, r2] + 8004f2a: 68fb ldr r3, [r7, #12] + 8004f2c: 2284 movs r2, #132 @ 0x84 + 8004f2e: 2100 movs r1, #0 + 8004f30: 5499 strb r1, [r3, r2] return HAL_TIMEOUT; - 8004c0e: 2303 movs r3, #3 - 8004c10: e00f b.n 8004c32 + 8004f32: 2303 movs r3, #3 + 8004f34: e00f b.n 8004f56 while ((__HAL_UART_GET_FLAG(huart, Flag) ? SET : RESET) == Status) - 8004c12: 68fb ldr r3, [r7, #12] - 8004c14: 681b ldr r3, [r3, #0] - 8004c16: 69db ldr r3, [r3, #28] - 8004c18: 68ba ldr r2, [r7, #8] - 8004c1a: 4013 ands r3, r2 - 8004c1c: 68ba ldr r2, [r7, #8] - 8004c1e: 1ad3 subs r3, r2, r3 - 8004c20: 425a negs r2, r3 - 8004c22: 4153 adcs r3, r2 - 8004c24: b2db uxtb r3, r3 - 8004c26: 001a movs r2, r3 - 8004c28: 1dfb adds r3, r7, #7 - 8004c2a: 781b ldrb r3, [r3, #0] - 8004c2c: 429a cmp r2, r3 - 8004c2e: d09e beq.n 8004b6e + 8004f36: 68fb ldr r3, [r7, #12] + 8004f38: 681b ldr r3, [r3, #0] + 8004f3a: 69db ldr r3, [r3, #28] + 8004f3c: 68ba ldr r2, [r7, #8] + 8004f3e: 4013 ands r3, r2 + 8004f40: 68ba ldr r2, [r7, #8] + 8004f42: 1ad3 subs r3, r2, r3 + 8004f44: 425a negs r2, r3 + 8004f46: 4153 adcs r3, r2 + 8004f48: b2db uxtb r3, r3 + 8004f4a: 001a movs r2, r3 + 8004f4c: 1dfb adds r3, r7, #7 + 8004f4e: 781b ldrb r3, [r3, #0] + 8004f50: 429a cmp r2, r3 + 8004f52: d09e beq.n 8004e92 } } } } return HAL_OK; - 8004c30: 2300 movs r3, #0 + 8004f54: 2300 movs r3, #0 } - 8004c32: 0018 movs r0, r3 - 8004c34: 46bd mov sp, r7 - 8004c36: b004 add sp, #16 - 8004c38: bd80 pop {r7, pc} + 8004f56: 0018 movs r0, r3 + 8004f58: 46bd mov sp, r7 + 8004f5a: b004 add sp, #16 + 8004f5c: bd80 pop {r7, pc} ... -08004c3c : +08004f60 : * @brief End ongoing Rx transfer on UART peripheral (following error detection or Reception completion). * @param huart UART handle. * @retval None */ static void UART_EndRxTransfer(UART_HandleTypeDef *huart) { - 8004c3c: b580 push {r7, lr} - 8004c3e: b08e sub sp, #56 @ 0x38 - 8004c40: af00 add r7, sp, #0 - 8004c42: 6078 str r0, [r7, #4] + 8004f60: b580 push {r7, lr} + 8004f62: b08e sub sp, #56 @ 0x38 + 8004f64: af00 add r7, sp, #0 + 8004f66: 6078 str r0, [r7, #4] __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); - 8004c44: f3ef 8310 mrs r3, PRIMASK - 8004c48: 617b str r3, [r7, #20] + 8004f68: f3ef 8310 mrs r3, PRIMASK + 8004f6c: 617b str r3, [r7, #20] return(result); - 8004c4a: 697b ldr r3, [r7, #20] + 8004f6e: 697b ldr r3, [r7, #20] /* Disable RXNE, PE and ERR (Frame error, noise error, overrun error) interrupts */ ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE)); - 8004c4c: 637b str r3, [r7, #52] @ 0x34 - 8004c4e: 2301 movs r3, #1 - 8004c50: 61bb str r3, [r7, #24] + 8004f70: 637b str r3, [r7, #52] @ 0x34 + 8004f72: 2301 movs r3, #1 + 8004f74: 61bb str r3, [r7, #24] __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); - 8004c52: 69bb ldr r3, [r7, #24] - 8004c54: f383 8810 msr PRIMASK, r3 + 8004f76: 69bb ldr r3, [r7, #24] + 8004f78: f383 8810 msr PRIMASK, r3 } - 8004c58: 46c0 nop @ (mov r8, r8) - 8004c5a: 687b ldr r3, [r7, #4] - 8004c5c: 681b ldr r3, [r3, #0] - 8004c5e: 681a ldr r2, [r3, #0] - 8004c60: 687b ldr r3, [r7, #4] - 8004c62: 681b ldr r3, [r3, #0] - 8004c64: 4926 ldr r1, [pc, #152] @ (8004d00 ) - 8004c66: 400a ands r2, r1 - 8004c68: 601a str r2, [r3, #0] - 8004c6a: 6b7b ldr r3, [r7, #52] @ 0x34 - 8004c6c: 61fb str r3, [r7, #28] + 8004f7c: 46c0 nop @ (mov r8, r8) + 8004f7e: 687b ldr r3, [r7, #4] + 8004f80: 681b ldr r3, [r3, #0] + 8004f82: 681a ldr r2, [r3, #0] + 8004f84: 687b ldr r3, [r7, #4] + 8004f86: 681b ldr r3, [r3, #0] + 8004f88: 4926 ldr r1, [pc, #152] @ (8005024 ) + 8004f8a: 400a ands r2, r1 + 8004f8c: 601a str r2, [r3, #0] + 8004f8e: 6b7b ldr r3, [r7, #52] @ 0x34 + 8004f90: 61fb str r3, [r7, #28] __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); - 8004c6e: 69fb ldr r3, [r7, #28] - 8004c70: f383 8810 msr PRIMASK, r3 + 8004f92: 69fb ldr r3, [r7, #28] + 8004f94: f383 8810 msr PRIMASK, r3 } - 8004c74: 46c0 nop @ (mov r8, r8) + 8004f98: 46c0 nop @ (mov r8, r8) __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); - 8004c76: f3ef 8310 mrs r3, PRIMASK - 8004c7a: 623b str r3, [r7, #32] + 8004f9a: f3ef 8310 mrs r3, PRIMASK + 8004f9e: 623b str r3, [r7, #32] return(result); - 8004c7c: 6a3b ldr r3, [r7, #32] + 8004fa0: 6a3b ldr r3, [r7, #32] ATOMIC_CLEAR_BIT(huart->Instance->CR3, (USART_CR3_EIE | USART_CR3_RXFTIE)); - 8004c7e: 633b str r3, [r7, #48] @ 0x30 - 8004c80: 2301 movs r3, #1 - 8004c82: 627b str r3, [r7, #36] @ 0x24 + 8004fa2: 633b str r3, [r7, #48] @ 0x30 + 8004fa4: 2301 movs r3, #1 + 8004fa6: 627b str r3, [r7, #36] @ 0x24 __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); - 8004c84: 6a7b ldr r3, [r7, #36] @ 0x24 - 8004c86: f383 8810 msr PRIMASK, r3 + 8004fa8: 6a7b ldr r3, [r7, #36] @ 0x24 + 8004faa: f383 8810 msr PRIMASK, r3 } - 8004c8a: 46c0 nop @ (mov r8, r8) - 8004c8c: 687b ldr r3, [r7, #4] - 8004c8e: 681b ldr r3, [r3, #0] - 8004c90: 689a ldr r2, [r3, #8] - 8004c92: 687b ldr r3, [r7, #4] - 8004c94: 681b ldr r3, [r3, #0] - 8004c96: 491b ldr r1, [pc, #108] @ (8004d04 ) - 8004c98: 400a ands r2, r1 - 8004c9a: 609a str r2, [r3, #8] - 8004c9c: 6b3b ldr r3, [r7, #48] @ 0x30 - 8004c9e: 62bb str r3, [r7, #40] @ 0x28 + 8004fae: 46c0 nop @ (mov r8, r8) + 8004fb0: 687b ldr r3, [r7, #4] + 8004fb2: 681b ldr r3, [r3, #0] + 8004fb4: 689a ldr r2, [r3, #8] + 8004fb6: 687b ldr r3, [r7, #4] + 8004fb8: 681b ldr r3, [r3, #0] + 8004fba: 491b ldr r1, [pc, #108] @ (8005028 ) + 8004fbc: 400a ands r2, r1 + 8004fbe: 609a str r2, [r3, #8] + 8004fc0: 6b3b ldr r3, [r7, #48] @ 0x30 + 8004fc2: 62bb str r3, [r7, #40] @ 0x28 __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); - 8004ca0: 6abb ldr r3, [r7, #40] @ 0x28 - 8004ca2: f383 8810 msr PRIMASK, r3 + 8004fc4: 6abb ldr r3, [r7, #40] @ 0x28 + 8004fc6: f383 8810 msr PRIMASK, r3 } - 8004ca6: 46c0 nop @ (mov r8, r8) + 8004fca: 46c0 nop @ (mov r8, r8) /* In case of reception waiting for IDLE event, disable also the IDLE IE interrupt source */ if (huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE) - 8004ca8: 687b ldr r3, [r7, #4] - 8004caa: 6edb ldr r3, [r3, #108] @ 0x6c - 8004cac: 2b01 cmp r3, #1 - 8004cae: d118 bne.n 8004ce2 + 8004fcc: 687b ldr r3, [r7, #4] + 8004fce: 6edb ldr r3, [r3, #108] @ 0x6c + 8004fd0: 2b01 cmp r3, #1 + 8004fd2: d118 bne.n 8005006 __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); - 8004cb0: f3ef 8310 mrs r3, PRIMASK - 8004cb4: 60bb str r3, [r7, #8] + 8004fd4: f3ef 8310 mrs r3, PRIMASK + 8004fd8: 60bb str r3, [r7, #8] return(result); - 8004cb6: 68bb ldr r3, [r7, #8] + 8004fda: 68bb ldr r3, [r7, #8] { ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_IDLEIE); - 8004cb8: 62fb str r3, [r7, #44] @ 0x2c - 8004cba: 2301 movs r3, #1 - 8004cbc: 60fb str r3, [r7, #12] + 8004fdc: 62fb str r3, [r7, #44] @ 0x2c + 8004fde: 2301 movs r3, #1 + 8004fe0: 60fb str r3, [r7, #12] __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); - 8004cbe: 68fb ldr r3, [r7, #12] - 8004cc0: f383 8810 msr PRIMASK, r3 + 8004fe2: 68fb ldr r3, [r7, #12] + 8004fe4: f383 8810 msr PRIMASK, r3 } - 8004cc4: 46c0 nop @ (mov r8, r8) - 8004cc6: 687b ldr r3, [r7, #4] - 8004cc8: 681b ldr r3, [r3, #0] - 8004cca: 681a ldr r2, [r3, #0] - 8004ccc: 687b ldr r3, [r7, #4] - 8004cce: 681b ldr r3, [r3, #0] - 8004cd0: 2110 movs r1, #16 - 8004cd2: 438a bics r2, r1 - 8004cd4: 601a str r2, [r3, #0] - 8004cd6: 6afb ldr r3, [r7, #44] @ 0x2c - 8004cd8: 613b str r3, [r7, #16] + 8004fe8: 46c0 nop @ (mov r8, r8) + 8004fea: 687b ldr r3, [r7, #4] + 8004fec: 681b ldr r3, [r3, #0] + 8004fee: 681a ldr r2, [r3, #0] + 8004ff0: 687b ldr r3, [r7, #4] + 8004ff2: 681b ldr r3, [r3, #0] + 8004ff4: 2110 movs r1, #16 + 8004ff6: 438a bics r2, r1 + 8004ff8: 601a str r2, [r3, #0] + 8004ffa: 6afb ldr r3, [r7, #44] @ 0x2c + 8004ffc: 613b str r3, [r7, #16] __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); - 8004cda: 693b ldr r3, [r7, #16] - 8004cdc: f383 8810 msr PRIMASK, r3 + 8004ffe: 693b ldr r3, [r7, #16] + 8005000: f383 8810 msr PRIMASK, r3 } - 8004ce0: 46c0 nop @ (mov r8, r8) + 8005004: 46c0 nop @ (mov r8, r8) } /* At end of Rx process, restore huart->RxState to Ready */ huart->RxState = HAL_UART_STATE_READY; - 8004ce2: 687b ldr r3, [r7, #4] - 8004ce4: 228c movs r2, #140 @ 0x8c - 8004ce6: 2120 movs r1, #32 - 8004ce8: 5099 str r1, [r3, r2] + 8005006: 687b ldr r3, [r7, #4] + 8005008: 228c movs r2, #140 @ 0x8c + 800500a: 2120 movs r1, #32 + 800500c: 5099 str r1, [r3, r2] huart->ReceptionType = HAL_UART_RECEPTION_STANDARD; - 8004cea: 687b ldr r3, [r7, #4] - 8004cec: 2200 movs r2, #0 - 8004cee: 66da str r2, [r3, #108] @ 0x6c + 800500e: 687b ldr r3, [r7, #4] + 8005010: 2200 movs r2, #0 + 8005012: 66da str r2, [r3, #108] @ 0x6c /* Reset RxIsr function pointer */ huart->RxISR = NULL; - 8004cf0: 687b ldr r3, [r7, #4] - 8004cf2: 2200 movs r2, #0 - 8004cf4: 675a str r2, [r3, #116] @ 0x74 + 8005014: 687b ldr r3, [r7, #4] + 8005016: 2200 movs r2, #0 + 8005018: 675a str r2, [r3, #116] @ 0x74 } - 8004cf6: 46c0 nop @ (mov r8, r8) - 8004cf8: 46bd mov sp, r7 - 8004cfa: b00e add sp, #56 @ 0x38 - 8004cfc: bd80 pop {r7, pc} - 8004cfe: 46c0 nop @ (mov r8, r8) - 8004d00: fffffedf .word 0xfffffedf - 8004d04: effffffe .word 0xeffffffe + 800501a: 46c0 nop @ (mov r8, r8) + 800501c: 46bd mov sp, r7 + 800501e: b00e add sp, #56 @ 0x38 + 8005020: bd80 pop {r7, pc} + 8005022: 46c0 nop @ (mov r8, r8) + 8005024: fffffedf .word 0xfffffedf + 8005028: effffffe .word 0xeffffffe -08004d08 : +0800502c : * @brief Disable the FIFO mode. * @param huart UART handle. * @retval HAL status */ HAL_StatusTypeDef HAL_UARTEx_DisableFifoMode(UART_HandleTypeDef *huart) { - 8004d08: b580 push {r7, lr} - 8004d0a: b084 sub sp, #16 - 8004d0c: af00 add r7, sp, #0 - 8004d0e: 6078 str r0, [r7, #4] + 800502c: b580 push {r7, lr} + 800502e: b084 sub sp, #16 + 8005030: af00 add r7, sp, #0 + 8005032: 6078 str r0, [r7, #4] /* Check parameters */ assert_param(IS_UART_FIFO_INSTANCE(huart->Instance)); /* Process Locked */ __HAL_LOCK(huart); - 8004d10: 687b ldr r3, [r7, #4] - 8004d12: 2284 movs r2, #132 @ 0x84 - 8004d14: 5c9b ldrb r3, [r3, r2] - 8004d16: 2b01 cmp r3, #1 - 8004d18: d101 bne.n 8004d1e - 8004d1a: 2302 movs r3, #2 - 8004d1c: e027 b.n 8004d6e - 8004d1e: 687b ldr r3, [r7, #4] - 8004d20: 2284 movs r2, #132 @ 0x84 - 8004d22: 2101 movs r1, #1 - 8004d24: 5499 strb r1, [r3, r2] + 8005034: 687b ldr r3, [r7, #4] + 8005036: 2284 movs r2, #132 @ 0x84 + 8005038: 5c9b ldrb r3, [r3, r2] + 800503a: 2b01 cmp r3, #1 + 800503c: d101 bne.n 8005042 + 800503e: 2302 movs r3, #2 + 8005040: e027 b.n 8005092 + 8005042: 687b ldr r3, [r7, #4] + 8005044: 2284 movs r2, #132 @ 0x84 + 8005046: 2101 movs r1, #1 + 8005048: 5499 strb r1, [r3, r2] huart->gState = HAL_UART_STATE_BUSY; - 8004d26: 687b ldr r3, [r7, #4] - 8004d28: 2288 movs r2, #136 @ 0x88 - 8004d2a: 2124 movs r1, #36 @ 0x24 - 8004d2c: 5099 str r1, [r3, r2] + 800504a: 687b ldr r3, [r7, #4] + 800504c: 2288 movs r2, #136 @ 0x88 + 800504e: 2124 movs r1, #36 @ 0x24 + 8005050: 5099 str r1, [r3, r2] /* Save actual UART configuration */ tmpcr1 = READ_REG(huart->Instance->CR1); - 8004d2e: 687b ldr r3, [r7, #4] - 8004d30: 681b ldr r3, [r3, #0] - 8004d32: 681b ldr r3, [r3, #0] - 8004d34: 60fb str r3, [r7, #12] + 8005052: 687b ldr r3, [r7, #4] + 8005054: 681b ldr r3, [r3, #0] + 8005056: 681b ldr r3, [r3, #0] + 8005058: 60fb str r3, [r7, #12] /* Disable UART */ __HAL_UART_DISABLE(huart); - 8004d36: 687b ldr r3, [r7, #4] - 8004d38: 681b ldr r3, [r3, #0] - 8004d3a: 681a ldr r2, [r3, #0] - 8004d3c: 687b ldr r3, [r7, #4] - 8004d3e: 681b ldr r3, [r3, #0] - 8004d40: 2101 movs r1, #1 - 8004d42: 438a bics r2, r1 - 8004d44: 601a str r2, [r3, #0] + 800505a: 687b ldr r3, [r7, #4] + 800505c: 681b ldr r3, [r3, #0] + 800505e: 681a ldr r2, [r3, #0] + 8005060: 687b ldr r3, [r7, #4] + 8005062: 681b ldr r3, [r3, #0] + 8005064: 2101 movs r1, #1 + 8005066: 438a bics r2, r1 + 8005068: 601a str r2, [r3, #0] /* Enable FIFO mode */ CLEAR_BIT(tmpcr1, USART_CR1_FIFOEN); - 8004d46: 68fb ldr r3, [r7, #12] - 8004d48: 4a0b ldr r2, [pc, #44] @ (8004d78 ) - 8004d4a: 4013 ands r3, r2 - 8004d4c: 60fb str r3, [r7, #12] + 800506a: 68fb ldr r3, [r7, #12] + 800506c: 4a0b ldr r2, [pc, #44] @ (800509c ) + 800506e: 4013 ands r3, r2 + 8005070: 60fb str r3, [r7, #12] huart->FifoMode = UART_FIFOMODE_DISABLE; - 8004d4e: 687b ldr r3, [r7, #4] - 8004d50: 2200 movs r2, #0 - 8004d52: 665a str r2, [r3, #100] @ 0x64 + 8005072: 687b ldr r3, [r7, #4] + 8005074: 2200 movs r2, #0 + 8005076: 665a str r2, [r3, #100] @ 0x64 /* Restore UART configuration */ WRITE_REG(huart->Instance->CR1, tmpcr1); - 8004d54: 687b ldr r3, [r7, #4] - 8004d56: 681b ldr r3, [r3, #0] - 8004d58: 68fa ldr r2, [r7, #12] - 8004d5a: 601a str r2, [r3, #0] + 8005078: 687b ldr r3, [r7, #4] + 800507a: 681b ldr r3, [r3, #0] + 800507c: 68fa ldr r2, [r7, #12] + 800507e: 601a str r2, [r3, #0] huart->gState = HAL_UART_STATE_READY; - 8004d5c: 687b ldr r3, [r7, #4] - 8004d5e: 2288 movs r2, #136 @ 0x88 - 8004d60: 2120 movs r1, #32 - 8004d62: 5099 str r1, [r3, r2] + 8005080: 687b ldr r3, [r7, #4] + 8005082: 2288 movs r2, #136 @ 0x88 + 8005084: 2120 movs r1, #32 + 8005086: 5099 str r1, [r3, r2] /* Process Unlocked */ __HAL_UNLOCK(huart); - 8004d64: 687b ldr r3, [r7, #4] - 8004d66: 2284 movs r2, #132 @ 0x84 - 8004d68: 2100 movs r1, #0 - 8004d6a: 5499 strb r1, [r3, r2] + 8005088: 687b ldr r3, [r7, #4] + 800508a: 2284 movs r2, #132 @ 0x84 + 800508c: 2100 movs r1, #0 + 800508e: 5499 strb r1, [r3, r2] return HAL_OK; - 8004d6c: 2300 movs r3, #0 + 8005090: 2300 movs r3, #0 } - 8004d6e: 0018 movs r0, r3 - 8004d70: 46bd mov sp, r7 - 8004d72: b004 add sp, #16 - 8004d74: bd80 pop {r7, pc} - 8004d76: 46c0 nop @ (mov r8, r8) - 8004d78: dfffffff .word 0xdfffffff + 8005092: 0018 movs r0, r3 + 8005094: 46bd mov sp, r7 + 8005096: b004 add sp, #16 + 8005098: bd80 pop {r7, pc} + 800509a: 46c0 nop @ (mov r8, r8) + 800509c: dfffffff .word 0xdfffffff -08004d7c : +080050a0 : * @arg @ref UART_TXFIFO_THRESHOLD_7_8 * @arg @ref UART_TXFIFO_THRESHOLD_8_8 * @retval HAL status */ HAL_StatusTypeDef HAL_UARTEx_SetTxFifoThreshold(UART_HandleTypeDef *huart, uint32_t Threshold) { - 8004d7c: b580 push {r7, lr} - 8004d7e: b084 sub sp, #16 - 8004d80: af00 add r7, sp, #0 - 8004d82: 6078 str r0, [r7, #4] - 8004d84: 6039 str r1, [r7, #0] + 80050a0: b580 push {r7, lr} + 80050a2: b084 sub sp, #16 + 80050a4: af00 add r7, sp, #0 + 80050a6: 6078 str r0, [r7, #4] + 80050a8: 6039 str r1, [r7, #0] /* Check parameters */ assert_param(IS_UART_FIFO_INSTANCE(huart->Instance)); assert_param(IS_UART_TXFIFO_THRESHOLD(Threshold)); /* Process Locked */ __HAL_LOCK(huart); - 8004d86: 687b ldr r3, [r7, #4] - 8004d88: 2284 movs r2, #132 @ 0x84 - 8004d8a: 5c9b ldrb r3, [r3, r2] - 8004d8c: 2b01 cmp r3, #1 - 8004d8e: d101 bne.n 8004d94 - 8004d90: 2302 movs r3, #2 - 8004d92: e02e b.n 8004df2 - 8004d94: 687b ldr r3, [r7, #4] - 8004d96: 2284 movs r2, #132 @ 0x84 - 8004d98: 2101 movs r1, #1 - 8004d9a: 5499 strb r1, [r3, r2] + 80050aa: 687b ldr r3, [r7, #4] + 80050ac: 2284 movs r2, #132 @ 0x84 + 80050ae: 5c9b ldrb r3, [r3, r2] + 80050b0: 2b01 cmp r3, #1 + 80050b2: d101 bne.n 80050b8 + 80050b4: 2302 movs r3, #2 + 80050b6: e02e b.n 8005116 + 80050b8: 687b ldr r3, [r7, #4] + 80050ba: 2284 movs r2, #132 @ 0x84 + 80050bc: 2101 movs r1, #1 + 80050be: 5499 strb r1, [r3, r2] huart->gState = HAL_UART_STATE_BUSY; - 8004d9c: 687b ldr r3, [r7, #4] - 8004d9e: 2288 movs r2, #136 @ 0x88 - 8004da0: 2124 movs r1, #36 @ 0x24 - 8004da2: 5099 str r1, [r3, r2] + 80050c0: 687b ldr r3, [r7, #4] + 80050c2: 2288 movs r2, #136 @ 0x88 + 80050c4: 2124 movs r1, #36 @ 0x24 + 80050c6: 5099 str r1, [r3, r2] /* Save actual UART configuration */ tmpcr1 = READ_REG(huart->Instance->CR1); - 8004da4: 687b ldr r3, [r7, #4] - 8004da6: 681b ldr r3, [r3, #0] - 8004da8: 681b ldr r3, [r3, #0] - 8004daa: 60fb str r3, [r7, #12] + 80050c8: 687b ldr r3, [r7, #4] + 80050ca: 681b ldr r3, [r3, #0] + 80050cc: 681b ldr r3, [r3, #0] + 80050ce: 60fb str r3, [r7, #12] /* Disable UART */ __HAL_UART_DISABLE(huart); - 8004dac: 687b ldr r3, [r7, #4] - 8004dae: 681b ldr r3, [r3, #0] - 8004db0: 681a ldr r2, [r3, #0] - 8004db2: 687b ldr r3, [r7, #4] - 8004db4: 681b ldr r3, [r3, #0] - 8004db6: 2101 movs r1, #1 - 8004db8: 438a bics r2, r1 - 8004dba: 601a str r2, [r3, #0] + 80050d0: 687b ldr r3, [r7, #4] + 80050d2: 681b ldr r3, [r3, #0] + 80050d4: 681a ldr r2, [r3, #0] + 80050d6: 687b ldr r3, [r7, #4] + 80050d8: 681b ldr r3, [r3, #0] + 80050da: 2101 movs r1, #1 + 80050dc: 438a bics r2, r1 + 80050de: 601a str r2, [r3, #0] /* Update TX threshold configuration */ MODIFY_REG(huart->Instance->CR3, USART_CR3_TXFTCFG, Threshold); - 8004dbc: 687b ldr r3, [r7, #4] - 8004dbe: 681b ldr r3, [r3, #0] - 8004dc0: 689b ldr r3, [r3, #8] - 8004dc2: 00db lsls r3, r3, #3 - 8004dc4: 08d9 lsrs r1, r3, #3 - 8004dc6: 687b ldr r3, [r7, #4] - 8004dc8: 681b ldr r3, [r3, #0] - 8004dca: 683a ldr r2, [r7, #0] - 8004dcc: 430a orrs r2, r1 - 8004dce: 609a str r2, [r3, #8] + 80050e0: 687b ldr r3, [r7, #4] + 80050e2: 681b ldr r3, [r3, #0] + 80050e4: 689b ldr r3, [r3, #8] + 80050e6: 00db lsls r3, r3, #3 + 80050e8: 08d9 lsrs r1, r3, #3 + 80050ea: 687b ldr r3, [r7, #4] + 80050ec: 681b ldr r3, [r3, #0] + 80050ee: 683a ldr r2, [r7, #0] + 80050f0: 430a orrs r2, r1 + 80050f2: 609a str r2, [r3, #8] /* Determine the number of data to process during RX/TX ISR execution */ UARTEx_SetNbDataToProcess(huart); - 8004dd0: 687b ldr r3, [r7, #4] - 8004dd2: 0018 movs r0, r3 - 8004dd4: f000 f854 bl 8004e80 + 80050f4: 687b ldr r3, [r7, #4] + 80050f6: 0018 movs r0, r3 + 80050f8: f000 f854 bl 80051a4 /* Restore UART configuration */ WRITE_REG(huart->Instance->CR1, tmpcr1); - 8004dd8: 687b ldr r3, [r7, #4] - 8004dda: 681b ldr r3, [r3, #0] - 8004ddc: 68fa ldr r2, [r7, #12] - 8004dde: 601a str r2, [r3, #0] + 80050fc: 687b ldr r3, [r7, #4] + 80050fe: 681b ldr r3, [r3, #0] + 8005100: 68fa ldr r2, [r7, #12] + 8005102: 601a str r2, [r3, #0] huart->gState = HAL_UART_STATE_READY; - 8004de0: 687b ldr r3, [r7, #4] - 8004de2: 2288 movs r2, #136 @ 0x88 - 8004de4: 2120 movs r1, #32 - 8004de6: 5099 str r1, [r3, r2] + 8005104: 687b ldr r3, [r7, #4] + 8005106: 2288 movs r2, #136 @ 0x88 + 8005108: 2120 movs r1, #32 + 800510a: 5099 str r1, [r3, r2] /* Process Unlocked */ __HAL_UNLOCK(huart); - 8004de8: 687b ldr r3, [r7, #4] - 8004dea: 2284 movs r2, #132 @ 0x84 - 8004dec: 2100 movs r1, #0 - 8004dee: 5499 strb r1, [r3, r2] + 800510c: 687b ldr r3, [r7, #4] + 800510e: 2284 movs r2, #132 @ 0x84 + 8005110: 2100 movs r1, #0 + 8005112: 5499 strb r1, [r3, r2] return HAL_OK; - 8004df0: 2300 movs r3, #0 + 8005114: 2300 movs r3, #0 } - 8004df2: 0018 movs r0, r3 - 8004df4: 46bd mov sp, r7 - 8004df6: b004 add sp, #16 - 8004df8: bd80 pop {r7, pc} + 8005116: 0018 movs r0, r3 + 8005118: 46bd mov sp, r7 + 800511a: b004 add sp, #16 + 800511c: bd80 pop {r7, pc} ... -08004dfc : +08005120 : * @arg @ref UART_RXFIFO_THRESHOLD_7_8 * @arg @ref UART_RXFIFO_THRESHOLD_8_8 * @retval HAL status */ HAL_StatusTypeDef HAL_UARTEx_SetRxFifoThreshold(UART_HandleTypeDef *huart, uint32_t Threshold) { - 8004dfc: b580 push {r7, lr} - 8004dfe: b084 sub sp, #16 - 8004e00: af00 add r7, sp, #0 - 8004e02: 6078 str r0, [r7, #4] - 8004e04: 6039 str r1, [r7, #0] + 8005120: b580 push {r7, lr} + 8005122: b084 sub sp, #16 + 8005124: af00 add r7, sp, #0 + 8005126: 6078 str r0, [r7, #4] + 8005128: 6039 str r1, [r7, #0] /* Check the parameters */ assert_param(IS_UART_FIFO_INSTANCE(huart->Instance)); assert_param(IS_UART_RXFIFO_THRESHOLD(Threshold)); /* Process Locked */ __HAL_LOCK(huart); - 8004e06: 687b ldr r3, [r7, #4] - 8004e08: 2284 movs r2, #132 @ 0x84 - 8004e0a: 5c9b ldrb r3, [r3, r2] - 8004e0c: 2b01 cmp r3, #1 - 8004e0e: d101 bne.n 8004e14 - 8004e10: 2302 movs r3, #2 - 8004e12: e02f b.n 8004e74 - 8004e14: 687b ldr r3, [r7, #4] - 8004e16: 2284 movs r2, #132 @ 0x84 - 8004e18: 2101 movs r1, #1 - 8004e1a: 5499 strb r1, [r3, r2] + 800512a: 687b ldr r3, [r7, #4] + 800512c: 2284 movs r2, #132 @ 0x84 + 800512e: 5c9b ldrb r3, [r3, r2] + 8005130: 2b01 cmp r3, #1 + 8005132: d101 bne.n 8005138 + 8005134: 2302 movs r3, #2 + 8005136: e02f b.n 8005198 + 8005138: 687b ldr r3, [r7, #4] + 800513a: 2284 movs r2, #132 @ 0x84 + 800513c: 2101 movs r1, #1 + 800513e: 5499 strb r1, [r3, r2] huart->gState = HAL_UART_STATE_BUSY; - 8004e1c: 687b ldr r3, [r7, #4] - 8004e1e: 2288 movs r2, #136 @ 0x88 - 8004e20: 2124 movs r1, #36 @ 0x24 - 8004e22: 5099 str r1, [r3, r2] + 8005140: 687b ldr r3, [r7, #4] + 8005142: 2288 movs r2, #136 @ 0x88 + 8005144: 2124 movs r1, #36 @ 0x24 + 8005146: 5099 str r1, [r3, r2] /* Save actual UART configuration */ tmpcr1 = READ_REG(huart->Instance->CR1); - 8004e24: 687b ldr r3, [r7, #4] - 8004e26: 681b ldr r3, [r3, #0] - 8004e28: 681b ldr r3, [r3, #0] - 8004e2a: 60fb str r3, [r7, #12] + 8005148: 687b ldr r3, [r7, #4] + 800514a: 681b ldr r3, [r3, #0] + 800514c: 681b ldr r3, [r3, #0] + 800514e: 60fb str r3, [r7, #12] /* Disable UART */ __HAL_UART_DISABLE(huart); - 8004e2c: 687b ldr r3, [r7, #4] - 8004e2e: 681b ldr r3, [r3, #0] - 8004e30: 681a ldr r2, [r3, #0] - 8004e32: 687b ldr r3, [r7, #4] - 8004e34: 681b ldr r3, [r3, #0] - 8004e36: 2101 movs r1, #1 - 8004e38: 438a bics r2, r1 - 8004e3a: 601a str r2, [r3, #0] + 8005150: 687b ldr r3, [r7, #4] + 8005152: 681b ldr r3, [r3, #0] + 8005154: 681a ldr r2, [r3, #0] + 8005156: 687b ldr r3, [r7, #4] + 8005158: 681b ldr r3, [r3, #0] + 800515a: 2101 movs r1, #1 + 800515c: 438a bics r2, r1 + 800515e: 601a str r2, [r3, #0] /* Update RX threshold configuration */ MODIFY_REG(huart->Instance->CR3, USART_CR3_RXFTCFG, Threshold); - 8004e3c: 687b ldr r3, [r7, #4] - 8004e3e: 681b ldr r3, [r3, #0] - 8004e40: 689b ldr r3, [r3, #8] - 8004e42: 4a0e ldr r2, [pc, #56] @ (8004e7c ) - 8004e44: 4013 ands r3, r2 - 8004e46: 0019 movs r1, r3 - 8004e48: 687b ldr r3, [r7, #4] - 8004e4a: 681b ldr r3, [r3, #0] - 8004e4c: 683a ldr r2, [r7, #0] - 8004e4e: 430a orrs r2, r1 - 8004e50: 609a str r2, [r3, #8] + 8005160: 687b ldr r3, [r7, #4] + 8005162: 681b ldr r3, [r3, #0] + 8005164: 689b ldr r3, [r3, #8] + 8005166: 4a0e ldr r2, [pc, #56] @ (80051a0 ) + 8005168: 4013 ands r3, r2 + 800516a: 0019 movs r1, r3 + 800516c: 687b ldr r3, [r7, #4] + 800516e: 681b ldr r3, [r3, #0] + 8005170: 683a ldr r2, [r7, #0] + 8005172: 430a orrs r2, r1 + 8005174: 609a str r2, [r3, #8] /* Determine the number of data to process during RX/TX ISR execution */ UARTEx_SetNbDataToProcess(huart); - 8004e52: 687b ldr r3, [r7, #4] - 8004e54: 0018 movs r0, r3 - 8004e56: f000 f813 bl 8004e80 + 8005176: 687b ldr r3, [r7, #4] + 8005178: 0018 movs r0, r3 + 800517a: f000 f813 bl 80051a4 /* Restore UART configuration */ WRITE_REG(huart->Instance->CR1, tmpcr1); - 8004e5a: 687b ldr r3, [r7, #4] - 8004e5c: 681b ldr r3, [r3, #0] - 8004e5e: 68fa ldr r2, [r7, #12] - 8004e60: 601a str r2, [r3, #0] + 800517e: 687b ldr r3, [r7, #4] + 8005180: 681b ldr r3, [r3, #0] + 8005182: 68fa ldr r2, [r7, #12] + 8005184: 601a str r2, [r3, #0] huart->gState = HAL_UART_STATE_READY; - 8004e62: 687b ldr r3, [r7, #4] - 8004e64: 2288 movs r2, #136 @ 0x88 - 8004e66: 2120 movs r1, #32 - 8004e68: 5099 str r1, [r3, r2] + 8005186: 687b ldr r3, [r7, #4] + 8005188: 2288 movs r2, #136 @ 0x88 + 800518a: 2120 movs r1, #32 + 800518c: 5099 str r1, [r3, r2] /* Process Unlocked */ __HAL_UNLOCK(huart); - 8004e6a: 687b ldr r3, [r7, #4] - 8004e6c: 2284 movs r2, #132 @ 0x84 - 8004e6e: 2100 movs r1, #0 - 8004e70: 5499 strb r1, [r3, r2] + 800518e: 687b ldr r3, [r7, #4] + 8005190: 2284 movs r2, #132 @ 0x84 + 8005192: 2100 movs r1, #0 + 8005194: 5499 strb r1, [r3, r2] return HAL_OK; - 8004e72: 2300 movs r3, #0 + 8005196: 2300 movs r3, #0 } - 8004e74: 0018 movs r0, r3 - 8004e76: 46bd mov sp, r7 - 8004e78: b004 add sp, #16 - 8004e7a: bd80 pop {r7, pc} - 8004e7c: f1ffffff .word 0xf1ffffff + 8005198: 0018 movs r0, r3 + 800519a: 46bd mov sp, r7 + 800519c: b004 add sp, #16 + 800519e: bd80 pop {r7, pc} + 80051a0: f1ffffff .word 0xf1ffffff -08004e80 : +080051a4 : * the UART configuration registers. * @param huart UART handle. * @retval None */ static void UARTEx_SetNbDataToProcess(UART_HandleTypeDef *huart) { - 8004e80: b5f0 push {r4, r5, r6, r7, lr} - 8004e82: b085 sub sp, #20 - 8004e84: af00 add r7, sp, #0 - 8004e86: 6078 str r0, [r7, #4] + 80051a4: b5f0 push {r4, r5, r6, r7, lr} + 80051a6: b085 sub sp, #20 + 80051a8: af00 add r7, sp, #0 + 80051aa: 6078 str r0, [r7, #4] uint8_t rx_fifo_threshold; uint8_t tx_fifo_threshold; static const uint8_t numerator[] = {1U, 1U, 1U, 3U, 7U, 1U, 0U, 0U}; static const uint8_t denominator[] = {8U, 4U, 2U, 4U, 8U, 1U, 1U, 1U}; if (huart->FifoMode == UART_FIFOMODE_DISABLE) - 8004e88: 687b ldr r3, [r7, #4] - 8004e8a: 6e5b ldr r3, [r3, #100] @ 0x64 - 8004e8c: 2b00 cmp r3, #0 - 8004e8e: d108 bne.n 8004ea2 + 80051ac: 687b ldr r3, [r7, #4] + 80051ae: 6e5b ldr r3, [r3, #100] @ 0x64 + 80051b0: 2b00 cmp r3, #0 + 80051b2: d108 bne.n 80051c6 { huart->NbTxDataToProcess = 1U; - 8004e90: 687b ldr r3, [r7, #4] - 8004e92: 226a movs r2, #106 @ 0x6a - 8004e94: 2101 movs r1, #1 - 8004e96: 5299 strh r1, [r3, r2] + 80051b4: 687b ldr r3, [r7, #4] + 80051b6: 226a movs r2, #106 @ 0x6a + 80051b8: 2101 movs r1, #1 + 80051ba: 5299 strh r1, [r3, r2] huart->NbRxDataToProcess = 1U; - 8004e98: 687b ldr r3, [r7, #4] - 8004e9a: 2268 movs r2, #104 @ 0x68 - 8004e9c: 2101 movs r1, #1 - 8004e9e: 5299 strh r1, [r3, r2] + 80051bc: 687b ldr r3, [r7, #4] + 80051be: 2268 movs r2, #104 @ 0x68 + 80051c0: 2101 movs r1, #1 + 80051c2: 5299 strh r1, [r3, r2] huart->NbTxDataToProcess = ((uint16_t)tx_fifo_depth * numerator[tx_fifo_threshold]) / (uint16_t)denominator[tx_fifo_threshold]; huart->NbRxDataToProcess = ((uint16_t)rx_fifo_depth * numerator[rx_fifo_threshold]) / (uint16_t)denominator[rx_fifo_threshold]; } } - 8004ea0: e043 b.n 8004f2a + 80051c4: e043 b.n 800524e rx_fifo_depth = RX_FIFO_DEPTH; - 8004ea2: 260f movs r6, #15 - 8004ea4: 19bb adds r3, r7, r6 - 8004ea6: 2208 movs r2, #8 - 8004ea8: 701a strb r2, [r3, #0] + 80051c6: 260f movs r6, #15 + 80051c8: 19bb adds r3, r7, r6 + 80051ca: 2208 movs r2, #8 + 80051cc: 701a strb r2, [r3, #0] tx_fifo_depth = TX_FIFO_DEPTH; - 8004eaa: 200e movs r0, #14 - 8004eac: 183b adds r3, r7, r0 - 8004eae: 2208 movs r2, #8 - 8004eb0: 701a strb r2, [r3, #0] + 80051ce: 200e movs r0, #14 + 80051d0: 183b adds r3, r7, r0 + 80051d2: 2208 movs r2, #8 + 80051d4: 701a strb r2, [r3, #0] rx_fifo_threshold = (uint8_t)(READ_BIT(huart->Instance->CR3, USART_CR3_RXFTCFG) >> USART_CR3_RXFTCFG_Pos); - 8004eb2: 687b ldr r3, [r7, #4] - 8004eb4: 681b ldr r3, [r3, #0] - 8004eb6: 689b ldr r3, [r3, #8] - 8004eb8: 0e5b lsrs r3, r3, #25 - 8004eba: b2da uxtb r2, r3 - 8004ebc: 240d movs r4, #13 - 8004ebe: 193b adds r3, r7, r4 - 8004ec0: 2107 movs r1, #7 - 8004ec2: 400a ands r2, r1 - 8004ec4: 701a strb r2, [r3, #0] + 80051d6: 687b ldr r3, [r7, #4] + 80051d8: 681b ldr r3, [r3, #0] + 80051da: 689b ldr r3, [r3, #8] + 80051dc: 0e5b lsrs r3, r3, #25 + 80051de: b2da uxtb r2, r3 + 80051e0: 240d movs r4, #13 + 80051e2: 193b adds r3, r7, r4 + 80051e4: 2107 movs r1, #7 + 80051e6: 400a ands r2, r1 + 80051e8: 701a strb r2, [r3, #0] tx_fifo_threshold = (uint8_t)(READ_BIT(huart->Instance->CR3, USART_CR3_TXFTCFG) >> USART_CR3_TXFTCFG_Pos); - 8004ec6: 687b ldr r3, [r7, #4] - 8004ec8: 681b ldr r3, [r3, #0] - 8004eca: 689b ldr r3, [r3, #8] - 8004ecc: 0f5b lsrs r3, r3, #29 - 8004ece: b2da uxtb r2, r3 - 8004ed0: 250c movs r5, #12 - 8004ed2: 197b adds r3, r7, r5 - 8004ed4: 2107 movs r1, #7 - 8004ed6: 400a ands r2, r1 - 8004ed8: 701a strb r2, [r3, #0] + 80051ea: 687b ldr r3, [r7, #4] + 80051ec: 681b ldr r3, [r3, #0] + 80051ee: 689b ldr r3, [r3, #8] + 80051f0: 0f5b lsrs r3, r3, #29 + 80051f2: b2da uxtb r2, r3 + 80051f4: 250c movs r5, #12 + 80051f6: 197b adds r3, r7, r5 + 80051f8: 2107 movs r1, #7 + 80051fa: 400a ands r2, r1 + 80051fc: 701a strb r2, [r3, #0] huart->NbTxDataToProcess = ((uint16_t)tx_fifo_depth * numerator[tx_fifo_threshold]) / - 8004eda: 183b adds r3, r7, r0 - 8004edc: 781b ldrb r3, [r3, #0] - 8004ede: 197a adds r2, r7, r5 - 8004ee0: 7812 ldrb r2, [r2, #0] - 8004ee2: 4914 ldr r1, [pc, #80] @ (8004f34 ) - 8004ee4: 5c8a ldrb r2, [r1, r2] - 8004ee6: 435a muls r2, r3 - 8004ee8: 0010 movs r0, r2 + 80051fe: 183b adds r3, r7, r0 + 8005200: 781b ldrb r3, [r3, #0] + 8005202: 197a adds r2, r7, r5 + 8005204: 7812 ldrb r2, [r2, #0] + 8005206: 4914 ldr r1, [pc, #80] @ (8005258 ) + 8005208: 5c8a ldrb r2, [r1, r2] + 800520a: 435a muls r2, r3 + 800520c: 0010 movs r0, r2 (uint16_t)denominator[tx_fifo_threshold]; - 8004eea: 197b adds r3, r7, r5 - 8004eec: 781b ldrb r3, [r3, #0] - 8004eee: 4a12 ldr r2, [pc, #72] @ (8004f38 ) - 8004ef0: 5cd3 ldrb r3, [r2, r3] + 800520e: 197b adds r3, r7, r5 + 8005210: 781b ldrb r3, [r3, #0] + 8005212: 4a12 ldr r2, [pc, #72] @ (800525c ) + 8005214: 5cd3 ldrb r3, [r2, r3] huart->NbTxDataToProcess = ((uint16_t)tx_fifo_depth * numerator[tx_fifo_threshold]) / - 8004ef2: 0019 movs r1, r3 - 8004ef4: f7fb f998 bl 8000228 <__divsi3> - 8004ef8: 0003 movs r3, r0 - 8004efa: b299 uxth r1, r3 - 8004efc: 687b ldr r3, [r7, #4] - 8004efe: 226a movs r2, #106 @ 0x6a - 8004f00: 5299 strh r1, [r3, r2] + 8005216: 0019 movs r1, r3 + 8005218: f7fb f806 bl 8000228 <__divsi3> + 800521c: 0003 movs r3, r0 + 800521e: b299 uxth r1, r3 + 8005220: 687b ldr r3, [r7, #4] + 8005222: 226a movs r2, #106 @ 0x6a + 8005224: 5299 strh r1, [r3, r2] huart->NbRxDataToProcess = ((uint16_t)rx_fifo_depth * numerator[rx_fifo_threshold]) / - 8004f02: 19bb adds r3, r7, r6 - 8004f04: 781b ldrb r3, [r3, #0] - 8004f06: 193a adds r2, r7, r4 - 8004f08: 7812 ldrb r2, [r2, #0] - 8004f0a: 490a ldr r1, [pc, #40] @ (8004f34 ) - 8004f0c: 5c8a ldrb r2, [r1, r2] - 8004f0e: 435a muls r2, r3 - 8004f10: 0010 movs r0, r2 + 8005226: 19bb adds r3, r7, r6 + 8005228: 781b ldrb r3, [r3, #0] + 800522a: 193a adds r2, r7, r4 + 800522c: 7812 ldrb r2, [r2, #0] + 800522e: 490a ldr r1, [pc, #40] @ (8005258 ) + 8005230: 5c8a ldrb r2, [r1, r2] + 8005232: 435a muls r2, r3 + 8005234: 0010 movs r0, r2 (uint16_t)denominator[rx_fifo_threshold]; - 8004f12: 193b adds r3, r7, r4 - 8004f14: 781b ldrb r3, [r3, #0] - 8004f16: 4a08 ldr r2, [pc, #32] @ (8004f38 ) - 8004f18: 5cd3 ldrb r3, [r2, r3] + 8005236: 193b adds r3, r7, r4 + 8005238: 781b ldrb r3, [r3, #0] + 800523a: 4a08 ldr r2, [pc, #32] @ (800525c ) + 800523c: 5cd3 ldrb r3, [r2, r3] huart->NbRxDataToProcess = ((uint16_t)rx_fifo_depth * numerator[rx_fifo_threshold]) / - 8004f1a: 0019 movs r1, r3 - 8004f1c: f7fb f984 bl 8000228 <__divsi3> - 8004f20: 0003 movs r3, r0 - 8004f22: b299 uxth r1, r3 - 8004f24: 687b ldr r3, [r7, #4] - 8004f26: 2268 movs r2, #104 @ 0x68 - 8004f28: 5299 strh r1, [r3, r2] + 800523e: 0019 movs r1, r3 + 8005240: f7fa fff2 bl 8000228 <__divsi3> + 8005244: 0003 movs r3, r0 + 8005246: b299 uxth r1, r3 + 8005248: 687b ldr r3, [r7, #4] + 800524a: 2268 movs r2, #104 @ 0x68 + 800524c: 5299 strh r1, [r3, r2] } - 8004f2a: 46c0 nop @ (mov r8, r8) - 8004f2c: 46bd mov sp, r7 - 8004f2e: b005 add sp, #20 - 8004f30: bdf0 pop {r4, r5, r6, r7, pc} - 8004f32: 46c0 nop @ (mov r8, r8) - 8004f34: 08005f98 .word 0x08005f98 - 8004f38: 08005fa0 .word 0x08005fa0 + 800524e: 46c0 nop @ (mov r8, r8) + 8005250: 46bd mov sp, r7 + 8005252: b005 add sp, #20 + 8005254: bdf0 pop {r4, r5, r6, r7, pc} + 8005256: 46c0 nop @ (mov r8, r8) + 8005258: 080062b8 .word 0x080062b8 + 800525c: 080062c0 .word 0x080062c0 -08004f3c : - 8004f3c: 2300 movs r3, #0 - 8004f3e: b510 push {r4, lr} - 8004f40: 0004 movs r4, r0 - 8004f42: 6003 str r3, [r0, #0] - 8004f44: 6043 str r3, [r0, #4] - 8004f46: 6083 str r3, [r0, #8] - 8004f48: 8181 strh r1, [r0, #12] - 8004f4a: 6643 str r3, [r0, #100] @ 0x64 - 8004f4c: 81c2 strh r2, [r0, #14] - 8004f4e: 6103 str r3, [r0, #16] - 8004f50: 6143 str r3, [r0, #20] - 8004f52: 6183 str r3, [r0, #24] - 8004f54: 0019 movs r1, r3 - 8004f56: 2208 movs r2, #8 - 8004f58: 305c adds r0, #92 @ 0x5c - 8004f5a: f000 fa0f bl 800537c - 8004f5e: 4b0b ldr r3, [pc, #44] @ (8004f8c ) - 8004f60: 6224 str r4, [r4, #32] - 8004f62: 6263 str r3, [r4, #36] @ 0x24 - 8004f64: 4b0a ldr r3, [pc, #40] @ (8004f90 ) - 8004f66: 62a3 str r3, [r4, #40] @ 0x28 - 8004f68: 4b0a ldr r3, [pc, #40] @ (8004f94 ) - 8004f6a: 62e3 str r3, [r4, #44] @ 0x2c - 8004f6c: 4b0a ldr r3, [pc, #40] @ (8004f98 ) - 8004f6e: 6323 str r3, [r4, #48] @ 0x30 - 8004f70: 4b0a ldr r3, [pc, #40] @ (8004f9c ) - 8004f72: 429c cmp r4, r3 - 8004f74: d005 beq.n 8004f82 - 8004f76: 4b0a ldr r3, [pc, #40] @ (8004fa0 ) - 8004f78: 429c cmp r4, r3 - 8004f7a: d002 beq.n 8004f82 - 8004f7c: 4b09 ldr r3, [pc, #36] @ (8004fa4 ) - 8004f7e: 429c cmp r4, r3 - 8004f80: d103 bne.n 8004f8a - 8004f82: 0020 movs r0, r4 - 8004f84: 3058 adds r0, #88 @ 0x58 - 8004f86: f000 fa79 bl 800547c <__retarget_lock_init_recursive> - 8004f8a: bd10 pop {r4, pc} - 8004f8c: 080051a5 .word 0x080051a5 - 8004f90: 080051cd .word 0x080051cd - 8004f94: 08005205 .word 0x08005205 - 8004f98: 08005231 .word 0x08005231 - 8004f9c: 200001ec .word 0x200001ec - 8004fa0: 20000254 .word 0x20000254 - 8004fa4: 200002bc .word 0x200002bc +08005260 : + 8005260: 2300 movs r3, #0 + 8005262: b510 push {r4, lr} + 8005264: 0004 movs r4, r0 + 8005266: 6003 str r3, [r0, #0] + 8005268: 6043 str r3, [r0, #4] + 800526a: 6083 str r3, [r0, #8] + 800526c: 8181 strh r1, [r0, #12] + 800526e: 6643 str r3, [r0, #100] @ 0x64 + 8005270: 81c2 strh r2, [r0, #14] + 8005272: 6103 str r3, [r0, #16] + 8005274: 6143 str r3, [r0, #20] + 8005276: 6183 str r3, [r0, #24] + 8005278: 0019 movs r1, r3 + 800527a: 2208 movs r2, #8 + 800527c: 305c adds r0, #92 @ 0x5c + 800527e: f000 fa0f bl 80056a0 + 8005282: 4b0b ldr r3, [pc, #44] @ (80052b0 ) + 8005284: 6224 str r4, [r4, #32] + 8005286: 6263 str r3, [r4, #36] @ 0x24 + 8005288: 4b0a ldr r3, [pc, #40] @ (80052b4 ) + 800528a: 62a3 str r3, [r4, #40] @ 0x28 + 800528c: 4b0a ldr r3, [pc, #40] @ (80052b8 ) + 800528e: 62e3 str r3, [r4, #44] @ 0x2c + 8005290: 4b0a ldr r3, [pc, #40] @ (80052bc ) + 8005292: 6323 str r3, [r4, #48] @ 0x30 + 8005294: 4b0a ldr r3, [pc, #40] @ (80052c0 ) + 8005296: 429c cmp r4, r3 + 8005298: d005 beq.n 80052a6 + 800529a: 4b0a ldr r3, [pc, #40] @ (80052c4 ) + 800529c: 429c cmp r4, r3 + 800529e: d002 beq.n 80052a6 + 80052a0: 4b09 ldr r3, [pc, #36] @ (80052c8 ) + 80052a2: 429c cmp r4, r3 + 80052a4: d103 bne.n 80052ae + 80052a6: 0020 movs r0, r4 + 80052a8: 3058 adds r0, #88 @ 0x58 + 80052aa: f000 fa79 bl 80057a0 <__retarget_lock_init_recursive> + 80052ae: bd10 pop {r4, pc} + 80052b0: 080054c9 .word 0x080054c9 + 80052b4: 080054f1 .word 0x080054f1 + 80052b8: 08005529 .word 0x08005529 + 80052bc: 08005555 .word 0x08005555 + 80052c0: 200001dc .word 0x200001dc + 80052c4: 20000244 .word 0x20000244 + 80052c8: 200002ac .word 0x200002ac -08004fa8 : - 8004fa8: b510 push {r4, lr} - 8004faa: 4a03 ldr r2, [pc, #12] @ (8004fb8 ) - 8004fac: 4903 ldr r1, [pc, #12] @ (8004fbc ) - 8004fae: 4804 ldr r0, [pc, #16] @ (8004fc0 ) - 8004fb0: f000 f86c bl 800508c <_fwalk_sglue> - 8004fb4: bd10 pop {r4, pc} - 8004fb6: 46c0 nop @ (mov r8, r8) - 8004fb8: 2000000c .word 0x2000000c - 8004fbc: 08005d0d .word 0x08005d0d - 8004fc0: 2000001c .word 0x2000001c +080052cc : + 80052cc: b510 push {r4, lr} + 80052ce: 4a03 ldr r2, [pc, #12] @ (80052dc ) + 80052d0: 4903 ldr r1, [pc, #12] @ (80052e0 ) + 80052d2: 4804 ldr r0, [pc, #16] @ (80052e4 ) + 80052d4: f000 f86c bl 80053b0 <_fwalk_sglue> + 80052d8: bd10 pop {r4, pc} + 80052da: 46c0 nop @ (mov r8, r8) + 80052dc: 2000000c .word 0x2000000c + 80052e0: 08006031 .word 0x08006031 + 80052e4: 2000001c .word 0x2000001c -08004fc4 : - 8004fc4: 6841 ldr r1, [r0, #4] - 8004fc6: 4b0b ldr r3, [pc, #44] @ (8004ff4 ) - 8004fc8: b510 push {r4, lr} - 8004fca: 0004 movs r4, r0 - 8004fcc: 4299 cmp r1, r3 - 8004fce: d001 beq.n 8004fd4 - 8004fd0: f000 fe9c bl 8005d0c <_fflush_r> - 8004fd4: 68a1 ldr r1, [r4, #8] - 8004fd6: 4b08 ldr r3, [pc, #32] @ (8004ff8 ) - 8004fd8: 4299 cmp r1, r3 - 8004fda: d002 beq.n 8004fe2 - 8004fdc: 0020 movs r0, r4 - 8004fde: f000 fe95 bl 8005d0c <_fflush_r> - 8004fe2: 68e1 ldr r1, [r4, #12] - 8004fe4: 4b05 ldr r3, [pc, #20] @ (8004ffc ) - 8004fe6: 4299 cmp r1, r3 - 8004fe8: d002 beq.n 8004ff0 - 8004fea: 0020 movs r0, r4 - 8004fec: f000 fe8e bl 8005d0c <_fflush_r> - 8004ff0: bd10 pop {r4, pc} - 8004ff2: 46c0 nop @ (mov r8, r8) - 8004ff4: 200001ec .word 0x200001ec - 8004ff8: 20000254 .word 0x20000254 - 8004ffc: 200002bc .word 0x200002bc +080052e8 : + 80052e8: 6841 ldr r1, [r0, #4] + 80052ea: 4b0b ldr r3, [pc, #44] @ (8005318 ) + 80052ec: b510 push {r4, lr} + 80052ee: 0004 movs r4, r0 + 80052f0: 4299 cmp r1, r3 + 80052f2: d001 beq.n 80052f8 + 80052f4: f000 fe9c bl 8006030 <_fflush_r> + 80052f8: 68a1 ldr r1, [r4, #8] + 80052fa: 4b08 ldr r3, [pc, #32] @ (800531c ) + 80052fc: 4299 cmp r1, r3 + 80052fe: d002 beq.n 8005306 + 8005300: 0020 movs r0, r4 + 8005302: f000 fe95 bl 8006030 <_fflush_r> + 8005306: 68e1 ldr r1, [r4, #12] + 8005308: 4b05 ldr r3, [pc, #20] @ (8005320 ) + 800530a: 4299 cmp r1, r3 + 800530c: d002 beq.n 8005314 + 800530e: 0020 movs r0, r4 + 8005310: f000 fe8e bl 8006030 <_fflush_r> + 8005314: bd10 pop {r4, pc} + 8005316: 46c0 nop @ (mov r8, r8) + 8005318: 200001dc .word 0x200001dc + 800531c: 20000244 .word 0x20000244 + 8005320: 200002ac .word 0x200002ac -08005000 : - 8005000: b510 push {r4, lr} - 8005002: 4b09 ldr r3, [pc, #36] @ (8005028 ) - 8005004: 4a09 ldr r2, [pc, #36] @ (800502c ) - 8005006: 2104 movs r1, #4 - 8005008: 601a str r2, [r3, #0] - 800500a: 4809 ldr r0, [pc, #36] @ (8005030 ) - 800500c: 2200 movs r2, #0 - 800500e: f7ff ff95 bl 8004f3c - 8005012: 2201 movs r2, #1 - 8005014: 2109 movs r1, #9 - 8005016: 4807 ldr r0, [pc, #28] @ (8005034 ) - 8005018: f7ff ff90 bl 8004f3c - 800501c: 2202 movs r2, #2 - 800501e: 2112 movs r1, #18 - 8005020: 4805 ldr r0, [pc, #20] @ (8005038 ) - 8005022: f7ff ff8b bl 8004f3c - 8005026: bd10 pop {r4, pc} - 8005028: 20000324 .word 0x20000324 - 800502c: 08004fa9 .word 0x08004fa9 - 8005030: 200001ec .word 0x200001ec - 8005034: 20000254 .word 0x20000254 - 8005038: 200002bc .word 0x200002bc +08005324 : + 8005324: b510 push {r4, lr} + 8005326: 4b09 ldr r3, [pc, #36] @ (800534c ) + 8005328: 4a09 ldr r2, [pc, #36] @ (8005350 ) + 800532a: 2104 movs r1, #4 + 800532c: 601a str r2, [r3, #0] + 800532e: 4809 ldr r0, [pc, #36] @ (8005354 ) + 8005330: 2200 movs r2, #0 + 8005332: f7ff ff95 bl 8005260 + 8005336: 2201 movs r2, #1 + 8005338: 2109 movs r1, #9 + 800533a: 4807 ldr r0, [pc, #28] @ (8005358 ) + 800533c: f7ff ff90 bl 8005260 + 8005340: 2202 movs r2, #2 + 8005342: 2112 movs r1, #18 + 8005344: 4805 ldr r0, [pc, #20] @ (800535c ) + 8005346: f7ff ff8b bl 8005260 + 800534a: bd10 pop {r4, pc} + 800534c: 20000314 .word 0x20000314 + 8005350: 080052cd .word 0x080052cd + 8005354: 200001dc .word 0x200001dc + 8005358: 20000244 .word 0x20000244 + 800535c: 200002ac .word 0x200002ac -0800503c <__sfp_lock_acquire>: - 800503c: b510 push {r4, lr} - 800503e: 4802 ldr r0, [pc, #8] @ (8005048 <__sfp_lock_acquire+0xc>) - 8005040: f000 fa1d bl 800547e <__retarget_lock_acquire_recursive> - 8005044: bd10 pop {r4, pc} - 8005046: 46c0 nop @ (mov r8, r8) - 8005048: 2000032d .word 0x2000032d +08005360 <__sfp_lock_acquire>: + 8005360: b510 push {r4, lr} + 8005362: 4802 ldr r0, [pc, #8] @ (800536c <__sfp_lock_acquire+0xc>) + 8005364: f000 fa1d bl 80057a2 <__retarget_lock_acquire_recursive> + 8005368: bd10 pop {r4, pc} + 800536a: 46c0 nop @ (mov r8, r8) + 800536c: 2000031d .word 0x2000031d -0800504c <__sfp_lock_release>: - 800504c: b510 push {r4, lr} - 800504e: 4802 ldr r0, [pc, #8] @ (8005058 <__sfp_lock_release+0xc>) - 8005050: f000 fa16 bl 8005480 <__retarget_lock_release_recursive> - 8005054: bd10 pop {r4, pc} - 8005056: 46c0 nop @ (mov r8, r8) - 8005058: 2000032d .word 0x2000032d +08005370 <__sfp_lock_release>: + 8005370: b510 push {r4, lr} + 8005372: 4802 ldr r0, [pc, #8] @ (800537c <__sfp_lock_release+0xc>) + 8005374: f000 fa16 bl 80057a4 <__retarget_lock_release_recursive> + 8005378: bd10 pop {r4, pc} + 800537a: 46c0 nop @ (mov r8, r8) + 800537c: 2000031d .word 0x2000031d -0800505c <__sinit>: - 800505c: b510 push {r4, lr} - 800505e: 0004 movs r4, r0 - 8005060: f7ff ffec bl 800503c <__sfp_lock_acquire> - 8005064: 6a23 ldr r3, [r4, #32] - 8005066: 2b00 cmp r3, #0 - 8005068: d002 beq.n 8005070 <__sinit+0x14> - 800506a: f7ff ffef bl 800504c <__sfp_lock_release> - 800506e: bd10 pop {r4, pc} - 8005070: 4b04 ldr r3, [pc, #16] @ (8005084 <__sinit+0x28>) - 8005072: 6223 str r3, [r4, #32] - 8005074: 4b04 ldr r3, [pc, #16] @ (8005088 <__sinit+0x2c>) - 8005076: 681b ldr r3, [r3, #0] - 8005078: 2b00 cmp r3, #0 - 800507a: d1f6 bne.n 800506a <__sinit+0xe> - 800507c: f7ff ffc0 bl 8005000 - 8005080: e7f3 b.n 800506a <__sinit+0xe> - 8005082: 46c0 nop @ (mov r8, r8) - 8005084: 08004fc5 .word 0x08004fc5 - 8005088: 20000324 .word 0x20000324 +08005380 <__sinit>: + 8005380: b510 push {r4, lr} + 8005382: 0004 movs r4, r0 + 8005384: f7ff ffec bl 8005360 <__sfp_lock_acquire> + 8005388: 6a23 ldr r3, [r4, #32] + 800538a: 2b00 cmp r3, #0 + 800538c: d002 beq.n 8005394 <__sinit+0x14> + 800538e: f7ff ffef bl 8005370 <__sfp_lock_release> + 8005392: bd10 pop {r4, pc} + 8005394: 4b04 ldr r3, [pc, #16] @ (80053a8 <__sinit+0x28>) + 8005396: 6223 str r3, [r4, #32] + 8005398: 4b04 ldr r3, [pc, #16] @ (80053ac <__sinit+0x2c>) + 800539a: 681b ldr r3, [r3, #0] + 800539c: 2b00 cmp r3, #0 + 800539e: d1f6 bne.n 800538e <__sinit+0xe> + 80053a0: f7ff ffc0 bl 8005324 + 80053a4: e7f3 b.n 800538e <__sinit+0xe> + 80053a6: 46c0 nop @ (mov r8, r8) + 80053a8: 080052e9 .word 0x080052e9 + 80053ac: 20000314 .word 0x20000314 -0800508c <_fwalk_sglue>: - 800508c: b5f7 push {r0, r1, r2, r4, r5, r6, r7, lr} - 800508e: 0014 movs r4, r2 - 8005090: 2600 movs r6, #0 - 8005092: 9000 str r0, [sp, #0] - 8005094: 9101 str r1, [sp, #4] - 8005096: 68a5 ldr r5, [r4, #8] - 8005098: 6867 ldr r7, [r4, #4] - 800509a: 3f01 subs r7, #1 - 800509c: d504 bpl.n 80050a8 <_fwalk_sglue+0x1c> - 800509e: 6824 ldr r4, [r4, #0] - 80050a0: 2c00 cmp r4, #0 - 80050a2: d1f8 bne.n 8005096 <_fwalk_sglue+0xa> - 80050a4: 0030 movs r0, r6 - 80050a6: bdfe pop {r1, r2, r3, r4, r5, r6, r7, pc} - 80050a8: 89ab ldrh r3, [r5, #12] - 80050aa: 2b01 cmp r3, #1 - 80050ac: d908 bls.n 80050c0 <_fwalk_sglue+0x34> - 80050ae: 220e movs r2, #14 - 80050b0: 5eab ldrsh r3, [r5, r2] - 80050b2: 3301 adds r3, #1 - 80050b4: d004 beq.n 80050c0 <_fwalk_sglue+0x34> - 80050b6: 0029 movs r1, r5 - 80050b8: 9800 ldr r0, [sp, #0] - 80050ba: 9b01 ldr r3, [sp, #4] - 80050bc: 4798 blx r3 - 80050be: 4306 orrs r6, r0 - 80050c0: 3568 adds r5, #104 @ 0x68 - 80050c2: e7ea b.n 800509a <_fwalk_sglue+0xe> +080053b0 <_fwalk_sglue>: + 80053b0: b5f7 push {r0, r1, r2, r4, r5, r6, r7, lr} + 80053b2: 0014 movs r4, r2 + 80053b4: 2600 movs r6, #0 + 80053b6: 9000 str r0, [sp, #0] + 80053b8: 9101 str r1, [sp, #4] + 80053ba: 68a5 ldr r5, [r4, #8] + 80053bc: 6867 ldr r7, [r4, #4] + 80053be: 3f01 subs r7, #1 + 80053c0: d504 bpl.n 80053cc <_fwalk_sglue+0x1c> + 80053c2: 6824 ldr r4, [r4, #0] + 80053c4: 2c00 cmp r4, #0 + 80053c6: d1f8 bne.n 80053ba <_fwalk_sglue+0xa> + 80053c8: 0030 movs r0, r6 + 80053ca: bdfe pop {r1, r2, r3, r4, r5, r6, r7, pc} + 80053cc: 89ab ldrh r3, [r5, #12] + 80053ce: 2b01 cmp r3, #1 + 80053d0: d908 bls.n 80053e4 <_fwalk_sglue+0x34> + 80053d2: 220e movs r2, #14 + 80053d4: 5eab ldrsh r3, [r5, r2] + 80053d6: 3301 adds r3, #1 + 80053d8: d004 beq.n 80053e4 <_fwalk_sglue+0x34> + 80053da: 0029 movs r1, r5 + 80053dc: 9800 ldr r0, [sp, #0] + 80053de: 9b01 ldr r3, [sp, #4] + 80053e0: 4798 blx r3 + 80053e2: 4306 orrs r6, r0 + 80053e4: 3568 adds r5, #104 @ 0x68 + 80053e6: e7ea b.n 80053be <_fwalk_sglue+0xe> -080050c4 : - 80050c4: b40f push {r0, r1, r2, r3} - 80050c6: b507 push {r0, r1, r2, lr} - 80050c8: 4905 ldr r1, [pc, #20] @ (80050e0 ) - 80050ca: ab04 add r3, sp, #16 - 80050cc: 6808 ldr r0, [r1, #0] - 80050ce: cb04 ldmia r3!, {r2} - 80050d0: 6881 ldr r1, [r0, #8] - 80050d2: 9301 str r3, [sp, #4] - 80050d4: f000 fafa bl 80056cc <_vfiprintf_r> - 80050d8: b003 add sp, #12 - 80050da: bc08 pop {r3} - 80050dc: b004 add sp, #16 - 80050de: 4718 bx r3 - 80050e0: 20000018 .word 0x20000018 +080053e8 : + 80053e8: b40f push {r0, r1, r2, r3} + 80053ea: b507 push {r0, r1, r2, lr} + 80053ec: 4905 ldr r1, [pc, #20] @ (8005404 ) + 80053ee: ab04 add r3, sp, #16 + 80053f0: 6808 ldr r0, [r1, #0] + 80053f2: cb04 ldmia r3!, {r2} + 80053f4: 6881 ldr r1, [r0, #8] + 80053f6: 9301 str r3, [sp, #4] + 80053f8: f000 fafa bl 80059f0 <_vfiprintf_r> + 80053fc: b003 add sp, #12 + 80053fe: bc08 pop {r3} + 8005400: b004 add sp, #16 + 8005402: 4718 bx r3 + 8005404: 20000018 .word 0x20000018 -080050e4 <_puts_r>: - 80050e4: 6a03 ldr r3, [r0, #32] - 80050e6: b570 push {r4, r5, r6, lr} - 80050e8: 0005 movs r5, r0 - 80050ea: 000e movs r6, r1 - 80050ec: 6884 ldr r4, [r0, #8] - 80050ee: 2b00 cmp r3, #0 - 80050f0: d101 bne.n 80050f6 <_puts_r+0x12> - 80050f2: f7ff ffb3 bl 800505c <__sinit> - 80050f6: 6e63 ldr r3, [r4, #100] @ 0x64 - 80050f8: 07db lsls r3, r3, #31 - 80050fa: d405 bmi.n 8005108 <_puts_r+0x24> - 80050fc: 89a3 ldrh r3, [r4, #12] - 80050fe: 059b lsls r3, r3, #22 - 8005100: d402 bmi.n 8005108 <_puts_r+0x24> - 8005102: 6da0 ldr r0, [r4, #88] @ 0x58 - 8005104: f000 f9bb bl 800547e <__retarget_lock_acquire_recursive> - 8005108: 89a3 ldrh r3, [r4, #12] - 800510a: 071b lsls r3, r3, #28 - 800510c: d502 bpl.n 8005114 <_puts_r+0x30> - 800510e: 6923 ldr r3, [r4, #16] - 8005110: 2b00 cmp r3, #0 - 8005112: d11f bne.n 8005154 <_puts_r+0x70> - 8005114: 0021 movs r1, r4 - 8005116: 0028 movs r0, r5 - 8005118: f000 f8d2 bl 80052c0 <__swsetup_r> - 800511c: 2800 cmp r0, #0 - 800511e: d019 beq.n 8005154 <_puts_r+0x70> - 8005120: 2501 movs r5, #1 - 8005122: 426d negs r5, r5 - 8005124: 6e63 ldr r3, [r4, #100] @ 0x64 - 8005126: 07db lsls r3, r3, #31 - 8005128: d405 bmi.n 8005136 <_puts_r+0x52> - 800512a: 89a3 ldrh r3, [r4, #12] - 800512c: 059b lsls r3, r3, #22 - 800512e: d402 bmi.n 8005136 <_puts_r+0x52> - 8005130: 6da0 ldr r0, [r4, #88] @ 0x58 - 8005132: f000 f9a5 bl 8005480 <__retarget_lock_release_recursive> - 8005136: 0028 movs r0, r5 - 8005138: bd70 pop {r4, r5, r6, pc} - 800513a: 3601 adds r6, #1 - 800513c: 60a3 str r3, [r4, #8] - 800513e: 2b00 cmp r3, #0 - 8005140: da04 bge.n 800514c <_puts_r+0x68> - 8005142: 69a2 ldr r2, [r4, #24] - 8005144: 429a cmp r2, r3 - 8005146: dc16 bgt.n 8005176 <_puts_r+0x92> - 8005148: 290a cmp r1, #10 - 800514a: d014 beq.n 8005176 <_puts_r+0x92> - 800514c: 6823 ldr r3, [r4, #0] - 800514e: 1c5a adds r2, r3, #1 - 8005150: 6022 str r2, [r4, #0] - 8005152: 7019 strb r1, [r3, #0] - 8005154: 68a3 ldr r3, [r4, #8] - 8005156: 7831 ldrb r1, [r6, #0] - 8005158: 3b01 subs r3, #1 - 800515a: 2900 cmp r1, #0 - 800515c: d1ed bne.n 800513a <_puts_r+0x56> - 800515e: 60a3 str r3, [r4, #8] - 8005160: 2b00 cmp r3, #0 - 8005162: da0f bge.n 8005184 <_puts_r+0xa0> - 8005164: 0022 movs r2, r4 - 8005166: 0028 movs r0, r5 - 8005168: 310a adds r1, #10 - 800516a: f000 f867 bl 800523c <__swbuf_r> - 800516e: 3001 adds r0, #1 - 8005170: d0d6 beq.n 8005120 <_puts_r+0x3c> - 8005172: 250a movs r5, #10 - 8005174: e7d6 b.n 8005124 <_puts_r+0x40> - 8005176: 0022 movs r2, r4 - 8005178: 0028 movs r0, r5 - 800517a: f000 f85f bl 800523c <__swbuf_r> - 800517e: 3001 adds r0, #1 - 8005180: d1e8 bne.n 8005154 <_puts_r+0x70> - 8005182: e7cd b.n 8005120 <_puts_r+0x3c> - 8005184: 6823 ldr r3, [r4, #0] - 8005186: 1c5a adds r2, r3, #1 - 8005188: 6022 str r2, [r4, #0] - 800518a: 220a movs r2, #10 - 800518c: 701a strb r2, [r3, #0] - 800518e: e7f0 b.n 8005172 <_puts_r+0x8e> - -08005190 : - 8005190: b510 push {r4, lr} - 8005192: 4b03 ldr r3, [pc, #12] @ (80051a0 ) - 8005194: 0001 movs r1, r0 - 8005196: 6818 ldr r0, [r3, #0] - 8005198: f7ff ffa4 bl 80050e4 <_puts_r> - 800519c: bd10 pop {r4, pc} - 800519e: 46c0 nop @ (mov r8, r8) - 80051a0: 20000018 .word 0x20000018 - -080051a4 <__sread>: - 80051a4: b570 push {r4, r5, r6, lr} - 80051a6: 000c movs r4, r1 - 80051a8: 250e movs r5, #14 - 80051aa: 5f49 ldrsh r1, [r1, r5] - 80051ac: f000 f914 bl 80053d8 <_read_r> - 80051b0: 2800 cmp r0, #0 - 80051b2: db03 blt.n 80051bc <__sread+0x18> - 80051b4: 6d63 ldr r3, [r4, #84] @ 0x54 - 80051b6: 181b adds r3, r3, r0 - 80051b8: 6563 str r3, [r4, #84] @ 0x54 - 80051ba: bd70 pop {r4, r5, r6, pc} - 80051bc: 89a3 ldrh r3, [r4, #12] - 80051be: 4a02 ldr r2, [pc, #8] @ (80051c8 <__sread+0x24>) - 80051c0: 4013 ands r3, r2 - 80051c2: 81a3 strh r3, [r4, #12] - 80051c4: e7f9 b.n 80051ba <__sread+0x16> - 80051c6: 46c0 nop @ (mov r8, r8) - 80051c8: ffffefff .word 0xffffefff - -080051cc <__swrite>: - 80051cc: b5f8 push {r3, r4, r5, r6, r7, lr} - 80051ce: 001f movs r7, r3 - 80051d0: 898b ldrh r3, [r1, #12] - 80051d2: 0005 movs r5, r0 - 80051d4: 000c movs r4, r1 - 80051d6: 0016 movs r6, r2 - 80051d8: 05db lsls r3, r3, #23 - 80051da: d505 bpl.n 80051e8 <__swrite+0x1c> - 80051dc: 230e movs r3, #14 - 80051de: 5ec9 ldrsh r1, [r1, r3] - 80051e0: 2200 movs r2, #0 - 80051e2: 2302 movs r3, #2 - 80051e4: f000 f8e4 bl 80053b0 <_lseek_r> - 80051e8: 89a3 ldrh r3, [r4, #12] - 80051ea: 4a05 ldr r2, [pc, #20] @ (8005200 <__swrite+0x34>) - 80051ec: 0028 movs r0, r5 - 80051ee: 4013 ands r3, r2 - 80051f0: 81a3 strh r3, [r4, #12] - 80051f2: 0032 movs r2, r6 - 80051f4: 230e movs r3, #14 - 80051f6: 5ee1 ldrsh r1, [r4, r3] - 80051f8: 003b movs r3, r7 - 80051fa: f000 f901 bl 8005400 <_write_r> - 80051fe: bdf8 pop {r3, r4, r5, r6, r7, pc} - 8005200: ffffefff .word 0xffffefff - -08005204 <__sseek>: - 8005204: b570 push {r4, r5, r6, lr} - 8005206: 000c movs r4, r1 - 8005208: 250e movs r5, #14 - 800520a: 5f49 ldrsh r1, [r1, r5] - 800520c: f000 f8d0 bl 80053b0 <_lseek_r> - 8005210: 89a3 ldrh r3, [r4, #12] - 8005212: 1c42 adds r2, r0, #1 - 8005214: d103 bne.n 800521e <__sseek+0x1a> - 8005216: 4a05 ldr r2, [pc, #20] @ (800522c <__sseek+0x28>) - 8005218: 4013 ands r3, r2 - 800521a: 81a3 strh r3, [r4, #12] - 800521c: bd70 pop {r4, r5, r6, pc} - 800521e: 2280 movs r2, #128 @ 0x80 - 8005220: 0152 lsls r2, r2, #5 - 8005222: 4313 orrs r3, r2 - 8005224: 81a3 strh r3, [r4, #12] - 8005226: 6560 str r0, [r4, #84] @ 0x54 - 8005228: e7f8 b.n 800521c <__sseek+0x18> - 800522a: 46c0 nop @ (mov r8, r8) - 800522c: ffffefff .word 0xffffefff - -08005230 <__sclose>: - 8005230: b510 push {r4, lr} - 8005232: 230e movs r3, #14 - 8005234: 5ec9 ldrsh r1, [r1, r3] - 8005236: f000 f8a9 bl 800538c <_close_r> - 800523a: bd10 pop {r4, pc} - -0800523c <__swbuf_r>: - 800523c: b5f8 push {r3, r4, r5, r6, r7, lr} - 800523e: 0006 movs r6, r0 - 8005240: 000d movs r5, r1 - 8005242: 0014 movs r4, r2 - 8005244: 2800 cmp r0, #0 - 8005246: d004 beq.n 8005252 <__swbuf_r+0x16> - 8005248: 6a03 ldr r3, [r0, #32] - 800524a: 2b00 cmp r3, #0 - 800524c: d101 bne.n 8005252 <__swbuf_r+0x16> - 800524e: f7ff ff05 bl 800505c <__sinit> - 8005252: 69a3 ldr r3, [r4, #24] - 8005254: 60a3 str r3, [r4, #8] - 8005256: 89a3 ldrh r3, [r4, #12] - 8005258: 071b lsls r3, r3, #28 - 800525a: d502 bpl.n 8005262 <__swbuf_r+0x26> - 800525c: 6923 ldr r3, [r4, #16] - 800525e: 2b00 cmp r3, #0 - 8005260: d109 bne.n 8005276 <__swbuf_r+0x3a> - 8005262: 0021 movs r1, r4 - 8005264: 0030 movs r0, r6 - 8005266: f000 f82b bl 80052c0 <__swsetup_r> - 800526a: 2800 cmp r0, #0 - 800526c: d003 beq.n 8005276 <__swbuf_r+0x3a> - 800526e: 2501 movs r5, #1 - 8005270: 426d negs r5, r5 - 8005272: 0028 movs r0, r5 - 8005274: bdf8 pop {r3, r4, r5, r6, r7, pc} - 8005276: 6923 ldr r3, [r4, #16] - 8005278: 6820 ldr r0, [r4, #0] - 800527a: b2ef uxtb r7, r5 - 800527c: 1ac0 subs r0, r0, r3 - 800527e: 6963 ldr r3, [r4, #20] - 8005280: b2ed uxtb r5, r5 - 8005282: 4283 cmp r3, r0 - 8005284: dc05 bgt.n 8005292 <__swbuf_r+0x56> - 8005286: 0021 movs r1, r4 - 8005288: 0030 movs r0, r6 - 800528a: f000 fd3f bl 8005d0c <_fflush_r> - 800528e: 2800 cmp r0, #0 - 8005290: d1ed bne.n 800526e <__swbuf_r+0x32> - 8005292: 68a3 ldr r3, [r4, #8] - 8005294: 3001 adds r0, #1 - 8005296: 3b01 subs r3, #1 - 8005298: 60a3 str r3, [r4, #8] - 800529a: 6823 ldr r3, [r4, #0] - 800529c: 1c5a adds r2, r3, #1 - 800529e: 6022 str r2, [r4, #0] - 80052a0: 701f strb r7, [r3, #0] - 80052a2: 6963 ldr r3, [r4, #20] - 80052a4: 4283 cmp r3, r0 - 80052a6: d004 beq.n 80052b2 <__swbuf_r+0x76> - 80052a8: 89a3 ldrh r3, [r4, #12] - 80052aa: 07db lsls r3, r3, #31 - 80052ac: d5e1 bpl.n 8005272 <__swbuf_r+0x36> - 80052ae: 2d0a cmp r5, #10 - 80052b0: d1df bne.n 8005272 <__swbuf_r+0x36> - 80052b2: 0021 movs r1, r4 - 80052b4: 0030 movs r0, r6 - 80052b6: f000 fd29 bl 8005d0c <_fflush_r> - 80052ba: 2800 cmp r0, #0 - 80052bc: d0d9 beq.n 8005272 <__swbuf_r+0x36> - 80052be: e7d6 b.n 800526e <__swbuf_r+0x32> - -080052c0 <__swsetup_r>: - 80052c0: 4b2d ldr r3, [pc, #180] @ (8005378 <__swsetup_r+0xb8>) - 80052c2: b570 push {r4, r5, r6, lr} - 80052c4: 0005 movs r5, r0 - 80052c6: 6818 ldr r0, [r3, #0] - 80052c8: 000c movs r4, r1 - 80052ca: 2800 cmp r0, #0 - 80052cc: d004 beq.n 80052d8 <__swsetup_r+0x18> - 80052ce: 6a03 ldr r3, [r0, #32] - 80052d0: 2b00 cmp r3, #0 - 80052d2: d101 bne.n 80052d8 <__swsetup_r+0x18> - 80052d4: f7ff fec2 bl 800505c <__sinit> - 80052d8: 230c movs r3, #12 - 80052da: 5ee2 ldrsh r2, [r4, r3] - 80052dc: 0713 lsls r3, r2, #28 - 80052de: d423 bmi.n 8005328 <__swsetup_r+0x68> - 80052e0: 06d3 lsls r3, r2, #27 - 80052e2: d407 bmi.n 80052f4 <__swsetup_r+0x34> - 80052e4: 2309 movs r3, #9 - 80052e6: 602b str r3, [r5, #0] - 80052e8: 2340 movs r3, #64 @ 0x40 - 80052ea: 2001 movs r0, #1 - 80052ec: 4313 orrs r3, r2 - 80052ee: 81a3 strh r3, [r4, #12] - 80052f0: 4240 negs r0, r0 - 80052f2: e03a b.n 800536a <__swsetup_r+0xaa> - 80052f4: 0752 lsls r2, r2, #29 - 80052f6: d513 bpl.n 8005320 <__swsetup_r+0x60> - 80052f8: 6b61 ldr r1, [r4, #52] @ 0x34 - 80052fa: 2900 cmp r1, #0 - 80052fc: d008 beq.n 8005310 <__swsetup_r+0x50> - 80052fe: 0023 movs r3, r4 - 8005300: 3344 adds r3, #68 @ 0x44 - 8005302: 4299 cmp r1, r3 - 8005304: d002 beq.n 800530c <__swsetup_r+0x4c> - 8005306: 0028 movs r0, r5 - 8005308: f000 f8bc bl 8005484 <_free_r> - 800530c: 2300 movs r3, #0 - 800530e: 6363 str r3, [r4, #52] @ 0x34 - 8005310: 2224 movs r2, #36 @ 0x24 - 8005312: 89a3 ldrh r3, [r4, #12] - 8005314: 4393 bics r3, r2 - 8005316: 81a3 strh r3, [r4, #12] - 8005318: 2300 movs r3, #0 - 800531a: 6063 str r3, [r4, #4] - 800531c: 6923 ldr r3, [r4, #16] - 800531e: 6023 str r3, [r4, #0] - 8005320: 2308 movs r3, #8 - 8005322: 89a2 ldrh r2, [r4, #12] - 8005324: 4313 orrs r3, r2 - 8005326: 81a3 strh r3, [r4, #12] - 8005328: 6923 ldr r3, [r4, #16] - 800532a: 2b00 cmp r3, #0 - 800532c: d10b bne.n 8005346 <__swsetup_r+0x86> - 800532e: 21a0 movs r1, #160 @ 0xa0 - 8005330: 2280 movs r2, #128 @ 0x80 - 8005332: 89a3 ldrh r3, [r4, #12] - 8005334: 0089 lsls r1, r1, #2 - 8005336: 0092 lsls r2, r2, #2 - 8005338: 400b ands r3, r1 - 800533a: 4293 cmp r3, r2 - 800533c: d003 beq.n 8005346 <__swsetup_r+0x86> - 800533e: 0021 movs r1, r4 - 8005340: 0028 movs r0, r5 - 8005342: f000 fd39 bl 8005db8 <__smakebuf_r> - 8005346: 230c movs r3, #12 - 8005348: 5ee2 ldrsh r2, [r4, r3] - 800534a: 2101 movs r1, #1 - 800534c: 0013 movs r3, r2 - 800534e: 400b ands r3, r1 - 8005350: 420a tst r2, r1 - 8005352: d00b beq.n 800536c <__swsetup_r+0xac> - 8005354: 2300 movs r3, #0 - 8005356: 60a3 str r3, [r4, #8] - 8005358: 6963 ldr r3, [r4, #20] - 800535a: 425b negs r3, r3 - 800535c: 61a3 str r3, [r4, #24] - 800535e: 2000 movs r0, #0 - 8005360: 6923 ldr r3, [r4, #16] - 8005362: 4283 cmp r3, r0 - 8005364: d101 bne.n 800536a <__swsetup_r+0xaa> - 8005366: 0613 lsls r3, r2, #24 - 8005368: d4be bmi.n 80052e8 <__swsetup_r+0x28> - 800536a: bd70 pop {r4, r5, r6, pc} - 800536c: 0791 lsls r1, r2, #30 - 800536e: d400 bmi.n 8005372 <__swsetup_r+0xb2> - 8005370: 6963 ldr r3, [r4, #20] - 8005372: 60a3 str r3, [r4, #8] - 8005374: e7f3 b.n 800535e <__swsetup_r+0x9e> - 8005376: 46c0 nop @ (mov r8, r8) - 8005378: 20000018 .word 0x20000018 - -0800537c : - 800537c: 0003 movs r3, r0 - 800537e: 1882 adds r2, r0, r2 - 8005380: 4293 cmp r3, r2 - 8005382: d100 bne.n 8005386 - 8005384: 4770 bx lr - 8005386: 7019 strb r1, [r3, #0] - 8005388: 3301 adds r3, #1 - 800538a: e7f9 b.n 8005380 - -0800538c <_close_r>: - 800538c: 2300 movs r3, #0 - 800538e: b570 push {r4, r5, r6, lr} - 8005390: 4d06 ldr r5, [pc, #24] @ (80053ac <_close_r+0x20>) - 8005392: 0004 movs r4, r0 - 8005394: 0008 movs r0, r1 - 8005396: 602b str r3, [r5, #0] - 8005398: f7fb ffb9 bl 800130e <_close> - 800539c: 1c43 adds r3, r0, #1 - 800539e: d103 bne.n 80053a8 <_close_r+0x1c> - 80053a0: 682b ldr r3, [r5, #0] - 80053a2: 2b00 cmp r3, #0 - 80053a4: d000 beq.n 80053a8 <_close_r+0x1c> - 80053a6: 6023 str r3, [r4, #0] - 80053a8: bd70 pop {r4, r5, r6, pc} - 80053aa: 46c0 nop @ (mov r8, r8) - 80053ac: 20000328 .word 0x20000328 - -080053b0 <_lseek_r>: - 80053b0: b570 push {r4, r5, r6, lr} - 80053b2: 0004 movs r4, r0 - 80053b4: 0008 movs r0, r1 - 80053b6: 0011 movs r1, r2 - 80053b8: 001a movs r2, r3 - 80053ba: 2300 movs r3, #0 - 80053bc: 4d05 ldr r5, [pc, #20] @ (80053d4 <_lseek_r+0x24>) - 80053be: 602b str r3, [r5, #0] - 80053c0: f7fb ffc6 bl 8001350 <_lseek> - 80053c4: 1c43 adds r3, r0, #1 - 80053c6: d103 bne.n 80053d0 <_lseek_r+0x20> - 80053c8: 682b ldr r3, [r5, #0] - 80053ca: 2b00 cmp r3, #0 - 80053cc: d000 beq.n 80053d0 <_lseek_r+0x20> - 80053ce: 6023 str r3, [r4, #0] - 80053d0: bd70 pop {r4, r5, r6, pc} - 80053d2: 46c0 nop @ (mov r8, r8) - 80053d4: 20000328 .word 0x20000328 - -080053d8 <_read_r>: - 80053d8: b570 push {r4, r5, r6, lr} - 80053da: 0004 movs r4, r0 - 80053dc: 0008 movs r0, r1 - 80053de: 0011 movs r1, r2 - 80053e0: 001a movs r2, r3 - 80053e2: 2300 movs r3, #0 - 80053e4: 4d05 ldr r5, [pc, #20] @ (80053fc <_read_r+0x24>) - 80053e6: 602b str r3, [r5, #0] - 80053e8: f7fb ff58 bl 800129c <_read> - 80053ec: 1c43 adds r3, r0, #1 - 80053ee: d103 bne.n 80053f8 <_read_r+0x20> - 80053f0: 682b ldr r3, [r5, #0] - 80053f2: 2b00 cmp r3, #0 - 80053f4: d000 beq.n 80053f8 <_read_r+0x20> - 80053f6: 6023 str r3, [r4, #0] - 80053f8: bd70 pop {r4, r5, r6, pc} - 80053fa: 46c0 nop @ (mov r8, r8) - 80053fc: 20000328 .word 0x20000328 - -08005400 <_write_r>: - 8005400: b570 push {r4, r5, r6, lr} - 8005402: 0004 movs r4, r0 - 8005404: 0008 movs r0, r1 - 8005406: 0011 movs r1, r2 - 8005408: 001a movs r2, r3 - 800540a: 2300 movs r3, #0 - 800540c: 4d05 ldr r5, [pc, #20] @ (8005424 <_write_r+0x24>) - 800540e: 602b str r3, [r5, #0] - 8005410: f7fb ff61 bl 80012d6 <_write> - 8005414: 1c43 adds r3, r0, #1 - 8005416: d103 bne.n 8005420 <_write_r+0x20> - 8005418: 682b ldr r3, [r5, #0] - 800541a: 2b00 cmp r3, #0 - 800541c: d000 beq.n 8005420 <_write_r+0x20> - 800541e: 6023 str r3, [r4, #0] - 8005420: bd70 pop {r4, r5, r6, pc} - 8005422: 46c0 nop @ (mov r8, r8) - 8005424: 20000328 .word 0x20000328 - -08005428 <__errno>: - 8005428: 4b01 ldr r3, [pc, #4] @ (8005430 <__errno+0x8>) - 800542a: 6818 ldr r0, [r3, #0] - 800542c: 4770 bx lr - 800542e: 46c0 nop @ (mov r8, r8) - 8005430: 20000018 .word 0x20000018 - -08005434 <__libc_init_array>: - 8005434: b570 push {r4, r5, r6, lr} - 8005436: 2600 movs r6, #0 - 8005438: 4c0c ldr r4, [pc, #48] @ (800546c <__libc_init_array+0x38>) - 800543a: 4d0d ldr r5, [pc, #52] @ (8005470 <__libc_init_array+0x3c>) - 800543c: 1b64 subs r4, r4, r5 - 800543e: 10a4 asrs r4, r4, #2 - 8005440: 42a6 cmp r6, r4 - 8005442: d109 bne.n 8005458 <__libc_init_array+0x24> - 8005444: 2600 movs r6, #0 - 8005446: f000 fd3b bl 8005ec0 <_init> - 800544a: 4c0a ldr r4, [pc, #40] @ (8005474 <__libc_init_array+0x40>) - 800544c: 4d0a ldr r5, [pc, #40] @ (8005478 <__libc_init_array+0x44>) - 800544e: 1b64 subs r4, r4, r5 - 8005450: 10a4 asrs r4, r4, #2 - 8005452: 42a6 cmp r6, r4 - 8005454: d105 bne.n 8005462 <__libc_init_array+0x2e> - 8005456: bd70 pop {r4, r5, r6, pc} - 8005458: 00b3 lsls r3, r6, #2 - 800545a: 58eb ldr r3, [r5, r3] - 800545c: 4798 blx r3 +08005408 <_puts_r>: + 8005408: 6a03 ldr r3, [r0, #32] + 800540a: b570 push {r4, r5, r6, lr} + 800540c: 0005 movs r5, r0 + 800540e: 000e movs r6, r1 + 8005410: 6884 ldr r4, [r0, #8] + 8005412: 2b00 cmp r3, #0 + 8005414: d101 bne.n 800541a <_puts_r+0x12> + 8005416: f7ff ffb3 bl 8005380 <__sinit> + 800541a: 6e63 ldr r3, [r4, #100] @ 0x64 + 800541c: 07db lsls r3, r3, #31 + 800541e: d405 bmi.n 800542c <_puts_r+0x24> + 8005420: 89a3 ldrh r3, [r4, #12] + 8005422: 059b lsls r3, r3, #22 + 8005424: d402 bmi.n 800542c <_puts_r+0x24> + 8005426: 6da0 ldr r0, [r4, #88] @ 0x58 + 8005428: f000 f9bb bl 80057a2 <__retarget_lock_acquire_recursive> + 800542c: 89a3 ldrh r3, [r4, #12] + 800542e: 071b lsls r3, r3, #28 + 8005430: d502 bpl.n 8005438 <_puts_r+0x30> + 8005432: 6923 ldr r3, [r4, #16] + 8005434: 2b00 cmp r3, #0 + 8005436: d11f bne.n 8005478 <_puts_r+0x70> + 8005438: 0021 movs r1, r4 + 800543a: 0028 movs r0, r5 + 800543c: f000 f8d2 bl 80055e4 <__swsetup_r> + 8005440: 2800 cmp r0, #0 + 8005442: d019 beq.n 8005478 <_puts_r+0x70> + 8005444: 2501 movs r5, #1 + 8005446: 426d negs r5, r5 + 8005448: 6e63 ldr r3, [r4, #100] @ 0x64 + 800544a: 07db lsls r3, r3, #31 + 800544c: d405 bmi.n 800545a <_puts_r+0x52> + 800544e: 89a3 ldrh r3, [r4, #12] + 8005450: 059b lsls r3, r3, #22 + 8005452: d402 bmi.n 800545a <_puts_r+0x52> + 8005454: 6da0 ldr r0, [r4, #88] @ 0x58 + 8005456: f000 f9a5 bl 80057a4 <__retarget_lock_release_recursive> + 800545a: 0028 movs r0, r5 + 800545c: bd70 pop {r4, r5, r6, pc} 800545e: 3601 adds r6, #1 - 8005460: e7ee b.n 8005440 <__libc_init_array+0xc> - 8005462: 00b3 lsls r3, r6, #2 - 8005464: 58eb ldr r3, [r5, r3] - 8005466: 4798 blx r3 - 8005468: 3601 adds r6, #1 - 800546a: e7f2 b.n 8005452 <__libc_init_array+0x1e> - 800546c: 08005fdc .word 0x08005fdc - 8005470: 08005fdc .word 0x08005fdc - 8005474: 08005fe0 .word 0x08005fe0 - 8005478: 08005fdc .word 0x08005fdc + 8005460: 60a3 str r3, [r4, #8] + 8005462: 2b00 cmp r3, #0 + 8005464: da04 bge.n 8005470 <_puts_r+0x68> + 8005466: 69a2 ldr r2, [r4, #24] + 8005468: 429a cmp r2, r3 + 800546a: dc16 bgt.n 800549a <_puts_r+0x92> + 800546c: 290a cmp r1, #10 + 800546e: d014 beq.n 800549a <_puts_r+0x92> + 8005470: 6823 ldr r3, [r4, #0] + 8005472: 1c5a adds r2, r3, #1 + 8005474: 6022 str r2, [r4, #0] + 8005476: 7019 strb r1, [r3, #0] + 8005478: 68a3 ldr r3, [r4, #8] + 800547a: 7831 ldrb r1, [r6, #0] + 800547c: 3b01 subs r3, #1 + 800547e: 2900 cmp r1, #0 + 8005480: d1ed bne.n 800545e <_puts_r+0x56> + 8005482: 60a3 str r3, [r4, #8] + 8005484: 2b00 cmp r3, #0 + 8005486: da0f bge.n 80054a8 <_puts_r+0xa0> + 8005488: 0022 movs r2, r4 + 800548a: 0028 movs r0, r5 + 800548c: 310a adds r1, #10 + 800548e: f000 f867 bl 8005560 <__swbuf_r> + 8005492: 3001 adds r0, #1 + 8005494: d0d6 beq.n 8005444 <_puts_r+0x3c> + 8005496: 250a movs r5, #10 + 8005498: e7d6 b.n 8005448 <_puts_r+0x40> + 800549a: 0022 movs r2, r4 + 800549c: 0028 movs r0, r5 + 800549e: f000 f85f bl 8005560 <__swbuf_r> + 80054a2: 3001 adds r0, #1 + 80054a4: d1e8 bne.n 8005478 <_puts_r+0x70> + 80054a6: e7cd b.n 8005444 <_puts_r+0x3c> + 80054a8: 6823 ldr r3, [r4, #0] + 80054aa: 1c5a adds r2, r3, #1 + 80054ac: 6022 str r2, [r4, #0] + 80054ae: 220a movs r2, #10 + 80054b0: 701a strb r2, [r3, #0] + 80054b2: e7f0 b.n 8005496 <_puts_r+0x8e> -0800547c <__retarget_lock_init_recursive>: - 800547c: 4770 bx lr +080054b4 : + 80054b4: b510 push {r4, lr} + 80054b6: 4b03 ldr r3, [pc, #12] @ (80054c4 ) + 80054b8: 0001 movs r1, r0 + 80054ba: 6818 ldr r0, [r3, #0] + 80054bc: f7ff ffa4 bl 8005408 <_puts_r> + 80054c0: bd10 pop {r4, pc} + 80054c2: 46c0 nop @ (mov r8, r8) + 80054c4: 20000018 .word 0x20000018 -0800547e <__retarget_lock_acquire_recursive>: - 800547e: 4770 bx lr +080054c8 <__sread>: + 80054c8: b570 push {r4, r5, r6, lr} + 80054ca: 000c movs r4, r1 + 80054cc: 250e movs r5, #14 + 80054ce: 5f49 ldrsh r1, [r1, r5] + 80054d0: f000 f914 bl 80056fc <_read_r> + 80054d4: 2800 cmp r0, #0 + 80054d6: db03 blt.n 80054e0 <__sread+0x18> + 80054d8: 6d63 ldr r3, [r4, #84] @ 0x54 + 80054da: 181b adds r3, r3, r0 + 80054dc: 6563 str r3, [r4, #84] @ 0x54 + 80054de: bd70 pop {r4, r5, r6, pc} + 80054e0: 89a3 ldrh r3, [r4, #12] + 80054e2: 4a02 ldr r2, [pc, #8] @ (80054ec <__sread+0x24>) + 80054e4: 4013 ands r3, r2 + 80054e6: 81a3 strh r3, [r4, #12] + 80054e8: e7f9 b.n 80054de <__sread+0x16> + 80054ea: 46c0 nop @ (mov r8, r8) + 80054ec: ffffefff .word 0xffffefff -08005480 <__retarget_lock_release_recursive>: - 8005480: 4770 bx lr +080054f0 <__swrite>: + 80054f0: b5f8 push {r3, r4, r5, r6, r7, lr} + 80054f2: 001f movs r7, r3 + 80054f4: 898b ldrh r3, [r1, #12] + 80054f6: 0005 movs r5, r0 + 80054f8: 000c movs r4, r1 + 80054fa: 0016 movs r6, r2 + 80054fc: 05db lsls r3, r3, #23 + 80054fe: d505 bpl.n 800550c <__swrite+0x1c> + 8005500: 230e movs r3, #14 + 8005502: 5ec9 ldrsh r1, [r1, r3] + 8005504: 2200 movs r2, #0 + 8005506: 2302 movs r3, #2 + 8005508: f000 f8e4 bl 80056d4 <_lseek_r> + 800550c: 89a3 ldrh r3, [r4, #12] + 800550e: 4a05 ldr r2, [pc, #20] @ (8005524 <__swrite+0x34>) + 8005510: 0028 movs r0, r5 + 8005512: 4013 ands r3, r2 + 8005514: 81a3 strh r3, [r4, #12] + 8005516: 0032 movs r2, r6 + 8005518: 230e movs r3, #14 + 800551a: 5ee1 ldrsh r1, [r4, r3] + 800551c: 003b movs r3, r7 + 800551e: f000 f901 bl 8005724 <_write_r> + 8005522: bdf8 pop {r3, r4, r5, r6, r7, pc} + 8005524: ffffefff .word 0xffffefff + +08005528 <__sseek>: + 8005528: b570 push {r4, r5, r6, lr} + 800552a: 000c movs r4, r1 + 800552c: 250e movs r5, #14 + 800552e: 5f49 ldrsh r1, [r1, r5] + 8005530: f000 f8d0 bl 80056d4 <_lseek_r> + 8005534: 89a3 ldrh r3, [r4, #12] + 8005536: 1c42 adds r2, r0, #1 + 8005538: d103 bne.n 8005542 <__sseek+0x1a> + 800553a: 4a05 ldr r2, [pc, #20] @ (8005550 <__sseek+0x28>) + 800553c: 4013 ands r3, r2 + 800553e: 81a3 strh r3, [r4, #12] + 8005540: bd70 pop {r4, r5, r6, pc} + 8005542: 2280 movs r2, #128 @ 0x80 + 8005544: 0152 lsls r2, r2, #5 + 8005546: 4313 orrs r3, r2 + 8005548: 81a3 strh r3, [r4, #12] + 800554a: 6560 str r0, [r4, #84] @ 0x54 + 800554c: e7f8 b.n 8005540 <__sseek+0x18> + 800554e: 46c0 nop @ (mov r8, r8) + 8005550: ffffefff .word 0xffffefff + +08005554 <__sclose>: + 8005554: b510 push {r4, lr} + 8005556: 230e movs r3, #14 + 8005558: 5ec9 ldrsh r1, [r1, r3] + 800555a: f000 f8a9 bl 80056b0 <_close_r> + 800555e: bd10 pop {r4, pc} + +08005560 <__swbuf_r>: + 8005560: b5f8 push {r3, r4, r5, r6, r7, lr} + 8005562: 0006 movs r6, r0 + 8005564: 000d movs r5, r1 + 8005566: 0014 movs r4, r2 + 8005568: 2800 cmp r0, #0 + 800556a: d004 beq.n 8005576 <__swbuf_r+0x16> + 800556c: 6a03 ldr r3, [r0, #32] + 800556e: 2b00 cmp r3, #0 + 8005570: d101 bne.n 8005576 <__swbuf_r+0x16> + 8005572: f7ff ff05 bl 8005380 <__sinit> + 8005576: 69a3 ldr r3, [r4, #24] + 8005578: 60a3 str r3, [r4, #8] + 800557a: 89a3 ldrh r3, [r4, #12] + 800557c: 071b lsls r3, r3, #28 + 800557e: d502 bpl.n 8005586 <__swbuf_r+0x26> + 8005580: 6923 ldr r3, [r4, #16] + 8005582: 2b00 cmp r3, #0 + 8005584: d109 bne.n 800559a <__swbuf_r+0x3a> + 8005586: 0021 movs r1, r4 + 8005588: 0030 movs r0, r6 + 800558a: f000 f82b bl 80055e4 <__swsetup_r> + 800558e: 2800 cmp r0, #0 + 8005590: d003 beq.n 800559a <__swbuf_r+0x3a> + 8005592: 2501 movs r5, #1 + 8005594: 426d negs r5, r5 + 8005596: 0028 movs r0, r5 + 8005598: bdf8 pop {r3, r4, r5, r6, r7, pc} + 800559a: 6923 ldr r3, [r4, #16] + 800559c: 6820 ldr r0, [r4, #0] + 800559e: b2ef uxtb r7, r5 + 80055a0: 1ac0 subs r0, r0, r3 + 80055a2: 6963 ldr r3, [r4, #20] + 80055a4: b2ed uxtb r5, r5 + 80055a6: 4283 cmp r3, r0 + 80055a8: dc05 bgt.n 80055b6 <__swbuf_r+0x56> + 80055aa: 0021 movs r1, r4 + 80055ac: 0030 movs r0, r6 + 80055ae: f000 fd3f bl 8006030 <_fflush_r> + 80055b2: 2800 cmp r0, #0 + 80055b4: d1ed bne.n 8005592 <__swbuf_r+0x32> + 80055b6: 68a3 ldr r3, [r4, #8] + 80055b8: 3001 adds r0, #1 + 80055ba: 3b01 subs r3, #1 + 80055bc: 60a3 str r3, [r4, #8] + 80055be: 6823 ldr r3, [r4, #0] + 80055c0: 1c5a adds r2, r3, #1 + 80055c2: 6022 str r2, [r4, #0] + 80055c4: 701f strb r7, [r3, #0] + 80055c6: 6963 ldr r3, [r4, #20] + 80055c8: 4283 cmp r3, r0 + 80055ca: d004 beq.n 80055d6 <__swbuf_r+0x76> + 80055cc: 89a3 ldrh r3, [r4, #12] + 80055ce: 07db lsls r3, r3, #31 + 80055d0: d5e1 bpl.n 8005596 <__swbuf_r+0x36> + 80055d2: 2d0a cmp r5, #10 + 80055d4: d1df bne.n 8005596 <__swbuf_r+0x36> + 80055d6: 0021 movs r1, r4 + 80055d8: 0030 movs r0, r6 + 80055da: f000 fd29 bl 8006030 <_fflush_r> + 80055de: 2800 cmp r0, #0 + 80055e0: d0d9 beq.n 8005596 <__swbuf_r+0x36> + 80055e2: e7d6 b.n 8005592 <__swbuf_r+0x32> + +080055e4 <__swsetup_r>: + 80055e4: 4b2d ldr r3, [pc, #180] @ (800569c <__swsetup_r+0xb8>) + 80055e6: b570 push {r4, r5, r6, lr} + 80055e8: 0005 movs r5, r0 + 80055ea: 6818 ldr r0, [r3, #0] + 80055ec: 000c movs r4, r1 + 80055ee: 2800 cmp r0, #0 + 80055f0: d004 beq.n 80055fc <__swsetup_r+0x18> + 80055f2: 6a03 ldr r3, [r0, #32] + 80055f4: 2b00 cmp r3, #0 + 80055f6: d101 bne.n 80055fc <__swsetup_r+0x18> + 80055f8: f7ff fec2 bl 8005380 <__sinit> + 80055fc: 230c movs r3, #12 + 80055fe: 5ee2 ldrsh r2, [r4, r3] + 8005600: 0713 lsls r3, r2, #28 + 8005602: d423 bmi.n 800564c <__swsetup_r+0x68> + 8005604: 06d3 lsls r3, r2, #27 + 8005606: d407 bmi.n 8005618 <__swsetup_r+0x34> + 8005608: 2309 movs r3, #9 + 800560a: 602b str r3, [r5, #0] + 800560c: 2340 movs r3, #64 @ 0x40 + 800560e: 2001 movs r0, #1 + 8005610: 4313 orrs r3, r2 + 8005612: 81a3 strh r3, [r4, #12] + 8005614: 4240 negs r0, r0 + 8005616: e03a b.n 800568e <__swsetup_r+0xaa> + 8005618: 0752 lsls r2, r2, #29 + 800561a: d513 bpl.n 8005644 <__swsetup_r+0x60> + 800561c: 6b61 ldr r1, [r4, #52] @ 0x34 + 800561e: 2900 cmp r1, #0 + 8005620: d008 beq.n 8005634 <__swsetup_r+0x50> + 8005622: 0023 movs r3, r4 + 8005624: 3344 adds r3, #68 @ 0x44 + 8005626: 4299 cmp r1, r3 + 8005628: d002 beq.n 8005630 <__swsetup_r+0x4c> + 800562a: 0028 movs r0, r5 + 800562c: f000 f8bc bl 80057a8 <_free_r> + 8005630: 2300 movs r3, #0 + 8005632: 6363 str r3, [r4, #52] @ 0x34 + 8005634: 2224 movs r2, #36 @ 0x24 + 8005636: 89a3 ldrh r3, [r4, #12] + 8005638: 4393 bics r3, r2 + 800563a: 81a3 strh r3, [r4, #12] + 800563c: 2300 movs r3, #0 + 800563e: 6063 str r3, [r4, #4] + 8005640: 6923 ldr r3, [r4, #16] + 8005642: 6023 str r3, [r4, #0] + 8005644: 2308 movs r3, #8 + 8005646: 89a2 ldrh r2, [r4, #12] + 8005648: 4313 orrs r3, r2 + 800564a: 81a3 strh r3, [r4, #12] + 800564c: 6923 ldr r3, [r4, #16] + 800564e: 2b00 cmp r3, #0 + 8005650: d10b bne.n 800566a <__swsetup_r+0x86> + 8005652: 21a0 movs r1, #160 @ 0xa0 + 8005654: 2280 movs r2, #128 @ 0x80 + 8005656: 89a3 ldrh r3, [r4, #12] + 8005658: 0089 lsls r1, r1, #2 + 800565a: 0092 lsls r2, r2, #2 + 800565c: 400b ands r3, r1 + 800565e: 4293 cmp r3, r2 + 8005660: d003 beq.n 800566a <__swsetup_r+0x86> + 8005662: 0021 movs r1, r4 + 8005664: 0028 movs r0, r5 + 8005666: f000 fd39 bl 80060dc <__smakebuf_r> + 800566a: 230c movs r3, #12 + 800566c: 5ee2 ldrsh r2, [r4, r3] + 800566e: 2101 movs r1, #1 + 8005670: 0013 movs r3, r2 + 8005672: 400b ands r3, r1 + 8005674: 420a tst r2, r1 + 8005676: d00b beq.n 8005690 <__swsetup_r+0xac> + 8005678: 2300 movs r3, #0 + 800567a: 60a3 str r3, [r4, #8] + 800567c: 6963 ldr r3, [r4, #20] + 800567e: 425b negs r3, r3 + 8005680: 61a3 str r3, [r4, #24] + 8005682: 2000 movs r0, #0 + 8005684: 6923 ldr r3, [r4, #16] + 8005686: 4283 cmp r3, r0 + 8005688: d101 bne.n 800568e <__swsetup_r+0xaa> + 800568a: 0613 lsls r3, r2, #24 + 800568c: d4be bmi.n 800560c <__swsetup_r+0x28> + 800568e: bd70 pop {r4, r5, r6, pc} + 8005690: 0791 lsls r1, r2, #30 + 8005692: d400 bmi.n 8005696 <__swsetup_r+0xb2> + 8005694: 6963 ldr r3, [r4, #20] + 8005696: 60a3 str r3, [r4, #8] + 8005698: e7f3 b.n 8005682 <__swsetup_r+0x9e> + 800569a: 46c0 nop @ (mov r8, r8) + 800569c: 20000018 .word 0x20000018 + +080056a0 : + 80056a0: 0003 movs r3, r0 + 80056a2: 1882 adds r2, r0, r2 + 80056a4: 4293 cmp r3, r2 + 80056a6: d100 bne.n 80056aa + 80056a8: 4770 bx lr + 80056aa: 7019 strb r1, [r3, #0] + 80056ac: 3301 adds r3, #1 + 80056ae: e7f9 b.n 80056a4 + +080056b0 <_close_r>: + 80056b0: 2300 movs r3, #0 + 80056b2: b570 push {r4, r5, r6, lr} + 80056b4: 4d06 ldr r5, [pc, #24] @ (80056d0 <_close_r+0x20>) + 80056b6: 0004 movs r4, r0 + 80056b8: 0008 movs r0, r1 + 80056ba: 602b str r3, [r5, #0] + 80056bc: f7fb fec7 bl 800144e <_close> + 80056c0: 1c43 adds r3, r0, #1 + 80056c2: d103 bne.n 80056cc <_close_r+0x1c> + 80056c4: 682b ldr r3, [r5, #0] + 80056c6: 2b00 cmp r3, #0 + 80056c8: d000 beq.n 80056cc <_close_r+0x1c> + 80056ca: 6023 str r3, [r4, #0] + 80056cc: bd70 pop {r4, r5, r6, pc} + 80056ce: 46c0 nop @ (mov r8, r8) + 80056d0: 20000318 .word 0x20000318 + +080056d4 <_lseek_r>: + 80056d4: b570 push {r4, r5, r6, lr} + 80056d6: 0004 movs r4, r0 + 80056d8: 0008 movs r0, r1 + 80056da: 0011 movs r1, r2 + 80056dc: 001a movs r2, r3 + 80056de: 2300 movs r3, #0 + 80056e0: 4d05 ldr r5, [pc, #20] @ (80056f8 <_lseek_r+0x24>) + 80056e2: 602b str r3, [r5, #0] + 80056e4: f7fb fed4 bl 8001490 <_lseek> + 80056e8: 1c43 adds r3, r0, #1 + 80056ea: d103 bne.n 80056f4 <_lseek_r+0x20> + 80056ec: 682b ldr r3, [r5, #0] + 80056ee: 2b00 cmp r3, #0 + 80056f0: d000 beq.n 80056f4 <_lseek_r+0x20> + 80056f2: 6023 str r3, [r4, #0] + 80056f4: bd70 pop {r4, r5, r6, pc} + 80056f6: 46c0 nop @ (mov r8, r8) + 80056f8: 20000318 .word 0x20000318 + +080056fc <_read_r>: + 80056fc: b570 push {r4, r5, r6, lr} + 80056fe: 0004 movs r4, r0 + 8005700: 0008 movs r0, r1 + 8005702: 0011 movs r1, r2 + 8005704: 001a movs r2, r3 + 8005706: 2300 movs r3, #0 + 8005708: 4d05 ldr r5, [pc, #20] @ (8005720 <_read_r+0x24>) + 800570a: 602b str r3, [r5, #0] + 800570c: f7fb fe66 bl 80013dc <_read> + 8005710: 1c43 adds r3, r0, #1 + 8005712: d103 bne.n 800571c <_read_r+0x20> + 8005714: 682b ldr r3, [r5, #0] + 8005716: 2b00 cmp r3, #0 + 8005718: d000 beq.n 800571c <_read_r+0x20> + 800571a: 6023 str r3, [r4, #0] + 800571c: bd70 pop {r4, r5, r6, pc} + 800571e: 46c0 nop @ (mov r8, r8) + 8005720: 20000318 .word 0x20000318 + +08005724 <_write_r>: + 8005724: b570 push {r4, r5, r6, lr} + 8005726: 0004 movs r4, r0 + 8005728: 0008 movs r0, r1 + 800572a: 0011 movs r1, r2 + 800572c: 001a movs r2, r3 + 800572e: 2300 movs r3, #0 + 8005730: 4d05 ldr r5, [pc, #20] @ (8005748 <_write_r+0x24>) + 8005732: 602b str r3, [r5, #0] + 8005734: f7fb fe6f bl 8001416 <_write> + 8005738: 1c43 adds r3, r0, #1 + 800573a: d103 bne.n 8005744 <_write_r+0x20> + 800573c: 682b ldr r3, [r5, #0] + 800573e: 2b00 cmp r3, #0 + 8005740: d000 beq.n 8005744 <_write_r+0x20> + 8005742: 6023 str r3, [r4, #0] + 8005744: bd70 pop {r4, r5, r6, pc} + 8005746: 46c0 nop @ (mov r8, r8) + 8005748: 20000318 .word 0x20000318 + +0800574c <__errno>: + 800574c: 4b01 ldr r3, [pc, #4] @ (8005754 <__errno+0x8>) + 800574e: 6818 ldr r0, [r3, #0] + 8005750: 4770 bx lr + 8005752: 46c0 nop @ (mov r8, r8) + 8005754: 20000018 .word 0x20000018 + +08005758 <__libc_init_array>: + 8005758: b570 push {r4, r5, r6, lr} + 800575a: 2600 movs r6, #0 + 800575c: 4c0c ldr r4, [pc, #48] @ (8005790 <__libc_init_array+0x38>) + 800575e: 4d0d ldr r5, [pc, #52] @ (8005794 <__libc_init_array+0x3c>) + 8005760: 1b64 subs r4, r4, r5 + 8005762: 10a4 asrs r4, r4, #2 + 8005764: 42a6 cmp r6, r4 + 8005766: d109 bne.n 800577c <__libc_init_array+0x24> + 8005768: 2600 movs r6, #0 + 800576a: f000 fd3b bl 80061e4 <_init> + 800576e: 4c0a ldr r4, [pc, #40] @ (8005798 <__libc_init_array+0x40>) + 8005770: 4d0a ldr r5, [pc, #40] @ (800579c <__libc_init_array+0x44>) + 8005772: 1b64 subs r4, r4, r5 + 8005774: 10a4 asrs r4, r4, #2 + 8005776: 42a6 cmp r6, r4 + 8005778: d105 bne.n 8005786 <__libc_init_array+0x2e> + 800577a: bd70 pop {r4, r5, r6, pc} + 800577c: 00b3 lsls r3, r6, #2 + 800577e: 58eb ldr r3, [r5, r3] + 8005780: 4798 blx r3 + 8005782: 3601 adds r6, #1 + 8005784: e7ee b.n 8005764 <__libc_init_array+0xc> + 8005786: 00b3 lsls r3, r6, #2 + 8005788: 58eb ldr r3, [r5, r3] + 800578a: 4798 blx r3 + 800578c: 3601 adds r6, #1 + 800578e: e7f2 b.n 8005776 <__libc_init_array+0x1e> + 8005790: 080062fc .word 0x080062fc + 8005794: 080062fc .word 0x080062fc + 8005798: 08006300 .word 0x08006300 + 800579c: 080062fc .word 0x080062fc + +080057a0 <__retarget_lock_init_recursive>: + 80057a0: 4770 bx lr + +080057a2 <__retarget_lock_acquire_recursive>: + 80057a2: 4770 bx lr + +080057a4 <__retarget_lock_release_recursive>: + 80057a4: 4770 bx lr ... -08005484 <_free_r>: - 8005484: b570 push {r4, r5, r6, lr} - 8005486: 0005 movs r5, r0 - 8005488: 1e0c subs r4, r1, #0 - 800548a: d010 beq.n 80054ae <_free_r+0x2a> - 800548c: 3c04 subs r4, #4 - 800548e: 6823 ldr r3, [r4, #0] - 8005490: 2b00 cmp r3, #0 - 8005492: da00 bge.n 8005496 <_free_r+0x12> - 8005494: 18e4 adds r4, r4, r3 - 8005496: 0028 movs r0, r5 - 8005498: f000 f8e0 bl 800565c <__malloc_lock> - 800549c: 4a1d ldr r2, [pc, #116] @ (8005514 <_free_r+0x90>) - 800549e: 6813 ldr r3, [r2, #0] - 80054a0: 2b00 cmp r3, #0 - 80054a2: d105 bne.n 80054b0 <_free_r+0x2c> - 80054a4: 6063 str r3, [r4, #4] - 80054a6: 6014 str r4, [r2, #0] - 80054a8: 0028 movs r0, r5 - 80054aa: f000 f8df bl 800566c <__malloc_unlock> - 80054ae: bd70 pop {r4, r5, r6, pc} - 80054b0: 42a3 cmp r3, r4 - 80054b2: d908 bls.n 80054c6 <_free_r+0x42> - 80054b4: 6820 ldr r0, [r4, #0] - 80054b6: 1821 adds r1, r4, r0 - 80054b8: 428b cmp r3, r1 - 80054ba: d1f3 bne.n 80054a4 <_free_r+0x20> - 80054bc: 6819 ldr r1, [r3, #0] - 80054be: 685b ldr r3, [r3, #4] - 80054c0: 1809 adds r1, r1, r0 - 80054c2: 6021 str r1, [r4, #0] - 80054c4: e7ee b.n 80054a4 <_free_r+0x20> - 80054c6: 001a movs r2, r3 - 80054c8: 685b ldr r3, [r3, #4] - 80054ca: 2b00 cmp r3, #0 - 80054cc: d001 beq.n 80054d2 <_free_r+0x4e> - 80054ce: 42a3 cmp r3, r4 - 80054d0: d9f9 bls.n 80054c6 <_free_r+0x42> - 80054d2: 6811 ldr r1, [r2, #0] - 80054d4: 1850 adds r0, r2, r1 - 80054d6: 42a0 cmp r0, r4 - 80054d8: d10b bne.n 80054f2 <_free_r+0x6e> - 80054da: 6820 ldr r0, [r4, #0] - 80054dc: 1809 adds r1, r1, r0 - 80054de: 1850 adds r0, r2, r1 - 80054e0: 6011 str r1, [r2, #0] - 80054e2: 4283 cmp r3, r0 - 80054e4: d1e0 bne.n 80054a8 <_free_r+0x24> - 80054e6: 6818 ldr r0, [r3, #0] - 80054e8: 685b ldr r3, [r3, #4] - 80054ea: 1841 adds r1, r0, r1 - 80054ec: 6011 str r1, [r2, #0] - 80054ee: 6053 str r3, [r2, #4] - 80054f0: e7da b.n 80054a8 <_free_r+0x24> - 80054f2: 42a0 cmp r0, r4 - 80054f4: d902 bls.n 80054fc <_free_r+0x78> - 80054f6: 230c movs r3, #12 - 80054f8: 602b str r3, [r5, #0] - 80054fa: e7d5 b.n 80054a8 <_free_r+0x24> - 80054fc: 6820 ldr r0, [r4, #0] - 80054fe: 1821 adds r1, r4, r0 - 8005500: 428b cmp r3, r1 - 8005502: d103 bne.n 800550c <_free_r+0x88> - 8005504: 6819 ldr r1, [r3, #0] - 8005506: 685b ldr r3, [r3, #4] - 8005508: 1809 adds r1, r1, r0 - 800550a: 6021 str r1, [r4, #0] - 800550c: 6063 str r3, [r4, #4] - 800550e: 6054 str r4, [r2, #4] - 8005510: e7ca b.n 80054a8 <_free_r+0x24> - 8005512: 46c0 nop @ (mov r8, r8) - 8005514: 20000334 .word 0x20000334 +080057a8 <_free_r>: + 80057a8: b570 push {r4, r5, r6, lr} + 80057aa: 0005 movs r5, r0 + 80057ac: 1e0c subs r4, r1, #0 + 80057ae: d010 beq.n 80057d2 <_free_r+0x2a> + 80057b0: 3c04 subs r4, #4 + 80057b2: 6823 ldr r3, [r4, #0] + 80057b4: 2b00 cmp r3, #0 + 80057b6: da00 bge.n 80057ba <_free_r+0x12> + 80057b8: 18e4 adds r4, r4, r3 + 80057ba: 0028 movs r0, r5 + 80057bc: f000 f8e0 bl 8005980 <__malloc_lock> + 80057c0: 4a1d ldr r2, [pc, #116] @ (8005838 <_free_r+0x90>) + 80057c2: 6813 ldr r3, [r2, #0] + 80057c4: 2b00 cmp r3, #0 + 80057c6: d105 bne.n 80057d4 <_free_r+0x2c> + 80057c8: 6063 str r3, [r4, #4] + 80057ca: 6014 str r4, [r2, #0] + 80057cc: 0028 movs r0, r5 + 80057ce: f000 f8df bl 8005990 <__malloc_unlock> + 80057d2: bd70 pop {r4, r5, r6, pc} + 80057d4: 42a3 cmp r3, r4 + 80057d6: d908 bls.n 80057ea <_free_r+0x42> + 80057d8: 6820 ldr r0, [r4, #0] + 80057da: 1821 adds r1, r4, r0 + 80057dc: 428b cmp r3, r1 + 80057de: d1f3 bne.n 80057c8 <_free_r+0x20> + 80057e0: 6819 ldr r1, [r3, #0] + 80057e2: 685b ldr r3, [r3, #4] + 80057e4: 1809 adds r1, r1, r0 + 80057e6: 6021 str r1, [r4, #0] + 80057e8: e7ee b.n 80057c8 <_free_r+0x20> + 80057ea: 001a movs r2, r3 + 80057ec: 685b ldr r3, [r3, #4] + 80057ee: 2b00 cmp r3, #0 + 80057f0: d001 beq.n 80057f6 <_free_r+0x4e> + 80057f2: 42a3 cmp r3, r4 + 80057f4: d9f9 bls.n 80057ea <_free_r+0x42> + 80057f6: 6811 ldr r1, [r2, #0] + 80057f8: 1850 adds r0, r2, r1 + 80057fa: 42a0 cmp r0, r4 + 80057fc: d10b bne.n 8005816 <_free_r+0x6e> + 80057fe: 6820 ldr r0, [r4, #0] + 8005800: 1809 adds r1, r1, r0 + 8005802: 1850 adds r0, r2, r1 + 8005804: 6011 str r1, [r2, #0] + 8005806: 4283 cmp r3, r0 + 8005808: d1e0 bne.n 80057cc <_free_r+0x24> + 800580a: 6818 ldr r0, [r3, #0] + 800580c: 685b ldr r3, [r3, #4] + 800580e: 1841 adds r1, r0, r1 + 8005810: 6011 str r1, [r2, #0] + 8005812: 6053 str r3, [r2, #4] + 8005814: e7da b.n 80057cc <_free_r+0x24> + 8005816: 42a0 cmp r0, r4 + 8005818: d902 bls.n 8005820 <_free_r+0x78> + 800581a: 230c movs r3, #12 + 800581c: 602b str r3, [r5, #0] + 800581e: e7d5 b.n 80057cc <_free_r+0x24> + 8005820: 6820 ldr r0, [r4, #0] + 8005822: 1821 adds r1, r4, r0 + 8005824: 428b cmp r3, r1 + 8005826: d103 bne.n 8005830 <_free_r+0x88> + 8005828: 6819 ldr r1, [r3, #0] + 800582a: 685b ldr r3, [r3, #4] + 800582c: 1809 adds r1, r1, r0 + 800582e: 6021 str r1, [r4, #0] + 8005830: 6063 str r3, [r4, #4] + 8005832: 6054 str r4, [r2, #4] + 8005834: e7ca b.n 80057cc <_free_r+0x24> + 8005836: 46c0 nop @ (mov r8, r8) + 8005838: 20000324 .word 0x20000324 -08005518 : - 8005518: b570 push {r4, r5, r6, lr} - 800551a: 4e0f ldr r6, [pc, #60] @ (8005558 ) - 800551c: 000d movs r5, r1 - 800551e: 6831 ldr r1, [r6, #0] - 8005520: 0004 movs r4, r0 - 8005522: 2900 cmp r1, #0 - 8005524: d102 bne.n 800552c - 8005526: f000 fcad bl 8005e84 <_sbrk_r> - 800552a: 6030 str r0, [r6, #0] - 800552c: 0029 movs r1, r5 - 800552e: 0020 movs r0, r4 - 8005530: f000 fca8 bl 8005e84 <_sbrk_r> - 8005534: 1c43 adds r3, r0, #1 - 8005536: d103 bne.n 8005540 - 8005538: 2501 movs r5, #1 - 800553a: 426d negs r5, r5 - 800553c: 0028 movs r0, r5 - 800553e: bd70 pop {r4, r5, r6, pc} - 8005540: 2303 movs r3, #3 - 8005542: 1cc5 adds r5, r0, #3 - 8005544: 439d bics r5, r3 - 8005546: 42a8 cmp r0, r5 - 8005548: d0f8 beq.n 800553c - 800554a: 1a29 subs r1, r5, r0 - 800554c: 0020 movs r0, r4 - 800554e: f000 fc99 bl 8005e84 <_sbrk_r> - 8005552: 3001 adds r0, #1 - 8005554: d1f2 bne.n 800553c - 8005556: e7ef b.n 8005538 - 8005558: 20000330 .word 0x20000330 +0800583c : + 800583c: b570 push {r4, r5, r6, lr} + 800583e: 4e0f ldr r6, [pc, #60] @ (800587c ) + 8005840: 000d movs r5, r1 + 8005842: 6831 ldr r1, [r6, #0] + 8005844: 0004 movs r4, r0 + 8005846: 2900 cmp r1, #0 + 8005848: d102 bne.n 8005850 + 800584a: f000 fcad bl 80061a8 <_sbrk_r> + 800584e: 6030 str r0, [r6, #0] + 8005850: 0029 movs r1, r5 + 8005852: 0020 movs r0, r4 + 8005854: f000 fca8 bl 80061a8 <_sbrk_r> + 8005858: 1c43 adds r3, r0, #1 + 800585a: d103 bne.n 8005864 + 800585c: 2501 movs r5, #1 + 800585e: 426d negs r5, r5 + 8005860: 0028 movs r0, r5 + 8005862: bd70 pop {r4, r5, r6, pc} + 8005864: 2303 movs r3, #3 + 8005866: 1cc5 adds r5, r0, #3 + 8005868: 439d bics r5, r3 + 800586a: 42a8 cmp r0, r5 + 800586c: d0f8 beq.n 8005860 + 800586e: 1a29 subs r1, r5, r0 + 8005870: 0020 movs r0, r4 + 8005872: f000 fc99 bl 80061a8 <_sbrk_r> + 8005876: 3001 adds r0, #1 + 8005878: d1f2 bne.n 8005860 + 800587a: e7ef b.n 800585c + 800587c: 20000320 .word 0x20000320 -0800555c <_malloc_r>: - 800555c: b5f7 push {r0, r1, r2, r4, r5, r6, r7, lr} - 800555e: 2203 movs r2, #3 - 8005560: 1ccb adds r3, r1, #3 - 8005562: 4393 bics r3, r2 - 8005564: 3308 adds r3, #8 - 8005566: 0005 movs r5, r0 - 8005568: 001f movs r7, r3 - 800556a: 2b0c cmp r3, #12 - 800556c: d234 bcs.n 80055d8 <_malloc_r+0x7c> - 800556e: 270c movs r7, #12 - 8005570: 42b9 cmp r1, r7 - 8005572: d833 bhi.n 80055dc <_malloc_r+0x80> - 8005574: 0028 movs r0, r5 - 8005576: f000 f871 bl 800565c <__malloc_lock> - 800557a: 4e37 ldr r6, [pc, #220] @ (8005658 <_malloc_r+0xfc>) - 800557c: 6833 ldr r3, [r6, #0] - 800557e: 001c movs r4, r3 - 8005580: 2c00 cmp r4, #0 - 8005582: d12f bne.n 80055e4 <_malloc_r+0x88> - 8005584: 0039 movs r1, r7 - 8005586: 0028 movs r0, r5 - 8005588: f7ff ffc6 bl 8005518 - 800558c: 0004 movs r4, r0 - 800558e: 1c43 adds r3, r0, #1 - 8005590: d15f bne.n 8005652 <_malloc_r+0xf6> - 8005592: 6834 ldr r4, [r6, #0] - 8005594: 9400 str r4, [sp, #0] - 8005596: 9b00 ldr r3, [sp, #0] - 8005598: 2b00 cmp r3, #0 - 800559a: d14a bne.n 8005632 <_malloc_r+0xd6> - 800559c: 2c00 cmp r4, #0 - 800559e: d052 beq.n 8005646 <_malloc_r+0xea> - 80055a0: 6823 ldr r3, [r4, #0] - 80055a2: 0028 movs r0, r5 - 80055a4: 18e3 adds r3, r4, r3 - 80055a6: 9900 ldr r1, [sp, #0] - 80055a8: 9301 str r3, [sp, #4] - 80055aa: f000 fc6b bl 8005e84 <_sbrk_r> - 80055ae: 9b01 ldr r3, [sp, #4] - 80055b0: 4283 cmp r3, r0 - 80055b2: d148 bne.n 8005646 <_malloc_r+0xea> - 80055b4: 6823 ldr r3, [r4, #0] - 80055b6: 0028 movs r0, r5 - 80055b8: 1aff subs r7, r7, r3 - 80055ba: 0039 movs r1, r7 - 80055bc: f7ff ffac bl 8005518 - 80055c0: 3001 adds r0, #1 - 80055c2: d040 beq.n 8005646 <_malloc_r+0xea> - 80055c4: 6823 ldr r3, [r4, #0] - 80055c6: 19db adds r3, r3, r7 - 80055c8: 6023 str r3, [r4, #0] - 80055ca: 6833 ldr r3, [r6, #0] - 80055cc: 685a ldr r2, [r3, #4] - 80055ce: 2a00 cmp r2, #0 - 80055d0: d133 bne.n 800563a <_malloc_r+0xde> - 80055d2: 9b00 ldr r3, [sp, #0] - 80055d4: 6033 str r3, [r6, #0] - 80055d6: e019 b.n 800560c <_malloc_r+0xb0> - 80055d8: 2b00 cmp r3, #0 - 80055da: dac9 bge.n 8005570 <_malloc_r+0x14> - 80055dc: 230c movs r3, #12 - 80055de: 602b str r3, [r5, #0] - 80055e0: 2000 movs r0, #0 - 80055e2: bdfe pop {r1, r2, r3, r4, r5, r6, r7, pc} - 80055e4: 6821 ldr r1, [r4, #0] - 80055e6: 1bc9 subs r1, r1, r7 - 80055e8: d420 bmi.n 800562c <_malloc_r+0xd0> - 80055ea: 290b cmp r1, #11 - 80055ec: d90a bls.n 8005604 <_malloc_r+0xa8> - 80055ee: 19e2 adds r2, r4, r7 - 80055f0: 6027 str r7, [r4, #0] - 80055f2: 42a3 cmp r3, r4 - 80055f4: d104 bne.n 8005600 <_malloc_r+0xa4> - 80055f6: 6032 str r2, [r6, #0] - 80055f8: 6863 ldr r3, [r4, #4] - 80055fa: 6011 str r1, [r2, #0] - 80055fc: 6053 str r3, [r2, #4] - 80055fe: e005 b.n 800560c <_malloc_r+0xb0> - 8005600: 605a str r2, [r3, #4] - 8005602: e7f9 b.n 80055f8 <_malloc_r+0x9c> - 8005604: 6862 ldr r2, [r4, #4] - 8005606: 42a3 cmp r3, r4 - 8005608: d10e bne.n 8005628 <_malloc_r+0xcc> - 800560a: 6032 str r2, [r6, #0] - 800560c: 0028 movs r0, r5 - 800560e: f000 f82d bl 800566c <__malloc_unlock> - 8005612: 0020 movs r0, r4 - 8005614: 2207 movs r2, #7 - 8005616: 300b adds r0, #11 - 8005618: 1d23 adds r3, r4, #4 - 800561a: 4390 bics r0, r2 - 800561c: 1ac2 subs r2, r0, r3 - 800561e: 4298 cmp r0, r3 - 8005620: d0df beq.n 80055e2 <_malloc_r+0x86> - 8005622: 1a1b subs r3, r3, r0 - 8005624: 50a3 str r3, [r4, r2] - 8005626: e7dc b.n 80055e2 <_malloc_r+0x86> - 8005628: 605a str r2, [r3, #4] - 800562a: e7ef b.n 800560c <_malloc_r+0xb0> - 800562c: 0023 movs r3, r4 - 800562e: 6864 ldr r4, [r4, #4] - 8005630: e7a6 b.n 8005580 <_malloc_r+0x24> - 8005632: 9c00 ldr r4, [sp, #0] - 8005634: 6863 ldr r3, [r4, #4] - 8005636: 9300 str r3, [sp, #0] - 8005638: e7ad b.n 8005596 <_malloc_r+0x3a> - 800563a: 001a movs r2, r3 - 800563c: 685b ldr r3, [r3, #4] - 800563e: 42a3 cmp r3, r4 - 8005640: d1fb bne.n 800563a <_malloc_r+0xde> - 8005642: 2300 movs r3, #0 - 8005644: e7da b.n 80055fc <_malloc_r+0xa0> - 8005646: 230c movs r3, #12 - 8005648: 0028 movs r0, r5 - 800564a: 602b str r3, [r5, #0] - 800564c: f000 f80e bl 800566c <__malloc_unlock> - 8005650: e7c6 b.n 80055e0 <_malloc_r+0x84> - 8005652: 6007 str r7, [r0, #0] - 8005654: e7da b.n 800560c <_malloc_r+0xb0> - 8005656: 46c0 nop @ (mov r8, r8) - 8005658: 20000334 .word 0x20000334 +08005880 <_malloc_r>: + 8005880: b5f7 push {r0, r1, r2, r4, r5, r6, r7, lr} + 8005882: 2203 movs r2, #3 + 8005884: 1ccb adds r3, r1, #3 + 8005886: 4393 bics r3, r2 + 8005888: 3308 adds r3, #8 + 800588a: 0005 movs r5, r0 + 800588c: 001f movs r7, r3 + 800588e: 2b0c cmp r3, #12 + 8005890: d234 bcs.n 80058fc <_malloc_r+0x7c> + 8005892: 270c movs r7, #12 + 8005894: 42b9 cmp r1, r7 + 8005896: d833 bhi.n 8005900 <_malloc_r+0x80> + 8005898: 0028 movs r0, r5 + 800589a: f000 f871 bl 8005980 <__malloc_lock> + 800589e: 4e37 ldr r6, [pc, #220] @ (800597c <_malloc_r+0xfc>) + 80058a0: 6833 ldr r3, [r6, #0] + 80058a2: 001c movs r4, r3 + 80058a4: 2c00 cmp r4, #0 + 80058a6: d12f bne.n 8005908 <_malloc_r+0x88> + 80058a8: 0039 movs r1, r7 + 80058aa: 0028 movs r0, r5 + 80058ac: f7ff ffc6 bl 800583c + 80058b0: 0004 movs r4, r0 + 80058b2: 1c43 adds r3, r0, #1 + 80058b4: d15f bne.n 8005976 <_malloc_r+0xf6> + 80058b6: 6834 ldr r4, [r6, #0] + 80058b8: 9400 str r4, [sp, #0] + 80058ba: 9b00 ldr r3, [sp, #0] + 80058bc: 2b00 cmp r3, #0 + 80058be: d14a bne.n 8005956 <_malloc_r+0xd6> + 80058c0: 2c00 cmp r4, #0 + 80058c2: d052 beq.n 800596a <_malloc_r+0xea> + 80058c4: 6823 ldr r3, [r4, #0] + 80058c6: 0028 movs r0, r5 + 80058c8: 18e3 adds r3, r4, r3 + 80058ca: 9900 ldr r1, [sp, #0] + 80058cc: 9301 str r3, [sp, #4] + 80058ce: f000 fc6b bl 80061a8 <_sbrk_r> + 80058d2: 9b01 ldr r3, [sp, #4] + 80058d4: 4283 cmp r3, r0 + 80058d6: d148 bne.n 800596a <_malloc_r+0xea> + 80058d8: 6823 ldr r3, [r4, #0] + 80058da: 0028 movs r0, r5 + 80058dc: 1aff subs r7, r7, r3 + 80058de: 0039 movs r1, r7 + 80058e0: f7ff ffac bl 800583c + 80058e4: 3001 adds r0, #1 + 80058e6: d040 beq.n 800596a <_malloc_r+0xea> + 80058e8: 6823 ldr r3, [r4, #0] + 80058ea: 19db adds r3, r3, r7 + 80058ec: 6023 str r3, [r4, #0] + 80058ee: 6833 ldr r3, [r6, #0] + 80058f0: 685a ldr r2, [r3, #4] + 80058f2: 2a00 cmp r2, #0 + 80058f4: d133 bne.n 800595e <_malloc_r+0xde> + 80058f6: 9b00 ldr r3, [sp, #0] + 80058f8: 6033 str r3, [r6, #0] + 80058fa: e019 b.n 8005930 <_malloc_r+0xb0> + 80058fc: 2b00 cmp r3, #0 + 80058fe: dac9 bge.n 8005894 <_malloc_r+0x14> + 8005900: 230c movs r3, #12 + 8005902: 602b str r3, [r5, #0] + 8005904: 2000 movs r0, #0 + 8005906: bdfe pop {r1, r2, r3, r4, r5, r6, r7, pc} + 8005908: 6821 ldr r1, [r4, #0] + 800590a: 1bc9 subs r1, r1, r7 + 800590c: d420 bmi.n 8005950 <_malloc_r+0xd0> + 800590e: 290b cmp r1, #11 + 8005910: d90a bls.n 8005928 <_malloc_r+0xa8> + 8005912: 19e2 adds r2, r4, r7 + 8005914: 6027 str r7, [r4, #0] + 8005916: 42a3 cmp r3, r4 + 8005918: d104 bne.n 8005924 <_malloc_r+0xa4> + 800591a: 6032 str r2, [r6, #0] + 800591c: 6863 ldr r3, [r4, #4] + 800591e: 6011 str r1, [r2, #0] + 8005920: 6053 str r3, [r2, #4] + 8005922: e005 b.n 8005930 <_malloc_r+0xb0> + 8005924: 605a str r2, [r3, #4] + 8005926: e7f9 b.n 800591c <_malloc_r+0x9c> + 8005928: 6862 ldr r2, [r4, #4] + 800592a: 42a3 cmp r3, r4 + 800592c: d10e bne.n 800594c <_malloc_r+0xcc> + 800592e: 6032 str r2, [r6, #0] + 8005930: 0028 movs r0, r5 + 8005932: f000 f82d bl 8005990 <__malloc_unlock> + 8005936: 0020 movs r0, r4 + 8005938: 2207 movs r2, #7 + 800593a: 300b adds r0, #11 + 800593c: 1d23 adds r3, r4, #4 + 800593e: 4390 bics r0, r2 + 8005940: 1ac2 subs r2, r0, r3 + 8005942: 4298 cmp r0, r3 + 8005944: d0df beq.n 8005906 <_malloc_r+0x86> + 8005946: 1a1b subs r3, r3, r0 + 8005948: 50a3 str r3, [r4, r2] + 800594a: e7dc b.n 8005906 <_malloc_r+0x86> + 800594c: 605a str r2, [r3, #4] + 800594e: e7ef b.n 8005930 <_malloc_r+0xb0> + 8005950: 0023 movs r3, r4 + 8005952: 6864 ldr r4, [r4, #4] + 8005954: e7a6 b.n 80058a4 <_malloc_r+0x24> + 8005956: 9c00 ldr r4, [sp, #0] + 8005958: 6863 ldr r3, [r4, #4] + 800595a: 9300 str r3, [sp, #0] + 800595c: e7ad b.n 80058ba <_malloc_r+0x3a> + 800595e: 001a movs r2, r3 + 8005960: 685b ldr r3, [r3, #4] + 8005962: 42a3 cmp r3, r4 + 8005964: d1fb bne.n 800595e <_malloc_r+0xde> + 8005966: 2300 movs r3, #0 + 8005968: e7da b.n 8005920 <_malloc_r+0xa0> + 800596a: 230c movs r3, #12 + 800596c: 0028 movs r0, r5 + 800596e: 602b str r3, [r5, #0] + 8005970: f000 f80e bl 8005990 <__malloc_unlock> + 8005974: e7c6 b.n 8005904 <_malloc_r+0x84> + 8005976: 6007 str r7, [r0, #0] + 8005978: e7da b.n 8005930 <_malloc_r+0xb0> + 800597a: 46c0 nop @ (mov r8, r8) + 800597c: 20000324 .word 0x20000324 -0800565c <__malloc_lock>: - 800565c: b510 push {r4, lr} - 800565e: 4802 ldr r0, [pc, #8] @ (8005668 <__malloc_lock+0xc>) - 8005660: f7ff ff0d bl 800547e <__retarget_lock_acquire_recursive> - 8005664: bd10 pop {r4, pc} - 8005666: 46c0 nop @ (mov r8, r8) - 8005668: 2000032c .word 0x2000032c +08005980 <__malloc_lock>: + 8005980: b510 push {r4, lr} + 8005982: 4802 ldr r0, [pc, #8] @ (800598c <__malloc_lock+0xc>) + 8005984: f7ff ff0d bl 80057a2 <__retarget_lock_acquire_recursive> + 8005988: bd10 pop {r4, pc} + 800598a: 46c0 nop @ (mov r8, r8) + 800598c: 2000031c .word 0x2000031c -0800566c <__malloc_unlock>: - 800566c: b510 push {r4, lr} - 800566e: 4802 ldr r0, [pc, #8] @ (8005678 <__malloc_unlock+0xc>) - 8005670: f7ff ff06 bl 8005480 <__retarget_lock_release_recursive> - 8005674: bd10 pop {r4, pc} - 8005676: 46c0 nop @ (mov r8, r8) - 8005678: 2000032c .word 0x2000032c +08005990 <__malloc_unlock>: + 8005990: b510 push {r4, lr} + 8005992: 4802 ldr r0, [pc, #8] @ (800599c <__malloc_unlock+0xc>) + 8005994: f7ff ff06 bl 80057a4 <__retarget_lock_release_recursive> + 8005998: bd10 pop {r4, pc} + 800599a: 46c0 nop @ (mov r8, r8) + 800599c: 2000031c .word 0x2000031c -0800567c <__sfputc_r>: - 800567c: 6893 ldr r3, [r2, #8] - 800567e: b510 push {r4, lr} - 8005680: 3b01 subs r3, #1 - 8005682: 6093 str r3, [r2, #8] - 8005684: 2b00 cmp r3, #0 - 8005686: da04 bge.n 8005692 <__sfputc_r+0x16> - 8005688: 6994 ldr r4, [r2, #24] - 800568a: 42a3 cmp r3, r4 - 800568c: db07 blt.n 800569e <__sfputc_r+0x22> - 800568e: 290a cmp r1, #10 - 8005690: d005 beq.n 800569e <__sfputc_r+0x22> - 8005692: 6813 ldr r3, [r2, #0] - 8005694: 1c58 adds r0, r3, #1 - 8005696: 6010 str r0, [r2, #0] - 8005698: 7019 strb r1, [r3, #0] - 800569a: 0008 movs r0, r1 - 800569c: bd10 pop {r4, pc} - 800569e: f7ff fdcd bl 800523c <__swbuf_r> - 80056a2: 0001 movs r1, r0 - 80056a4: e7f9 b.n 800569a <__sfputc_r+0x1e> +080059a0 <__sfputc_r>: + 80059a0: 6893 ldr r3, [r2, #8] + 80059a2: b510 push {r4, lr} + 80059a4: 3b01 subs r3, #1 + 80059a6: 6093 str r3, [r2, #8] + 80059a8: 2b00 cmp r3, #0 + 80059aa: da04 bge.n 80059b6 <__sfputc_r+0x16> + 80059ac: 6994 ldr r4, [r2, #24] + 80059ae: 42a3 cmp r3, r4 + 80059b0: db07 blt.n 80059c2 <__sfputc_r+0x22> + 80059b2: 290a cmp r1, #10 + 80059b4: d005 beq.n 80059c2 <__sfputc_r+0x22> + 80059b6: 6813 ldr r3, [r2, #0] + 80059b8: 1c58 adds r0, r3, #1 + 80059ba: 6010 str r0, [r2, #0] + 80059bc: 7019 strb r1, [r3, #0] + 80059be: 0008 movs r0, r1 + 80059c0: bd10 pop {r4, pc} + 80059c2: f7ff fdcd bl 8005560 <__swbuf_r> + 80059c6: 0001 movs r1, r0 + 80059c8: e7f9 b.n 80059be <__sfputc_r+0x1e> -080056a6 <__sfputs_r>: - 80056a6: b5f8 push {r3, r4, r5, r6, r7, lr} - 80056a8: 0006 movs r6, r0 - 80056aa: 000f movs r7, r1 - 80056ac: 0014 movs r4, r2 - 80056ae: 18d5 adds r5, r2, r3 - 80056b0: 42ac cmp r4, r5 - 80056b2: d101 bne.n 80056b8 <__sfputs_r+0x12> - 80056b4: 2000 movs r0, #0 - 80056b6: e007 b.n 80056c8 <__sfputs_r+0x22> - 80056b8: 7821 ldrb r1, [r4, #0] - 80056ba: 003a movs r2, r7 - 80056bc: 0030 movs r0, r6 - 80056be: f7ff ffdd bl 800567c <__sfputc_r> - 80056c2: 3401 adds r4, #1 - 80056c4: 1c43 adds r3, r0, #1 - 80056c6: d1f3 bne.n 80056b0 <__sfputs_r+0xa> - 80056c8: bdf8 pop {r3, r4, r5, r6, r7, pc} +080059ca <__sfputs_r>: + 80059ca: b5f8 push {r3, r4, r5, r6, r7, lr} + 80059cc: 0006 movs r6, r0 + 80059ce: 000f movs r7, r1 + 80059d0: 0014 movs r4, r2 + 80059d2: 18d5 adds r5, r2, r3 + 80059d4: 42ac cmp r4, r5 + 80059d6: d101 bne.n 80059dc <__sfputs_r+0x12> + 80059d8: 2000 movs r0, #0 + 80059da: e007 b.n 80059ec <__sfputs_r+0x22> + 80059dc: 7821 ldrb r1, [r4, #0] + 80059de: 003a movs r2, r7 + 80059e0: 0030 movs r0, r6 + 80059e2: f7ff ffdd bl 80059a0 <__sfputc_r> + 80059e6: 3401 adds r4, #1 + 80059e8: 1c43 adds r3, r0, #1 + 80059ea: d1f3 bne.n 80059d4 <__sfputs_r+0xa> + 80059ec: bdf8 pop {r3, r4, r5, r6, r7, pc} ... -080056cc <_vfiprintf_r>: - 80056cc: b5f0 push {r4, r5, r6, r7, lr} - 80056ce: b0a1 sub sp, #132 @ 0x84 - 80056d0: 000f movs r7, r1 - 80056d2: 0015 movs r5, r2 - 80056d4: 001e movs r6, r3 - 80056d6: 9003 str r0, [sp, #12] - 80056d8: 2800 cmp r0, #0 - 80056da: d004 beq.n 80056e6 <_vfiprintf_r+0x1a> - 80056dc: 6a03 ldr r3, [r0, #32] - 80056de: 2b00 cmp r3, #0 - 80056e0: d101 bne.n 80056e6 <_vfiprintf_r+0x1a> - 80056e2: f7ff fcbb bl 800505c <__sinit> - 80056e6: 6e7b ldr r3, [r7, #100] @ 0x64 - 80056e8: 07db lsls r3, r3, #31 - 80056ea: d405 bmi.n 80056f8 <_vfiprintf_r+0x2c> - 80056ec: 89bb ldrh r3, [r7, #12] - 80056ee: 059b lsls r3, r3, #22 - 80056f0: d402 bmi.n 80056f8 <_vfiprintf_r+0x2c> - 80056f2: 6db8 ldr r0, [r7, #88] @ 0x58 - 80056f4: f7ff fec3 bl 800547e <__retarget_lock_acquire_recursive> - 80056f8: 89bb ldrh r3, [r7, #12] - 80056fa: 071b lsls r3, r3, #28 - 80056fc: d502 bpl.n 8005704 <_vfiprintf_r+0x38> - 80056fe: 693b ldr r3, [r7, #16] - 8005700: 2b00 cmp r3, #0 - 8005702: d113 bne.n 800572c <_vfiprintf_r+0x60> - 8005704: 0039 movs r1, r7 - 8005706: 9803 ldr r0, [sp, #12] - 8005708: f7ff fdda bl 80052c0 <__swsetup_r> - 800570c: 2800 cmp r0, #0 - 800570e: d00d beq.n 800572c <_vfiprintf_r+0x60> - 8005710: 6e7b ldr r3, [r7, #100] @ 0x64 - 8005712: 07db lsls r3, r3, #31 - 8005714: d503 bpl.n 800571e <_vfiprintf_r+0x52> - 8005716: 2001 movs r0, #1 - 8005718: 4240 negs r0, r0 - 800571a: b021 add sp, #132 @ 0x84 - 800571c: bdf0 pop {r4, r5, r6, r7, pc} - 800571e: 89bb ldrh r3, [r7, #12] - 8005720: 059b lsls r3, r3, #22 - 8005722: d4f8 bmi.n 8005716 <_vfiprintf_r+0x4a> - 8005724: 6db8 ldr r0, [r7, #88] @ 0x58 - 8005726: f7ff feab bl 8005480 <__retarget_lock_release_recursive> - 800572a: e7f4 b.n 8005716 <_vfiprintf_r+0x4a> - 800572c: 2300 movs r3, #0 - 800572e: ac08 add r4, sp, #32 - 8005730: 6163 str r3, [r4, #20] - 8005732: 3320 adds r3, #32 - 8005734: 7663 strb r3, [r4, #25] - 8005736: 3310 adds r3, #16 - 8005738: 76a3 strb r3, [r4, #26] - 800573a: 9607 str r6, [sp, #28] - 800573c: 002e movs r6, r5 - 800573e: 7833 ldrb r3, [r6, #0] - 8005740: 2b00 cmp r3, #0 - 8005742: d001 beq.n 8005748 <_vfiprintf_r+0x7c> - 8005744: 2b25 cmp r3, #37 @ 0x25 - 8005746: d148 bne.n 80057da <_vfiprintf_r+0x10e> - 8005748: 1b73 subs r3, r6, r5 - 800574a: 9305 str r3, [sp, #20] - 800574c: 42ae cmp r6, r5 - 800574e: d00b beq.n 8005768 <_vfiprintf_r+0x9c> - 8005750: 002a movs r2, r5 - 8005752: 0039 movs r1, r7 - 8005754: 9803 ldr r0, [sp, #12] - 8005756: f7ff ffa6 bl 80056a6 <__sfputs_r> - 800575a: 3001 adds r0, #1 - 800575c: d100 bne.n 8005760 <_vfiprintf_r+0x94> - 800575e: e0ae b.n 80058be <_vfiprintf_r+0x1f2> - 8005760: 6963 ldr r3, [r4, #20] - 8005762: 9a05 ldr r2, [sp, #20] - 8005764: 189b adds r3, r3, r2 - 8005766: 6163 str r3, [r4, #20] - 8005768: 7833 ldrb r3, [r6, #0] - 800576a: 2b00 cmp r3, #0 - 800576c: d100 bne.n 8005770 <_vfiprintf_r+0xa4> - 800576e: e0a6 b.n 80058be <_vfiprintf_r+0x1f2> - 8005770: 2201 movs r2, #1 - 8005772: 2300 movs r3, #0 - 8005774: 4252 negs r2, r2 - 8005776: 6062 str r2, [r4, #4] - 8005778: a904 add r1, sp, #16 - 800577a: 3254 adds r2, #84 @ 0x54 - 800577c: 1852 adds r2, r2, r1 - 800577e: 1c75 adds r5, r6, #1 - 8005780: 6023 str r3, [r4, #0] - 8005782: 60e3 str r3, [r4, #12] - 8005784: 60a3 str r3, [r4, #8] - 8005786: 7013 strb r3, [r2, #0] - 8005788: 65a3 str r3, [r4, #88] @ 0x58 - 800578a: 4b59 ldr r3, [pc, #356] @ (80058f0 <_vfiprintf_r+0x224>) - 800578c: 2205 movs r2, #5 - 800578e: 0018 movs r0, r3 - 8005790: 7829 ldrb r1, [r5, #0] - 8005792: 9305 str r3, [sp, #20] - 8005794: f000 fb88 bl 8005ea8 - 8005798: 1c6e adds r6, r5, #1 - 800579a: 2800 cmp r0, #0 - 800579c: d11f bne.n 80057de <_vfiprintf_r+0x112> - 800579e: 6822 ldr r2, [r4, #0] - 80057a0: 06d3 lsls r3, r2, #27 - 80057a2: d504 bpl.n 80057ae <_vfiprintf_r+0xe2> - 80057a4: 2353 movs r3, #83 @ 0x53 - 80057a6: a904 add r1, sp, #16 - 80057a8: 185b adds r3, r3, r1 - 80057aa: 2120 movs r1, #32 - 80057ac: 7019 strb r1, [r3, #0] - 80057ae: 0713 lsls r3, r2, #28 - 80057b0: d504 bpl.n 80057bc <_vfiprintf_r+0xf0> - 80057b2: 2353 movs r3, #83 @ 0x53 - 80057b4: a904 add r1, sp, #16 - 80057b6: 185b adds r3, r3, r1 - 80057b8: 212b movs r1, #43 @ 0x2b - 80057ba: 7019 strb r1, [r3, #0] - 80057bc: 782b ldrb r3, [r5, #0] - 80057be: 2b2a cmp r3, #42 @ 0x2a - 80057c0: d016 beq.n 80057f0 <_vfiprintf_r+0x124> - 80057c2: 002e movs r6, r5 - 80057c4: 2100 movs r1, #0 - 80057c6: 200a movs r0, #10 - 80057c8: 68e3 ldr r3, [r4, #12] - 80057ca: 7832 ldrb r2, [r6, #0] - 80057cc: 1c75 adds r5, r6, #1 - 80057ce: 3a30 subs r2, #48 @ 0x30 - 80057d0: 2a09 cmp r2, #9 - 80057d2: d950 bls.n 8005876 <_vfiprintf_r+0x1aa> - 80057d4: 2900 cmp r1, #0 - 80057d6: d111 bne.n 80057fc <_vfiprintf_r+0x130> - 80057d8: e017 b.n 800580a <_vfiprintf_r+0x13e> - 80057da: 3601 adds r6, #1 - 80057dc: e7af b.n 800573e <_vfiprintf_r+0x72> - 80057de: 9b05 ldr r3, [sp, #20] - 80057e0: 6822 ldr r2, [r4, #0] - 80057e2: 1ac0 subs r0, r0, r3 - 80057e4: 2301 movs r3, #1 - 80057e6: 4083 lsls r3, r0 - 80057e8: 4313 orrs r3, r2 - 80057ea: 0035 movs r5, r6 - 80057ec: 6023 str r3, [r4, #0] - 80057ee: e7cc b.n 800578a <_vfiprintf_r+0xbe> - 80057f0: 9b07 ldr r3, [sp, #28] - 80057f2: 1d19 adds r1, r3, #4 - 80057f4: 681b ldr r3, [r3, #0] - 80057f6: 9107 str r1, [sp, #28] - 80057f8: 2b00 cmp r3, #0 - 80057fa: db01 blt.n 8005800 <_vfiprintf_r+0x134> - 80057fc: 930b str r3, [sp, #44] @ 0x2c - 80057fe: e004 b.n 800580a <_vfiprintf_r+0x13e> - 8005800: 425b negs r3, r3 - 8005802: 60e3 str r3, [r4, #12] - 8005804: 2302 movs r3, #2 - 8005806: 4313 orrs r3, r2 - 8005808: 6023 str r3, [r4, #0] - 800580a: 7833 ldrb r3, [r6, #0] - 800580c: 2b2e cmp r3, #46 @ 0x2e - 800580e: d10c bne.n 800582a <_vfiprintf_r+0x15e> - 8005810: 7873 ldrb r3, [r6, #1] - 8005812: 2b2a cmp r3, #42 @ 0x2a - 8005814: d134 bne.n 8005880 <_vfiprintf_r+0x1b4> - 8005816: 9b07 ldr r3, [sp, #28] - 8005818: 3602 adds r6, #2 - 800581a: 1d1a adds r2, r3, #4 - 800581c: 681b ldr r3, [r3, #0] - 800581e: 9207 str r2, [sp, #28] - 8005820: 2b00 cmp r3, #0 - 8005822: da01 bge.n 8005828 <_vfiprintf_r+0x15c> - 8005824: 2301 movs r3, #1 - 8005826: 425b negs r3, r3 - 8005828: 9309 str r3, [sp, #36] @ 0x24 - 800582a: 4d32 ldr r5, [pc, #200] @ (80058f4 <_vfiprintf_r+0x228>) - 800582c: 2203 movs r2, #3 - 800582e: 0028 movs r0, r5 - 8005830: 7831 ldrb r1, [r6, #0] - 8005832: f000 fb39 bl 8005ea8 - 8005836: 2800 cmp r0, #0 - 8005838: d006 beq.n 8005848 <_vfiprintf_r+0x17c> - 800583a: 2340 movs r3, #64 @ 0x40 - 800583c: 1b40 subs r0, r0, r5 - 800583e: 4083 lsls r3, r0 - 8005840: 6822 ldr r2, [r4, #0] - 8005842: 3601 adds r6, #1 - 8005844: 4313 orrs r3, r2 - 8005846: 6023 str r3, [r4, #0] - 8005848: 7831 ldrb r1, [r6, #0] - 800584a: 2206 movs r2, #6 - 800584c: 482a ldr r0, [pc, #168] @ (80058f8 <_vfiprintf_r+0x22c>) - 800584e: 1c75 adds r5, r6, #1 - 8005850: 7621 strb r1, [r4, #24] - 8005852: f000 fb29 bl 8005ea8 - 8005856: 2800 cmp r0, #0 - 8005858: d040 beq.n 80058dc <_vfiprintf_r+0x210> - 800585a: 4b28 ldr r3, [pc, #160] @ (80058fc <_vfiprintf_r+0x230>) - 800585c: 2b00 cmp r3, #0 - 800585e: d122 bne.n 80058a6 <_vfiprintf_r+0x1da> - 8005860: 2207 movs r2, #7 - 8005862: 9b07 ldr r3, [sp, #28] - 8005864: 3307 adds r3, #7 - 8005866: 4393 bics r3, r2 - 8005868: 3308 adds r3, #8 - 800586a: 9307 str r3, [sp, #28] - 800586c: 6963 ldr r3, [r4, #20] - 800586e: 9a04 ldr r2, [sp, #16] - 8005870: 189b adds r3, r3, r2 - 8005872: 6163 str r3, [r4, #20] - 8005874: e762 b.n 800573c <_vfiprintf_r+0x70> - 8005876: 4343 muls r3, r0 - 8005878: 002e movs r6, r5 - 800587a: 2101 movs r1, #1 - 800587c: 189b adds r3, r3, r2 - 800587e: e7a4 b.n 80057ca <_vfiprintf_r+0xfe> - 8005880: 2300 movs r3, #0 - 8005882: 200a movs r0, #10 - 8005884: 0019 movs r1, r3 - 8005886: 3601 adds r6, #1 - 8005888: 6063 str r3, [r4, #4] - 800588a: 7832 ldrb r2, [r6, #0] - 800588c: 1c75 adds r5, r6, #1 - 800588e: 3a30 subs r2, #48 @ 0x30 - 8005890: 2a09 cmp r2, #9 - 8005892: d903 bls.n 800589c <_vfiprintf_r+0x1d0> - 8005894: 2b00 cmp r3, #0 - 8005896: d0c8 beq.n 800582a <_vfiprintf_r+0x15e> - 8005898: 9109 str r1, [sp, #36] @ 0x24 - 800589a: e7c6 b.n 800582a <_vfiprintf_r+0x15e> - 800589c: 4341 muls r1, r0 - 800589e: 002e movs r6, r5 - 80058a0: 2301 movs r3, #1 - 80058a2: 1889 adds r1, r1, r2 - 80058a4: e7f1 b.n 800588a <_vfiprintf_r+0x1be> - 80058a6: aa07 add r2, sp, #28 - 80058a8: 9200 str r2, [sp, #0] - 80058aa: 0021 movs r1, r4 - 80058ac: 003a movs r2, r7 - 80058ae: 4b14 ldr r3, [pc, #80] @ (8005900 <_vfiprintf_r+0x234>) - 80058b0: 9803 ldr r0, [sp, #12] - 80058b2: e000 b.n 80058b6 <_vfiprintf_r+0x1ea> - 80058b4: bf00 nop - 80058b6: 9004 str r0, [sp, #16] - 80058b8: 9b04 ldr r3, [sp, #16] - 80058ba: 3301 adds r3, #1 - 80058bc: d1d6 bne.n 800586c <_vfiprintf_r+0x1a0> - 80058be: 6e7b ldr r3, [r7, #100] @ 0x64 - 80058c0: 07db lsls r3, r3, #31 - 80058c2: d405 bmi.n 80058d0 <_vfiprintf_r+0x204> - 80058c4: 89bb ldrh r3, [r7, #12] - 80058c6: 059b lsls r3, r3, #22 - 80058c8: d402 bmi.n 80058d0 <_vfiprintf_r+0x204> - 80058ca: 6db8 ldr r0, [r7, #88] @ 0x58 - 80058cc: f7ff fdd8 bl 8005480 <__retarget_lock_release_recursive> - 80058d0: 89bb ldrh r3, [r7, #12] - 80058d2: 065b lsls r3, r3, #25 - 80058d4: d500 bpl.n 80058d8 <_vfiprintf_r+0x20c> - 80058d6: e71e b.n 8005716 <_vfiprintf_r+0x4a> - 80058d8: 980d ldr r0, [sp, #52] @ 0x34 - 80058da: e71e b.n 800571a <_vfiprintf_r+0x4e> - 80058dc: aa07 add r2, sp, #28 - 80058de: 9200 str r2, [sp, #0] - 80058e0: 0021 movs r1, r4 - 80058e2: 003a movs r2, r7 - 80058e4: 4b06 ldr r3, [pc, #24] @ (8005900 <_vfiprintf_r+0x234>) - 80058e6: 9803 ldr r0, [sp, #12] - 80058e8: f000 f87c bl 80059e4 <_printf_i> - 80058ec: e7e3 b.n 80058b6 <_vfiprintf_r+0x1ea> - 80058ee: 46c0 nop @ (mov r8, r8) - 80058f0: 08005fa8 .word 0x08005fa8 - 80058f4: 08005fae .word 0x08005fae - 80058f8: 08005fb2 .word 0x08005fb2 - 80058fc: 00000000 .word 0x00000000 - 8005900: 080056a7 .word 0x080056a7 - -08005904 <_printf_common>: - 8005904: b5f7 push {r0, r1, r2, r4, r5, r6, r7, lr} - 8005906: 0016 movs r6, r2 - 8005908: 9301 str r3, [sp, #4] - 800590a: 688a ldr r2, [r1, #8] - 800590c: 690b ldr r3, [r1, #16] - 800590e: 000c movs r4, r1 - 8005910: 9000 str r0, [sp, #0] - 8005912: 4293 cmp r3, r2 - 8005914: da00 bge.n 8005918 <_printf_common+0x14> - 8005916: 0013 movs r3, r2 - 8005918: 0022 movs r2, r4 - 800591a: 6033 str r3, [r6, #0] - 800591c: 3243 adds r2, #67 @ 0x43 - 800591e: 7812 ldrb r2, [r2, #0] - 8005920: 2a00 cmp r2, #0 - 8005922: d001 beq.n 8005928 <_printf_common+0x24> - 8005924: 3301 adds r3, #1 - 8005926: 6033 str r3, [r6, #0] - 8005928: 6823 ldr r3, [r4, #0] - 800592a: 069b lsls r3, r3, #26 - 800592c: d502 bpl.n 8005934 <_printf_common+0x30> - 800592e: 6833 ldr r3, [r6, #0] - 8005930: 3302 adds r3, #2 - 8005932: 6033 str r3, [r6, #0] - 8005934: 6822 ldr r2, [r4, #0] - 8005936: 2306 movs r3, #6 - 8005938: 0015 movs r5, r2 - 800593a: 401d ands r5, r3 - 800593c: 421a tst r2, r3 - 800593e: d027 beq.n 8005990 <_printf_common+0x8c> - 8005940: 0023 movs r3, r4 - 8005942: 3343 adds r3, #67 @ 0x43 - 8005944: 781b ldrb r3, [r3, #0] - 8005946: 1e5a subs r2, r3, #1 - 8005948: 4193 sbcs r3, r2 - 800594a: 6822 ldr r2, [r4, #0] - 800594c: 0692 lsls r2, r2, #26 - 800594e: d430 bmi.n 80059b2 <_printf_common+0xae> - 8005950: 0022 movs r2, r4 - 8005952: 9901 ldr r1, [sp, #4] - 8005954: 9800 ldr r0, [sp, #0] - 8005956: 9d08 ldr r5, [sp, #32] - 8005958: 3243 adds r2, #67 @ 0x43 - 800595a: 47a8 blx r5 - 800595c: 3001 adds r0, #1 - 800595e: d025 beq.n 80059ac <_printf_common+0xa8> - 8005960: 2206 movs r2, #6 - 8005962: 6823 ldr r3, [r4, #0] - 8005964: 2500 movs r5, #0 - 8005966: 4013 ands r3, r2 - 8005968: 2b04 cmp r3, #4 - 800596a: d105 bne.n 8005978 <_printf_common+0x74> - 800596c: 6833 ldr r3, [r6, #0] - 800596e: 68e5 ldr r5, [r4, #12] - 8005970: 1aed subs r5, r5, r3 - 8005972: 43eb mvns r3, r5 - 8005974: 17db asrs r3, r3, #31 - 8005976: 401d ands r5, r3 - 8005978: 68a3 ldr r3, [r4, #8] - 800597a: 6922 ldr r2, [r4, #16] - 800597c: 4293 cmp r3, r2 - 800597e: dd01 ble.n 8005984 <_printf_common+0x80> - 8005980: 1a9b subs r3, r3, r2 - 8005982: 18ed adds r5, r5, r3 - 8005984: 2600 movs r6, #0 - 8005986: 42b5 cmp r5, r6 - 8005988: d120 bne.n 80059cc <_printf_common+0xc8> - 800598a: 2000 movs r0, #0 - 800598c: e010 b.n 80059b0 <_printf_common+0xac> - 800598e: 3501 adds r5, #1 - 8005990: 68e3 ldr r3, [r4, #12] - 8005992: 6832 ldr r2, [r6, #0] - 8005994: 1a9b subs r3, r3, r2 - 8005996: 42ab cmp r3, r5 - 8005998: ddd2 ble.n 8005940 <_printf_common+0x3c> - 800599a: 0022 movs r2, r4 - 800599c: 2301 movs r3, #1 - 800599e: 9901 ldr r1, [sp, #4] - 80059a0: 9800 ldr r0, [sp, #0] - 80059a2: 9f08 ldr r7, [sp, #32] - 80059a4: 3219 adds r2, #25 - 80059a6: 47b8 blx r7 - 80059a8: 3001 adds r0, #1 - 80059aa: d1f0 bne.n 800598e <_printf_common+0x8a> - 80059ac: 2001 movs r0, #1 - 80059ae: 4240 negs r0, r0 - 80059b0: bdfe pop {r1, r2, r3, r4, r5, r6, r7, pc} - 80059b2: 2030 movs r0, #48 @ 0x30 - 80059b4: 18e1 adds r1, r4, r3 - 80059b6: 3143 adds r1, #67 @ 0x43 - 80059b8: 7008 strb r0, [r1, #0] - 80059ba: 0021 movs r1, r4 - 80059bc: 1c5a adds r2, r3, #1 - 80059be: 3145 adds r1, #69 @ 0x45 - 80059c0: 7809 ldrb r1, [r1, #0] - 80059c2: 18a2 adds r2, r4, r2 - 80059c4: 3243 adds r2, #67 @ 0x43 - 80059c6: 3302 adds r3, #2 - 80059c8: 7011 strb r1, [r2, #0] - 80059ca: e7c1 b.n 8005950 <_printf_common+0x4c> - 80059cc: 0022 movs r2, r4 - 80059ce: 2301 movs r3, #1 - 80059d0: 9901 ldr r1, [sp, #4] - 80059d2: 9800 ldr r0, [sp, #0] - 80059d4: 9f08 ldr r7, [sp, #32] - 80059d6: 321a adds r2, #26 - 80059d8: 47b8 blx r7 - 80059da: 3001 adds r0, #1 - 80059dc: d0e6 beq.n 80059ac <_printf_common+0xa8> - 80059de: 3601 adds r6, #1 - 80059e0: e7d1 b.n 8005986 <_printf_common+0x82> - ... - -080059e4 <_printf_i>: - 80059e4: b5f0 push {r4, r5, r6, r7, lr} - 80059e6: b08b sub sp, #44 @ 0x2c - 80059e8: 9206 str r2, [sp, #24] - 80059ea: 000a movs r2, r1 - 80059ec: 3243 adds r2, #67 @ 0x43 - 80059ee: 9307 str r3, [sp, #28] - 80059f0: 9005 str r0, [sp, #20] - 80059f2: 9203 str r2, [sp, #12] - 80059f4: 7e0a ldrb r2, [r1, #24] - 80059f6: 000c movs r4, r1 - 80059f8: 9b10 ldr r3, [sp, #64] @ 0x40 - 80059fa: 2a78 cmp r2, #120 @ 0x78 - 80059fc: d809 bhi.n 8005a12 <_printf_i+0x2e> - 80059fe: 2a62 cmp r2, #98 @ 0x62 - 8005a00: d80b bhi.n 8005a1a <_printf_i+0x36> - 8005a02: 2a00 cmp r2, #0 - 8005a04: d100 bne.n 8005a08 <_printf_i+0x24> - 8005a06: e0bc b.n 8005b82 <_printf_i+0x19e> - 8005a08: 497b ldr r1, [pc, #492] @ (8005bf8 <_printf_i+0x214>) - 8005a0a: 9104 str r1, [sp, #16] - 8005a0c: 2a58 cmp r2, #88 @ 0x58 - 8005a0e: d100 bne.n 8005a12 <_printf_i+0x2e> - 8005a10: e090 b.n 8005b34 <_printf_i+0x150> - 8005a12: 0025 movs r5, r4 - 8005a14: 3542 adds r5, #66 @ 0x42 - 8005a16: 702a strb r2, [r5, #0] - 8005a18: e022 b.n 8005a60 <_printf_i+0x7c> - 8005a1a: 0010 movs r0, r2 - 8005a1c: 3863 subs r0, #99 @ 0x63 - 8005a1e: 2815 cmp r0, #21 - 8005a20: d8f7 bhi.n 8005a12 <_printf_i+0x2e> - 8005a22: f7fa fb6d bl 8000100 <__gnu_thumb1_case_shi> - 8005a26: 0016 .short 0x0016 - 8005a28: fff6001f .word 0xfff6001f - 8005a2c: fff6fff6 .word 0xfff6fff6 - 8005a30: 001ffff6 .word 0x001ffff6 - 8005a34: fff6fff6 .word 0xfff6fff6 - 8005a38: fff6fff6 .word 0xfff6fff6 - 8005a3c: 003600a1 .word 0x003600a1 - 8005a40: fff60080 .word 0xfff60080 - 8005a44: 00b2fff6 .word 0x00b2fff6 - 8005a48: 0036fff6 .word 0x0036fff6 - 8005a4c: fff6fff6 .word 0xfff6fff6 - 8005a50: 0084 .short 0x0084 - 8005a52: 0025 movs r5, r4 - 8005a54: 681a ldr r2, [r3, #0] - 8005a56: 3542 adds r5, #66 @ 0x42 - 8005a58: 1d11 adds r1, r2, #4 - 8005a5a: 6019 str r1, [r3, #0] - 8005a5c: 6813 ldr r3, [r2, #0] - 8005a5e: 702b strb r3, [r5, #0] - 8005a60: 2301 movs r3, #1 - 8005a62: e0a0 b.n 8005ba6 <_printf_i+0x1c2> - 8005a64: 6818 ldr r0, [r3, #0] - 8005a66: 6809 ldr r1, [r1, #0] - 8005a68: 1d02 adds r2, r0, #4 - 8005a6a: 060d lsls r5, r1, #24 - 8005a6c: d50b bpl.n 8005a86 <_printf_i+0xa2> - 8005a6e: 6806 ldr r6, [r0, #0] - 8005a70: 601a str r2, [r3, #0] - 8005a72: 2e00 cmp r6, #0 - 8005a74: da03 bge.n 8005a7e <_printf_i+0x9a> - 8005a76: 232d movs r3, #45 @ 0x2d - 8005a78: 9a03 ldr r2, [sp, #12] - 8005a7a: 4276 negs r6, r6 - 8005a7c: 7013 strb r3, [r2, #0] - 8005a7e: 4b5e ldr r3, [pc, #376] @ (8005bf8 <_printf_i+0x214>) - 8005a80: 270a movs r7, #10 - 8005a82: 9304 str r3, [sp, #16] - 8005a84: e018 b.n 8005ab8 <_printf_i+0xd4> - 8005a86: 6806 ldr r6, [r0, #0] - 8005a88: 601a str r2, [r3, #0] - 8005a8a: 0649 lsls r1, r1, #25 - 8005a8c: d5f1 bpl.n 8005a72 <_printf_i+0x8e> - 8005a8e: b236 sxth r6, r6 - 8005a90: e7ef b.n 8005a72 <_printf_i+0x8e> - 8005a92: 6808 ldr r0, [r1, #0] - 8005a94: 6819 ldr r1, [r3, #0] - 8005a96: c940 ldmia r1!, {r6} - 8005a98: 0605 lsls r5, r0, #24 - 8005a9a: d402 bmi.n 8005aa2 <_printf_i+0xbe> - 8005a9c: 0640 lsls r0, r0, #25 - 8005a9e: d500 bpl.n 8005aa2 <_printf_i+0xbe> - 8005aa0: b2b6 uxth r6, r6 - 8005aa2: 6019 str r1, [r3, #0] - 8005aa4: 4b54 ldr r3, [pc, #336] @ (8005bf8 <_printf_i+0x214>) - 8005aa6: 270a movs r7, #10 - 8005aa8: 9304 str r3, [sp, #16] - 8005aaa: 2a6f cmp r2, #111 @ 0x6f - 8005aac: d100 bne.n 8005ab0 <_printf_i+0xcc> - 8005aae: 3f02 subs r7, #2 - 8005ab0: 0023 movs r3, r4 - 8005ab2: 2200 movs r2, #0 - 8005ab4: 3343 adds r3, #67 @ 0x43 - 8005ab6: 701a strb r2, [r3, #0] - 8005ab8: 6863 ldr r3, [r4, #4] - 8005aba: 60a3 str r3, [r4, #8] - 8005abc: 2b00 cmp r3, #0 - 8005abe: db03 blt.n 8005ac8 <_printf_i+0xe4> - 8005ac0: 2104 movs r1, #4 +080059f0 <_vfiprintf_r>: + 80059f0: b5f0 push {r4, r5, r6, r7, lr} + 80059f2: b0a1 sub sp, #132 @ 0x84 + 80059f4: 000f movs r7, r1 + 80059f6: 0015 movs r5, r2 + 80059f8: 001e movs r6, r3 + 80059fa: 9003 str r0, [sp, #12] + 80059fc: 2800 cmp r0, #0 + 80059fe: d004 beq.n 8005a0a <_vfiprintf_r+0x1a> + 8005a00: 6a03 ldr r3, [r0, #32] + 8005a02: 2b00 cmp r3, #0 + 8005a04: d101 bne.n 8005a0a <_vfiprintf_r+0x1a> + 8005a06: f7ff fcbb bl 8005380 <__sinit> + 8005a0a: 6e7b ldr r3, [r7, #100] @ 0x64 + 8005a0c: 07db lsls r3, r3, #31 + 8005a0e: d405 bmi.n 8005a1c <_vfiprintf_r+0x2c> + 8005a10: 89bb ldrh r3, [r7, #12] + 8005a12: 059b lsls r3, r3, #22 + 8005a14: d402 bmi.n 8005a1c <_vfiprintf_r+0x2c> + 8005a16: 6db8 ldr r0, [r7, #88] @ 0x58 + 8005a18: f7ff fec3 bl 80057a2 <__retarget_lock_acquire_recursive> + 8005a1c: 89bb ldrh r3, [r7, #12] + 8005a1e: 071b lsls r3, r3, #28 + 8005a20: d502 bpl.n 8005a28 <_vfiprintf_r+0x38> + 8005a22: 693b ldr r3, [r7, #16] + 8005a24: 2b00 cmp r3, #0 + 8005a26: d113 bne.n 8005a50 <_vfiprintf_r+0x60> + 8005a28: 0039 movs r1, r7 + 8005a2a: 9803 ldr r0, [sp, #12] + 8005a2c: f7ff fdda bl 80055e4 <__swsetup_r> + 8005a30: 2800 cmp r0, #0 + 8005a32: d00d beq.n 8005a50 <_vfiprintf_r+0x60> + 8005a34: 6e7b ldr r3, [r7, #100] @ 0x64 + 8005a36: 07db lsls r3, r3, #31 + 8005a38: d503 bpl.n 8005a42 <_vfiprintf_r+0x52> + 8005a3a: 2001 movs r0, #1 + 8005a3c: 4240 negs r0, r0 + 8005a3e: b021 add sp, #132 @ 0x84 + 8005a40: bdf0 pop {r4, r5, r6, r7, pc} + 8005a42: 89bb ldrh r3, [r7, #12] + 8005a44: 059b lsls r3, r3, #22 + 8005a46: d4f8 bmi.n 8005a3a <_vfiprintf_r+0x4a> + 8005a48: 6db8 ldr r0, [r7, #88] @ 0x58 + 8005a4a: f7ff feab bl 80057a4 <__retarget_lock_release_recursive> + 8005a4e: e7f4 b.n 8005a3a <_vfiprintf_r+0x4a> + 8005a50: 2300 movs r3, #0 + 8005a52: ac08 add r4, sp, #32 + 8005a54: 6163 str r3, [r4, #20] + 8005a56: 3320 adds r3, #32 + 8005a58: 7663 strb r3, [r4, #25] + 8005a5a: 3310 adds r3, #16 + 8005a5c: 76a3 strb r3, [r4, #26] + 8005a5e: 9607 str r6, [sp, #28] + 8005a60: 002e movs r6, r5 + 8005a62: 7833 ldrb r3, [r6, #0] + 8005a64: 2b00 cmp r3, #0 + 8005a66: d001 beq.n 8005a6c <_vfiprintf_r+0x7c> + 8005a68: 2b25 cmp r3, #37 @ 0x25 + 8005a6a: d148 bne.n 8005afe <_vfiprintf_r+0x10e> + 8005a6c: 1b73 subs r3, r6, r5 + 8005a6e: 9305 str r3, [sp, #20] + 8005a70: 42ae cmp r6, r5 + 8005a72: d00b beq.n 8005a8c <_vfiprintf_r+0x9c> + 8005a74: 002a movs r2, r5 + 8005a76: 0039 movs r1, r7 + 8005a78: 9803 ldr r0, [sp, #12] + 8005a7a: f7ff ffa6 bl 80059ca <__sfputs_r> + 8005a7e: 3001 adds r0, #1 + 8005a80: d100 bne.n 8005a84 <_vfiprintf_r+0x94> + 8005a82: e0ae b.n 8005be2 <_vfiprintf_r+0x1f2> + 8005a84: 6963 ldr r3, [r4, #20] + 8005a86: 9a05 ldr r2, [sp, #20] + 8005a88: 189b adds r3, r3, r2 + 8005a8a: 6163 str r3, [r4, #20] + 8005a8c: 7833 ldrb r3, [r6, #0] + 8005a8e: 2b00 cmp r3, #0 + 8005a90: d100 bne.n 8005a94 <_vfiprintf_r+0xa4> + 8005a92: e0a6 b.n 8005be2 <_vfiprintf_r+0x1f2> + 8005a94: 2201 movs r2, #1 + 8005a96: 2300 movs r3, #0 + 8005a98: 4252 negs r2, r2 + 8005a9a: 6062 str r2, [r4, #4] + 8005a9c: a904 add r1, sp, #16 + 8005a9e: 3254 adds r2, #84 @ 0x54 + 8005aa0: 1852 adds r2, r2, r1 + 8005aa2: 1c75 adds r5, r6, #1 + 8005aa4: 6023 str r3, [r4, #0] + 8005aa6: 60e3 str r3, [r4, #12] + 8005aa8: 60a3 str r3, [r4, #8] + 8005aaa: 7013 strb r3, [r2, #0] + 8005aac: 65a3 str r3, [r4, #88] @ 0x58 + 8005aae: 4b59 ldr r3, [pc, #356] @ (8005c14 <_vfiprintf_r+0x224>) + 8005ab0: 2205 movs r2, #5 + 8005ab2: 0018 movs r0, r3 + 8005ab4: 7829 ldrb r1, [r5, #0] + 8005ab6: 9305 str r3, [sp, #20] + 8005ab8: f000 fb88 bl 80061cc + 8005abc: 1c6e adds r6, r5, #1 + 8005abe: 2800 cmp r0, #0 + 8005ac0: d11f bne.n 8005b02 <_vfiprintf_r+0x112> 8005ac2: 6822 ldr r2, [r4, #0] - 8005ac4: 438a bics r2, r1 - 8005ac6: 6022 str r2, [r4, #0] - 8005ac8: 2e00 cmp r6, #0 - 8005aca: d102 bne.n 8005ad2 <_printf_i+0xee> - 8005acc: 9d03 ldr r5, [sp, #12] - 8005ace: 2b00 cmp r3, #0 - 8005ad0: d00c beq.n 8005aec <_printf_i+0x108> - 8005ad2: 9d03 ldr r5, [sp, #12] - 8005ad4: 0030 movs r0, r6 - 8005ad6: 0039 movs r1, r7 - 8005ad8: f7fa fba2 bl 8000220 <__aeabi_uidivmod> - 8005adc: 9b04 ldr r3, [sp, #16] - 8005ade: 3d01 subs r5, #1 - 8005ae0: 5c5b ldrb r3, [r3, r1] - 8005ae2: 702b strb r3, [r5, #0] - 8005ae4: 0033 movs r3, r6 - 8005ae6: 0006 movs r6, r0 - 8005ae8: 429f cmp r7, r3 - 8005aea: d9f3 bls.n 8005ad4 <_printf_i+0xf0> - 8005aec: 2f08 cmp r7, #8 - 8005aee: d109 bne.n 8005b04 <_printf_i+0x120> - 8005af0: 6823 ldr r3, [r4, #0] - 8005af2: 07db lsls r3, r3, #31 - 8005af4: d506 bpl.n 8005b04 <_printf_i+0x120> - 8005af6: 6862 ldr r2, [r4, #4] - 8005af8: 6923 ldr r3, [r4, #16] - 8005afa: 429a cmp r2, r3 - 8005afc: dc02 bgt.n 8005b04 <_printf_i+0x120> - 8005afe: 2330 movs r3, #48 @ 0x30 - 8005b00: 3d01 subs r5, #1 - 8005b02: 702b strb r3, [r5, #0] - 8005b04: 9b03 ldr r3, [sp, #12] - 8005b06: 1b5b subs r3, r3, r5 - 8005b08: 6123 str r3, [r4, #16] - 8005b0a: 9b07 ldr r3, [sp, #28] - 8005b0c: 0021 movs r1, r4 - 8005b0e: 9300 str r3, [sp, #0] - 8005b10: 9805 ldr r0, [sp, #20] - 8005b12: 9b06 ldr r3, [sp, #24] - 8005b14: aa09 add r2, sp, #36 @ 0x24 - 8005b16: f7ff fef5 bl 8005904 <_printf_common> - 8005b1a: 3001 adds r0, #1 - 8005b1c: d148 bne.n 8005bb0 <_printf_i+0x1cc> - 8005b1e: 2001 movs r0, #1 - 8005b20: 4240 negs r0, r0 - 8005b22: b00b add sp, #44 @ 0x2c - 8005b24: bdf0 pop {r4, r5, r6, r7, pc} - 8005b26: 2220 movs r2, #32 - 8005b28: 6809 ldr r1, [r1, #0] - 8005b2a: 430a orrs r2, r1 - 8005b2c: 6022 str r2, [r4, #0] - 8005b2e: 2278 movs r2, #120 @ 0x78 - 8005b30: 4932 ldr r1, [pc, #200] @ (8005bfc <_printf_i+0x218>) - 8005b32: 9104 str r1, [sp, #16] - 8005b34: 0021 movs r1, r4 - 8005b36: 3145 adds r1, #69 @ 0x45 - 8005b38: 700a strb r2, [r1, #0] - 8005b3a: 6819 ldr r1, [r3, #0] - 8005b3c: 6822 ldr r2, [r4, #0] - 8005b3e: c940 ldmia r1!, {r6} - 8005b40: 0610 lsls r0, r2, #24 - 8005b42: d402 bmi.n 8005b4a <_printf_i+0x166> - 8005b44: 0650 lsls r0, r2, #25 - 8005b46: d500 bpl.n 8005b4a <_printf_i+0x166> - 8005b48: b2b6 uxth r6, r6 - 8005b4a: 6019 str r1, [r3, #0] - 8005b4c: 07d3 lsls r3, r2, #31 - 8005b4e: d502 bpl.n 8005b56 <_printf_i+0x172> - 8005b50: 2320 movs r3, #32 - 8005b52: 4313 orrs r3, r2 - 8005b54: 6023 str r3, [r4, #0] - 8005b56: 2e00 cmp r6, #0 - 8005b58: d001 beq.n 8005b5e <_printf_i+0x17a> - 8005b5a: 2710 movs r7, #16 - 8005b5c: e7a8 b.n 8005ab0 <_printf_i+0xcc> - 8005b5e: 2220 movs r2, #32 - 8005b60: 6823 ldr r3, [r4, #0] - 8005b62: 4393 bics r3, r2 - 8005b64: 6023 str r3, [r4, #0] - 8005b66: e7f8 b.n 8005b5a <_printf_i+0x176> - 8005b68: 681a ldr r2, [r3, #0] - 8005b6a: 680d ldr r5, [r1, #0] - 8005b6c: 1d10 adds r0, r2, #4 - 8005b6e: 6949 ldr r1, [r1, #20] - 8005b70: 6018 str r0, [r3, #0] - 8005b72: 6813 ldr r3, [r2, #0] - 8005b74: 062e lsls r6, r5, #24 - 8005b76: d501 bpl.n 8005b7c <_printf_i+0x198> - 8005b78: 6019 str r1, [r3, #0] - 8005b7a: e002 b.n 8005b82 <_printf_i+0x19e> - 8005b7c: 066d lsls r5, r5, #25 - 8005b7e: d5fb bpl.n 8005b78 <_printf_i+0x194> - 8005b80: 8019 strh r1, [r3, #0] - 8005b82: 2300 movs r3, #0 - 8005b84: 9d03 ldr r5, [sp, #12] - 8005b86: 6123 str r3, [r4, #16] - 8005b88: e7bf b.n 8005b0a <_printf_i+0x126> - 8005b8a: 681a ldr r2, [r3, #0] - 8005b8c: 1d11 adds r1, r2, #4 - 8005b8e: 6019 str r1, [r3, #0] - 8005b90: 6815 ldr r5, [r2, #0] - 8005b92: 2100 movs r1, #0 - 8005b94: 0028 movs r0, r5 - 8005b96: 6862 ldr r2, [r4, #4] - 8005b98: f000 f986 bl 8005ea8 - 8005b9c: 2800 cmp r0, #0 - 8005b9e: d001 beq.n 8005ba4 <_printf_i+0x1c0> - 8005ba0: 1b40 subs r0, r0, r5 - 8005ba2: 6060 str r0, [r4, #4] - 8005ba4: 6863 ldr r3, [r4, #4] - 8005ba6: 6123 str r3, [r4, #16] - 8005ba8: 2300 movs r3, #0 - 8005baa: 9a03 ldr r2, [sp, #12] - 8005bac: 7013 strb r3, [r2, #0] - 8005bae: e7ac b.n 8005b0a <_printf_i+0x126> - 8005bb0: 002a movs r2, r5 - 8005bb2: 6923 ldr r3, [r4, #16] - 8005bb4: 9906 ldr r1, [sp, #24] - 8005bb6: 9805 ldr r0, [sp, #20] - 8005bb8: 9d07 ldr r5, [sp, #28] - 8005bba: 47a8 blx r5 - 8005bbc: 3001 adds r0, #1 - 8005bbe: d0ae beq.n 8005b1e <_printf_i+0x13a> - 8005bc0: 6823 ldr r3, [r4, #0] - 8005bc2: 079b lsls r3, r3, #30 - 8005bc4: d415 bmi.n 8005bf2 <_printf_i+0x20e> - 8005bc6: 9b09 ldr r3, [sp, #36] @ 0x24 - 8005bc8: 68e0 ldr r0, [r4, #12] - 8005bca: 4298 cmp r0, r3 - 8005bcc: daa9 bge.n 8005b22 <_printf_i+0x13e> - 8005bce: 0018 movs r0, r3 - 8005bd0: e7a7 b.n 8005b22 <_printf_i+0x13e> - 8005bd2: 0022 movs r2, r4 - 8005bd4: 2301 movs r3, #1 - 8005bd6: 9906 ldr r1, [sp, #24] - 8005bd8: 9805 ldr r0, [sp, #20] - 8005bda: 9e07 ldr r6, [sp, #28] - 8005bdc: 3219 adds r2, #25 - 8005bde: 47b0 blx r6 - 8005be0: 3001 adds r0, #1 - 8005be2: d09c beq.n 8005b1e <_printf_i+0x13a> - 8005be4: 3501 adds r5, #1 - 8005be6: 68e3 ldr r3, [r4, #12] - 8005be8: 9a09 ldr r2, [sp, #36] @ 0x24 - 8005bea: 1a9b subs r3, r3, r2 - 8005bec: 42ab cmp r3, r5 - 8005bee: dcf0 bgt.n 8005bd2 <_printf_i+0x1ee> - 8005bf0: e7e9 b.n 8005bc6 <_printf_i+0x1e2> - 8005bf2: 2500 movs r5, #0 - 8005bf4: e7f7 b.n 8005be6 <_printf_i+0x202> - 8005bf6: 46c0 nop @ (mov r8, r8) - 8005bf8: 08005fb9 .word 0x08005fb9 - 8005bfc: 08005fca .word 0x08005fca + 8005ac4: 06d3 lsls r3, r2, #27 + 8005ac6: d504 bpl.n 8005ad2 <_vfiprintf_r+0xe2> + 8005ac8: 2353 movs r3, #83 @ 0x53 + 8005aca: a904 add r1, sp, #16 + 8005acc: 185b adds r3, r3, r1 + 8005ace: 2120 movs r1, #32 + 8005ad0: 7019 strb r1, [r3, #0] + 8005ad2: 0713 lsls r3, r2, #28 + 8005ad4: d504 bpl.n 8005ae0 <_vfiprintf_r+0xf0> + 8005ad6: 2353 movs r3, #83 @ 0x53 + 8005ad8: a904 add r1, sp, #16 + 8005ada: 185b adds r3, r3, r1 + 8005adc: 212b movs r1, #43 @ 0x2b + 8005ade: 7019 strb r1, [r3, #0] + 8005ae0: 782b ldrb r3, [r5, #0] + 8005ae2: 2b2a cmp r3, #42 @ 0x2a + 8005ae4: d016 beq.n 8005b14 <_vfiprintf_r+0x124> + 8005ae6: 002e movs r6, r5 + 8005ae8: 2100 movs r1, #0 + 8005aea: 200a movs r0, #10 + 8005aec: 68e3 ldr r3, [r4, #12] + 8005aee: 7832 ldrb r2, [r6, #0] + 8005af0: 1c75 adds r5, r6, #1 + 8005af2: 3a30 subs r2, #48 @ 0x30 + 8005af4: 2a09 cmp r2, #9 + 8005af6: d950 bls.n 8005b9a <_vfiprintf_r+0x1aa> + 8005af8: 2900 cmp r1, #0 + 8005afa: d111 bne.n 8005b20 <_vfiprintf_r+0x130> + 8005afc: e017 b.n 8005b2e <_vfiprintf_r+0x13e> + 8005afe: 3601 adds r6, #1 + 8005b00: e7af b.n 8005a62 <_vfiprintf_r+0x72> + 8005b02: 9b05 ldr r3, [sp, #20] + 8005b04: 6822 ldr r2, [r4, #0] + 8005b06: 1ac0 subs r0, r0, r3 + 8005b08: 2301 movs r3, #1 + 8005b0a: 4083 lsls r3, r0 + 8005b0c: 4313 orrs r3, r2 + 8005b0e: 0035 movs r5, r6 + 8005b10: 6023 str r3, [r4, #0] + 8005b12: e7cc b.n 8005aae <_vfiprintf_r+0xbe> + 8005b14: 9b07 ldr r3, [sp, #28] + 8005b16: 1d19 adds r1, r3, #4 + 8005b18: 681b ldr r3, [r3, #0] + 8005b1a: 9107 str r1, [sp, #28] + 8005b1c: 2b00 cmp r3, #0 + 8005b1e: db01 blt.n 8005b24 <_vfiprintf_r+0x134> + 8005b20: 930b str r3, [sp, #44] @ 0x2c + 8005b22: e004 b.n 8005b2e <_vfiprintf_r+0x13e> + 8005b24: 425b negs r3, r3 + 8005b26: 60e3 str r3, [r4, #12] + 8005b28: 2302 movs r3, #2 + 8005b2a: 4313 orrs r3, r2 + 8005b2c: 6023 str r3, [r4, #0] + 8005b2e: 7833 ldrb r3, [r6, #0] + 8005b30: 2b2e cmp r3, #46 @ 0x2e + 8005b32: d10c bne.n 8005b4e <_vfiprintf_r+0x15e> + 8005b34: 7873 ldrb r3, [r6, #1] + 8005b36: 2b2a cmp r3, #42 @ 0x2a + 8005b38: d134 bne.n 8005ba4 <_vfiprintf_r+0x1b4> + 8005b3a: 9b07 ldr r3, [sp, #28] + 8005b3c: 3602 adds r6, #2 + 8005b3e: 1d1a adds r2, r3, #4 + 8005b40: 681b ldr r3, [r3, #0] + 8005b42: 9207 str r2, [sp, #28] + 8005b44: 2b00 cmp r3, #0 + 8005b46: da01 bge.n 8005b4c <_vfiprintf_r+0x15c> + 8005b48: 2301 movs r3, #1 + 8005b4a: 425b negs r3, r3 + 8005b4c: 9309 str r3, [sp, #36] @ 0x24 + 8005b4e: 4d32 ldr r5, [pc, #200] @ (8005c18 <_vfiprintf_r+0x228>) + 8005b50: 2203 movs r2, #3 + 8005b52: 0028 movs r0, r5 + 8005b54: 7831 ldrb r1, [r6, #0] + 8005b56: f000 fb39 bl 80061cc + 8005b5a: 2800 cmp r0, #0 + 8005b5c: d006 beq.n 8005b6c <_vfiprintf_r+0x17c> + 8005b5e: 2340 movs r3, #64 @ 0x40 + 8005b60: 1b40 subs r0, r0, r5 + 8005b62: 4083 lsls r3, r0 + 8005b64: 6822 ldr r2, [r4, #0] + 8005b66: 3601 adds r6, #1 + 8005b68: 4313 orrs r3, r2 + 8005b6a: 6023 str r3, [r4, #0] + 8005b6c: 7831 ldrb r1, [r6, #0] + 8005b6e: 2206 movs r2, #6 + 8005b70: 482a ldr r0, [pc, #168] @ (8005c1c <_vfiprintf_r+0x22c>) + 8005b72: 1c75 adds r5, r6, #1 + 8005b74: 7621 strb r1, [r4, #24] + 8005b76: f000 fb29 bl 80061cc + 8005b7a: 2800 cmp r0, #0 + 8005b7c: d040 beq.n 8005c00 <_vfiprintf_r+0x210> + 8005b7e: 4b28 ldr r3, [pc, #160] @ (8005c20 <_vfiprintf_r+0x230>) + 8005b80: 2b00 cmp r3, #0 + 8005b82: d122 bne.n 8005bca <_vfiprintf_r+0x1da> + 8005b84: 2207 movs r2, #7 + 8005b86: 9b07 ldr r3, [sp, #28] + 8005b88: 3307 adds r3, #7 + 8005b8a: 4393 bics r3, r2 + 8005b8c: 3308 adds r3, #8 + 8005b8e: 9307 str r3, [sp, #28] + 8005b90: 6963 ldr r3, [r4, #20] + 8005b92: 9a04 ldr r2, [sp, #16] + 8005b94: 189b adds r3, r3, r2 + 8005b96: 6163 str r3, [r4, #20] + 8005b98: e762 b.n 8005a60 <_vfiprintf_r+0x70> + 8005b9a: 4343 muls r3, r0 + 8005b9c: 002e movs r6, r5 + 8005b9e: 2101 movs r1, #1 + 8005ba0: 189b adds r3, r3, r2 + 8005ba2: e7a4 b.n 8005aee <_vfiprintf_r+0xfe> + 8005ba4: 2300 movs r3, #0 + 8005ba6: 200a movs r0, #10 + 8005ba8: 0019 movs r1, r3 + 8005baa: 3601 adds r6, #1 + 8005bac: 6063 str r3, [r4, #4] + 8005bae: 7832 ldrb r2, [r6, #0] + 8005bb0: 1c75 adds r5, r6, #1 + 8005bb2: 3a30 subs r2, #48 @ 0x30 + 8005bb4: 2a09 cmp r2, #9 + 8005bb6: d903 bls.n 8005bc0 <_vfiprintf_r+0x1d0> + 8005bb8: 2b00 cmp r3, #0 + 8005bba: d0c8 beq.n 8005b4e <_vfiprintf_r+0x15e> + 8005bbc: 9109 str r1, [sp, #36] @ 0x24 + 8005bbe: e7c6 b.n 8005b4e <_vfiprintf_r+0x15e> + 8005bc0: 4341 muls r1, r0 + 8005bc2: 002e movs r6, r5 + 8005bc4: 2301 movs r3, #1 + 8005bc6: 1889 adds r1, r1, r2 + 8005bc8: e7f1 b.n 8005bae <_vfiprintf_r+0x1be> + 8005bca: aa07 add r2, sp, #28 + 8005bcc: 9200 str r2, [sp, #0] + 8005bce: 0021 movs r1, r4 + 8005bd0: 003a movs r2, r7 + 8005bd2: 4b14 ldr r3, [pc, #80] @ (8005c24 <_vfiprintf_r+0x234>) + 8005bd4: 9803 ldr r0, [sp, #12] + 8005bd6: e000 b.n 8005bda <_vfiprintf_r+0x1ea> + 8005bd8: bf00 nop + 8005bda: 9004 str r0, [sp, #16] + 8005bdc: 9b04 ldr r3, [sp, #16] + 8005bde: 3301 adds r3, #1 + 8005be0: d1d6 bne.n 8005b90 <_vfiprintf_r+0x1a0> + 8005be2: 6e7b ldr r3, [r7, #100] @ 0x64 + 8005be4: 07db lsls r3, r3, #31 + 8005be6: d405 bmi.n 8005bf4 <_vfiprintf_r+0x204> + 8005be8: 89bb ldrh r3, [r7, #12] + 8005bea: 059b lsls r3, r3, #22 + 8005bec: d402 bmi.n 8005bf4 <_vfiprintf_r+0x204> + 8005bee: 6db8 ldr r0, [r7, #88] @ 0x58 + 8005bf0: f7ff fdd8 bl 80057a4 <__retarget_lock_release_recursive> + 8005bf4: 89bb ldrh r3, [r7, #12] + 8005bf6: 065b lsls r3, r3, #25 + 8005bf8: d500 bpl.n 8005bfc <_vfiprintf_r+0x20c> + 8005bfa: e71e b.n 8005a3a <_vfiprintf_r+0x4a> + 8005bfc: 980d ldr r0, [sp, #52] @ 0x34 + 8005bfe: e71e b.n 8005a3e <_vfiprintf_r+0x4e> + 8005c00: aa07 add r2, sp, #28 + 8005c02: 9200 str r2, [sp, #0] + 8005c04: 0021 movs r1, r4 + 8005c06: 003a movs r2, r7 + 8005c08: 4b06 ldr r3, [pc, #24] @ (8005c24 <_vfiprintf_r+0x234>) + 8005c0a: 9803 ldr r0, [sp, #12] + 8005c0c: f000 f87c bl 8005d08 <_printf_i> + 8005c10: e7e3 b.n 8005bda <_vfiprintf_r+0x1ea> + 8005c12: 46c0 nop @ (mov r8, r8) + 8005c14: 080062c8 .word 0x080062c8 + 8005c18: 080062ce .word 0x080062ce + 8005c1c: 080062d2 .word 0x080062d2 + 8005c20: 00000000 .word 0x00000000 + 8005c24: 080059cb .word 0x080059cb -08005c00 <__sflush_r>: - 8005c00: b5f7 push {r0, r1, r2, r4, r5, r6, r7, lr} - 8005c02: 220c movs r2, #12 - 8005c04: 5e8b ldrsh r3, [r1, r2] - 8005c06: 0005 movs r5, r0 - 8005c08: 000c movs r4, r1 - 8005c0a: 071a lsls r2, r3, #28 - 8005c0c: d456 bmi.n 8005cbc <__sflush_r+0xbc> - 8005c0e: 684a ldr r2, [r1, #4] - 8005c10: 2a00 cmp r2, #0 - 8005c12: dc02 bgt.n 8005c1a <__sflush_r+0x1a> - 8005c14: 6c0a ldr r2, [r1, #64] @ 0x40 - 8005c16: 2a00 cmp r2, #0 - 8005c18: dd4e ble.n 8005cb8 <__sflush_r+0xb8> - 8005c1a: 6ae7 ldr r7, [r4, #44] @ 0x2c - 8005c1c: 2f00 cmp r7, #0 - 8005c1e: d04b beq.n 8005cb8 <__sflush_r+0xb8> - 8005c20: 2200 movs r2, #0 - 8005c22: 2080 movs r0, #128 @ 0x80 - 8005c24: 682e ldr r6, [r5, #0] - 8005c26: 602a str r2, [r5, #0] - 8005c28: 001a movs r2, r3 - 8005c2a: 0140 lsls r0, r0, #5 - 8005c2c: 6a21 ldr r1, [r4, #32] - 8005c2e: 4002 ands r2, r0 - 8005c30: 4203 tst r3, r0 - 8005c32: d033 beq.n 8005c9c <__sflush_r+0x9c> - 8005c34: 6d62 ldr r2, [r4, #84] @ 0x54 - 8005c36: 89a3 ldrh r3, [r4, #12] - 8005c38: 075b lsls r3, r3, #29 - 8005c3a: d506 bpl.n 8005c4a <__sflush_r+0x4a> - 8005c3c: 6863 ldr r3, [r4, #4] - 8005c3e: 1ad2 subs r2, r2, r3 - 8005c40: 6b63 ldr r3, [r4, #52] @ 0x34 - 8005c42: 2b00 cmp r3, #0 - 8005c44: d001 beq.n 8005c4a <__sflush_r+0x4a> - 8005c46: 6c23 ldr r3, [r4, #64] @ 0x40 - 8005c48: 1ad2 subs r2, r2, r3 - 8005c4a: 2300 movs r3, #0 - 8005c4c: 0028 movs r0, r5 - 8005c4e: 6ae7 ldr r7, [r4, #44] @ 0x2c - 8005c50: 6a21 ldr r1, [r4, #32] - 8005c52: 47b8 blx r7 - 8005c54: 89a2 ldrh r2, [r4, #12] - 8005c56: 1c43 adds r3, r0, #1 - 8005c58: d106 bne.n 8005c68 <__sflush_r+0x68> - 8005c5a: 6829 ldr r1, [r5, #0] - 8005c5c: 291d cmp r1, #29 - 8005c5e: d846 bhi.n 8005cee <__sflush_r+0xee> - 8005c60: 4b29 ldr r3, [pc, #164] @ (8005d08 <__sflush_r+0x108>) - 8005c62: 410b asrs r3, r1 - 8005c64: 07db lsls r3, r3, #31 - 8005c66: d442 bmi.n 8005cee <__sflush_r+0xee> - 8005c68: 2300 movs r3, #0 - 8005c6a: 6063 str r3, [r4, #4] - 8005c6c: 6923 ldr r3, [r4, #16] - 8005c6e: 6023 str r3, [r4, #0] - 8005c70: 04d2 lsls r2, r2, #19 - 8005c72: d505 bpl.n 8005c80 <__sflush_r+0x80> - 8005c74: 1c43 adds r3, r0, #1 - 8005c76: d102 bne.n 8005c7e <__sflush_r+0x7e> - 8005c78: 682b ldr r3, [r5, #0] - 8005c7a: 2b00 cmp r3, #0 - 8005c7c: d100 bne.n 8005c80 <__sflush_r+0x80> - 8005c7e: 6560 str r0, [r4, #84] @ 0x54 - 8005c80: 6b61 ldr r1, [r4, #52] @ 0x34 - 8005c82: 602e str r6, [r5, #0] - 8005c84: 2900 cmp r1, #0 - 8005c86: d017 beq.n 8005cb8 <__sflush_r+0xb8> - 8005c88: 0023 movs r3, r4 - 8005c8a: 3344 adds r3, #68 @ 0x44 - 8005c8c: 4299 cmp r1, r3 - 8005c8e: d002 beq.n 8005c96 <__sflush_r+0x96> - 8005c90: 0028 movs r0, r5 - 8005c92: f7ff fbf7 bl 8005484 <_free_r> - 8005c96: 2300 movs r3, #0 - 8005c98: 6363 str r3, [r4, #52] @ 0x34 - 8005c9a: e00d b.n 8005cb8 <__sflush_r+0xb8> - 8005c9c: 2301 movs r3, #1 - 8005c9e: 0028 movs r0, r5 - 8005ca0: 47b8 blx r7 - 8005ca2: 0002 movs r2, r0 - 8005ca4: 1c43 adds r3, r0, #1 - 8005ca6: d1c6 bne.n 8005c36 <__sflush_r+0x36> - 8005ca8: 682b ldr r3, [r5, #0] - 8005caa: 2b00 cmp r3, #0 - 8005cac: d0c3 beq.n 8005c36 <__sflush_r+0x36> - 8005cae: 2b1d cmp r3, #29 - 8005cb0: d001 beq.n 8005cb6 <__sflush_r+0xb6> - 8005cb2: 2b16 cmp r3, #22 - 8005cb4: d11a bne.n 8005cec <__sflush_r+0xec> - 8005cb6: 602e str r6, [r5, #0] - 8005cb8: 2000 movs r0, #0 - 8005cba: e01e b.n 8005cfa <__sflush_r+0xfa> - 8005cbc: 690e ldr r6, [r1, #16] - 8005cbe: 2e00 cmp r6, #0 - 8005cc0: d0fa beq.n 8005cb8 <__sflush_r+0xb8> - 8005cc2: 680f ldr r7, [r1, #0] - 8005cc4: 600e str r6, [r1, #0] - 8005cc6: 1bba subs r2, r7, r6 - 8005cc8: 9201 str r2, [sp, #4] - 8005cca: 2200 movs r2, #0 - 8005ccc: 079b lsls r3, r3, #30 - 8005cce: d100 bne.n 8005cd2 <__sflush_r+0xd2> - 8005cd0: 694a ldr r2, [r1, #20] - 8005cd2: 60a2 str r2, [r4, #8] - 8005cd4: 9b01 ldr r3, [sp, #4] - 8005cd6: 2b00 cmp r3, #0 - 8005cd8: ddee ble.n 8005cb8 <__sflush_r+0xb8> - 8005cda: 6aa3 ldr r3, [r4, #40] @ 0x28 - 8005cdc: 0032 movs r2, r6 - 8005cde: 001f movs r7, r3 - 8005ce0: 0028 movs r0, r5 - 8005ce2: 9b01 ldr r3, [sp, #4] - 8005ce4: 6a21 ldr r1, [r4, #32] - 8005ce6: 47b8 blx r7 - 8005ce8: 2800 cmp r0, #0 - 8005cea: dc07 bgt.n 8005cfc <__sflush_r+0xfc> - 8005cec: 89a2 ldrh r2, [r4, #12] - 8005cee: 2340 movs r3, #64 @ 0x40 - 8005cf0: 2001 movs r0, #1 - 8005cf2: 4313 orrs r3, r2 - 8005cf4: b21b sxth r3, r3 - 8005cf6: 81a3 strh r3, [r4, #12] - 8005cf8: 4240 negs r0, r0 - 8005cfa: bdfe pop {r1, r2, r3, r4, r5, r6, r7, pc} - 8005cfc: 9b01 ldr r3, [sp, #4] - 8005cfe: 1836 adds r6, r6, r0 - 8005d00: 1a1b subs r3, r3, r0 - 8005d02: 9301 str r3, [sp, #4] - 8005d04: e7e6 b.n 8005cd4 <__sflush_r+0xd4> - 8005d06: 46c0 nop @ (mov r8, r8) - 8005d08: dfbffffe .word 0xdfbffffe - -08005d0c <_fflush_r>: - 8005d0c: 690b ldr r3, [r1, #16] - 8005d0e: b570 push {r4, r5, r6, lr} - 8005d10: 0005 movs r5, r0 - 8005d12: 000c movs r4, r1 - 8005d14: 2b00 cmp r3, #0 - 8005d16: d102 bne.n 8005d1e <_fflush_r+0x12> - 8005d18: 2500 movs r5, #0 - 8005d1a: 0028 movs r0, r5 - 8005d1c: bd70 pop {r4, r5, r6, pc} - 8005d1e: 2800 cmp r0, #0 - 8005d20: d004 beq.n 8005d2c <_fflush_r+0x20> - 8005d22: 6a03 ldr r3, [r0, #32] - 8005d24: 2b00 cmp r3, #0 - 8005d26: d101 bne.n 8005d2c <_fflush_r+0x20> - 8005d28: f7ff f998 bl 800505c <__sinit> - 8005d2c: 220c movs r2, #12 - 8005d2e: 5ea3 ldrsh r3, [r4, r2] - 8005d30: 2b00 cmp r3, #0 - 8005d32: d0f1 beq.n 8005d18 <_fflush_r+0xc> - 8005d34: 6e62 ldr r2, [r4, #100] @ 0x64 - 8005d36: 07d2 lsls r2, r2, #31 - 8005d38: d404 bmi.n 8005d44 <_fflush_r+0x38> - 8005d3a: 059b lsls r3, r3, #22 - 8005d3c: d402 bmi.n 8005d44 <_fflush_r+0x38> - 8005d3e: 6da0 ldr r0, [r4, #88] @ 0x58 - 8005d40: f7ff fb9d bl 800547e <__retarget_lock_acquire_recursive> - 8005d44: 0028 movs r0, r5 - 8005d46: 0021 movs r1, r4 - 8005d48: f7ff ff5a bl 8005c00 <__sflush_r> - 8005d4c: 6e63 ldr r3, [r4, #100] @ 0x64 - 8005d4e: 0005 movs r5, r0 - 8005d50: 07db lsls r3, r3, #31 - 8005d52: d4e2 bmi.n 8005d1a <_fflush_r+0xe> - 8005d54: 89a3 ldrh r3, [r4, #12] - 8005d56: 059b lsls r3, r3, #22 - 8005d58: d4df bmi.n 8005d1a <_fflush_r+0xe> - 8005d5a: 6da0 ldr r0, [r4, #88] @ 0x58 - 8005d5c: f7ff fb90 bl 8005480 <__retarget_lock_release_recursive> - 8005d60: e7db b.n 8005d1a <_fflush_r+0xe> +08005c28 <_printf_common>: + 8005c28: b5f7 push {r0, r1, r2, r4, r5, r6, r7, lr} + 8005c2a: 0016 movs r6, r2 + 8005c2c: 9301 str r3, [sp, #4] + 8005c2e: 688a ldr r2, [r1, #8] + 8005c30: 690b ldr r3, [r1, #16] + 8005c32: 000c movs r4, r1 + 8005c34: 9000 str r0, [sp, #0] + 8005c36: 4293 cmp r3, r2 + 8005c38: da00 bge.n 8005c3c <_printf_common+0x14> + 8005c3a: 0013 movs r3, r2 + 8005c3c: 0022 movs r2, r4 + 8005c3e: 6033 str r3, [r6, #0] + 8005c40: 3243 adds r2, #67 @ 0x43 + 8005c42: 7812 ldrb r2, [r2, #0] + 8005c44: 2a00 cmp r2, #0 + 8005c46: d001 beq.n 8005c4c <_printf_common+0x24> + 8005c48: 3301 adds r3, #1 + 8005c4a: 6033 str r3, [r6, #0] + 8005c4c: 6823 ldr r3, [r4, #0] + 8005c4e: 069b lsls r3, r3, #26 + 8005c50: d502 bpl.n 8005c58 <_printf_common+0x30> + 8005c52: 6833 ldr r3, [r6, #0] + 8005c54: 3302 adds r3, #2 + 8005c56: 6033 str r3, [r6, #0] + 8005c58: 6822 ldr r2, [r4, #0] + 8005c5a: 2306 movs r3, #6 + 8005c5c: 0015 movs r5, r2 + 8005c5e: 401d ands r5, r3 + 8005c60: 421a tst r2, r3 + 8005c62: d027 beq.n 8005cb4 <_printf_common+0x8c> + 8005c64: 0023 movs r3, r4 + 8005c66: 3343 adds r3, #67 @ 0x43 + 8005c68: 781b ldrb r3, [r3, #0] + 8005c6a: 1e5a subs r2, r3, #1 + 8005c6c: 4193 sbcs r3, r2 + 8005c6e: 6822 ldr r2, [r4, #0] + 8005c70: 0692 lsls r2, r2, #26 + 8005c72: d430 bmi.n 8005cd6 <_printf_common+0xae> + 8005c74: 0022 movs r2, r4 + 8005c76: 9901 ldr r1, [sp, #4] + 8005c78: 9800 ldr r0, [sp, #0] + 8005c7a: 9d08 ldr r5, [sp, #32] + 8005c7c: 3243 adds r2, #67 @ 0x43 + 8005c7e: 47a8 blx r5 + 8005c80: 3001 adds r0, #1 + 8005c82: d025 beq.n 8005cd0 <_printf_common+0xa8> + 8005c84: 2206 movs r2, #6 + 8005c86: 6823 ldr r3, [r4, #0] + 8005c88: 2500 movs r5, #0 + 8005c8a: 4013 ands r3, r2 + 8005c8c: 2b04 cmp r3, #4 + 8005c8e: d105 bne.n 8005c9c <_printf_common+0x74> + 8005c90: 6833 ldr r3, [r6, #0] + 8005c92: 68e5 ldr r5, [r4, #12] + 8005c94: 1aed subs r5, r5, r3 + 8005c96: 43eb mvns r3, r5 + 8005c98: 17db asrs r3, r3, #31 + 8005c9a: 401d ands r5, r3 + 8005c9c: 68a3 ldr r3, [r4, #8] + 8005c9e: 6922 ldr r2, [r4, #16] + 8005ca0: 4293 cmp r3, r2 + 8005ca2: dd01 ble.n 8005ca8 <_printf_common+0x80> + 8005ca4: 1a9b subs r3, r3, r2 + 8005ca6: 18ed adds r5, r5, r3 + 8005ca8: 2600 movs r6, #0 + 8005caa: 42b5 cmp r5, r6 + 8005cac: d120 bne.n 8005cf0 <_printf_common+0xc8> + 8005cae: 2000 movs r0, #0 + 8005cb0: e010 b.n 8005cd4 <_printf_common+0xac> + 8005cb2: 3501 adds r5, #1 + 8005cb4: 68e3 ldr r3, [r4, #12] + 8005cb6: 6832 ldr r2, [r6, #0] + 8005cb8: 1a9b subs r3, r3, r2 + 8005cba: 42ab cmp r3, r5 + 8005cbc: ddd2 ble.n 8005c64 <_printf_common+0x3c> + 8005cbe: 0022 movs r2, r4 + 8005cc0: 2301 movs r3, #1 + 8005cc2: 9901 ldr r1, [sp, #4] + 8005cc4: 9800 ldr r0, [sp, #0] + 8005cc6: 9f08 ldr r7, [sp, #32] + 8005cc8: 3219 adds r2, #25 + 8005cca: 47b8 blx r7 + 8005ccc: 3001 adds r0, #1 + 8005cce: d1f0 bne.n 8005cb2 <_printf_common+0x8a> + 8005cd0: 2001 movs r0, #1 + 8005cd2: 4240 negs r0, r0 + 8005cd4: bdfe pop {r1, r2, r3, r4, r5, r6, r7, pc} + 8005cd6: 2030 movs r0, #48 @ 0x30 + 8005cd8: 18e1 adds r1, r4, r3 + 8005cda: 3143 adds r1, #67 @ 0x43 + 8005cdc: 7008 strb r0, [r1, #0] + 8005cde: 0021 movs r1, r4 + 8005ce0: 1c5a adds r2, r3, #1 + 8005ce2: 3145 adds r1, #69 @ 0x45 + 8005ce4: 7809 ldrb r1, [r1, #0] + 8005ce6: 18a2 adds r2, r4, r2 + 8005ce8: 3243 adds r2, #67 @ 0x43 + 8005cea: 3302 adds r3, #2 + 8005cec: 7011 strb r1, [r2, #0] + 8005cee: e7c1 b.n 8005c74 <_printf_common+0x4c> + 8005cf0: 0022 movs r2, r4 + 8005cf2: 2301 movs r3, #1 + 8005cf4: 9901 ldr r1, [sp, #4] + 8005cf6: 9800 ldr r0, [sp, #0] + 8005cf8: 9f08 ldr r7, [sp, #32] + 8005cfa: 321a adds r2, #26 + 8005cfc: 47b8 blx r7 + 8005cfe: 3001 adds r0, #1 + 8005d00: d0e6 beq.n 8005cd0 <_printf_common+0xa8> + 8005d02: 3601 adds r6, #1 + 8005d04: e7d1 b.n 8005caa <_printf_common+0x82> ... -08005d64 <__swhatbuf_r>: - 8005d64: b570 push {r4, r5, r6, lr} - 8005d66: 000e movs r6, r1 - 8005d68: 001d movs r5, r3 - 8005d6a: 230e movs r3, #14 - 8005d6c: 5ec9 ldrsh r1, [r1, r3] - 8005d6e: 0014 movs r4, r2 - 8005d70: b096 sub sp, #88 @ 0x58 - 8005d72: 2900 cmp r1, #0 - 8005d74: da0c bge.n 8005d90 <__swhatbuf_r+0x2c> - 8005d76: 89b2 ldrh r2, [r6, #12] - 8005d78: 2380 movs r3, #128 @ 0x80 - 8005d7a: 0011 movs r1, r2 - 8005d7c: 4019 ands r1, r3 - 8005d7e: 421a tst r2, r3 - 8005d80: d114 bne.n 8005dac <__swhatbuf_r+0x48> - 8005d82: 2380 movs r3, #128 @ 0x80 - 8005d84: 00db lsls r3, r3, #3 - 8005d86: 2000 movs r0, #0 - 8005d88: 6029 str r1, [r5, #0] - 8005d8a: 6023 str r3, [r4, #0] - 8005d8c: b016 add sp, #88 @ 0x58 - 8005d8e: bd70 pop {r4, r5, r6, pc} - 8005d90: 466a mov r2, sp - 8005d92: f000 f853 bl 8005e3c <_fstat_r> - 8005d96: 2800 cmp r0, #0 - 8005d98: dbed blt.n 8005d76 <__swhatbuf_r+0x12> - 8005d9a: 23f0 movs r3, #240 @ 0xf0 - 8005d9c: 9901 ldr r1, [sp, #4] - 8005d9e: 021b lsls r3, r3, #8 - 8005da0: 4019 ands r1, r3 - 8005da2: 4b04 ldr r3, [pc, #16] @ (8005db4 <__swhatbuf_r+0x50>) - 8005da4: 18c9 adds r1, r1, r3 - 8005da6: 424b negs r3, r1 - 8005da8: 4159 adcs r1, r3 - 8005daa: e7ea b.n 8005d82 <__swhatbuf_r+0x1e> - 8005dac: 2100 movs r1, #0 - 8005dae: 2340 movs r3, #64 @ 0x40 - 8005db0: e7e9 b.n 8005d86 <__swhatbuf_r+0x22> - 8005db2: 46c0 nop @ (mov r8, r8) - 8005db4: ffffe000 .word 0xffffe000 +08005d08 <_printf_i>: + 8005d08: b5f0 push {r4, r5, r6, r7, lr} + 8005d0a: b08b sub sp, #44 @ 0x2c + 8005d0c: 9206 str r2, [sp, #24] + 8005d0e: 000a movs r2, r1 + 8005d10: 3243 adds r2, #67 @ 0x43 + 8005d12: 9307 str r3, [sp, #28] + 8005d14: 9005 str r0, [sp, #20] + 8005d16: 9203 str r2, [sp, #12] + 8005d18: 7e0a ldrb r2, [r1, #24] + 8005d1a: 000c movs r4, r1 + 8005d1c: 9b10 ldr r3, [sp, #64] @ 0x40 + 8005d1e: 2a78 cmp r2, #120 @ 0x78 + 8005d20: d809 bhi.n 8005d36 <_printf_i+0x2e> + 8005d22: 2a62 cmp r2, #98 @ 0x62 + 8005d24: d80b bhi.n 8005d3e <_printf_i+0x36> + 8005d26: 2a00 cmp r2, #0 + 8005d28: d100 bne.n 8005d2c <_printf_i+0x24> + 8005d2a: e0bc b.n 8005ea6 <_printf_i+0x19e> + 8005d2c: 497b ldr r1, [pc, #492] @ (8005f1c <_printf_i+0x214>) + 8005d2e: 9104 str r1, [sp, #16] + 8005d30: 2a58 cmp r2, #88 @ 0x58 + 8005d32: d100 bne.n 8005d36 <_printf_i+0x2e> + 8005d34: e090 b.n 8005e58 <_printf_i+0x150> + 8005d36: 0025 movs r5, r4 + 8005d38: 3542 adds r5, #66 @ 0x42 + 8005d3a: 702a strb r2, [r5, #0] + 8005d3c: e022 b.n 8005d84 <_printf_i+0x7c> + 8005d3e: 0010 movs r0, r2 + 8005d40: 3863 subs r0, #99 @ 0x63 + 8005d42: 2815 cmp r0, #21 + 8005d44: d8f7 bhi.n 8005d36 <_printf_i+0x2e> + 8005d46: f7fa f9db bl 8000100 <__gnu_thumb1_case_shi> + 8005d4a: 0016 .short 0x0016 + 8005d4c: fff6001f .word 0xfff6001f + 8005d50: fff6fff6 .word 0xfff6fff6 + 8005d54: 001ffff6 .word 0x001ffff6 + 8005d58: fff6fff6 .word 0xfff6fff6 + 8005d5c: fff6fff6 .word 0xfff6fff6 + 8005d60: 003600a1 .word 0x003600a1 + 8005d64: fff60080 .word 0xfff60080 + 8005d68: 00b2fff6 .word 0x00b2fff6 + 8005d6c: 0036fff6 .word 0x0036fff6 + 8005d70: fff6fff6 .word 0xfff6fff6 + 8005d74: 0084 .short 0x0084 + 8005d76: 0025 movs r5, r4 + 8005d78: 681a ldr r2, [r3, #0] + 8005d7a: 3542 adds r5, #66 @ 0x42 + 8005d7c: 1d11 adds r1, r2, #4 + 8005d7e: 6019 str r1, [r3, #0] + 8005d80: 6813 ldr r3, [r2, #0] + 8005d82: 702b strb r3, [r5, #0] + 8005d84: 2301 movs r3, #1 + 8005d86: e0a0 b.n 8005eca <_printf_i+0x1c2> + 8005d88: 6818 ldr r0, [r3, #0] + 8005d8a: 6809 ldr r1, [r1, #0] + 8005d8c: 1d02 adds r2, r0, #4 + 8005d8e: 060d lsls r5, r1, #24 + 8005d90: d50b bpl.n 8005daa <_printf_i+0xa2> + 8005d92: 6806 ldr r6, [r0, #0] + 8005d94: 601a str r2, [r3, #0] + 8005d96: 2e00 cmp r6, #0 + 8005d98: da03 bge.n 8005da2 <_printf_i+0x9a> + 8005d9a: 232d movs r3, #45 @ 0x2d + 8005d9c: 9a03 ldr r2, [sp, #12] + 8005d9e: 4276 negs r6, r6 + 8005da0: 7013 strb r3, [r2, #0] + 8005da2: 4b5e ldr r3, [pc, #376] @ (8005f1c <_printf_i+0x214>) + 8005da4: 270a movs r7, #10 + 8005da6: 9304 str r3, [sp, #16] + 8005da8: e018 b.n 8005ddc <_printf_i+0xd4> + 8005daa: 6806 ldr r6, [r0, #0] + 8005dac: 601a str r2, [r3, #0] + 8005dae: 0649 lsls r1, r1, #25 + 8005db0: d5f1 bpl.n 8005d96 <_printf_i+0x8e> + 8005db2: b236 sxth r6, r6 + 8005db4: e7ef b.n 8005d96 <_printf_i+0x8e> + 8005db6: 6808 ldr r0, [r1, #0] + 8005db8: 6819 ldr r1, [r3, #0] + 8005dba: c940 ldmia r1!, {r6} + 8005dbc: 0605 lsls r5, r0, #24 + 8005dbe: d402 bmi.n 8005dc6 <_printf_i+0xbe> + 8005dc0: 0640 lsls r0, r0, #25 + 8005dc2: d500 bpl.n 8005dc6 <_printf_i+0xbe> + 8005dc4: b2b6 uxth r6, r6 + 8005dc6: 6019 str r1, [r3, #0] + 8005dc8: 4b54 ldr r3, [pc, #336] @ (8005f1c <_printf_i+0x214>) + 8005dca: 270a movs r7, #10 + 8005dcc: 9304 str r3, [sp, #16] + 8005dce: 2a6f cmp r2, #111 @ 0x6f + 8005dd0: d100 bne.n 8005dd4 <_printf_i+0xcc> + 8005dd2: 3f02 subs r7, #2 + 8005dd4: 0023 movs r3, r4 + 8005dd6: 2200 movs r2, #0 + 8005dd8: 3343 adds r3, #67 @ 0x43 + 8005dda: 701a strb r2, [r3, #0] + 8005ddc: 6863 ldr r3, [r4, #4] + 8005dde: 60a3 str r3, [r4, #8] + 8005de0: 2b00 cmp r3, #0 + 8005de2: db03 blt.n 8005dec <_printf_i+0xe4> + 8005de4: 2104 movs r1, #4 + 8005de6: 6822 ldr r2, [r4, #0] + 8005de8: 438a bics r2, r1 + 8005dea: 6022 str r2, [r4, #0] + 8005dec: 2e00 cmp r6, #0 + 8005dee: d102 bne.n 8005df6 <_printf_i+0xee> + 8005df0: 9d03 ldr r5, [sp, #12] + 8005df2: 2b00 cmp r3, #0 + 8005df4: d00c beq.n 8005e10 <_printf_i+0x108> + 8005df6: 9d03 ldr r5, [sp, #12] + 8005df8: 0030 movs r0, r6 + 8005dfa: 0039 movs r1, r7 + 8005dfc: f7fa fa10 bl 8000220 <__aeabi_uidivmod> + 8005e00: 9b04 ldr r3, [sp, #16] + 8005e02: 3d01 subs r5, #1 + 8005e04: 5c5b ldrb r3, [r3, r1] + 8005e06: 702b strb r3, [r5, #0] + 8005e08: 0033 movs r3, r6 + 8005e0a: 0006 movs r6, r0 + 8005e0c: 429f cmp r7, r3 + 8005e0e: d9f3 bls.n 8005df8 <_printf_i+0xf0> + 8005e10: 2f08 cmp r7, #8 + 8005e12: d109 bne.n 8005e28 <_printf_i+0x120> + 8005e14: 6823 ldr r3, [r4, #0] + 8005e16: 07db lsls r3, r3, #31 + 8005e18: d506 bpl.n 8005e28 <_printf_i+0x120> + 8005e1a: 6862 ldr r2, [r4, #4] + 8005e1c: 6923 ldr r3, [r4, #16] + 8005e1e: 429a cmp r2, r3 + 8005e20: dc02 bgt.n 8005e28 <_printf_i+0x120> + 8005e22: 2330 movs r3, #48 @ 0x30 + 8005e24: 3d01 subs r5, #1 + 8005e26: 702b strb r3, [r5, #0] + 8005e28: 9b03 ldr r3, [sp, #12] + 8005e2a: 1b5b subs r3, r3, r5 + 8005e2c: 6123 str r3, [r4, #16] + 8005e2e: 9b07 ldr r3, [sp, #28] + 8005e30: 0021 movs r1, r4 + 8005e32: 9300 str r3, [sp, #0] + 8005e34: 9805 ldr r0, [sp, #20] + 8005e36: 9b06 ldr r3, [sp, #24] + 8005e38: aa09 add r2, sp, #36 @ 0x24 + 8005e3a: f7ff fef5 bl 8005c28 <_printf_common> + 8005e3e: 3001 adds r0, #1 + 8005e40: d148 bne.n 8005ed4 <_printf_i+0x1cc> + 8005e42: 2001 movs r0, #1 + 8005e44: 4240 negs r0, r0 + 8005e46: b00b add sp, #44 @ 0x2c + 8005e48: bdf0 pop {r4, r5, r6, r7, pc} + 8005e4a: 2220 movs r2, #32 + 8005e4c: 6809 ldr r1, [r1, #0] + 8005e4e: 430a orrs r2, r1 + 8005e50: 6022 str r2, [r4, #0] + 8005e52: 2278 movs r2, #120 @ 0x78 + 8005e54: 4932 ldr r1, [pc, #200] @ (8005f20 <_printf_i+0x218>) + 8005e56: 9104 str r1, [sp, #16] + 8005e58: 0021 movs r1, r4 + 8005e5a: 3145 adds r1, #69 @ 0x45 + 8005e5c: 700a strb r2, [r1, #0] + 8005e5e: 6819 ldr r1, [r3, #0] + 8005e60: 6822 ldr r2, [r4, #0] + 8005e62: c940 ldmia r1!, {r6} + 8005e64: 0610 lsls r0, r2, #24 + 8005e66: d402 bmi.n 8005e6e <_printf_i+0x166> + 8005e68: 0650 lsls r0, r2, #25 + 8005e6a: d500 bpl.n 8005e6e <_printf_i+0x166> + 8005e6c: b2b6 uxth r6, r6 + 8005e6e: 6019 str r1, [r3, #0] + 8005e70: 07d3 lsls r3, r2, #31 + 8005e72: d502 bpl.n 8005e7a <_printf_i+0x172> + 8005e74: 2320 movs r3, #32 + 8005e76: 4313 orrs r3, r2 + 8005e78: 6023 str r3, [r4, #0] + 8005e7a: 2e00 cmp r6, #0 + 8005e7c: d001 beq.n 8005e82 <_printf_i+0x17a> + 8005e7e: 2710 movs r7, #16 + 8005e80: e7a8 b.n 8005dd4 <_printf_i+0xcc> + 8005e82: 2220 movs r2, #32 + 8005e84: 6823 ldr r3, [r4, #0] + 8005e86: 4393 bics r3, r2 + 8005e88: 6023 str r3, [r4, #0] + 8005e8a: e7f8 b.n 8005e7e <_printf_i+0x176> + 8005e8c: 681a ldr r2, [r3, #0] + 8005e8e: 680d ldr r5, [r1, #0] + 8005e90: 1d10 adds r0, r2, #4 + 8005e92: 6949 ldr r1, [r1, #20] + 8005e94: 6018 str r0, [r3, #0] + 8005e96: 6813 ldr r3, [r2, #0] + 8005e98: 062e lsls r6, r5, #24 + 8005e9a: d501 bpl.n 8005ea0 <_printf_i+0x198> + 8005e9c: 6019 str r1, [r3, #0] + 8005e9e: e002 b.n 8005ea6 <_printf_i+0x19e> + 8005ea0: 066d lsls r5, r5, #25 + 8005ea2: d5fb bpl.n 8005e9c <_printf_i+0x194> + 8005ea4: 8019 strh r1, [r3, #0] + 8005ea6: 2300 movs r3, #0 + 8005ea8: 9d03 ldr r5, [sp, #12] + 8005eaa: 6123 str r3, [r4, #16] + 8005eac: e7bf b.n 8005e2e <_printf_i+0x126> + 8005eae: 681a ldr r2, [r3, #0] + 8005eb0: 1d11 adds r1, r2, #4 + 8005eb2: 6019 str r1, [r3, #0] + 8005eb4: 6815 ldr r5, [r2, #0] + 8005eb6: 2100 movs r1, #0 + 8005eb8: 0028 movs r0, r5 + 8005eba: 6862 ldr r2, [r4, #4] + 8005ebc: f000 f986 bl 80061cc + 8005ec0: 2800 cmp r0, #0 + 8005ec2: d001 beq.n 8005ec8 <_printf_i+0x1c0> + 8005ec4: 1b40 subs r0, r0, r5 + 8005ec6: 6060 str r0, [r4, #4] + 8005ec8: 6863 ldr r3, [r4, #4] + 8005eca: 6123 str r3, [r4, #16] + 8005ecc: 2300 movs r3, #0 + 8005ece: 9a03 ldr r2, [sp, #12] + 8005ed0: 7013 strb r3, [r2, #0] + 8005ed2: e7ac b.n 8005e2e <_printf_i+0x126> + 8005ed4: 002a movs r2, r5 + 8005ed6: 6923 ldr r3, [r4, #16] + 8005ed8: 9906 ldr r1, [sp, #24] + 8005eda: 9805 ldr r0, [sp, #20] + 8005edc: 9d07 ldr r5, [sp, #28] + 8005ede: 47a8 blx r5 + 8005ee0: 3001 adds r0, #1 + 8005ee2: d0ae beq.n 8005e42 <_printf_i+0x13a> + 8005ee4: 6823 ldr r3, [r4, #0] + 8005ee6: 079b lsls r3, r3, #30 + 8005ee8: d415 bmi.n 8005f16 <_printf_i+0x20e> + 8005eea: 9b09 ldr r3, [sp, #36] @ 0x24 + 8005eec: 68e0 ldr r0, [r4, #12] + 8005eee: 4298 cmp r0, r3 + 8005ef0: daa9 bge.n 8005e46 <_printf_i+0x13e> + 8005ef2: 0018 movs r0, r3 + 8005ef4: e7a7 b.n 8005e46 <_printf_i+0x13e> + 8005ef6: 0022 movs r2, r4 + 8005ef8: 2301 movs r3, #1 + 8005efa: 9906 ldr r1, [sp, #24] + 8005efc: 9805 ldr r0, [sp, #20] + 8005efe: 9e07 ldr r6, [sp, #28] + 8005f00: 3219 adds r2, #25 + 8005f02: 47b0 blx r6 + 8005f04: 3001 adds r0, #1 + 8005f06: d09c beq.n 8005e42 <_printf_i+0x13a> + 8005f08: 3501 adds r5, #1 + 8005f0a: 68e3 ldr r3, [r4, #12] + 8005f0c: 9a09 ldr r2, [sp, #36] @ 0x24 + 8005f0e: 1a9b subs r3, r3, r2 + 8005f10: 42ab cmp r3, r5 + 8005f12: dcf0 bgt.n 8005ef6 <_printf_i+0x1ee> + 8005f14: e7e9 b.n 8005eea <_printf_i+0x1e2> + 8005f16: 2500 movs r5, #0 + 8005f18: e7f7 b.n 8005f0a <_printf_i+0x202> + 8005f1a: 46c0 nop @ (mov r8, r8) + 8005f1c: 080062d9 .word 0x080062d9 + 8005f20: 080062ea .word 0x080062ea -08005db8 <__smakebuf_r>: - 8005db8: b5f0 push {r4, r5, r6, r7, lr} - 8005dba: 2602 movs r6, #2 - 8005dbc: 898b ldrh r3, [r1, #12] - 8005dbe: 0005 movs r5, r0 - 8005dc0: 000c movs r4, r1 - 8005dc2: b085 sub sp, #20 - 8005dc4: 4233 tst r3, r6 - 8005dc6: d007 beq.n 8005dd8 <__smakebuf_r+0x20> - 8005dc8: 0023 movs r3, r4 - 8005dca: 3347 adds r3, #71 @ 0x47 - 8005dcc: 6023 str r3, [r4, #0] - 8005dce: 6123 str r3, [r4, #16] - 8005dd0: 2301 movs r3, #1 - 8005dd2: 6163 str r3, [r4, #20] - 8005dd4: b005 add sp, #20 - 8005dd6: bdf0 pop {r4, r5, r6, r7, pc} - 8005dd8: ab03 add r3, sp, #12 - 8005dda: aa02 add r2, sp, #8 - 8005ddc: f7ff ffc2 bl 8005d64 <__swhatbuf_r> - 8005de0: 9f02 ldr r7, [sp, #8] - 8005de2: 9001 str r0, [sp, #4] - 8005de4: 0039 movs r1, r7 - 8005de6: 0028 movs r0, r5 - 8005de8: f7ff fbb8 bl 800555c <_malloc_r> - 8005dec: 2800 cmp r0, #0 - 8005dee: d108 bne.n 8005e02 <__smakebuf_r+0x4a> - 8005df0: 220c movs r2, #12 - 8005df2: 5ea3 ldrsh r3, [r4, r2] - 8005df4: 059a lsls r2, r3, #22 - 8005df6: d4ed bmi.n 8005dd4 <__smakebuf_r+0x1c> - 8005df8: 2203 movs r2, #3 - 8005dfa: 4393 bics r3, r2 - 8005dfc: 431e orrs r6, r3 - 8005dfe: 81a6 strh r6, [r4, #12] - 8005e00: e7e2 b.n 8005dc8 <__smakebuf_r+0x10> - 8005e02: 2380 movs r3, #128 @ 0x80 - 8005e04: 89a2 ldrh r2, [r4, #12] - 8005e06: 6020 str r0, [r4, #0] - 8005e08: 4313 orrs r3, r2 - 8005e0a: 81a3 strh r3, [r4, #12] - 8005e0c: 9b03 ldr r3, [sp, #12] - 8005e0e: 6120 str r0, [r4, #16] - 8005e10: 6167 str r7, [r4, #20] - 8005e12: 2b00 cmp r3, #0 - 8005e14: d00c beq.n 8005e30 <__smakebuf_r+0x78> - 8005e16: 0028 movs r0, r5 - 8005e18: 230e movs r3, #14 - 8005e1a: 5ee1 ldrsh r1, [r4, r3] - 8005e1c: f000 f820 bl 8005e60 <_isatty_r> - 8005e20: 2800 cmp r0, #0 - 8005e22: d005 beq.n 8005e30 <__smakebuf_r+0x78> - 8005e24: 2303 movs r3, #3 - 8005e26: 89a2 ldrh r2, [r4, #12] - 8005e28: 439a bics r2, r3 - 8005e2a: 3b02 subs r3, #2 - 8005e2c: 4313 orrs r3, r2 - 8005e2e: 81a3 strh r3, [r4, #12] - 8005e30: 89a3 ldrh r3, [r4, #12] - 8005e32: 9a01 ldr r2, [sp, #4] - 8005e34: 4313 orrs r3, r2 - 8005e36: 81a3 strh r3, [r4, #12] - 8005e38: e7cc b.n 8005dd4 <__smakebuf_r+0x1c> +08005f24 <__sflush_r>: + 8005f24: b5f7 push {r0, r1, r2, r4, r5, r6, r7, lr} + 8005f26: 220c movs r2, #12 + 8005f28: 5e8b ldrsh r3, [r1, r2] + 8005f2a: 0005 movs r5, r0 + 8005f2c: 000c movs r4, r1 + 8005f2e: 071a lsls r2, r3, #28 + 8005f30: d456 bmi.n 8005fe0 <__sflush_r+0xbc> + 8005f32: 684a ldr r2, [r1, #4] + 8005f34: 2a00 cmp r2, #0 + 8005f36: dc02 bgt.n 8005f3e <__sflush_r+0x1a> + 8005f38: 6c0a ldr r2, [r1, #64] @ 0x40 + 8005f3a: 2a00 cmp r2, #0 + 8005f3c: dd4e ble.n 8005fdc <__sflush_r+0xb8> + 8005f3e: 6ae7 ldr r7, [r4, #44] @ 0x2c + 8005f40: 2f00 cmp r7, #0 + 8005f42: d04b beq.n 8005fdc <__sflush_r+0xb8> + 8005f44: 2200 movs r2, #0 + 8005f46: 2080 movs r0, #128 @ 0x80 + 8005f48: 682e ldr r6, [r5, #0] + 8005f4a: 602a str r2, [r5, #0] + 8005f4c: 001a movs r2, r3 + 8005f4e: 0140 lsls r0, r0, #5 + 8005f50: 6a21 ldr r1, [r4, #32] + 8005f52: 4002 ands r2, r0 + 8005f54: 4203 tst r3, r0 + 8005f56: d033 beq.n 8005fc0 <__sflush_r+0x9c> + 8005f58: 6d62 ldr r2, [r4, #84] @ 0x54 + 8005f5a: 89a3 ldrh r3, [r4, #12] + 8005f5c: 075b lsls r3, r3, #29 + 8005f5e: d506 bpl.n 8005f6e <__sflush_r+0x4a> + 8005f60: 6863 ldr r3, [r4, #4] + 8005f62: 1ad2 subs r2, r2, r3 + 8005f64: 6b63 ldr r3, [r4, #52] @ 0x34 + 8005f66: 2b00 cmp r3, #0 + 8005f68: d001 beq.n 8005f6e <__sflush_r+0x4a> + 8005f6a: 6c23 ldr r3, [r4, #64] @ 0x40 + 8005f6c: 1ad2 subs r2, r2, r3 + 8005f6e: 2300 movs r3, #0 + 8005f70: 0028 movs r0, r5 + 8005f72: 6ae7 ldr r7, [r4, #44] @ 0x2c + 8005f74: 6a21 ldr r1, [r4, #32] + 8005f76: 47b8 blx r7 + 8005f78: 89a2 ldrh r2, [r4, #12] + 8005f7a: 1c43 adds r3, r0, #1 + 8005f7c: d106 bne.n 8005f8c <__sflush_r+0x68> + 8005f7e: 6829 ldr r1, [r5, #0] + 8005f80: 291d cmp r1, #29 + 8005f82: d846 bhi.n 8006012 <__sflush_r+0xee> + 8005f84: 4b29 ldr r3, [pc, #164] @ (800602c <__sflush_r+0x108>) + 8005f86: 410b asrs r3, r1 + 8005f88: 07db lsls r3, r3, #31 + 8005f8a: d442 bmi.n 8006012 <__sflush_r+0xee> + 8005f8c: 2300 movs r3, #0 + 8005f8e: 6063 str r3, [r4, #4] + 8005f90: 6923 ldr r3, [r4, #16] + 8005f92: 6023 str r3, [r4, #0] + 8005f94: 04d2 lsls r2, r2, #19 + 8005f96: d505 bpl.n 8005fa4 <__sflush_r+0x80> + 8005f98: 1c43 adds r3, r0, #1 + 8005f9a: d102 bne.n 8005fa2 <__sflush_r+0x7e> + 8005f9c: 682b ldr r3, [r5, #0] + 8005f9e: 2b00 cmp r3, #0 + 8005fa0: d100 bne.n 8005fa4 <__sflush_r+0x80> + 8005fa2: 6560 str r0, [r4, #84] @ 0x54 + 8005fa4: 6b61 ldr r1, [r4, #52] @ 0x34 + 8005fa6: 602e str r6, [r5, #0] + 8005fa8: 2900 cmp r1, #0 + 8005faa: d017 beq.n 8005fdc <__sflush_r+0xb8> + 8005fac: 0023 movs r3, r4 + 8005fae: 3344 adds r3, #68 @ 0x44 + 8005fb0: 4299 cmp r1, r3 + 8005fb2: d002 beq.n 8005fba <__sflush_r+0x96> + 8005fb4: 0028 movs r0, r5 + 8005fb6: f7ff fbf7 bl 80057a8 <_free_r> + 8005fba: 2300 movs r3, #0 + 8005fbc: 6363 str r3, [r4, #52] @ 0x34 + 8005fbe: e00d b.n 8005fdc <__sflush_r+0xb8> + 8005fc0: 2301 movs r3, #1 + 8005fc2: 0028 movs r0, r5 + 8005fc4: 47b8 blx r7 + 8005fc6: 0002 movs r2, r0 + 8005fc8: 1c43 adds r3, r0, #1 + 8005fca: d1c6 bne.n 8005f5a <__sflush_r+0x36> + 8005fcc: 682b ldr r3, [r5, #0] + 8005fce: 2b00 cmp r3, #0 + 8005fd0: d0c3 beq.n 8005f5a <__sflush_r+0x36> + 8005fd2: 2b1d cmp r3, #29 + 8005fd4: d001 beq.n 8005fda <__sflush_r+0xb6> + 8005fd6: 2b16 cmp r3, #22 + 8005fd8: d11a bne.n 8006010 <__sflush_r+0xec> + 8005fda: 602e str r6, [r5, #0] + 8005fdc: 2000 movs r0, #0 + 8005fde: e01e b.n 800601e <__sflush_r+0xfa> + 8005fe0: 690e ldr r6, [r1, #16] + 8005fe2: 2e00 cmp r6, #0 + 8005fe4: d0fa beq.n 8005fdc <__sflush_r+0xb8> + 8005fe6: 680f ldr r7, [r1, #0] + 8005fe8: 600e str r6, [r1, #0] + 8005fea: 1bba subs r2, r7, r6 + 8005fec: 9201 str r2, [sp, #4] + 8005fee: 2200 movs r2, #0 + 8005ff0: 079b lsls r3, r3, #30 + 8005ff2: d100 bne.n 8005ff6 <__sflush_r+0xd2> + 8005ff4: 694a ldr r2, [r1, #20] + 8005ff6: 60a2 str r2, [r4, #8] + 8005ff8: 9b01 ldr r3, [sp, #4] + 8005ffa: 2b00 cmp r3, #0 + 8005ffc: ddee ble.n 8005fdc <__sflush_r+0xb8> + 8005ffe: 6aa3 ldr r3, [r4, #40] @ 0x28 + 8006000: 0032 movs r2, r6 + 8006002: 001f movs r7, r3 + 8006004: 0028 movs r0, r5 + 8006006: 9b01 ldr r3, [sp, #4] + 8006008: 6a21 ldr r1, [r4, #32] + 800600a: 47b8 blx r7 + 800600c: 2800 cmp r0, #0 + 800600e: dc07 bgt.n 8006020 <__sflush_r+0xfc> + 8006010: 89a2 ldrh r2, [r4, #12] + 8006012: 2340 movs r3, #64 @ 0x40 + 8006014: 2001 movs r0, #1 + 8006016: 4313 orrs r3, r2 + 8006018: b21b sxth r3, r3 + 800601a: 81a3 strh r3, [r4, #12] + 800601c: 4240 negs r0, r0 + 800601e: bdfe pop {r1, r2, r3, r4, r5, r6, r7, pc} + 8006020: 9b01 ldr r3, [sp, #4] + 8006022: 1836 adds r6, r6, r0 + 8006024: 1a1b subs r3, r3, r0 + 8006026: 9301 str r3, [sp, #4] + 8006028: e7e6 b.n 8005ff8 <__sflush_r+0xd4> + 800602a: 46c0 nop @ (mov r8, r8) + 800602c: dfbffffe .word 0xdfbffffe + +08006030 <_fflush_r>: + 8006030: 690b ldr r3, [r1, #16] + 8006032: b570 push {r4, r5, r6, lr} + 8006034: 0005 movs r5, r0 + 8006036: 000c movs r4, r1 + 8006038: 2b00 cmp r3, #0 + 800603a: d102 bne.n 8006042 <_fflush_r+0x12> + 800603c: 2500 movs r5, #0 + 800603e: 0028 movs r0, r5 + 8006040: bd70 pop {r4, r5, r6, pc} + 8006042: 2800 cmp r0, #0 + 8006044: d004 beq.n 8006050 <_fflush_r+0x20> + 8006046: 6a03 ldr r3, [r0, #32] + 8006048: 2b00 cmp r3, #0 + 800604a: d101 bne.n 8006050 <_fflush_r+0x20> + 800604c: f7ff f998 bl 8005380 <__sinit> + 8006050: 220c movs r2, #12 + 8006052: 5ea3 ldrsh r3, [r4, r2] + 8006054: 2b00 cmp r3, #0 + 8006056: d0f1 beq.n 800603c <_fflush_r+0xc> + 8006058: 6e62 ldr r2, [r4, #100] @ 0x64 + 800605a: 07d2 lsls r2, r2, #31 + 800605c: d404 bmi.n 8006068 <_fflush_r+0x38> + 800605e: 059b lsls r3, r3, #22 + 8006060: d402 bmi.n 8006068 <_fflush_r+0x38> + 8006062: 6da0 ldr r0, [r4, #88] @ 0x58 + 8006064: f7ff fb9d bl 80057a2 <__retarget_lock_acquire_recursive> + 8006068: 0028 movs r0, r5 + 800606a: 0021 movs r1, r4 + 800606c: f7ff ff5a bl 8005f24 <__sflush_r> + 8006070: 6e63 ldr r3, [r4, #100] @ 0x64 + 8006072: 0005 movs r5, r0 + 8006074: 07db lsls r3, r3, #31 + 8006076: d4e2 bmi.n 800603e <_fflush_r+0xe> + 8006078: 89a3 ldrh r3, [r4, #12] + 800607a: 059b lsls r3, r3, #22 + 800607c: d4df bmi.n 800603e <_fflush_r+0xe> + 800607e: 6da0 ldr r0, [r4, #88] @ 0x58 + 8006080: f7ff fb90 bl 80057a4 <__retarget_lock_release_recursive> + 8006084: e7db b.n 800603e <_fflush_r+0xe> ... -08005e3c <_fstat_r>: - 8005e3c: 2300 movs r3, #0 - 8005e3e: b570 push {r4, r5, r6, lr} - 8005e40: 4d06 ldr r5, [pc, #24] @ (8005e5c <_fstat_r+0x20>) - 8005e42: 0004 movs r4, r0 - 8005e44: 0008 movs r0, r1 - 8005e46: 0011 movs r1, r2 - 8005e48: 602b str r3, [r5, #0] - 8005e4a: f7fb fa6a bl 8001322 <_fstat> - 8005e4e: 1c43 adds r3, r0, #1 - 8005e50: d103 bne.n 8005e5a <_fstat_r+0x1e> - 8005e52: 682b ldr r3, [r5, #0] - 8005e54: 2b00 cmp r3, #0 - 8005e56: d000 beq.n 8005e5a <_fstat_r+0x1e> - 8005e58: 6023 str r3, [r4, #0] - 8005e5a: bd70 pop {r4, r5, r6, pc} - 8005e5c: 20000328 .word 0x20000328 +08006088 <__swhatbuf_r>: + 8006088: b570 push {r4, r5, r6, lr} + 800608a: 000e movs r6, r1 + 800608c: 001d movs r5, r3 + 800608e: 230e movs r3, #14 + 8006090: 5ec9 ldrsh r1, [r1, r3] + 8006092: 0014 movs r4, r2 + 8006094: b096 sub sp, #88 @ 0x58 + 8006096: 2900 cmp r1, #0 + 8006098: da0c bge.n 80060b4 <__swhatbuf_r+0x2c> + 800609a: 89b2 ldrh r2, [r6, #12] + 800609c: 2380 movs r3, #128 @ 0x80 + 800609e: 0011 movs r1, r2 + 80060a0: 4019 ands r1, r3 + 80060a2: 421a tst r2, r3 + 80060a4: d114 bne.n 80060d0 <__swhatbuf_r+0x48> + 80060a6: 2380 movs r3, #128 @ 0x80 + 80060a8: 00db lsls r3, r3, #3 + 80060aa: 2000 movs r0, #0 + 80060ac: 6029 str r1, [r5, #0] + 80060ae: 6023 str r3, [r4, #0] + 80060b0: b016 add sp, #88 @ 0x58 + 80060b2: bd70 pop {r4, r5, r6, pc} + 80060b4: 466a mov r2, sp + 80060b6: f000 f853 bl 8006160 <_fstat_r> + 80060ba: 2800 cmp r0, #0 + 80060bc: dbed blt.n 800609a <__swhatbuf_r+0x12> + 80060be: 23f0 movs r3, #240 @ 0xf0 + 80060c0: 9901 ldr r1, [sp, #4] + 80060c2: 021b lsls r3, r3, #8 + 80060c4: 4019 ands r1, r3 + 80060c6: 4b04 ldr r3, [pc, #16] @ (80060d8 <__swhatbuf_r+0x50>) + 80060c8: 18c9 adds r1, r1, r3 + 80060ca: 424b negs r3, r1 + 80060cc: 4159 adcs r1, r3 + 80060ce: e7ea b.n 80060a6 <__swhatbuf_r+0x1e> + 80060d0: 2100 movs r1, #0 + 80060d2: 2340 movs r3, #64 @ 0x40 + 80060d4: e7e9 b.n 80060aa <__swhatbuf_r+0x22> + 80060d6: 46c0 nop @ (mov r8, r8) + 80060d8: ffffe000 .word 0xffffe000 -08005e60 <_isatty_r>: - 8005e60: 2300 movs r3, #0 - 8005e62: b570 push {r4, r5, r6, lr} - 8005e64: 4d06 ldr r5, [pc, #24] @ (8005e80 <_isatty_r+0x20>) - 8005e66: 0004 movs r4, r0 - 8005e68: 0008 movs r0, r1 - 8005e6a: 602b str r3, [r5, #0] - 8005e6c: f7fb fa67 bl 800133e <_isatty> - 8005e70: 1c43 adds r3, r0, #1 - 8005e72: d103 bne.n 8005e7c <_isatty_r+0x1c> - 8005e74: 682b ldr r3, [r5, #0] - 8005e76: 2b00 cmp r3, #0 - 8005e78: d000 beq.n 8005e7c <_isatty_r+0x1c> - 8005e7a: 6023 str r3, [r4, #0] - 8005e7c: bd70 pop {r4, r5, r6, pc} - 8005e7e: 46c0 nop @ (mov r8, r8) - 8005e80: 20000328 .word 0x20000328 - -08005e84 <_sbrk_r>: - 8005e84: 2300 movs r3, #0 - 8005e86: b570 push {r4, r5, r6, lr} - 8005e88: 4d06 ldr r5, [pc, #24] @ (8005ea4 <_sbrk_r+0x20>) - 8005e8a: 0004 movs r4, r0 - 8005e8c: 0008 movs r0, r1 - 8005e8e: 602b str r3, [r5, #0] - 8005e90: f7fb fa6a bl 8001368 <_sbrk> - 8005e94: 1c43 adds r3, r0, #1 - 8005e96: d103 bne.n 8005ea0 <_sbrk_r+0x1c> - 8005e98: 682b ldr r3, [r5, #0] - 8005e9a: 2b00 cmp r3, #0 - 8005e9c: d000 beq.n 8005ea0 <_sbrk_r+0x1c> - 8005e9e: 6023 str r3, [r4, #0] - 8005ea0: bd70 pop {r4, r5, r6, pc} - 8005ea2: 46c0 nop @ (mov r8, r8) - 8005ea4: 20000328 .word 0x20000328 - -08005ea8 : - 8005ea8: b2c9 uxtb r1, r1 - 8005eaa: 1882 adds r2, r0, r2 - 8005eac: 4290 cmp r0, r2 - 8005eae: d101 bne.n 8005eb4 - 8005eb0: 2000 movs r0, #0 - 8005eb2: 4770 bx lr - 8005eb4: 7803 ldrb r3, [r0, #0] - 8005eb6: 428b cmp r3, r1 - 8005eb8: d0fb beq.n 8005eb2 - 8005eba: 3001 adds r0, #1 - 8005ebc: e7f6 b.n 8005eac +080060dc <__smakebuf_r>: + 80060dc: b5f0 push {r4, r5, r6, r7, lr} + 80060de: 2602 movs r6, #2 + 80060e0: 898b ldrh r3, [r1, #12] + 80060e2: 0005 movs r5, r0 + 80060e4: 000c movs r4, r1 + 80060e6: b085 sub sp, #20 + 80060e8: 4233 tst r3, r6 + 80060ea: d007 beq.n 80060fc <__smakebuf_r+0x20> + 80060ec: 0023 movs r3, r4 + 80060ee: 3347 adds r3, #71 @ 0x47 + 80060f0: 6023 str r3, [r4, #0] + 80060f2: 6123 str r3, [r4, #16] + 80060f4: 2301 movs r3, #1 + 80060f6: 6163 str r3, [r4, #20] + 80060f8: b005 add sp, #20 + 80060fa: bdf0 pop {r4, r5, r6, r7, pc} + 80060fc: ab03 add r3, sp, #12 + 80060fe: aa02 add r2, sp, #8 + 8006100: f7ff ffc2 bl 8006088 <__swhatbuf_r> + 8006104: 9f02 ldr r7, [sp, #8] + 8006106: 9001 str r0, [sp, #4] + 8006108: 0039 movs r1, r7 + 800610a: 0028 movs r0, r5 + 800610c: f7ff fbb8 bl 8005880 <_malloc_r> + 8006110: 2800 cmp r0, #0 + 8006112: d108 bne.n 8006126 <__smakebuf_r+0x4a> + 8006114: 220c movs r2, #12 + 8006116: 5ea3 ldrsh r3, [r4, r2] + 8006118: 059a lsls r2, r3, #22 + 800611a: d4ed bmi.n 80060f8 <__smakebuf_r+0x1c> + 800611c: 2203 movs r2, #3 + 800611e: 4393 bics r3, r2 + 8006120: 431e orrs r6, r3 + 8006122: 81a6 strh r6, [r4, #12] + 8006124: e7e2 b.n 80060ec <__smakebuf_r+0x10> + 8006126: 2380 movs r3, #128 @ 0x80 + 8006128: 89a2 ldrh r2, [r4, #12] + 800612a: 6020 str r0, [r4, #0] + 800612c: 4313 orrs r3, r2 + 800612e: 81a3 strh r3, [r4, #12] + 8006130: 9b03 ldr r3, [sp, #12] + 8006132: 6120 str r0, [r4, #16] + 8006134: 6167 str r7, [r4, #20] + 8006136: 2b00 cmp r3, #0 + 8006138: d00c beq.n 8006154 <__smakebuf_r+0x78> + 800613a: 0028 movs r0, r5 + 800613c: 230e movs r3, #14 + 800613e: 5ee1 ldrsh r1, [r4, r3] + 8006140: f000 f820 bl 8006184 <_isatty_r> + 8006144: 2800 cmp r0, #0 + 8006146: d005 beq.n 8006154 <__smakebuf_r+0x78> + 8006148: 2303 movs r3, #3 + 800614a: 89a2 ldrh r2, [r4, #12] + 800614c: 439a bics r2, r3 + 800614e: 3b02 subs r3, #2 + 8006150: 4313 orrs r3, r2 + 8006152: 81a3 strh r3, [r4, #12] + 8006154: 89a3 ldrh r3, [r4, #12] + 8006156: 9a01 ldr r2, [sp, #4] + 8006158: 4313 orrs r3, r2 + 800615a: 81a3 strh r3, [r4, #12] + 800615c: e7cc b.n 80060f8 <__smakebuf_r+0x1c> ... -08005ec0 <_init>: - 8005ec0: b5f8 push {r3, r4, r5, r6, r7, lr} - 8005ec2: 46c0 nop @ (mov r8, r8) - 8005ec4: bcf8 pop {r3, r4, r5, r6, r7} - 8005ec6: bc08 pop {r3} - 8005ec8: 469e mov lr, r3 - 8005eca: 4770 bx lr +08006160 <_fstat_r>: + 8006160: 2300 movs r3, #0 + 8006162: b570 push {r4, r5, r6, lr} + 8006164: 4d06 ldr r5, [pc, #24] @ (8006180 <_fstat_r+0x20>) + 8006166: 0004 movs r4, r0 + 8006168: 0008 movs r0, r1 + 800616a: 0011 movs r1, r2 + 800616c: 602b str r3, [r5, #0] + 800616e: f7fb f978 bl 8001462 <_fstat> + 8006172: 1c43 adds r3, r0, #1 + 8006174: d103 bne.n 800617e <_fstat_r+0x1e> + 8006176: 682b ldr r3, [r5, #0] + 8006178: 2b00 cmp r3, #0 + 800617a: d000 beq.n 800617e <_fstat_r+0x1e> + 800617c: 6023 str r3, [r4, #0] + 800617e: bd70 pop {r4, r5, r6, pc} + 8006180: 20000318 .word 0x20000318 -08005ecc <_fini>: - 8005ecc: b5f8 push {r3, r4, r5, r6, r7, lr} - 8005ece: 46c0 nop @ (mov r8, r8) - 8005ed0: bcf8 pop {r3, r4, r5, r6, r7} - 8005ed2: bc08 pop {r3} - 8005ed4: 469e mov lr, r3 - 8005ed6: 4770 bx lr +08006184 <_isatty_r>: + 8006184: 2300 movs r3, #0 + 8006186: b570 push {r4, r5, r6, lr} + 8006188: 4d06 ldr r5, [pc, #24] @ (80061a4 <_isatty_r+0x20>) + 800618a: 0004 movs r4, r0 + 800618c: 0008 movs r0, r1 + 800618e: 602b str r3, [r5, #0] + 8006190: f7fb f975 bl 800147e <_isatty> + 8006194: 1c43 adds r3, r0, #1 + 8006196: d103 bne.n 80061a0 <_isatty_r+0x1c> + 8006198: 682b ldr r3, [r5, #0] + 800619a: 2b00 cmp r3, #0 + 800619c: d000 beq.n 80061a0 <_isatty_r+0x1c> + 800619e: 6023 str r3, [r4, #0] + 80061a0: bd70 pop {r4, r5, r6, pc} + 80061a2: 46c0 nop @ (mov r8, r8) + 80061a4: 20000318 .word 0x20000318 + +080061a8 <_sbrk_r>: + 80061a8: 2300 movs r3, #0 + 80061aa: b570 push {r4, r5, r6, lr} + 80061ac: 4d06 ldr r5, [pc, #24] @ (80061c8 <_sbrk_r+0x20>) + 80061ae: 0004 movs r4, r0 + 80061b0: 0008 movs r0, r1 + 80061b2: 602b str r3, [r5, #0] + 80061b4: f7fb f978 bl 80014a8 <_sbrk> + 80061b8: 1c43 adds r3, r0, #1 + 80061ba: d103 bne.n 80061c4 <_sbrk_r+0x1c> + 80061bc: 682b ldr r3, [r5, #0] + 80061be: 2b00 cmp r3, #0 + 80061c0: d000 beq.n 80061c4 <_sbrk_r+0x1c> + 80061c2: 6023 str r3, [r4, #0] + 80061c4: bd70 pop {r4, r5, r6, pc} + 80061c6: 46c0 nop @ (mov r8, r8) + 80061c8: 20000318 .word 0x20000318 + +080061cc : + 80061cc: b2c9 uxtb r1, r1 + 80061ce: 1882 adds r2, r0, r2 + 80061d0: 4290 cmp r0, r2 + 80061d2: d101 bne.n 80061d8 + 80061d4: 2000 movs r0, #0 + 80061d6: 4770 bx lr + 80061d8: 7803 ldrb r3, [r0, #0] + 80061da: 428b cmp r3, r1 + 80061dc: d0fb beq.n 80061d6 + 80061de: 3001 adds r0, #1 + 80061e0: e7f6 b.n 80061d0 + ... + +080061e4 <_init>: + 80061e4: b5f8 push {r3, r4, r5, r6, r7, lr} + 80061e6: 46c0 nop @ (mov r8, r8) + 80061e8: bcf8 pop {r3, r4, r5, r6, r7} + 80061ea: bc08 pop {r3} + 80061ec: 469e mov lr, r3 + 80061ee: 4770 bx lr + +080061f0 <_fini>: + 80061f0: b5f8 push {r3, r4, r5, r6, r7, lr} + 80061f2: 46c0 nop @ (mov r8, r8) + 80061f4: bcf8 pop {r3, r4, r5, r6, r7} + 80061f6: bc08 pop {r3} + 80061f8: 469e mov lr, r3 + 80061fa: 4770 bx lr diff --git a/Debug/blk_box_bc.map b/Debug/blk_box_bc.map index 306fa32..0a1f2f4 100644 --- a/Debug/blk_box_bc.map +++ b/Debug/blk_box_bc.map @@ -7,9 +7,9 @@ C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.external C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-fwalk.o) C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-findfp.o) (_fwalk_sglue) C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-printf.o) - ./Core/Src/main.o (printf) + ./Core/Src/RFID.o (printf) C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-puts.o) - ./Core/Src/main.o (puts) + ./Core/Src/RFID.o (puts) C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-stdio.o) C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-findfp.o) (__sread) C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-wbuf.o) @@ -91,6 +91,81 @@ Discarded input sections .ARM.exidx 0x00000000 0x10 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/crt0.o .ARM.attributes 0x00000000 0x1b C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/crt0.o + .group 0x00000000 0xc ./Core/Src/RFID.o + .group 0x00000000 0xc ./Core/Src/RFID.o + .group 0x00000000 0xc ./Core/Src/RFID.o + .group 0x00000000 0xc ./Core/Src/RFID.o + .group 0x00000000 0xc ./Core/Src/RFID.o + .group 0x00000000 0xc ./Core/Src/RFID.o + .group 0x00000000 0xc ./Core/Src/RFID.o + .group 0x00000000 0xc ./Core/Src/RFID.o + .group 0x00000000 0xc ./Core/Src/RFID.o + .group 0x00000000 0xc ./Core/Src/RFID.o + .group 0x00000000 0xc ./Core/Src/RFID.o + .group 0x00000000 0xc ./Core/Src/RFID.o + .group 0x00000000 0xc ./Core/Src/RFID.o + .group 0x00000000 0xc ./Core/Src/RFID.o + .group 0x00000000 0xc ./Core/Src/RFID.o + .group 0x00000000 0xc ./Core/Src/RFID.o + .group 0x00000000 0xc ./Core/Src/RFID.o + .group 0x00000000 0xc ./Core/Src/RFID.o + .group 0x00000000 0xc ./Core/Src/RFID.o + .group 0x00000000 0xc ./Core/Src/RFID.o + .group 0x00000000 0xc ./Core/Src/RFID.o + .group 0x00000000 0xc ./Core/Src/RFID.o + .group 0x00000000 0xc ./Core/Src/RFID.o + .group 0x00000000 0xc ./Core/Src/RFID.o + .group 0x00000000 0xc ./Core/Src/RFID.o + .group 0x00000000 0xc ./Core/Src/RFID.o + .group 0x00000000 0xc ./Core/Src/RFID.o + .group 0x00000000 0xc ./Core/Src/RFID.o + .group 0x00000000 0xc ./Core/Src/RFID.o + .group 0x00000000 0xc ./Core/Src/RFID.o + .group 0x00000000 0xc ./Core/Src/RFID.o + .group 0x00000000 0xc ./Core/Src/RFID.o + .group 0x00000000 0xc ./Core/Src/RFID.o + .group 0x00000000 0xc ./Core/Src/RFID.o + .group 0x00000000 0xc ./Core/Src/RFID.o + .group 0x00000000 0xc ./Core/Src/RFID.o + .group 0x00000000 0xc ./Core/Src/RFID.o + .group 0x00000000 0xc ./Core/Src/RFID.o + .group 0x00000000 0xc ./Core/Src/RFID.o + .group 0x00000000 0xc ./Core/Src/RFID.o + .group 0x00000000 0xc ./Core/Src/RFID.o + .group 0x00000000 0xc ./Core/Src/RFID.o + .group 0x00000000 0xc ./Core/Src/RFID.o + .group 0x00000000 0xc ./Core/Src/RFID.o + .group 0x00000000 0xc ./Core/Src/RFID.o + .group 0x00000000 0xc ./Core/Src/RFID.o + .group 0x00000000 0xc ./Core/Src/RFID.o + .group 0x00000000 0xc ./Core/Src/RFID.o + .group 0x00000000 0xc ./Core/Src/RFID.o + .group 0x00000000 0xc ./Core/Src/RFID.o + .group 0x00000000 0xc ./Core/Src/RFID.o + .group 0x00000000 0xc ./Core/Src/RFID.o + .group 0x00000000 0xc ./Core/Src/RFID.o + .group 0x00000000 0xc ./Core/Src/RFID.o + .group 0x00000000 0xc ./Core/Src/RFID.o + .group 0x00000000 0xc ./Core/Src/RFID.o + .group 0x00000000 0xc ./Core/Src/RFID.o + .group 0x00000000 0xc ./Core/Src/RFID.o + .group 0x00000000 0xc ./Core/Src/RFID.o + .group 0x00000000 0xc ./Core/Src/RFID.o + .group 0x00000000 0xc ./Core/Src/RFID.o + .group 0x00000000 0xc ./Core/Src/RFID.o + .group 0x00000000 0xc ./Core/Src/RFID.o + .group 0x00000000 0xc ./Core/Src/RFID.o + .group 0x00000000 0xc ./Core/Src/RFID.o + .group 0x00000000 0xc ./Core/Src/RFID.o + .text 0x00000000 0x0 ./Core/Src/RFID.o + .data 0x00000000 0x0 ./Core/Src/RFID.o + .bss 0x00000000 0x0 ./Core/Src/RFID.o + .rodata.CHANNEL_OFFSET_TAB + 0x00000000 0x7 ./Core/Src/RFID.o + .text.rc522_compareIds + 0x00000000 0x52 ./Core/Src/RFID.o + .group 0x00000000 0xc ./Core/Src/main.o + .group 0x00000000 0xc ./Core/Src/main.o .group 0x00000000 0xc ./Core/Src/main.o .group 0x00000000 0xc ./Core/Src/main.o .group 0x00000000 0xc ./Core/Src/main.o @@ -160,10 +235,89 @@ Discarded input sections .bss 0x00000000 0x0 ./Core/Src/main.o .rodata.CHANNEL_OFFSET_TAB 0x00000000 0x7 ./Core/Src/main.o + .bss.old_keypad_state + 0x00000000 0x2 ./Core/Src/main.o + .bss.keypad_state + 0x00000000 0x2 ./Core/Src/main.o + .bss.old_button_state + 0x00000000 0x2 ./Core/Src/main.o + .bss.button_state + 0x00000000 0x2 ./Core/Src/main.o .text.printBinary 0x00000000 0x50 ./Core/Src/main.o + .bss.data 0x00000000 0x8 ./Core/Src/main.o + .text.scan_keypad + 0x00000000 0x318 ./Core/Src/main.o + .text.scan_buttons + 0x00000000 0x280 ./Core/Src/main.o .text.send_iterupt 0x00000000 0xa ./Core/Src/main.o + .debug_macro 0x00000000 0xa8a ./Core/Src/main.o + .debug_macro 0x00000000 0x123 ./Core/Src/main.o + .debug_macro 0x00000000 0x2e ./Core/Src/main.o + .debug_macro 0x00000000 0x28 ./Core/Src/main.o + .debug_macro 0x00000000 0x22 ./Core/Src/main.o + .debug_macro 0x00000000 0x8e ./Core/Src/main.o + .debug_macro 0x00000000 0x51 ./Core/Src/main.o + .debug_macro 0x00000000 0x103 ./Core/Src/main.o + .debug_macro 0x00000000 0x6a ./Core/Src/main.o + .debug_macro 0x00000000 0x1df ./Core/Src/main.o + .debug_macro 0x00000000 0x1c ./Core/Src/main.o + .debug_macro 0x00000000 0x22 ./Core/Src/main.o + .debug_macro 0x00000000 0xd1 ./Core/Src/main.o + .debug_macro 0x00000000 0x4da ./Core/Src/main.o + .debug_macro 0x00000000 0x11f ./Core/Src/main.o + .debug_macro 0x00000000 0xa701 ./Core/Src/main.o + .debug_macro 0x00000000 0x66 ./Core/Src/main.o + .debug_macro 0x00000000 0x350e ./Core/Src/main.o + .debug_macro 0x00000000 0x189 ./Core/Src/main.o + .debug_macro 0x00000000 0x5c ./Core/Src/main.o + .debug_macro 0x00000000 0x485 ./Core/Src/main.o + .debug_macro 0x00000000 0xeb4 ./Core/Src/main.o + .debug_macro 0x00000000 0x13e ./Core/Src/main.o + .debug_macro 0x00000000 0x1cf ./Core/Src/main.o + .debug_macro 0x00000000 0x13e ./Core/Src/main.o + .debug_macro 0x00000000 0x3a8 ./Core/Src/main.o + .debug_macro 0x00000000 0x280 ./Core/Src/main.o + .debug_macro 0x00000000 0x345 ./Core/Src/main.o + .debug_macro 0x00000000 0x198 ./Core/Src/main.o + .debug_macro 0x00000000 0x43 ./Core/Src/main.o + .debug_macro 0x00000000 0x1f1 ./Core/Src/main.o + .debug_macro 0x00000000 0x1d6 ./Core/Src/main.o + .debug_macro 0x00000000 0x2a3 ./Core/Src/main.o + .debug_macro 0x00000000 0x28 ./Core/Src/main.o + .debug_macro 0x00000000 0xcf ./Core/Src/main.o + .debug_macro 0x00000000 0x22c ./Core/Src/main.o + .debug_macro 0x00000000 0x67 ./Core/Src/main.o + .debug_macro 0x00000000 0xa5 ./Core/Src/main.o + .debug_macro 0x00000000 0x118 ./Core/Src/main.o + .debug_macro 0x00000000 0x10d ./Core/Src/main.o + .debug_macro 0x00000000 0x2fe ./Core/Src/main.o + .debug_macro 0x00000000 0x693 ./Core/Src/main.o + .debug_macro 0x00000000 0xa6 ./Core/Src/main.o + .debug_macro 0x00000000 0x43d ./Core/Src/main.o + .debug_macro 0x00000000 0x130 ./Core/Src/main.o + .debug_macro 0x00000000 0x22 ./Core/Src/main.o + .debug_macro 0x00000000 0x214 ./Core/Src/main.o + .debug_macro 0x00000000 0x61 ./Core/Src/main.o + .debug_macro 0x00000000 0x24 ./Core/Src/main.o + .debug_macro 0x00000000 0x43 ./Core/Src/main.o + .debug_macro 0x00000000 0x34 ./Core/Src/main.o + .debug_macro 0x00000000 0x16 ./Core/Src/main.o + .debug_macro 0x00000000 0x35 ./Core/Src/main.o + .debug_macro 0x00000000 0x369 ./Core/Src/main.o + .debug_macro 0x00000000 0x10 ./Core/Src/main.o + .debug_macro 0x00000000 0x16 ./Core/Src/main.o + .debug_macro 0x00000000 0x43 ./Core/Src/main.o + .debug_macro 0x00000000 0x34 ./Core/Src/main.o + .debug_macro 0x00000000 0x10 ./Core/Src/main.o + .debug_macro 0x00000000 0x58 ./Core/Src/main.o + .debug_macro 0x00000000 0x8e ./Core/Src/main.o + .debug_macro 0x00000000 0x1c ./Core/Src/main.o + .debug_macro 0x00000000 0x177 ./Core/Src/main.o + .debug_macro 0x00000000 0x16 ./Core/Src/main.o + .debug_macro 0x00000000 0x16 ./Core/Src/main.o + .debug_macro 0x00000000 0x146 ./Core/Src/main.o .group 0x00000000 0xc ./Core/Src/stm32g0xx_hal_msp.o .group 0x00000000 0xc ./Core/Src/stm32g0xx_hal_msp.o .group 0x00000000 0xc ./Core/Src/stm32g0xx_hal_msp.o @@ -264,7 +418,7 @@ Discarded input sections .debug_macro 0x00000000 0x693 ./Core/Src/stm32g0xx_hal_msp.o .debug_macro 0x00000000 0xa6 ./Core/Src/stm32g0xx_hal_msp.o .debug_macro 0x00000000 0x43d ./Core/Src/stm32g0xx_hal_msp.o - .debug_macro 0x00000000 0x124 ./Core/Src/stm32g0xx_hal_msp.o + .debug_macro 0x00000000 0x130 ./Core/Src/stm32g0xx_hal_msp.o .group 0x00000000 0xc ./Core/Src/stm32g0xx_it.o .group 0x00000000 0xc ./Core/Src/stm32g0xx_it.o .group 0x00000000 0xc ./Core/Src/stm32g0xx_it.o @@ -359,7 +513,7 @@ Discarded input sections .debug_macro 0x00000000 0x693 ./Core/Src/stm32g0xx_it.o .debug_macro 0x00000000 0xa6 ./Core/Src/stm32g0xx_it.o .debug_macro 0x00000000 0x43d ./Core/Src/stm32g0xx_it.o - .debug_macro 0x00000000 0x124 ./Core/Src/stm32g0xx_it.o + .debug_macro 0x00000000 0x130 ./Core/Src/stm32g0xx_it.o .group 0x00000000 0xc ./Core/Src/syscalls.o .group 0x00000000 0xc ./Core/Src/syscalls.o .group 0x00000000 0xc ./Core/Src/syscalls.o @@ -1543,6 +1697,8 @@ Discarded input sections 0x00000000 0x7 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_gpio.o .text.HAL_GPIO_DeInit 0x00000000 0x1a0 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_gpio.o + .text.HAL_GPIO_ReadPin + 0x00000000 0x3a ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_gpio.o .text.HAL_GPIO_TogglePin 0x00000000 0x36 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_gpio.o .text.HAL_GPIO_LockPin @@ -1666,6 +1822,8 @@ Discarded input sections 0x00000000 0xf8 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o .text.HAL_I2C_Slave_Transmit_IT 0x00000000 0xe8 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + .text.HAL_I2C_Slave_Receive_IT + 0x00000000 0xac ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o .text.HAL_I2C_Master_Transmit_DMA 0x00000000 0x254 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o .text.HAL_I2C_Master_Receive_DMA @@ -1710,8 +1868,16 @@ Discarded input sections 0x00000000 0x68 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o .text.HAL_I2C_Master_Abort_IT 0x00000000 0xac ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + .text.HAL_I2C_MasterTxCpltCallback + 0x00000000 0x10 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + .text.HAL_I2C_MasterRxCpltCallback + 0x00000000 0x10 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o .text.HAL_I2C_SlaveRxCpltCallback 0x00000000 0x10 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + .text.HAL_I2C_MemTxCpltCallback + 0x00000000 0x10 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + .text.HAL_I2C_MemRxCpltCallback + 0x00000000 0x10 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o .text.HAL_I2C_GetState 0x00000000 0x18 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o .text.HAL_I2C_GetMode @@ -1722,10 +1888,20 @@ Discarded input sections 0x00000000 0x268 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o .text.I2C_Mem_ISR_IT 0x00000000 0x244 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + .text.I2C_Master_ISR_DMA + 0x00000000 0x1f8 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + .text.I2C_Mem_ISR_DMA + 0x00000000 0x258 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + .text.I2C_Slave_ISR_DMA + 0x00000000 0x1d0 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o .text.I2C_RequestMemoryWrite 0x00000000 0xc8 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o .text.I2C_RequestMemoryRead 0x00000000 0xc4 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + .text.I2C_ITMasterSeqCplt + 0x00000000 0x82 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + .text.I2C_ITMasterCplt + 0x00000000 0x19c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o .text.I2C_DMAMasterTransmitCplt 0x00000000 0xa0 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o .text.I2C_DMASlaveTransmitCplt @@ -1746,6 +1922,10 @@ Discarded input sections 0x00000000 0x13c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o .text.I2C_IsErrorOccurred 0x00000000 0x1f0 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + .text.I2C_TransferConfig + 0x00000000 0x74 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + .text.I2C_Enable_IRQ + 0x00000000 0x114 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o .text.I2C_ConvertOtherXferOptions 0x00000000 0x34 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o .debug_macro 0x00000000 0xa8a ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o @@ -2425,12 +2605,6 @@ Discarded input sections 0x00000000 0x10 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_spi.o .text.HAL_SPI_MspDeInit 0x00000000 0x10 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_spi.o - .text.HAL_SPI_Transmit - 0x00000000 0x2be ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_spi.o - .text.HAL_SPI_Receive - 0x00000000 0x2a4 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_spi.o - .text.HAL_SPI_TransmitReceive - 0x00000000 0x3c4 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_spi.o .text.HAL_SPI_Transmit_IT 0x00000000 0x130 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_spi.o .text.HAL_SPI_Receive_IT @@ -2511,14 +2685,6 @@ Discarded input sections 0x00000000 0x48 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_spi.o .text.SPI_TxISR_16BIT 0x00000000 0x46 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_spi.o - .text.SPI_WaitFlagStateUntilTimeout - 0x00000000 0x11c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_spi.o - .text.SPI_WaitFifoStateUntilTimeout - 0x00000000 0x144 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_spi.o - .text.SPI_EndRxTransaction - 0x00000000 0xbc ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_spi.o - .text.SPI_EndRxTxTransaction - 0x00000000 0x8c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_spi.o .text.SPI_CloseRxTx_ISR 0x00000000 0x8c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_spi.o .text.SPI_CloseRx_ISR @@ -3464,6 +3630,7 @@ Linker script and memory map LOAD C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v6-m/nofp/crti.o LOAD C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v6-m/nofp/crtbegin.o LOAD C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/crt0.o +LOAD ./Core/Src/RFID.o LOAD ./Core/Src/main.o LOAD ./Core/Src/stm32g0xx_hal_msp.o LOAD ./Core/Src/stm32g0xx_it.o @@ -3527,7 +3694,7 @@ LOAD C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.ext 0x08000000 g_pfnVectors 0x080000b8 . = ALIGN (0x4) -.text 0x080000b8 0x5e20 +.text 0x080000b8 0x6144 0x080000b8 . = ALIGN (0x4) *(.text) .text 0x080000b8 0x48 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v6-m/nofp/crtbegin.o @@ -3545,530 +3712,555 @@ LOAD C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.ext 0x080003fc __aeabi_idiv0 0x080003fc __aeabi_ldiv0 *(.text*) - .text.main 0x08000400 0xd4 ./Core/Src/main.o - 0x08000400 main + .text.spi_cs_rfid_write + 0x08000400 0x24 ./Core/Src/RFID.o + 0x08000400 spi_cs_rfid_write + .text.rc522_regRead8 + 0x08000424 0x6c ./Core/Src/RFID.o + 0x08000424 rc522_regRead8 + .text.rc522_regWrite8 + 0x08000490 0x54 ./Core/Src/RFID.o + 0x08000490 rc522_regWrite8 + .text.rc522_setBit + 0x080004e4 0x3c ./Core/Src/RFID.o + 0x080004e4 rc522_setBit + .text.rc522_clearBit + 0x08000520 0x44 ./Core/Src/RFID.o + 0x08000520 rc522_clearBit + .text.rc522_reset + 0x08000564 0x12 ./Core/Src/RFID.o + 0x08000564 rc522_reset + .text.rc522_antennaON + 0x08000576 0x2c ./Core/Src/RFID.o + 0x08000576 rc522_antennaON + .text.rc522_checkCard + 0x080005a2 0x48 ./Core/Src/RFID.o + 0x080005a2 rc522_checkCard + .text.rc522_request + 0x080005ea 0x6c ./Core/Src/RFID.o + 0x080005ea rc522_request + *fill* 0x08000656 0x2 + .text.rc522_toCard + 0x08000658 0x2ac ./Core/Src/RFID.o + 0x08000658 rc522_toCard + .text.rc522_antiColl + 0x08000904 0xaa ./Core/Src/RFID.o + 0x08000904 rc522_antiColl + .text.rc522_halt + 0x080009ae 0x3a ./Core/Src/RFID.o + 0x080009ae rc522_halt + .text.rc522_calculateCRC + 0x080009e8 0xb8 ./Core/Src/RFID.o + 0x080009e8 rc522_calculateCRC + .text.rc522_init + 0x08000aa0 0x60 ./Core/Src/RFID.o + 0x08000aa0 rc522_init + .text.main 0x08000b00 0x78 ./Core/Src/main.o + 0x08000b00 main .text.SystemClock_Config - 0x080004d4 0x84 ./Core/Src/main.o - 0x080004d4 SystemClock_Config + 0x08000b78 0x84 ./Core/Src/main.o + 0x08000b78 SystemClock_Config .text.MX_I2C1_Init - 0x08000558 0x80 ./Core/Src/main.o + 0x08000bfc 0x80 ./Core/Src/main.o .text.MX_SPI1_Init - 0x080005d8 0x7c ./Core/Src/main.o + 0x08000c7c 0x7c ./Core/Src/main.o .text.MX_USART2_UART_Init - 0x08000654 0x9c ./Core/Src/main.o + 0x08000cf8 0x9c ./Core/Src/main.o .text.MX_GPIO_Init - 0x080006f0 0x264 ./Core/Src/main.o + 0x08000d94 0x298 ./Core/Src/main.o .text.__io_putchar - 0x08000954 0x28 ./Core/Src/main.o - 0x08000954 __io_putchar + 0x0800102c 0x28 ./Core/Src/main.o + 0x0800102c __io_putchar .text.HAL_I2C_SlaveRxCpltCallback - 0x0800097c 0x20 ./Core/Src/main.o - 0x0800097c HAL_I2C_SlaveRxCpltCallback + 0x08001054 0x20 ./Core/Src/main.o + 0x08001054 HAL_I2C_SlaveRxCpltCallback .text.init_keypad - 0x0800099c 0x44 ./Core/Src/main.o - 0x0800099c init_keypad + 0x08001074 0x44 ./Core/Src/main.o + 0x08001074 init_keypad .text.init_buttons - 0x080009e0 0x3c ./Core/Src/main.o - 0x080009e0 init_buttons - .text.scan_keypad - 0x08000a1c 0x318 ./Core/Src/main.o - 0x08000a1c scan_keypad - .text.scan_buttons - 0x08000d34 0x280 ./Core/Src/main.o - 0x08000d34 scan_buttons + 0x080010b8 0x3c ./Core/Src/main.o + 0x080010b8 init_buttons .text.Error_Handler - 0x08000fb4 0xc ./Core/Src/main.o - 0x08000fb4 Error_Handler + 0x080010f4 0xc ./Core/Src/main.o + 0x080010f4 Error_Handler .text.HAL_MspInit - 0x08000fc0 0x50 ./Core/Src/stm32g0xx_hal_msp.o - 0x08000fc0 HAL_MspInit + 0x08001100 0x50 ./Core/Src/stm32g0xx_hal_msp.o + 0x08001100 HAL_MspInit .text.HAL_I2C_MspInit - 0x08001010 0xd4 ./Core/Src/stm32g0xx_hal_msp.o - 0x08001010 HAL_I2C_MspInit + 0x08001150 0xd4 ./Core/Src/stm32g0xx_hal_msp.o + 0x08001150 HAL_I2C_MspInit .text.HAL_SPI_MspInit - 0x080010e4 0x94 ./Core/Src/stm32g0xx_hal_msp.o - 0x080010e4 HAL_SPI_MspInit + 0x08001224 0x94 ./Core/Src/stm32g0xx_hal_msp.o + 0x08001224 HAL_SPI_MspInit .text.HAL_UART_MspInit - 0x08001178 0xc0 ./Core/Src/stm32g0xx_hal_msp.o - 0x08001178 HAL_UART_MspInit + 0x080012b8 0xc0 ./Core/Src/stm32g0xx_hal_msp.o + 0x080012b8 HAL_UART_MspInit .text.NMI_Handler - 0x08001238 0x8 ./Core/Src/stm32g0xx_it.o - 0x08001238 NMI_Handler + 0x08001378 0x8 ./Core/Src/stm32g0xx_it.o + 0x08001378 NMI_Handler .text.HardFault_Handler - 0x08001240 0x8 ./Core/Src/stm32g0xx_it.o - 0x08001240 HardFault_Handler + 0x08001380 0x8 ./Core/Src/stm32g0xx_it.o + 0x08001380 HardFault_Handler .text.SVC_Handler - 0x08001248 0xa ./Core/Src/stm32g0xx_it.o - 0x08001248 SVC_Handler + 0x08001388 0xa ./Core/Src/stm32g0xx_it.o + 0x08001388 SVC_Handler .text.PendSV_Handler - 0x08001252 0xa ./Core/Src/stm32g0xx_it.o - 0x08001252 PendSV_Handler + 0x08001392 0xa ./Core/Src/stm32g0xx_it.o + 0x08001392 PendSV_Handler .text.SysTick_Handler - 0x0800125c 0xe ./Core/Src/stm32g0xx_it.o - 0x0800125c SysTick_Handler - *fill* 0x0800126a 0x2 + 0x0800139c 0xe ./Core/Src/stm32g0xx_it.o + 0x0800139c SysTick_Handler + *fill* 0x080013aa 0x2 .text.I2C1_IRQHandler - 0x0800126c 0x30 ./Core/Src/stm32g0xx_it.o - 0x0800126c I2C1_IRQHandler - .text._read 0x0800129c 0x3a ./Core/Src/syscalls.o - 0x0800129c _read - .text._write 0x080012d6 0x38 ./Core/Src/syscalls.o - 0x080012d6 _write - .text._close 0x0800130e 0x14 ./Core/Src/syscalls.o - 0x0800130e _close - .text._fstat 0x08001322 0x1c ./Core/Src/syscalls.o - 0x08001322 _fstat - .text._isatty 0x0800133e 0x12 ./Core/Src/syscalls.o - 0x0800133e _isatty - .text._lseek 0x08001350 0x16 ./Core/Src/syscalls.o - 0x08001350 _lseek - *fill* 0x08001366 0x2 - .text._sbrk 0x08001368 0x6c ./Core/Src/sysmem.o - 0x08001368 _sbrk + 0x080013ac 0x30 ./Core/Src/stm32g0xx_it.o + 0x080013ac I2C1_IRQHandler + .text._read 0x080013dc 0x3a ./Core/Src/syscalls.o + 0x080013dc _read + .text._write 0x08001416 0x38 ./Core/Src/syscalls.o + 0x08001416 _write + .text._close 0x0800144e 0x14 ./Core/Src/syscalls.o + 0x0800144e _close + .text._fstat 0x08001462 0x1c ./Core/Src/syscalls.o + 0x08001462 _fstat + .text._isatty 0x0800147e 0x12 ./Core/Src/syscalls.o + 0x0800147e _isatty + .text._lseek 0x08001490 0x16 ./Core/Src/syscalls.o + 0x08001490 _lseek + *fill* 0x080014a6 0x2 + .text._sbrk 0x080014a8 0x6c ./Core/Src/sysmem.o + 0x080014a8 _sbrk .text.SystemInit - 0x080013d4 0xa ./Core/Src/system_stm32g0xx.o - 0x080013d4 SystemInit - *fill* 0x080013de 0x2 + 0x08001514 0xa ./Core/Src/system_stm32g0xx.o + 0x08001514 SystemInit + *fill* 0x0800151e 0x2 .text.Reset_Handler - 0x080013e0 0x50 ./Core/Startup/startup_stm32g070cbtx.o - 0x080013e0 Reset_Handler + 0x08001520 0x50 ./Core/Startup/startup_stm32g070cbtx.o + 0x08001520 Reset_Handler .text.Default_Handler - 0x08001430 0x2 ./Core/Startup/startup_stm32g070cbtx.o - 0x08001430 TIM1_CC_IRQHandler - 0x08001430 TIM6_IRQHandler - 0x08001430 RTC_TAMP_IRQHandler - 0x08001430 SPI1_IRQHandler - 0x08001430 USART3_4_IRQHandler - 0x08001430 EXTI2_3_IRQHandler - 0x08001430 ADC1_IRQHandler - 0x08001430 I2C2_IRQHandler - 0x08001430 TIM17_IRQHandler - 0x08001430 TIM16_IRQHandler - 0x08001430 TIM3_IRQHandler - 0x08001430 EXTI4_15_IRQHandler - 0x08001430 RCC_IRQHandler - 0x08001430 DMA1_Channel1_IRQHandler - 0x08001430 Default_Handler - 0x08001430 TIM14_IRQHandler - 0x08001430 TIM7_IRQHandler - 0x08001430 TIM15_IRQHandler - 0x08001430 EXTI0_1_IRQHandler - 0x08001430 SPI2_IRQHandler - 0x08001430 WWDG_IRQHandler - 0x08001430 DMA1_Ch4_7_DMAMUX1_OVR_IRQHandler - 0x08001430 DMA1_Channel2_3_IRQHandler - 0x08001430 USART2_IRQHandler - 0x08001430 FLASH_IRQHandler - 0x08001430 USART1_IRQHandler - 0x08001430 TIM1_BRK_UP_TRG_COM_IRQHandler - *fill* 0x08001432 0x2 + 0x08001570 0x2 ./Core/Startup/startup_stm32g070cbtx.o + 0x08001570 TIM1_CC_IRQHandler + 0x08001570 TIM6_IRQHandler + 0x08001570 RTC_TAMP_IRQHandler + 0x08001570 SPI1_IRQHandler + 0x08001570 USART3_4_IRQHandler + 0x08001570 EXTI2_3_IRQHandler + 0x08001570 ADC1_IRQHandler + 0x08001570 I2C2_IRQHandler + 0x08001570 TIM17_IRQHandler + 0x08001570 TIM16_IRQHandler + 0x08001570 TIM3_IRQHandler + 0x08001570 EXTI4_15_IRQHandler + 0x08001570 RCC_IRQHandler + 0x08001570 DMA1_Channel1_IRQHandler + 0x08001570 Default_Handler + 0x08001570 TIM14_IRQHandler + 0x08001570 TIM7_IRQHandler + 0x08001570 TIM15_IRQHandler + 0x08001570 EXTI0_1_IRQHandler + 0x08001570 SPI2_IRQHandler + 0x08001570 WWDG_IRQHandler + 0x08001570 DMA1_Ch4_7_DMAMUX1_OVR_IRQHandler + 0x08001570 DMA1_Channel2_3_IRQHandler + 0x08001570 USART2_IRQHandler + 0x08001570 FLASH_IRQHandler + 0x08001570 USART1_IRQHandler + 0x08001570 TIM1_BRK_UP_TRG_COM_IRQHandler + *fill* 0x08001572 0x2 .text.HAL_Init - 0x08001434 0x40 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o - 0x08001434 HAL_Init + 0x08001574 0x40 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o + 0x08001574 HAL_Init .text.HAL_InitTick - 0x08001474 0x94 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o - 0x08001474 HAL_InitTick + 0x080015b4 0x94 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o + 0x080015b4 HAL_InitTick .text.HAL_IncTick - 0x08001508 0x24 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o - 0x08001508 HAL_IncTick + 0x08001648 0x24 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o + 0x08001648 HAL_IncTick .text.HAL_GetTick - 0x0800152c 0x14 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o - 0x0800152c HAL_GetTick + 0x0800166c 0x14 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o + 0x0800166c HAL_GetTick .text.HAL_Delay - 0x08001540 0x48 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o - 0x08001540 HAL_Delay + 0x08001680 0x48 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o + 0x08001680 HAL_Delay .text.HAL_SYSCFG_StrobeDBattpinsConfig - 0x08001588 0x2c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o - 0x08001588 HAL_SYSCFG_StrobeDBattpinsConfig + 0x080016c8 0x2c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o + 0x080016c8 HAL_SYSCFG_StrobeDBattpinsConfig .text.__NVIC_EnableIRQ - 0x080015b4 0x34 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o + 0x080016f4 0x34 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o .text.__NVIC_SetPriority - 0x080015e8 0xdc ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o + 0x08001728 0xdc ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o .text.SysTick_Config - 0x080016c4 0x48 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o + 0x08001804 0x48 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o .text.HAL_NVIC_SetPriority - 0x0800170c 0x2a ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o - 0x0800170c HAL_NVIC_SetPriority + 0x0800184c 0x2a ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o + 0x0800184c HAL_NVIC_SetPriority .text.HAL_NVIC_EnableIRQ - 0x08001736 0x20 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o - 0x08001736 HAL_NVIC_EnableIRQ + 0x08001876 0x20 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o + 0x08001876 HAL_NVIC_EnableIRQ .text.HAL_SYSTICK_Config - 0x08001756 0x1a ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o - 0x08001756 HAL_SYSTICK_Config + 0x08001896 0x1a ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o + 0x08001896 HAL_SYSTICK_Config .text.HAL_DMA_Abort_IT - 0x08001770 0xd4 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_dma.o - 0x08001770 HAL_DMA_Abort_IT + 0x080018b0 0xd4 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_dma.o + 0x080018b0 HAL_DMA_Abort_IT .text.HAL_DMA_GetState - 0x08001844 0x18 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_dma.o - 0x08001844 HAL_DMA_GetState + 0x08001984 0x18 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_dma.o + 0x08001984 HAL_DMA_GetState .text.HAL_GPIO_Init - 0x0800185c 0x2c8 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_gpio.o - 0x0800185c HAL_GPIO_Init - .text.HAL_GPIO_ReadPin - 0x08001b24 0x3a ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_gpio.o - 0x08001b24 HAL_GPIO_ReadPin + 0x0800199c 0x2c8 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_gpio.o + 0x0800199c HAL_GPIO_Init .text.HAL_GPIO_WritePin - 0x08001b5e 0x3a ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_gpio.o - 0x08001b5e HAL_GPIO_WritePin + 0x08001c64 0x3a ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_gpio.o + 0x08001c64 HAL_GPIO_WritePin + *fill* 0x08001c9e 0x2 .text.HAL_I2C_Init - 0x08001b98 0x14c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o - 0x08001b98 HAL_I2C_Init - .text.HAL_I2C_Slave_Receive_IT - 0x08001ce4 0xac ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o - 0x08001ce4 HAL_I2C_Slave_Receive_IT + 0x08001ca0 0x14c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + 0x08001ca0 HAL_I2C_Init .text.HAL_I2C_EV_IRQHandler - 0x08001d90 0x34 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o - 0x08001d90 HAL_I2C_EV_IRQHandler + 0x08001dec 0x34 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + 0x08001dec HAL_I2C_EV_IRQHandler .text.HAL_I2C_ER_IRQHandler - 0x08001dc4 0xb2 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o - 0x08001dc4 HAL_I2C_ER_IRQHandler - .text.HAL_I2C_MasterTxCpltCallback - 0x08001e76 0x10 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o - 0x08001e76 HAL_I2C_MasterTxCpltCallback - .text.HAL_I2C_MasterRxCpltCallback - 0x08001e86 0x10 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o - 0x08001e86 HAL_I2C_MasterRxCpltCallback + 0x08001e20 0xb2 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + 0x08001e20 HAL_I2C_ER_IRQHandler .text.HAL_I2C_SlaveTxCpltCallback - 0x08001e96 0x10 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o - 0x08001e96 HAL_I2C_SlaveTxCpltCallback + 0x08001ed2 0x10 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + 0x08001ed2 HAL_I2C_SlaveTxCpltCallback .text.HAL_I2C_AddrCallback - 0x08001ea6 0x20 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o - 0x08001ea6 HAL_I2C_AddrCallback + 0x08001ee2 0x20 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + 0x08001ee2 HAL_I2C_AddrCallback .text.HAL_I2C_ListenCpltCallback - 0x08001ec6 0x10 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o - 0x08001ec6 HAL_I2C_ListenCpltCallback - .text.HAL_I2C_MemTxCpltCallback - 0x08001ed6 0x10 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o - 0x08001ed6 HAL_I2C_MemTxCpltCallback - .text.HAL_I2C_MemRxCpltCallback - 0x08001ee6 0x10 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o - 0x08001ee6 HAL_I2C_MemRxCpltCallback + 0x08001f02 0x10 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + 0x08001f02 HAL_I2C_ListenCpltCallback .text.HAL_I2C_ErrorCallback - 0x08001ef6 0x10 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o - 0x08001ef6 HAL_I2C_ErrorCallback + 0x08001f12 0x10 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + 0x08001f12 HAL_I2C_ErrorCallback .text.HAL_I2C_AbortCpltCallback - 0x08001f06 0x10 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o - 0x08001f06 HAL_I2C_AbortCpltCallback - *fill* 0x08001f16 0x2 + 0x08001f22 0x10 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + 0x08001f22 HAL_I2C_AbortCpltCallback + *fill* 0x08001f32 0x2 .text.I2C_Slave_ISR_IT - 0x08001f18 0x200 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o - .text.I2C_Master_ISR_DMA - 0x08002118 0x1f8 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o - .text.I2C_Mem_ISR_DMA - 0x08002310 0x258 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o - .text.I2C_Slave_ISR_DMA - 0x08002568 0x1d0 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + 0x08001f34 0x200 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o .text.I2C_ITAddrCplt - 0x08002738 0x148 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o - .text.I2C_ITMasterSeqCplt - 0x08002880 0x82 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o - *fill* 0x08002902 0x2 + 0x08002134 0x148 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o .text.I2C_ITSlaveSeqCplt - 0x08002904 0xc8 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o - .text.I2C_ITMasterCplt - 0x080029cc 0x19c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + 0x0800227c 0xc8 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o .text.I2C_ITSlaveCplt - 0x08002b68 0x310 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + 0x08002344 0x310 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o .text.I2C_ITListenCplt - 0x08002e78 0xb0 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + 0x08002654 0xb0 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o .text.I2C_ITError - 0x08002f28 0x204 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + 0x08002704 0x204 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o .text.I2C_TreatErrorCallback - 0x0800312c 0x52 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + 0x08002908 0x52 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o .text.I2C_Flush_TXDR - 0x0800317e 0x44 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + 0x0800295a 0x44 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o .text.I2C_DMAAbort - 0x080031c2 0x3e ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o - .text.I2C_TransferConfig - 0x08003200 0x74 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o - .text.I2C_Enable_IRQ - 0x08003274 0x114 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + 0x0800299e 0x3e ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o .text.I2C_Disable_IRQ - 0x08003388 0xc6 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o - *fill* 0x0800344e 0x2 + 0x080029dc 0xc6 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + *fill* 0x08002aa2 0x2 .text.HAL_I2CEx_ConfigAnalogFilter - 0x08003450 0x98 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c_ex.o - 0x08003450 HAL_I2CEx_ConfigAnalogFilter + 0x08002aa4 0x98 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c_ex.o + 0x08002aa4 HAL_I2CEx_ConfigAnalogFilter .text.HAL_I2CEx_ConfigDigitalFilter - 0x080034e8 0x98 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c_ex.o - 0x080034e8 HAL_I2CEx_ConfigDigitalFilter + 0x08002b3c 0x98 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c_ex.o + 0x08002b3c HAL_I2CEx_ConfigDigitalFilter .text.HAL_PWREx_ControlVoltageScaling - 0x08003580 0x80 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_pwr_ex.o - 0x08003580 HAL_PWREx_ControlVoltageScaling + 0x08002bd4 0x80 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_pwr_ex.o + 0x08002bd4 HAL_PWREx_ControlVoltageScaling .text.LL_RCC_GetAPB1Prescaler - 0x08003600 0x18 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o + 0x08002c54 0x18 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o .text.HAL_RCC_OscConfig - 0x08003618 0x620 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o - 0x08003618 HAL_RCC_OscConfig + 0x08002c6c 0x620 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o + 0x08002c6c HAL_RCC_OscConfig .text.HAL_RCC_ClockConfig - 0x08003c38 0x210 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o - 0x08003c38 HAL_RCC_ClockConfig + 0x0800328c 0x210 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o + 0x0800328c HAL_RCC_ClockConfig .text.HAL_RCC_GetSysClockFreq - 0x08003e48 0x104 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o - 0x08003e48 HAL_RCC_GetSysClockFreq + 0x0800349c 0x104 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o + 0x0800349c HAL_RCC_GetSysClockFreq .text.HAL_RCC_GetHCLKFreq - 0x08003f4c 0x14 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o - 0x08003f4c HAL_RCC_GetHCLKFreq + 0x080035a0 0x14 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o + 0x080035a0 HAL_RCC_GetHCLKFreq .text.HAL_RCC_GetPCLK1Freq - 0x08003f60 0x2c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o - 0x08003f60 HAL_RCC_GetPCLK1Freq + 0x080035b4 0x2c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o + 0x080035b4 HAL_RCC_GetPCLK1Freq .text.HAL_RCCEx_PeriphCLKConfig - 0x08003f8c 0x268 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc_ex.o - 0x08003f8c HAL_RCCEx_PeriphCLKConfig + 0x080035e0 0x268 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc_ex.o + 0x080035e0 HAL_RCCEx_PeriphCLKConfig .text.HAL_SPI_Init - 0x080041f4 0x170 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_spi.o - 0x080041f4 HAL_SPI_Init + 0x08003848 0x170 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_spi.o + 0x08003848 HAL_SPI_Init + .text.HAL_SPI_Transmit + 0x080039b8 0x2be ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_spi.o + 0x080039b8 HAL_SPI_Transmit + *fill* 0x08003c76 0x2 + .text.HAL_SPI_Receive + 0x08003c78 0x2a4 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_spi.o + 0x08003c78 HAL_SPI_Receive + .text.HAL_SPI_TransmitReceive + 0x08003f1c 0x3c4 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_spi.o + 0x08003f1c HAL_SPI_TransmitReceive + .text.SPI_WaitFlagStateUntilTimeout + 0x080042e0 0x11c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_spi.o + .text.SPI_WaitFifoStateUntilTimeout + 0x080043fc 0x144 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_spi.o + .text.SPI_EndRxTransaction + 0x08004540 0xbc ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_spi.o + .text.SPI_EndRxTxTransaction + 0x080045fc 0x8c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_spi.o .text.HAL_UART_Init - 0x08004364 0xac ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart.o - 0x08004364 HAL_UART_Init + 0x08004688 0xac ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart.o + 0x08004688 HAL_UART_Init .text.HAL_UART_Transmit - 0x08004410 0x148 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart.o - 0x08004410 HAL_UART_Transmit + 0x08004734 0x148 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart.o + 0x08004734 HAL_UART_Transmit .text.UART_SetConfig - 0x08004558 0x348 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart.o - 0x08004558 UART_SetConfig + 0x0800487c 0x348 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart.o + 0x0800487c UART_SetConfig .text.UART_AdvFeatureConfig - 0x080048a0 0x168 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart.o - 0x080048a0 UART_AdvFeatureConfig + 0x08004bc4 0x168 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart.o + 0x08004bc4 UART_AdvFeatureConfig .text.UART_CheckIdleState - 0x08004a08 0x154 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart.o - 0x08004a08 UART_CheckIdleState + 0x08004d2c 0x154 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart.o + 0x08004d2c UART_CheckIdleState .text.UART_WaitOnFlagUntilTimeout - 0x08004b5c 0xde ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart.o - 0x08004b5c UART_WaitOnFlagUntilTimeout - *fill* 0x08004c3a 0x2 + 0x08004e80 0xde ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart.o + 0x08004e80 UART_WaitOnFlagUntilTimeout + *fill* 0x08004f5e 0x2 .text.UART_EndRxTransfer - 0x08004c3c 0xcc ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart.o + 0x08004f60 0xcc ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart.o .text.HAL_UARTEx_DisableFifoMode - 0x08004d08 0x74 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart_ex.o - 0x08004d08 HAL_UARTEx_DisableFifoMode + 0x0800502c 0x74 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart_ex.o + 0x0800502c HAL_UARTEx_DisableFifoMode .text.HAL_UARTEx_SetTxFifoThreshold - 0x08004d7c 0x7e ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart_ex.o - 0x08004d7c HAL_UARTEx_SetTxFifoThreshold - *fill* 0x08004dfa 0x2 + 0x080050a0 0x7e ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart_ex.o + 0x080050a0 HAL_UARTEx_SetTxFifoThreshold + *fill* 0x0800511e 0x2 .text.HAL_UARTEx_SetRxFifoThreshold - 0x08004dfc 0x84 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart_ex.o - 0x08004dfc HAL_UARTEx_SetRxFifoThreshold + 0x08005120 0x84 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart_ex.o + 0x08005120 HAL_UARTEx_SetRxFifoThreshold .text.UARTEx_SetNbDataToProcess - 0x08004e80 0xbc ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart_ex.o - .text.std 0x08004f3c 0x6c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-findfp.o) + 0x080051a4 0xbc ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart_ex.o + .text.std 0x08005260 0x6c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-findfp.o) .text.stdio_exit_handler - 0x08004fa8 0x1c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-findfp.o) + 0x080052cc 0x1c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-findfp.o) .text.cleanup_stdio - 0x08004fc4 0x3c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-findfp.o) + 0x080052e8 0x3c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-findfp.o) .text.global_stdio_init.part.0 - 0x08005000 0x3c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-findfp.o) + 0x08005324 0x3c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-findfp.o) .text.__sfp_lock_acquire - 0x0800503c 0x10 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-findfp.o) - 0x0800503c __sfp_lock_acquire + 0x08005360 0x10 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-findfp.o) + 0x08005360 __sfp_lock_acquire .text.__sfp_lock_release - 0x0800504c 0x10 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-findfp.o) - 0x0800504c __sfp_lock_release - .text.__sinit 0x0800505c 0x30 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-findfp.o) - 0x0800505c __sinit + 0x08005370 0x10 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-findfp.o) + 0x08005370 __sfp_lock_release + .text.__sinit 0x08005380 0x30 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-findfp.o) + 0x08005380 __sinit .text._fwalk_sglue - 0x0800508c 0x38 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-fwalk.o) - 0x0800508c _fwalk_sglue - .text.printf 0x080050c4 0x20 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-printf.o) - 0x080050c4 iprintf - 0x080050c4 printf - .text._puts_r 0x080050e4 0xac C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-puts.o) - 0x080050e4 _puts_r - .text.puts 0x08005190 0x14 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-puts.o) - 0x08005190 puts - .text.__sread 0x080051a4 0x28 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-stdio.o) - 0x080051a4 __sread + 0x080053b0 0x38 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-fwalk.o) + 0x080053b0 _fwalk_sglue + .text.printf 0x080053e8 0x20 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-printf.o) + 0x080053e8 iprintf + 0x080053e8 printf + .text._puts_r 0x08005408 0xac C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-puts.o) + 0x08005408 _puts_r + .text.puts 0x080054b4 0x14 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-puts.o) + 0x080054b4 puts + .text.__sread 0x080054c8 0x28 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-stdio.o) + 0x080054c8 __sread .text.__swrite - 0x080051cc 0x38 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-stdio.o) - 0x080051cc __swrite - .text.__sseek 0x08005204 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-stdio.o) - 0x08005204 __sseek + 0x080054f0 0x38 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-stdio.o) + 0x080054f0 __swrite + .text.__sseek 0x08005528 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-stdio.o) + 0x08005528 __sseek .text.__sclose - 0x08005230 0xc C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-stdio.o) - 0x08005230 __sclose + 0x08005554 0xc C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-stdio.o) + 0x08005554 __sclose .text.__swbuf_r - 0x0800523c 0x84 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-wbuf.o) - 0x0800523c __swbuf_r + 0x08005560 0x84 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-wbuf.o) + 0x08005560 __swbuf_r .text.__swsetup_r - 0x080052c0 0xbc C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-wsetup.o) - 0x080052c0 __swsetup_r - .text.memset 0x0800537c 0x10 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-memset.o) - 0x0800537c memset + 0x080055e4 0xbc C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-wsetup.o) + 0x080055e4 __swsetup_r + .text.memset 0x080056a0 0x10 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-memset.o) + 0x080056a0 memset .text._close_r - 0x0800538c 0x24 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-closer.o) - 0x0800538c _close_r + 0x080056b0 0x24 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-closer.o) + 0x080056b0 _close_r .text._lseek_r - 0x080053b0 0x28 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-lseekr.o) - 0x080053b0 _lseek_r - .text._read_r 0x080053d8 0x28 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-readr.o) - 0x080053d8 _read_r + 0x080056d4 0x28 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-lseekr.o) + 0x080056d4 _lseek_r + .text._read_r 0x080056fc 0x28 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-readr.o) + 0x080056fc _read_r .text._write_r - 0x08005400 0x28 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-writer.o) - 0x08005400 _write_r - .text.__errno 0x08005428 0xc C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-errno.o) - 0x08005428 __errno + 0x08005724 0x28 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-writer.o) + 0x08005724 _write_r + .text.__errno 0x0800574c 0xc C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-errno.o) + 0x0800574c __errno .text.__libc_init_array - 0x08005434 0x48 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-init.o) - 0x08005434 __libc_init_array + 0x08005758 0x48 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-init.o) + 0x08005758 __libc_init_array .text.__retarget_lock_init_recursive - 0x0800547c 0x2 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-lock.o) - 0x0800547c __retarget_lock_init_recursive + 0x080057a0 0x2 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-lock.o) + 0x080057a0 __retarget_lock_init_recursive .text.__retarget_lock_acquire_recursive - 0x0800547e 0x2 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-lock.o) - 0x0800547e __retarget_lock_acquire_recursive + 0x080057a2 0x2 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-lock.o) + 0x080057a2 __retarget_lock_acquire_recursive .text.__retarget_lock_release_recursive - 0x08005480 0x2 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-lock.o) - 0x08005480 __retarget_lock_release_recursive - *fill* 0x08005482 0x2 - .text._free_r 0x08005484 0x94 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-freer.o) - 0x08005484 _free_r + 0x080057a4 0x2 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-lock.o) + 0x080057a4 __retarget_lock_release_recursive + *fill* 0x080057a6 0x2 + .text._free_r 0x080057a8 0x94 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-freer.o) + 0x080057a8 _free_r .text.sbrk_aligned - 0x08005518 0x44 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-mallocr.o) + 0x0800583c 0x44 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-mallocr.o) .text._malloc_r - 0x0800555c 0x100 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-mallocr.o) - 0x0800555c _malloc_r + 0x08005880 0x100 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-mallocr.o) + 0x08005880 _malloc_r .text.__malloc_lock - 0x0800565c 0x10 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-mlock.o) - 0x0800565c __malloc_lock + 0x08005980 0x10 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-mlock.o) + 0x08005980 __malloc_lock .text.__malloc_unlock - 0x0800566c 0x10 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-mlock.o) - 0x0800566c __malloc_unlock + 0x08005990 0x10 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-mlock.o) + 0x08005990 __malloc_unlock .text.__sfputc_r - 0x0800567c 0x2a C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-nano-vfprintf.o) + 0x080059a0 0x2a C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-nano-vfprintf.o) .text.__sfputs_r - 0x080056a6 0x24 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-nano-vfprintf.o) - 0x080056a6 __sfputs_r - *fill* 0x080056ca 0x2 + 0x080059ca 0x24 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-nano-vfprintf.o) + 0x080059ca __sfputs_r + *fill* 0x080059ee 0x2 .text._vfprintf_r - 0x080056cc 0x238 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-nano-vfprintf.o) - 0x080056cc _vfprintf_r - 0x080056cc _vfiprintf_r + 0x080059f0 0x238 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-nano-vfprintf.o) + 0x080059f0 _vfprintf_r + 0x080059f0 _vfiprintf_r .text._printf_common - 0x08005904 0xde C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-nano-vfprintf_i.o) - 0x08005904 _printf_common - *fill* 0x080059e2 0x2 + 0x08005c28 0xde C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-nano-vfprintf_i.o) + 0x08005c28 _printf_common + *fill* 0x08005d06 0x2 .text._printf_i - 0x080059e4 0x21c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-nano-vfprintf_i.o) - 0x080059e4 _printf_i + 0x08005d08 0x21c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-nano-vfprintf_i.o) + 0x08005d08 _printf_i .text.__sflush_r - 0x08005c00 0x10c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-fflush.o) - 0x08005c00 __sflush_r + 0x08005f24 0x10c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-fflush.o) + 0x08005f24 __sflush_r .text._fflush_r - 0x08005d0c 0x56 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-fflush.o) - 0x08005d0c _fflush_r - *fill* 0x08005d62 0x2 + 0x08006030 0x56 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-fflush.o) + 0x08006030 _fflush_r + *fill* 0x08006086 0x2 .text.__swhatbuf_r - 0x08005d64 0x54 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-makebuf.o) - 0x08005d64 __swhatbuf_r + 0x08006088 0x54 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-makebuf.o) + 0x08006088 __swhatbuf_r .text.__smakebuf_r - 0x08005db8 0x82 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-makebuf.o) - 0x08005db8 __smakebuf_r - *fill* 0x08005e3a 0x2 + 0x080060dc 0x82 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-makebuf.o) + 0x080060dc __smakebuf_r + *fill* 0x0800615e 0x2 .text._fstat_r - 0x08005e3c 0x24 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-fstatr.o) - 0x08005e3c _fstat_r + 0x08006160 0x24 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-fstatr.o) + 0x08006160 _fstat_r .text._isatty_r - 0x08005e60 0x24 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-isattyr.o) - 0x08005e60 _isatty_r - .text._sbrk_r 0x08005e84 0x24 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-sbrkr.o) - 0x08005e84 _sbrk_r - .text.memchr 0x08005ea8 0x16 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-memchr-stub.o) - 0x08005ea8 memchr + 0x08006184 0x24 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-isattyr.o) + 0x08006184 _isatty_r + .text._sbrk_r 0x080061a8 0x24 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-sbrkr.o) + 0x080061a8 _sbrk_r + .text.memchr 0x080061cc 0x16 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-memchr-stub.o) + 0x080061cc memchr *(.glue_7) - .glue_7 0x08005ebe 0x0 linker stubs + .glue_7 0x080061e2 0x0 linker stubs *(.glue_7t) - .glue_7t 0x08005ebe 0x0 linker stubs + .glue_7t 0x080061e2 0x0 linker stubs *(.eh_frame) - *fill* 0x08005ebe 0x2 - .eh_frame 0x08005ec0 0x0 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v6-m/nofp/crtbegin.o + *fill* 0x080061e2 0x2 + .eh_frame 0x080061e4 0x0 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v6-m/nofp/crtbegin.o *(.init) - .init 0x08005ec0 0x4 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v6-m/nofp/crti.o - 0x08005ec0 _init - .init 0x08005ec4 0x8 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v6-m/nofp/crtn.o + .init 0x080061e4 0x4 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v6-m/nofp/crti.o + 0x080061e4 _init + .init 0x080061e8 0x8 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v6-m/nofp/crtn.o *(.fini) - .fini 0x08005ecc 0x4 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v6-m/nofp/crti.o - 0x08005ecc _fini - .fini 0x08005ed0 0x8 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v6-m/nofp/crtn.o - 0x08005ed8 . = ALIGN (0x4) - 0x08005ed8 _etext = . + .fini 0x080061f0 0x4 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v6-m/nofp/crti.o + 0x080061f0 _fini + .fini 0x080061f4 0x8 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v6-m/nofp/crtn.o + 0x080061fc . = ALIGN (0x4) + 0x080061fc _etext = . -.vfp11_veneer 0x08005ed8 0x0 - .vfp11_veneer 0x08005ed8 0x0 linker stubs +.vfp11_veneer 0x080061fc 0x0 + .vfp11_veneer 0x080061fc 0x0 linker stubs -.v4_bx 0x08005ed8 0x0 - .v4_bx 0x08005ed8 0x0 linker stubs +.v4_bx 0x080061fc 0x0 + .v4_bx 0x080061fc 0x0 linker stubs -.iplt 0x08005ed8 0x0 - .iplt 0x08005ed8 0x0 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v6-m/nofp/crtbegin.o +.iplt 0x080061fc 0x0 + .iplt 0x080061fc 0x0 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v6-m/nofp/crtbegin.o -.rodata 0x08005ed8 0x104 - 0x08005ed8 . = ALIGN (0x4) +.rodata 0x080061fc 0x100 + 0x080061fc . = ALIGN (0x4) *(.rodata) - .rodata 0x08005ed8 0x46 ./Core/Src/main.o + .rodata 0x080061fc 0x13 ./Core/Src/RFID.o + *fill* 0x0800620f 0x1 + .rodata 0x08006210 0x2e ./Core/Src/main.o *(.rodata*) - *fill* 0x08005f1e 0x2 + *fill* 0x0800623e 0x2 .rodata.AHBPrescTable - 0x08005f20 0x40 ./Core/Src/system_stm32g0xx.o - 0x08005f20 AHBPrescTable + 0x08006240 0x40 ./Core/Src/system_stm32g0xx.o + 0x08006240 AHBPrescTable .rodata.APBPrescTable - 0x08005f60 0x20 ./Core/Src/system_stm32g0xx.o - 0x08005f60 APBPrescTable + 0x08006280 0x20 ./Core/Src/system_stm32g0xx.o + 0x08006280 APBPrescTable .rodata.UARTPrescTable - 0x08005f80 0x18 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart.o - 0x08005f80 UARTPrescTable + 0x080062a0 0x18 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart.o + 0x080062a0 UARTPrescTable .rodata.numerator.1 - 0x08005f98 0x8 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart_ex.o + 0x080062b8 0x8 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart_ex.o .rodata.denominator.0 - 0x08005fa0 0x8 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart_ex.o + 0x080062c0 0x8 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart_ex.o .rodata._vfprintf_r.str1.1 - 0x08005fa8 0x11 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-nano-vfprintf.o) + 0x080062c8 0x11 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-nano-vfprintf.o) .rodata._printf_i.str1.1 - 0x08005fb9 0x22 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-nano-vfprintf_i.o) - 0x08005fdc . = ALIGN (0x4) - *fill* 0x08005fdb 0x1 + 0x080062d9 0x22 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-nano-vfprintf_i.o) + 0x080062fc . = ALIGN (0x4) + *fill* 0x080062fb 0x1 -.ARM.extab 0x08005fdc 0x0 - 0x08005fdc . = ALIGN (0x4) +.ARM.extab 0x080062fc 0x0 + 0x080062fc . = ALIGN (0x4) *(.ARM.extab* .gnu.linkonce.armextab.*) - 0x08005fdc . = ALIGN (0x4) + 0x080062fc . = ALIGN (0x4) -.ARM 0x08005fdc 0x0 - 0x08005fdc . = ALIGN (0x4) - 0x08005fdc __exidx_start = . +.ARM 0x080062fc 0x0 + 0x080062fc . = ALIGN (0x4) + 0x080062fc __exidx_start = . *(.ARM.exidx*) - 0x08005fdc __exidx_end = . - 0x08005fdc . = ALIGN (0x4) + 0x080062fc __exidx_end = . + 0x080062fc . = ALIGN (0x4) -.preinit_array 0x08005fdc 0x0 - 0x08005fdc . = ALIGN (0x4) - 0x08005fdc PROVIDE (__preinit_array_start = .) +.preinit_array 0x080062fc 0x0 + 0x080062fc . = ALIGN (0x4) + 0x080062fc PROVIDE (__preinit_array_start = .) *(.preinit_array*) - 0x08005fdc PROVIDE (__preinit_array_end = .) - 0x08005fdc . = ALIGN (0x4) + 0x080062fc PROVIDE (__preinit_array_end = .) + 0x080062fc . = ALIGN (0x4) -.init_array 0x08005fdc 0x4 - 0x08005fdc . = ALIGN (0x4) - 0x08005fdc PROVIDE (__init_array_start = .) +.init_array 0x080062fc 0x4 + 0x080062fc . = ALIGN (0x4) + 0x080062fc PROVIDE (__init_array_start = .) *(SORT_BY_NAME(.init_array.*)) *(.init_array*) - .init_array 0x08005fdc 0x4 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v6-m/nofp/crtbegin.o - 0x08005fe0 PROVIDE (__init_array_end = .) - 0x08005fe0 . = ALIGN (0x4) + .init_array 0x080062fc 0x4 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v6-m/nofp/crtbegin.o + 0x08006300 PROVIDE (__init_array_end = .) + 0x08006300 . = ALIGN (0x4) -.fini_array 0x08005fe0 0x4 - 0x08005fe0 . = ALIGN (0x4) +.fini_array 0x08006300 0x4 + 0x08006300 . = ALIGN (0x4) [!provide] PROVIDE (__fini_array_start = .) *(SORT_BY_NAME(.fini_array.*)) *(.fini_array*) - .fini_array 0x08005fe0 0x4 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v6-m/nofp/crtbegin.o + .fini_array 0x08006300 0x4 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v6-m/nofp/crtbegin.o [!provide] PROVIDE (__fini_array_end = .) - 0x08005fe4 . = ALIGN (0x4) - 0x08005fe4 _sidata = LOADADDR (.data) + 0x08006304 . = ALIGN (0x4) + 0x08006304 _sidata = LOADADDR (.data) -.rel.dyn 0x08005fe4 0x0 - .rel.iplt 0x08005fe4 0x0 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v6-m/nofp/crtbegin.o +.rel.dyn 0x08006304 0x0 + .rel.iplt 0x08006304 0x0 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v6-m/nofp/crtbegin.o -.data 0x20000000 0x68 load address 0x08005fe4 +.data 0x20000000 0x68 load address 0x08006304 0x20000000 . = ALIGN (0x4) 0x20000000 _sdata = . *(.data) @@ -4096,11 +4288,11 @@ LOAD C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.ext 0x20000068 . = ALIGN (0x4) 0x20000068 _edata = . -.igot.plt 0x20000068 0x0 load address 0x0800604c +.igot.plt 0x20000068 0x0 load address 0x0800636c .igot.plt 0x20000068 0x0 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v6-m/nofp/crtbegin.o 0x20000068 . = ALIGN (0x4) -.bss 0x20000068 0x2d0 load address 0x0800604c +.bss 0x20000068 0x2c0 load address 0x0800636c 0x20000068 _sbss = . 0x20000068 __bss_start__ = _sbss *(.bss) @@ -4112,62 +4304,48 @@ LOAD C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.ext 0x200000d8 hspi1 .bss.huart2 0x2000013c 0x94 ./Core/Src/main.o 0x2000013c huart2 - .bss.old_keypad_state - 0x200001d0 0x2 ./Core/Src/main.o - 0x200001d0 old_keypad_state - .bss.keypad_state - 0x200001d2 0x2 ./Core/Src/main.o - 0x200001d2 keypad_state - .bss.old_button_state - 0x200001d4 0x2 ./Core/Src/main.o - 0x200001d4 old_button_state - .bss.button_state - 0x200001d6 0x2 ./Core/Src/main.o - 0x200001d6 button_state - .bss.data 0x200001d8 0x8 ./Core/Src/main.o - 0x200001d8 data - .bss.recv_cnt 0x200001e0 0x2 ./Core/Src/main.o - 0x200001e0 recv_cnt - *fill* 0x200001e2 0x2 + .bss.recv_cnt 0x200001d0 0x2 ./Core/Src/main.o + 0x200001d0 recv_cnt + *fill* 0x200001d2 0x2 .bss.__sbrk_heap_end - 0x200001e4 0x4 ./Core/Src/sysmem.o - .bss.uwTick 0x200001e8 0x4 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o - 0x200001e8 uwTick - .bss.__sf 0x200001ec 0x138 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-findfp.o) - 0x200001ec __sf + 0x200001d4 0x4 ./Core/Src/sysmem.o + .bss.uwTick 0x200001d8 0x4 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o + 0x200001d8 uwTick + .bss.__sf 0x200001dc 0x138 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-findfp.o) + 0x200001dc __sf .bss.__stdio_exit_handler - 0x20000324 0x4 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-findfp.o) - 0x20000324 __stdio_exit_handler - .bss.errno 0x20000328 0x4 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-reent.o) - 0x20000328 errno + 0x20000314 0x4 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-findfp.o) + 0x20000314 __stdio_exit_handler + .bss.errno 0x20000318 0x4 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-reent.o) + 0x20000318 errno .bss.__lock___malloc_recursive_mutex - 0x2000032c 0x1 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-lock.o) - 0x2000032c __lock___malloc_recursive_mutex + 0x2000031c 0x1 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-lock.o) + 0x2000031c __lock___malloc_recursive_mutex .bss.__lock___sfp_recursive_mutex - 0x2000032d 0x1 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-lock.o) - 0x2000032d __lock___sfp_recursive_mutex - *fill* 0x2000032e 0x2 + 0x2000031d 0x1 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-lock.o) + 0x2000031d __lock___sfp_recursive_mutex + *fill* 0x2000031e 0x2 .bss.__malloc_sbrk_start - 0x20000330 0x4 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-mallocr.o) - 0x20000330 __malloc_sbrk_start + 0x20000320 0x4 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-mallocr.o) + 0x20000320 __malloc_sbrk_start .bss.__malloc_free_list - 0x20000334 0x4 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-mallocr.o) - 0x20000334 __malloc_free_list + 0x20000324 0x4 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-mallocr.o) + 0x20000324 __malloc_free_list *(COMMON) - 0x20000338 . = ALIGN (0x4) - 0x20000338 _ebss = . - 0x20000338 __bss_end__ = _ebss + 0x20000328 . = ALIGN (0x4) + 0x20000328 _ebss = . + 0x20000328 __bss_end__ = _ebss ._user_heap_stack - 0x20000338 0x600 load address 0x0800604c - 0x20000338 . = ALIGN (0x8) + 0x20000328 0x600 load address 0x0800636c + 0x20000328 . = ALIGN (0x8) [!provide] PROVIDE (end = .) - 0x20000338 PROVIDE (_end = .) - 0x20000538 . = (. + _Min_Heap_Size) - *fill* 0x20000338 0x200 - 0x20000938 . = (. + _Min_Stack_Size) - *fill* 0x20000538 0x400 - 0x20000938 . = ALIGN (0x8) + 0x20000328 PROVIDE (_end = .) + 0x20000528 . = (. + _Min_Heap_Size) + *fill* 0x20000328 0x200 + 0x20000928 . = (. + _Min_Stack_Size) + *fill* 0x20000528 0x400 + 0x20000928 . = ALIGN (0x8) /DISCARD/ libc.a(*) @@ -4182,414 +4360,429 @@ LOAD C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.ext .ARM.attributes 0x0000001e 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v6-m/nofp/crtbegin.o .ARM.attributes - 0x0000004a 0x2c ./Core/Src/main.o + 0x0000004a 0x2c ./Core/Src/RFID.o .ARM.attributes - 0x00000076 0x2c ./Core/Src/stm32g0xx_hal_msp.o + 0x00000076 0x2c ./Core/Src/main.o .ARM.attributes - 0x000000a2 0x2c ./Core/Src/stm32g0xx_it.o + 0x000000a2 0x2c ./Core/Src/stm32g0xx_hal_msp.o .ARM.attributes - 0x000000ce 0x2c ./Core/Src/syscalls.o + 0x000000ce 0x2c ./Core/Src/stm32g0xx_it.o .ARM.attributes - 0x000000fa 0x2c ./Core/Src/sysmem.o + 0x000000fa 0x2c ./Core/Src/syscalls.o .ARM.attributes - 0x00000126 0x2c ./Core/Src/system_stm32g0xx.o + 0x00000126 0x2c ./Core/Src/sysmem.o .ARM.attributes - 0x00000152 0x22 ./Core/Startup/startup_stm32g070cbtx.o + 0x00000152 0x2c ./Core/Src/system_stm32g0xx.o .ARM.attributes - 0x00000174 0x2c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o + 0x0000017e 0x22 ./Core/Startup/startup_stm32g070cbtx.o .ARM.attributes - 0x000001a0 0x2c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o + 0x000001a0 0x2c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o .ARM.attributes - 0x000001cc 0x2c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_dma.o + 0x000001cc 0x2c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o .ARM.attributes - 0x000001f8 0x2c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_gpio.o + 0x000001f8 0x2c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_dma.o .ARM.attributes - 0x00000224 0x2c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + 0x00000224 0x2c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_gpio.o .ARM.attributes - 0x00000250 0x2c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c_ex.o + 0x00000250 0x2c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o .ARM.attributes - 0x0000027c 0x2c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_pwr_ex.o + 0x0000027c 0x2c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c_ex.o .ARM.attributes - 0x000002a8 0x2c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o + 0x000002a8 0x2c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_pwr_ex.o .ARM.attributes - 0x000002d4 0x2c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc_ex.o + 0x000002d4 0x2c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o .ARM.attributes - 0x00000300 0x2c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_spi.o + 0x00000300 0x2c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc_ex.o .ARM.attributes - 0x0000032c 0x2c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart.o + 0x0000032c 0x2c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_spi.o .ARM.attributes - 0x00000358 0x2c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart_ex.o + 0x00000358 0x2c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart.o .ARM.attributes - 0x00000384 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-findfp.o) + 0x00000384 0x2c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart_ex.o .ARM.attributes - 0x000003b0 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-fwalk.o) + 0x000003b0 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-findfp.o) .ARM.attributes - 0x000003dc 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-printf.o) + 0x000003dc 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-fwalk.o) .ARM.attributes - 0x00000408 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-puts.o) + 0x00000408 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-printf.o) .ARM.attributes - 0x00000434 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-stdio.o) + 0x00000434 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-puts.o) .ARM.attributes - 0x00000460 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-wbuf.o) + 0x00000460 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-stdio.o) .ARM.attributes - 0x0000048c 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-wsetup.o) + 0x0000048c 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-wbuf.o) .ARM.attributes - 0x000004b8 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-memset.o) + 0x000004b8 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-wsetup.o) .ARM.attributes - 0x000004e4 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-closer.o) + 0x000004e4 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-memset.o) .ARM.attributes - 0x00000510 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-reent.o) + 0x00000510 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-closer.o) .ARM.attributes - 0x0000053c 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-impure.o) + 0x0000053c 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-reent.o) .ARM.attributes - 0x00000568 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-lseekr.o) + 0x00000568 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-impure.o) .ARM.attributes - 0x00000594 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-readr.o) + 0x00000594 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-lseekr.o) .ARM.attributes - 0x000005c0 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-writer.o) + 0x000005c0 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-readr.o) .ARM.attributes - 0x000005ec 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-errno.o) + 0x000005ec 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-writer.o) .ARM.attributes - 0x00000618 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-init.o) + 0x00000618 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-errno.o) .ARM.attributes - 0x00000644 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-lock.o) + 0x00000644 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-init.o) .ARM.attributes - 0x00000670 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-freer.o) + 0x00000670 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-lock.o) .ARM.attributes - 0x0000069c 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-mallocr.o) + 0x0000069c 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-freer.o) .ARM.attributes - 0x000006c8 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-mlock.o) + 0x000006c8 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-mallocr.o) .ARM.attributes - 0x000006f4 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-nano-vfprintf.o) + 0x000006f4 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-mlock.o) .ARM.attributes - 0x00000720 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-nano-vfprintf_i.o) + 0x00000720 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-nano-vfprintf.o) .ARM.attributes - 0x0000074c 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-fflush.o) + 0x0000074c 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-nano-vfprintf_i.o) .ARM.attributes - 0x00000778 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-makebuf.o) + 0x00000778 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-fflush.o) .ARM.attributes - 0x000007a4 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-fstatr.o) + 0x000007a4 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-makebuf.o) .ARM.attributes - 0x000007d0 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-isattyr.o) + 0x000007d0 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-fstatr.o) .ARM.attributes - 0x000007fc 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-sbrkr.o) + 0x000007fc 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-isattyr.o) .ARM.attributes - 0x00000828 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-memchr-stub.o) + 0x00000828 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-sbrkr.o) .ARM.attributes - 0x00000854 0x1e C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v6-m/nofp\libgcc.a(_thumb1_case_shi.o) + 0x00000854 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-memchr-stub.o) .ARM.attributes - 0x00000872 0x1e C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v6-m/nofp\libgcc.a(_udivsi3.o) + 0x00000880 0x1e C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v6-m/nofp\libgcc.a(_thumb1_case_shi.o) .ARM.attributes - 0x00000890 0x1e C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v6-m/nofp\libgcc.a(_divsi3.o) + 0x0000089e 0x1e C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v6-m/nofp\libgcc.a(_udivsi3.o) .ARM.attributes - 0x000008ae 0x1e C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v6-m/nofp\libgcc.a(_dvmd_tls.o) + 0x000008bc 0x1e C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v6-m/nofp\libgcc.a(_divsi3.o) .ARM.attributes - 0x000008cc 0x1e C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v6-m/nofp/crtn.o + 0x000008da 0x1e C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v6-m/nofp\libgcc.a(_dvmd_tls.o) + .ARM.attributes + 0x000008f8 0x1e C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v6-m/nofp/crtn.o OUTPUT(blk_box_bc.elf elf32-littlearm) LOAD linker stubs LOAD C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc.a LOAD C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libm.a LOAD C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v6-m/nofp\libgcc.a -.debug_info 0x00000000 0x10ce5 - .debug_info 0x00000000 0x15dc ./Core/Src/main.o - .debug_info 0x000015dc 0x136b ./Core/Src/stm32g0xx_hal_msp.o - .debug_info 0x00002947 0x76e ./Core/Src/stm32g0xx_it.o - .debug_info 0x000030b5 0x6a3 ./Core/Src/syscalls.o - .debug_info 0x00003758 0x168 ./Core/Src/sysmem.o - .debug_info 0x000038c0 0x316 ./Core/Src/system_stm32g0xx.o - .debug_info 0x00003bd6 0x30 ./Core/Startup/startup_stm32g070cbtx.o - .debug_info 0x00003c06 0x8ef ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o - .debug_info 0x000044f5 0x8c1 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o - .debug_info 0x00004db6 0x86b ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_dma.o - .debug_info 0x00005621 0x59d ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_gpio.o - .debug_info 0x00005bbe 0x21bc ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o - .debug_info 0x00007d7a 0x9d9 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c_ex.o - .debug_info 0x00008753 0x496 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_pwr_ex.o - .debug_info 0x00008be9 0xad4 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o - .debug_info 0x000096bd 0x737 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc_ex.o - .debug_info 0x00009df4 0x1720 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_spi.o - .debug_info 0x0000b514 0x483c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart.o - .debug_info 0x0000fd50 0xf95 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart_ex.o +.debug_info 0x00000000 0x11938 + .debug_info 0x00000000 0xc1e ./Core/Src/RFID.o + .debug_info 0x00000c1e 0x1611 ./Core/Src/main.o + .debug_info 0x0000222f 0x136b ./Core/Src/stm32g0xx_hal_msp.o + .debug_info 0x0000359a 0x76e ./Core/Src/stm32g0xx_it.o + .debug_info 0x00003d08 0x6a3 ./Core/Src/syscalls.o + .debug_info 0x000043ab 0x168 ./Core/Src/sysmem.o + .debug_info 0x00004513 0x316 ./Core/Src/system_stm32g0xx.o + .debug_info 0x00004829 0x30 ./Core/Startup/startup_stm32g070cbtx.o + .debug_info 0x00004859 0x8ef ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o + .debug_info 0x00005148 0x8c1 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o + .debug_info 0x00005a09 0x86b ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_dma.o + .debug_info 0x00006274 0x59d ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_gpio.o + .debug_info 0x00006811 0x21bc ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + .debug_info 0x000089cd 0x9d9 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c_ex.o + .debug_info 0x000093a6 0x496 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_pwr_ex.o + .debug_info 0x0000983c 0xad4 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o + .debug_info 0x0000a310 0x737 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc_ex.o + .debug_info 0x0000aa47 0x1720 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_spi.o + .debug_info 0x0000c167 0x483c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart.o + .debug_info 0x000109a3 0xf95 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart_ex.o -.debug_abbrev 0x00000000 0x2787 - .debug_abbrev 0x00000000 0x32b ./Core/Src/main.o - .debug_abbrev 0x0000032b 0x239 ./Core/Src/stm32g0xx_hal_msp.o - .debug_abbrev 0x00000564 0x1b3 ./Core/Src/stm32g0xx_it.o - .debug_abbrev 0x00000717 0x1b6 ./Core/Src/syscalls.o - .debug_abbrev 0x000008cd 0xbc ./Core/Src/sysmem.o - .debug_abbrev 0x00000989 0x119 ./Core/Src/system_stm32g0xx.o - .debug_abbrev 0x00000aa2 0x24 ./Core/Startup/startup_stm32g070cbtx.o - .debug_abbrev 0x00000ac6 0x2b4 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o - .debug_abbrev 0x00000d7a 0x2ab ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o - .debug_abbrev 0x00001025 0x1e1 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_dma.o - .debug_abbrev 0x00001206 0x1c3 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_gpio.o - .debug_abbrev 0x000013c9 0x291 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o - .debug_abbrev 0x0000165a 0x1ea ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c_ex.o - .debug_abbrev 0x00001844 0x1d7 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_pwr_ex.o - .debug_abbrev 0x00001a1b 0x2a9 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o - .debug_abbrev 0x00001cc4 0x229 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc_ex.o - .debug_abbrev 0x00001eed 0x28f ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_spi.o - .debug_abbrev 0x0000217c 0x326 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart.o - .debug_abbrev 0x000024a2 0x2e5 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart_ex.o +.debug_abbrev 0x00000000 0x2a98 + .debug_abbrev 0x00000000 0x2db ./Core/Src/RFID.o + .debug_abbrev 0x000002db 0x361 ./Core/Src/main.o + .debug_abbrev 0x0000063c 0x239 ./Core/Src/stm32g0xx_hal_msp.o + .debug_abbrev 0x00000875 0x1b3 ./Core/Src/stm32g0xx_it.o + .debug_abbrev 0x00000a28 0x1b6 ./Core/Src/syscalls.o + .debug_abbrev 0x00000bde 0xbc ./Core/Src/sysmem.o + .debug_abbrev 0x00000c9a 0x119 ./Core/Src/system_stm32g0xx.o + .debug_abbrev 0x00000db3 0x24 ./Core/Startup/startup_stm32g070cbtx.o + .debug_abbrev 0x00000dd7 0x2b4 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o + .debug_abbrev 0x0000108b 0x2ab ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o + .debug_abbrev 0x00001336 0x1e1 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_dma.o + .debug_abbrev 0x00001517 0x1c3 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_gpio.o + .debug_abbrev 0x000016da 0x291 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + .debug_abbrev 0x0000196b 0x1ea ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c_ex.o + .debug_abbrev 0x00001b55 0x1d7 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_pwr_ex.o + .debug_abbrev 0x00001d2c 0x2a9 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o + .debug_abbrev 0x00001fd5 0x229 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc_ex.o + .debug_abbrev 0x000021fe 0x28f ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_spi.o + .debug_abbrev 0x0000248d 0x326 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart.o + .debug_abbrev 0x000027b3 0x2e5 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart_ex.o -.debug_aranges 0x00000000 0xe38 +.debug_aranges 0x00000000 0xec8 .debug_aranges - 0x00000000 0x90 ./Core/Src/main.o + 0x00000000 0x90 ./Core/Src/RFID.o .debug_aranges - 0x00000090 0x50 ./Core/Src/stm32g0xx_hal_msp.o + 0x00000090 0x90 ./Core/Src/main.o .debug_aranges - 0x000000e0 0x48 ./Core/Src/stm32g0xx_it.o + 0x00000120 0x50 ./Core/Src/stm32g0xx_hal_msp.o .debug_aranges - 0x00000128 0xa8 ./Core/Src/syscalls.o + 0x00000170 0x48 ./Core/Src/stm32g0xx_it.o .debug_aranges - 0x000001d0 0x20 ./Core/Src/sysmem.o + 0x000001b8 0xa8 ./Core/Src/syscalls.o .debug_aranges - 0x000001f0 0x28 ./Core/Src/system_stm32g0xx.o + 0x00000260 0x20 ./Core/Src/sysmem.o .debug_aranges - 0x00000218 0x28 ./Core/Startup/startup_stm32g070cbtx.o + 0x00000280 0x28 ./Core/Src/system_stm32g0xx.o .debug_aranges - 0x00000240 0xf8 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o + 0x000002a8 0x28 ./Core/Startup/startup_stm32g070cbtx.o .debug_aranges - 0x00000338 0xe8 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o + 0x000002d0 0xf8 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o .debug_aranges - 0x00000420 0x90 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_dma.o + 0x000003c8 0xe8 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o .debug_aranges - 0x000004b0 0x60 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_gpio.o + 0x000004b0 0x90 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_dma.o .debug_aranges - 0x00000510 0x2a0 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + 0x00000540 0x60 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_gpio.o .debug_aranges - 0x000007b0 0x48 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c_ex.o + 0x000005a0 0x2a0 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o .debug_aranges - 0x000007f8 0x98 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_pwr_ex.o + 0x00000840 0x48 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c_ex.o .debug_aranges - 0x00000890 0xa0 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o + 0x00000888 0x98 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_pwr_ex.o .debug_aranges - 0x00000930 0x40 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc_ex.o + 0x00000920 0xa0 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o .debug_aranges - 0x00000970 0x1d8 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_spi.o + 0x000009c0 0x40 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc_ex.o .debug_aranges - 0x00000b48 0x248 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart.o + 0x00000a00 0x1d8 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_spi.o .debug_aranges - 0x00000d90 0xa8 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart_ex.o + 0x00000bd8 0x248 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart.o + .debug_aranges + 0x00000e20 0xa8 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart_ex.o .debug_rnglists - 0x00000000 0xb1c + 0x00000000 0xb85 .debug_rnglists - 0x00000000 0x6e ./Core/Src/main.o + 0x00000000 0x6a ./Core/Src/RFID.o .debug_rnglists - 0x0000006e 0x3a ./Core/Src/stm32g0xx_hal_msp.o + 0x0000006a 0x6d ./Core/Src/main.o .debug_rnglists - 0x000000a8 0x31 ./Core/Src/stm32g0xx_it.o + 0x000000d7 0x3a ./Core/Src/stm32g0xx_hal_msp.o .debug_rnglists - 0x000000d9 0x79 ./Core/Src/syscalls.o + 0x00000111 0x31 ./Core/Src/stm32g0xx_it.o .debug_rnglists - 0x00000152 0x13 ./Core/Src/sysmem.o + 0x00000142 0x79 ./Core/Src/syscalls.o .debug_rnglists - 0x00000165 0x1a ./Core/Src/system_stm32g0xx.o + 0x000001bb 0x13 ./Core/Src/sysmem.o .debug_rnglists - 0x0000017f 0x19 ./Core/Startup/startup_stm32g070cbtx.o + 0x000001ce 0x1a ./Core/Src/system_stm32g0xx.o .debug_rnglists - 0x00000198 0xb6 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o + 0x000001e8 0x19 ./Core/Startup/startup_stm32g070cbtx.o .debug_rnglists - 0x0000024e 0xaa ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o + 0x00000201 0xb6 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o .debug_rnglists - 0x000002f8 0x72 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_dma.o + 0x000002b7 0xaa ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o .debug_rnglists - 0x0000036a 0x45 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_gpio.o + 0x00000361 0x72 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_dma.o .debug_rnglists - 0x000003af 0x229 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + 0x000003d3 0x45 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_gpio.o .debug_rnglists - 0x000005d8 0x35 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c_ex.o + 0x00000418 0x229 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o .debug_rnglists - 0x0000060d 0x72 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_pwr_ex.o + 0x00000641 0x35 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c_ex.o .debug_rnglists - 0x0000067f 0x79 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o + 0x00000676 0x72 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_pwr_ex.o .debug_rnglists - 0x000006f8 0x2f ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc_ex.o + 0x000006e8 0x79 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o .debug_rnglists - 0x00000727 0x17a ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_spi.o + 0x00000761 0x2f ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc_ex.o .debug_rnglists - 0x000008a1 0x1fb ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart.o + 0x00000790 0x17a ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_spi.o .debug_rnglists - 0x00000a9c 0x80 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart_ex.o + 0x0000090a 0x1fb ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart.o + .debug_rnglists + 0x00000b05 0x80 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart_ex.o -.debug_macro 0x00000000 0x1704e - .debug_macro 0x00000000 0x2e6 ./Core/Src/main.o - .debug_macro 0x000002e6 0xa8a ./Core/Src/main.o - .debug_macro 0x00000d70 0x123 ./Core/Src/main.o - .debug_macro 0x00000e93 0x2e ./Core/Src/main.o - .debug_macro 0x00000ec1 0x28 ./Core/Src/main.o - .debug_macro 0x00000ee9 0x22 ./Core/Src/main.o - .debug_macro 0x00000f0b 0x8e ./Core/Src/main.o - .debug_macro 0x00000f99 0x51 ./Core/Src/main.o - .debug_macro 0x00000fea 0x103 ./Core/Src/main.o - .debug_macro 0x000010ed 0x6a ./Core/Src/main.o - .debug_macro 0x00001157 0x1df ./Core/Src/main.o - .debug_macro 0x00001336 0x1c ./Core/Src/main.o - .debug_macro 0x00001352 0x22 ./Core/Src/main.o - .debug_macro 0x00001374 0xd1 ./Core/Src/main.o - .debug_macro 0x00001445 0x4da ./Core/Src/main.o - .debug_macro 0x0000191f 0x11f ./Core/Src/main.o - .debug_macro 0x00001a3e 0xa701 ./Core/Src/main.o - .debug_macro 0x0000c13f 0x66 ./Core/Src/main.o - .debug_macro 0x0000c1a5 0x350e ./Core/Src/main.o - .debug_macro 0x0000f6b3 0x189 ./Core/Src/main.o - .debug_macro 0x0000f83c 0x5c ./Core/Src/main.o - .debug_macro 0x0000f898 0x485 ./Core/Src/main.o - .debug_macro 0x0000fd1d 0xeb4 ./Core/Src/main.o - .debug_macro 0x00010bd1 0x13e ./Core/Src/main.o - .debug_macro 0x00010d0f 0x1cf ./Core/Src/main.o - .debug_macro 0x00010ede 0x13e ./Core/Src/main.o - .debug_macro 0x0001101c 0x3a8 ./Core/Src/main.o - .debug_macro 0x000113c4 0x280 ./Core/Src/main.o - .debug_macro 0x00011644 0x345 ./Core/Src/main.o - .debug_macro 0x00011989 0x198 ./Core/Src/main.o - .debug_macro 0x00011b21 0x43 ./Core/Src/main.o - .debug_macro 0x00011b64 0x1f1 ./Core/Src/main.o - .debug_macro 0x00011d55 0x1d6 ./Core/Src/main.o - .debug_macro 0x00011f2b 0x2a3 ./Core/Src/main.o - .debug_macro 0x000121ce 0x28 ./Core/Src/main.o - .debug_macro 0x000121f6 0xcf ./Core/Src/main.o - .debug_macro 0x000122c5 0x22c ./Core/Src/main.o - .debug_macro 0x000124f1 0x67 ./Core/Src/main.o - .debug_macro 0x00012558 0xa5 ./Core/Src/main.o - .debug_macro 0x000125fd 0x118 ./Core/Src/main.o - .debug_macro 0x00012715 0x10d ./Core/Src/main.o - .debug_macro 0x00012822 0x2fe ./Core/Src/main.o - .debug_macro 0x00012b20 0x693 ./Core/Src/main.o - .debug_macro 0x000131b3 0xa6 ./Core/Src/main.o - .debug_macro 0x00013259 0x43d ./Core/Src/main.o - .debug_macro 0x00013696 0x124 ./Core/Src/main.o - .debug_macro 0x000137ba 0x61 ./Core/Src/main.o - .debug_macro 0x0001381b 0x24 ./Core/Src/main.o - .debug_macro 0x0001383f 0x43 ./Core/Src/main.o - .debug_macro 0x00013882 0x34 ./Core/Src/main.o - .debug_macro 0x000138b6 0x16 ./Core/Src/main.o - .debug_macro 0x000138cc 0x35 ./Core/Src/main.o - .debug_macro 0x00013901 0x369 ./Core/Src/main.o - .debug_macro 0x00013c6a 0x10 ./Core/Src/main.o - .debug_macro 0x00013c7a 0x16 ./Core/Src/main.o - .debug_macro 0x00013c90 0x43 ./Core/Src/main.o - .debug_macro 0x00013cd3 0x34 ./Core/Src/main.o - .debug_macro 0x00013d07 0x10 ./Core/Src/main.o - .debug_macro 0x00013d17 0x58 ./Core/Src/main.o - .debug_macro 0x00013d6f 0x8e ./Core/Src/main.o - .debug_macro 0x00013dfd 0x1c ./Core/Src/main.o - .debug_macro 0x00013e19 0x177 ./Core/Src/main.o - .debug_macro 0x00013f90 0x16 ./Core/Src/main.o - .debug_macro 0x00013fa6 0x16 ./Core/Src/main.o - .debug_macro 0x00013fbc 0x146 ./Core/Src/main.o - .debug_macro 0x00014102 0x208 ./Core/Src/stm32g0xx_hal_msp.o - .debug_macro 0x0001430a 0x212 ./Core/Src/stm32g0xx_it.o - .debug_macro 0x0001451c 0x274 ./Core/Src/syscalls.o - .debug_macro 0x00014790 0x5b ./Core/Src/syscalls.o - .debug_macro 0x000147eb 0x94 ./Core/Src/syscalls.o - .debug_macro 0x0001487f 0x57 ./Core/Src/syscalls.o - .debug_macro 0x000148d6 0x10 ./Core/Src/syscalls.o - .debug_macro 0x000148e6 0x10 ./Core/Src/syscalls.o - .debug_macro 0x000148f6 0x10 ./Core/Src/syscalls.o - .debug_macro 0x00014906 0x10 ./Core/Src/syscalls.o - .debug_macro 0x00014916 0x1c ./Core/Src/syscalls.o - .debug_macro 0x00014932 0x52 ./Core/Src/syscalls.o - .debug_macro 0x00014984 0x22 ./Core/Src/syscalls.o - .debug_macro 0x000149a6 0x10 ./Core/Src/syscalls.o - .debug_macro 0x000149b6 0x52 ./Core/Src/syscalls.o - .debug_macro 0x00014a08 0xcf ./Core/Src/syscalls.o - .debug_macro 0x00014ad7 0x1c ./Core/Src/syscalls.o - .debug_macro 0x00014af3 0x3d ./Core/Src/syscalls.o - .debug_macro 0x00014b30 0x35 ./Core/Src/syscalls.o - .debug_macro 0x00014b65 0x12c ./Core/Src/syscalls.o - .debug_macro 0x00014c91 0x16 ./Core/Src/syscalls.o - .debug_macro 0x00014ca7 0x16 ./Core/Src/syscalls.o - .debug_macro 0x00014cbd 0x29 ./Core/Src/syscalls.o - .debug_macro 0x00014ce6 0x10 ./Core/Src/syscalls.o - .debug_macro 0x00014cf6 0x242 ./Core/Src/syscalls.o - .debug_macro 0x00014f38 0x1c ./Core/Src/syscalls.o - .debug_macro 0x00014f54 0x10 ./Core/Src/syscalls.o - .debug_macro 0x00014f64 0x18a ./Core/Src/syscalls.o - .debug_macro 0x000150ee 0x16 ./Core/Src/syscalls.o - .debug_macro 0x00015104 0xce ./Core/Src/syscalls.o - .debug_macro 0x000151d2 0xff ./Core/Src/sysmem.o - .debug_macro 0x000152d1 0x23c ./Core/Src/sysmem.o - .debug_macro 0x0001550d 0x1f9 ./Core/Src/system_stm32g0xx.o - .debug_macro 0x00015706 0x217 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o - .debug_macro 0x0001591d 0x1f9 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o - .debug_macro 0x00015b16 0x1f9 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_dma.o - .debug_macro 0x00015d0f 0x200 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_gpio.o - .debug_macro 0x00015f0f 0x2c5 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o - .debug_macro 0x000161d4 0x1f9 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c_ex.o - .debug_macro 0x000163cd 0x20b ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_pwr_ex.o - .debug_macro 0x000165d8 0x23b ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o - .debug_macro 0x00016813 0x211 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc_ex.o - .debug_macro 0x00016a24 0x201 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_spi.o - .debug_macro 0x00016c25 0x224 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart.o - .debug_macro 0x00016e49 0x205 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart_ex.o +.debug_macro 0x00000000 0x175a0 + .debug_macro 0x00000000 0x2f8 ./Core/Src/RFID.o + .debug_macro 0x000002f8 0xa8a ./Core/Src/RFID.o + .debug_macro 0x00000d82 0x22 ./Core/Src/RFID.o + .debug_macro 0x00000da4 0x22 ./Core/Src/RFID.o + .debug_macro 0x00000dc6 0x8e ./Core/Src/RFID.o + .debug_macro 0x00000e54 0x51 ./Core/Src/RFID.o + .debug_macro 0x00000ea5 0x103 ./Core/Src/RFID.o + .debug_macro 0x00000fa8 0x6a ./Core/Src/RFID.o + .debug_macro 0x00001012 0x1df ./Core/Src/RFID.o + .debug_macro 0x000011f1 0x214 ./Core/Src/RFID.o + .debug_macro 0x00001405 0x123 ./Core/Src/RFID.o + .debug_macro 0x00001528 0x2e ./Core/Src/RFID.o + .debug_macro 0x00001556 0x28 ./Core/Src/RFID.o + .debug_macro 0x0000157e 0x1c ./Core/Src/RFID.o + .debug_macro 0x0000159a 0x22 ./Core/Src/RFID.o + .debug_macro 0x000015bc 0xd1 ./Core/Src/RFID.o + .debug_macro 0x0000168d 0x4da ./Core/Src/RFID.o + .debug_macro 0x00001b67 0x11f ./Core/Src/RFID.o + .debug_macro 0x00001c86 0xa701 ./Core/Src/RFID.o + .debug_macro 0x0000c387 0x66 ./Core/Src/RFID.o + .debug_macro 0x0000c3ed 0x350e ./Core/Src/RFID.o + .debug_macro 0x0000f8fb 0x189 ./Core/Src/RFID.o + .debug_macro 0x0000fa84 0x5c ./Core/Src/RFID.o + .debug_macro 0x0000fae0 0x485 ./Core/Src/RFID.o + .debug_macro 0x0000ff65 0xeb4 ./Core/Src/RFID.o + .debug_macro 0x00010e19 0x13e ./Core/Src/RFID.o + .debug_macro 0x00010f57 0x1cf ./Core/Src/RFID.o + .debug_macro 0x00011126 0x13e ./Core/Src/RFID.o + .debug_macro 0x00011264 0x3a8 ./Core/Src/RFID.o + .debug_macro 0x0001160c 0x280 ./Core/Src/RFID.o + .debug_macro 0x0001188c 0x345 ./Core/Src/RFID.o + .debug_macro 0x00011bd1 0x198 ./Core/Src/RFID.o + .debug_macro 0x00011d69 0x43 ./Core/Src/RFID.o + .debug_macro 0x00011dac 0x1f1 ./Core/Src/RFID.o + .debug_macro 0x00011f9d 0x1d6 ./Core/Src/RFID.o + .debug_macro 0x00012173 0x2a3 ./Core/Src/RFID.o + .debug_macro 0x00012416 0x28 ./Core/Src/RFID.o + .debug_macro 0x0001243e 0xcf ./Core/Src/RFID.o + .debug_macro 0x0001250d 0x22c ./Core/Src/RFID.o + .debug_macro 0x00012739 0x67 ./Core/Src/RFID.o + .debug_macro 0x000127a0 0xa5 ./Core/Src/RFID.o + .debug_macro 0x00012845 0x118 ./Core/Src/RFID.o + .debug_macro 0x0001295d 0x10d ./Core/Src/RFID.o + .debug_macro 0x00012a6a 0x2fe ./Core/Src/RFID.o + .debug_macro 0x00012d68 0x693 ./Core/Src/RFID.o + .debug_macro 0x000133fb 0xa6 ./Core/Src/RFID.o + .debug_macro 0x000134a1 0x43d ./Core/Src/RFID.o + .debug_macro 0x000138de 0x130 ./Core/Src/RFID.o + .debug_macro 0x00013a0e 0x61 ./Core/Src/RFID.o + .debug_macro 0x00013a6f 0x24 ./Core/Src/RFID.o + .debug_macro 0x00013a93 0x43 ./Core/Src/RFID.o + .debug_macro 0x00013ad6 0x34 ./Core/Src/RFID.o + .debug_macro 0x00013b0a 0x16 ./Core/Src/RFID.o + .debug_macro 0x00013b20 0x35 ./Core/Src/RFID.o + .debug_macro 0x00013b55 0x369 ./Core/Src/RFID.o + .debug_macro 0x00013ebe 0x10 ./Core/Src/RFID.o + .debug_macro 0x00013ece 0x16 ./Core/Src/RFID.o + .debug_macro 0x00013ee4 0x43 ./Core/Src/RFID.o + .debug_macro 0x00013f27 0x34 ./Core/Src/RFID.o + .debug_macro 0x00013f5b 0x10 ./Core/Src/RFID.o + .debug_macro 0x00013f6b 0x58 ./Core/Src/RFID.o + .debug_macro 0x00013fc3 0x8e ./Core/Src/RFID.o + .debug_macro 0x00014051 0x1c ./Core/Src/RFID.o + .debug_macro 0x0001406d 0x177 ./Core/Src/RFID.o + .debug_macro 0x000141e4 0x16 ./Core/Src/RFID.o + .debug_macro 0x000141fa 0x16 ./Core/Src/RFID.o + .debug_macro 0x00014210 0x146 ./Core/Src/RFID.o + .debug_macro 0x00014356 0x2fe ./Core/Src/main.o + .debug_macro 0x00014654 0x208 ./Core/Src/stm32g0xx_hal_msp.o + .debug_macro 0x0001485c 0x212 ./Core/Src/stm32g0xx_it.o + .debug_macro 0x00014a6e 0x274 ./Core/Src/syscalls.o + .debug_macro 0x00014ce2 0x5b ./Core/Src/syscalls.o + .debug_macro 0x00014d3d 0x94 ./Core/Src/syscalls.o + .debug_macro 0x00014dd1 0x57 ./Core/Src/syscalls.o + .debug_macro 0x00014e28 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00014e38 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00014e48 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00014e58 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00014e68 0x1c ./Core/Src/syscalls.o + .debug_macro 0x00014e84 0x52 ./Core/Src/syscalls.o + .debug_macro 0x00014ed6 0x22 ./Core/Src/syscalls.o + .debug_macro 0x00014ef8 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00014f08 0x52 ./Core/Src/syscalls.o + .debug_macro 0x00014f5a 0xcf ./Core/Src/syscalls.o + .debug_macro 0x00015029 0x1c ./Core/Src/syscalls.o + .debug_macro 0x00015045 0x3d ./Core/Src/syscalls.o + .debug_macro 0x00015082 0x35 ./Core/Src/syscalls.o + .debug_macro 0x000150b7 0x12c ./Core/Src/syscalls.o + .debug_macro 0x000151e3 0x16 ./Core/Src/syscalls.o + .debug_macro 0x000151f9 0x16 ./Core/Src/syscalls.o + .debug_macro 0x0001520f 0x29 ./Core/Src/syscalls.o + .debug_macro 0x00015238 0x10 ./Core/Src/syscalls.o + .debug_macro 0x00015248 0x242 ./Core/Src/syscalls.o + .debug_macro 0x0001548a 0x1c ./Core/Src/syscalls.o + .debug_macro 0x000154a6 0x10 ./Core/Src/syscalls.o + .debug_macro 0x000154b6 0x18a ./Core/Src/syscalls.o + .debug_macro 0x00015640 0x16 ./Core/Src/syscalls.o + .debug_macro 0x00015656 0xce ./Core/Src/syscalls.o + .debug_macro 0x00015724 0xff ./Core/Src/sysmem.o + .debug_macro 0x00015823 0x23c ./Core/Src/sysmem.o + .debug_macro 0x00015a5f 0x1f9 ./Core/Src/system_stm32g0xx.o + .debug_macro 0x00015c58 0x217 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o + .debug_macro 0x00015e6f 0x1f9 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o + .debug_macro 0x00016068 0x1f9 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_dma.o + .debug_macro 0x00016261 0x200 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_gpio.o + .debug_macro 0x00016461 0x2c5 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + .debug_macro 0x00016726 0x1f9 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c_ex.o + .debug_macro 0x0001691f 0x20b ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_pwr_ex.o + .debug_macro 0x00016b2a 0x23b ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o + .debug_macro 0x00016d65 0x211 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc_ex.o + .debug_macro 0x00016f76 0x201 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_spi.o + .debug_macro 0x00017177 0x224 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart.o + .debug_macro 0x0001739b 0x205 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart_ex.o -.debug_line 0x00000000 0x1368d - .debug_line 0x00000000 0x1045 ./Core/Src/main.o - .debug_line 0x00001045 0x8d4 ./Core/Src/stm32g0xx_hal_msp.o - .debug_line 0x00001919 0x851 ./Core/Src/stm32g0xx_it.o - .debug_line 0x0000216a 0x8b2 ./Core/Src/syscalls.o - .debug_line 0x00002a1c 0x583 ./Core/Src/sysmem.o - .debug_line 0x00002f9f 0x835 ./Core/Src/system_stm32g0xx.o - .debug_line 0x000037d4 0x7b ./Core/Startup/startup_stm32g070cbtx.o - .debug_line 0x0000384f 0xad8 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o - .debug_line 0x00004327 0xc10 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o - .debug_line 0x00004f37 0xe12 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_dma.o - .debug_line 0x00005d49 0xbf4 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_gpio.o - .debug_line 0x0000693d 0x3aad ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o - .debug_line 0x0000a3ea 0x9e0 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c_ex.o - .debug_line 0x0000adca 0xa06 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_pwr_ex.o - .debug_line 0x0000b7d0 0xf7e ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o - .debug_line 0x0000c74e 0xba9 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc_ex.o - .debug_line 0x0000d2f7 0x1fbe ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_spi.o - .debug_line 0x0000f2b5 0x3563 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart.o - .debug_line 0x00012818 0xe75 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart_ex.o +.debug_line 0x00000000 0x142e2 + .debug_line 0x00000000 0xc9b ./Core/Src/RFID.o + .debug_line 0x00000c9b 0xfff ./Core/Src/main.o + .debug_line 0x00001c9a 0x8d4 ./Core/Src/stm32g0xx_hal_msp.o + .debug_line 0x0000256e 0x851 ./Core/Src/stm32g0xx_it.o + .debug_line 0x00002dbf 0x8b2 ./Core/Src/syscalls.o + .debug_line 0x00003671 0x583 ./Core/Src/sysmem.o + .debug_line 0x00003bf4 0x835 ./Core/Src/system_stm32g0xx.o + .debug_line 0x00004429 0x7b ./Core/Startup/startup_stm32g070cbtx.o + .debug_line 0x000044a4 0xad8 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o + .debug_line 0x00004f7c 0xc10 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o + .debug_line 0x00005b8c 0xe12 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_dma.o + .debug_line 0x0000699e 0xbf4 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_gpio.o + .debug_line 0x00007592 0x3aad ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + .debug_line 0x0000b03f 0x9e0 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c_ex.o + .debug_line 0x0000ba1f 0xa06 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_pwr_ex.o + .debug_line 0x0000c425 0xf7e ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o + .debug_line 0x0000d3a3 0xba9 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc_ex.o + .debug_line 0x0000df4c 0x1fbe ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_spi.o + .debug_line 0x0000ff0a 0x3563 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart.o + .debug_line 0x0001346d 0xe75 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart_ex.o -.debug_str 0x00000000 0x8b486 - .debug_str 0x00000000 0x85c08 ./Core/Src/main.o - 0x86257 (size before relaxing) - .debug_str 0x00085c08 0x37c ./Core/Src/stm32g0xx_hal_msp.o - 0x82af0 (size before relaxing) - .debug_str 0x00085f84 0xbe ./Core/Src/stm32g0xx_it.o - 0x822e9 (size before relaxing) - .debug_str 0x00086042 0x20b0 ./Core/Src/syscalls.o +.debug_str 0x00000000 0x8bf65 + .debug_str 0x00000000 0x85e9b ./Core/Src/RFID.o + 0x86419 (size before relaxing) + .debug_str 0x00085e9b 0x861 ./Core/Src/main.o + 0x86ba8 (size before relaxing) + .debug_str 0x000866fc 0x37c ./Core/Src/stm32g0xx_hal_msp.o + 0x82b1f (size before relaxing) + .debug_str 0x00086a78 0xbe ./Core/Src/stm32g0xx_it.o + 0x82318 (size before relaxing) + .debug_str 0x00086b36 0x20a9 ./Core/Src/syscalls.o 0x97b3 (size before relaxing) - .debug_str 0x000880f2 0x6b ./Core/Src/sysmem.o + .debug_str 0x00088bdf 0x6b ./Core/Src/sysmem.o 0x5fcb (size before relaxing) - .debug_str 0x0008815d 0x8e ./Core/Src/system_stm32g0xx.o + .debug_str 0x00088c4a 0x8e ./Core/Src/system_stm32g0xx.o 0x819e1 (size before relaxing) - .debug_str 0x000881eb 0x44 ./Core/Startup/startup_stm32g070cbtx.o + .debug_str 0x00088cd8 0x44 ./Core/Startup/startup_stm32g070cbtx.o 0x82 (size before relaxing) - .debug_str 0x0008822f 0x42e ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o + .debug_str 0x00088d1c 0x42e ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o 0x82083 (size before relaxing) - .debug_str 0x0008865d 0x297 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o + .debug_str 0x0008914a 0x297 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o 0x81e60 (size before relaxing) - .debug_str 0x000888f4 0x2b7 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_dma.o + .debug_str 0x000893e1 0x2b7 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_dma.o 0x81e7b (size before relaxing) - .debug_str 0x00088bab 0x12c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_gpio.o + .debug_str 0x00089698 0x12c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_gpio.o 0x81b16 (size before relaxing) - .debug_str 0x00088cd7 0xd63 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + .debug_str 0x000897c4 0xd7c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o 0x82da4 (size before relaxing) - .debug_str 0x00089a3a 0xb8 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c_ex.o + .debug_str 0x0008a540 0xb8 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c_ex.o 0x82020 (size before relaxing) - .debug_str 0x00089af2 0x221 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_pwr_ex.o + .debug_str 0x0008a5f8 0x221 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_pwr_ex.o 0x81c35 (size before relaxing) - .debug_str 0x00089d13 0x49c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o + .debug_str 0x0008a819 0x496 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o 0x82105 (size before relaxing) - .debug_str 0x0008a1af 0x185 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc_ex.o + .debug_str 0x0008acaf 0x185 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc_ex.o 0x81d32 (size before relaxing) - .debug_str 0x0008a334 0x552 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_spi.o + .debug_str 0x0008ae34 0x531 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_spi.o 0x823c7 (size before relaxing) - .debug_str 0x0008a886 0x995 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart.o + .debug_str 0x0008b365 0x995 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart.o 0x829ac (size before relaxing) - .debug_str 0x0008b21b 0x26b ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart_ex.o + .debug_str 0x0008bcfa 0x26b ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart_ex.o 0x8226b (size before relaxing) .comment 0x00000000 0x43 - .comment 0x00000000 0x43 ./Core/Src/main.o + .comment 0x00000000 0x43 ./Core/Src/RFID.o 0x44 (size before relaxing) + .comment 0x00000043 0x44 ./Core/Src/main.o .comment 0x00000043 0x44 ./Core/Src/stm32g0xx_hal_msp.o .comment 0x00000043 0x44 ./Core/Src/stm32g0xx_it.o .comment 0x00000043 0x44 ./Core/Src/syscalls.o @@ -4608,54 +4801,55 @@ LOAD C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.ext .comment 0x00000043 0x44 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart.o .comment 0x00000043 0x44 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart_ex.o -.debug_frame 0x00000000 0x3a48 - .debug_frame 0x00000000 0x1d8 ./Core/Src/main.o - .debug_frame 0x000001d8 0xf0 ./Core/Src/stm32g0xx_hal_msp.o - .debug_frame 0x000002c8 0xb8 ./Core/Src/stm32g0xx_it.o - .debug_frame 0x00000380 0x244 ./Core/Src/syscalls.o - .debug_frame 0x000005c4 0x30 ./Core/Src/sysmem.o - .debug_frame 0x000005f4 0x4c ./Core/Src/system_stm32g0xx.o - .debug_frame 0x00000640 0x340 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o - .debug_frame 0x00000980 0x33c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o - .debug_frame 0x00000cbc 0x1f0 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_dma.o - .debug_frame 0x00000eac 0x130 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_gpio.o - .debug_frame 0x00000fdc 0xa68 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o - .debug_frame 0x00001a44 0xd0 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c_ex.o - .debug_frame 0x00001b14 0x1f4 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_pwr_ex.o - .debug_frame 0x00001d08 0x214 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o - .debug_frame 0x00001f1c 0xb0 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc_ex.o - .debug_frame 0x00001fcc 0x710 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_spi.o - .debug_frame 0x000026dc 0x8d4 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart.o - .debug_frame 0x00002fb0 0x258 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart_ex.o - .debug_frame 0x00003208 0x138 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-findfp.o) - .debug_frame 0x00003340 0x34 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-fwalk.o) - .debug_frame 0x00003374 0x4c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-printf.o) - .debug_frame 0x000033c0 0x44 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-puts.o) - .debug_frame 0x00003404 0x90 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-stdio.o) - .debug_frame 0x00003494 0x48 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-wbuf.o) - .debug_frame 0x000034dc 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-wsetup.o) - .debug_frame 0x00003508 0x20 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-memset.o) - .debug_frame 0x00003528 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-closer.o) - .debug_frame 0x00003554 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-reent.o) - .debug_frame 0x00003580 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-lseekr.o) - .debug_frame 0x000035ac 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-readr.o) - .debug_frame 0x000035d8 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-writer.o) - .debug_frame 0x00003604 0x20 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-errno.o) - .debug_frame 0x00003624 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-init.o) - .debug_frame 0x00003650 0xb0 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-lock.o) - .debug_frame 0x00003700 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-freer.o) - .debug_frame 0x0000372c 0x50 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-mallocr.o) - .debug_frame 0x0000377c 0x40 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-mlock.o) - .debug_frame 0x000037bc 0x9c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-nano-vfprintf.o) - .debug_frame 0x00003858 0x54 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-nano-vfprintf_i.o) - .debug_frame 0x000038ac 0x68 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-fflush.o) - .debug_frame 0x00003914 0x50 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-makebuf.o) - .debug_frame 0x00003964 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-fstatr.o) - .debug_frame 0x00003990 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-isattyr.o) - .debug_frame 0x000039bc 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-sbrkr.o) - .debug_frame 0x000039e8 0x20 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-memchr-stub.o) - .debug_frame 0x00003a08 0x20 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v6-m/nofp\libgcc.a(_udivsi3.o) - .debug_frame 0x00003a28 0x20 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v6-m/nofp\libgcc.a(_divsi3.o) +.debug_frame 0x00000000 0x3c38 + .debug_frame 0x00000000 0x1fc ./Core/Src/RFID.o + .debug_frame 0x000001fc 0x1cc ./Core/Src/main.o + .debug_frame 0x000003c8 0xf0 ./Core/Src/stm32g0xx_hal_msp.o + .debug_frame 0x000004b8 0xb8 ./Core/Src/stm32g0xx_it.o + .debug_frame 0x00000570 0x244 ./Core/Src/syscalls.o + .debug_frame 0x000007b4 0x30 ./Core/Src/sysmem.o + .debug_frame 0x000007e4 0x4c ./Core/Src/system_stm32g0xx.o + .debug_frame 0x00000830 0x340 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal.o + .debug_frame 0x00000b70 0x33c ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_cortex.o + .debug_frame 0x00000eac 0x1f0 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_dma.o + .debug_frame 0x0000109c 0x130 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_gpio.o + .debug_frame 0x000011cc 0xa68 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c.o + .debug_frame 0x00001c34 0xd0 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_i2c_ex.o + .debug_frame 0x00001d04 0x1f4 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_pwr_ex.o + .debug_frame 0x00001ef8 0x214 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc.o + .debug_frame 0x0000210c 0xb0 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_rcc_ex.o + .debug_frame 0x000021bc 0x710 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_spi.o + .debug_frame 0x000028cc 0x8d4 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart.o + .debug_frame 0x000031a0 0x258 ./Drivers/STM32G0xx_HAL_Driver/Src/stm32g0xx_hal_uart_ex.o + .debug_frame 0x000033f8 0x138 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-findfp.o) + .debug_frame 0x00003530 0x34 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-fwalk.o) + .debug_frame 0x00003564 0x4c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-printf.o) + .debug_frame 0x000035b0 0x44 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-puts.o) + .debug_frame 0x000035f4 0x90 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-stdio.o) + .debug_frame 0x00003684 0x48 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-wbuf.o) + .debug_frame 0x000036cc 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-wsetup.o) + .debug_frame 0x000036f8 0x20 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-memset.o) + .debug_frame 0x00003718 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-closer.o) + .debug_frame 0x00003744 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-reent.o) + .debug_frame 0x00003770 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-lseekr.o) + .debug_frame 0x0000379c 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-readr.o) + .debug_frame 0x000037c8 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-writer.o) + .debug_frame 0x000037f4 0x20 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-errno.o) + .debug_frame 0x00003814 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-init.o) + .debug_frame 0x00003840 0xb0 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-lock.o) + .debug_frame 0x000038f0 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-freer.o) + .debug_frame 0x0000391c 0x50 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-mallocr.o) + .debug_frame 0x0000396c 0x40 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-mlock.o) + .debug_frame 0x000039ac 0x9c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-nano-vfprintf.o) + .debug_frame 0x00003a48 0x54 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-nano-vfprintf_i.o) + .debug_frame 0x00003a9c 0x68 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-fflush.o) + .debug_frame 0x00003b04 0x50 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-makebuf.o) + .debug_frame 0x00003b54 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-fstatr.o) + .debug_frame 0x00003b80 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-isattyr.o) + .debug_frame 0x00003bac 0x2c C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-sbrkr.o) + .debug_frame 0x00003bd8 0x20 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp\libc_nano.a(libc_a-memchr-stub.o) + .debug_frame 0x00003bf8 0x20 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v6-m/nofp\libgcc.a(_udivsi3.o) + .debug_frame 0x00003c18 0x20 C:/ST/STM32CubeIDE_1.15.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/thumb/v6-m/nofp\libgcc.a(_divsi3.o) .debug_line_str 0x00000000 0x66 diff --git a/Debug/objects.list b/Debug/objects.list index 9c61785..4bfce11 100644 --- a/Debug/objects.list +++ b/Debug/objects.list @@ -1,3 +1,4 @@ +"./Core/Src/RFID.o" "./Core/Src/main.o" "./Core/Src/stm32g0xx_hal_msp.o" "./Core/Src/stm32g0xx_it.o" diff --git a/blk_box_bc Debug.launch b/blk_box_bc Debug.launch index 34771ec..50ddecd 100644 --- a/blk_box_bc Debug.launch +++ b/blk_box_bc Debug.launch @@ -78,5 +78,6 @@ + diff --git a/blk_box_bc.ioc b/blk_box_bc.ioc index a0d5d9d..27a033d 100644 --- a/blk_box_bc.ioc +++ b/blk_box_bc.ioc @@ -104,9 +104,10 @@ PA2.Signal=USART2_TX PA3.Locked=true PA3.Mode=Asynchronous PA3.Signal=USART2_RX +PA4.GPIOParameters=GPIO_Label +PA4.GPIO_Label=RFID_CS PA4.Locked=true -PA4.Mode=NSS_Signal_Hard_Output -PA4.Signal=SPI1_NSS +PA4.Signal=GPIO_Output PA5.Locked=true PA5.Mode=Full_Duplex_Master PA5.Signal=SPI1_SCK @@ -292,10 +293,10 @@ RCC.USART2Freq_Value=8000000 RCC.VCOInputFreq_Value=8000000 RCC.VCOOutputFreq_Value=128000000 SPI1.CalculateBaudRate=4.0 MBits/s +SPI1.DataSize=SPI_DATASIZE_8BIT SPI1.Direction=SPI_DIRECTION_2LINES -SPI1.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,VirtualNSS +SPI1.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,DataSize SPI1.Mode=SPI_MODE_MASTER -SPI1.VirtualNSS=VM_NSSHARD SPI1.VirtualType=VM_MASTER USART2.IPParameters=VirtualMode-Asynchronous USART2.VirtualMode-Asynchronous=VM_ASYNC

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 literal 0 HcmV?d00001 diff --git a/Debug/Core/Src/RFID.su b/Debug/Core/Src/RFID.su new file mode 100644 index 0000000..4e2fa07 --- /dev/null +++ b/Debug/Core/Src/RFID.su @@ -0,0 +1,15 @@ +../Core/Src/RFID.c:26:6:spi_cs_rfid_write 16 static +../Core/Src/RFID.c:31:9:rc522_regRead8 32 static +../Core/Src/RFID.c:48:6:rc522_regWrite8 24 static +../Core/Src/RFID.c:60:6:rc522_setBit 16 static +../Core/Src/RFID.c:68:6:rc522_clearBit 16 static +../Core/Src/RFID.c:76:6:rc522_reset 8 static +../Core/Src/RFID.c:84:6:rc522_antennaON 24 static +../Core/Src/RFID.c:97:6:rc522_checkCard 32 static +../Core/Src/RFID.c:115:6:rc522_request 48 static +../Core/Src/RFID.c:131:6:rc522_toCard 48 static +../Core/Src/RFID.c:232:6:rc522_antiColl 40 static +../Core/Src/RFID.c:263:6:rc522_halt 24 static +../Core/Src/RFID.c:275:6:rc522_calculateCRC 40 static +../Core/Src/RFID.c:304:6:rc522_compareIds 24 static +../Core/Src/RFID.c:317:6:rc522_init 8 static diff --git a/Debug/Core/Src/main.cyclo b/Debug/Core/Src/main.cyclo index 8c19144..d071553 100644 --- a/Debug/Core/Src/main.cyclo +++ b/Debug/Core/Src/main.cyclo @@ -1,15 +1,15 @@ -../Core/Src/main.c:81:6:printBinary 2 -../Core/Src/main.c:100:5:main 1 -../Core/Src/main.c:159:6:SystemClock_Config 3 -../Core/Src/main.c:198:13:MX_I2C1_Init 4 -../Core/Src/main.c:246:13:MX_SPI1_Init 2 -../Core/Src/main.c:286:13:MX_USART2_UART_Init 5 -../Core/Src/main.c:334:13:MX_GPIO_Init 1 -../Core/Src/main.c:436:1:__io_putchar 1 -../Core/Src/main.c:446:6:HAL_I2C_SlaveRxCpltCallback 1 -../Core/Src/main.c:451:6:init_keypad 1 -../Core/Src/main.c:459:6:init_buttons 1 -../Core/Src/main.c:466:6:scan_keypad 16 -../Core/Src/main.c:500:6:scan_buttons 12 -../Core/Src/main.c:527:6:send_iterupt 1 -../Core/Src/main.c:537:6:Error_Handler 1 +../Core/Src/main.c:82:6:printBinary 2 +../Core/Src/main.c:101:5:main 2 +../Core/Src/main.c:165:6:SystemClock_Config 3 +../Core/Src/main.c:204:13:MX_I2C1_Init 4 +../Core/Src/main.c:252:13:MX_SPI1_Init 2 +../Core/Src/main.c:292:13:MX_USART2_UART_Init 5 +../Core/Src/main.c:340:13:MX_GPIO_Init 1 +../Core/Src/main.c:452:1:__io_putchar 1 +../Core/Src/main.c:462:6:HAL_I2C_SlaveRxCpltCallback 1 +../Core/Src/main.c:467:6:init_keypad 1 +../Core/Src/main.c:475:6:init_buttons 1 +../Core/Src/main.c:482:6:scan_keypad 16 +../Core/Src/main.c:516:6:scan_buttons 12 +../Core/Src/main.c:543:6:send_iterupt 1 +../Core/Src/main.c:553:6:Error_Handler 1 diff --git a/Debug/Core/Src/main.d b/Debug/Core/Src/main.d index 768043c..ae5f11d 100644 --- a/Debug/Core/Src/main.d +++ b/Debug/Core/Src/main.d @@ -31,7 +31,8 @@ Core/Src/main.o: ../Core/Src/main.c ../Core/Inc/main.h \ ../Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_spi.h \ ../Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_spi_ex.h \ ../Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_uart.h \ - ../Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_uart_ex.h + ../Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_uart_ex.h \ + ../Core/Inc/RFID.h ../Core/Inc/main.h: ../Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal.h: ../Core/Inc/stm32g0xx_hal_conf.h: @@ -66,3 +67,4 @@ Core/Src/main.o: ../Core/Src/main.c ../Core/Inc/main.h \ ../Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_spi_ex.h: ../Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_uart.h: ../Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_uart_ex.h: +../Core/Inc/RFID.h: diff --git a/Debug/Core/Src/main.o b/Debug/Core/Src/main.o index e72c846b0358f607db72ab42f0ae2795d5206708..423360211a02ad0711f884458cef9f6f234c2b93 100644 GIT binary patch delta 103415 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