добавлен модбас (не проверено)
This commit is contained in:
34
.mxproject
34
.mxproject
File diff suppressed because one or more lines are too long
27
CANEmu.ioc
27
CANEmu.ioc
@@ -11,19 +11,24 @@ Mcu.IP0=NVIC
|
||||
Mcu.IP1=RCC
|
||||
Mcu.IP2=SYS
|
||||
Mcu.IP3=TIM2
|
||||
Mcu.IPNb=4
|
||||
Mcu.IP4=TIM3
|
||||
Mcu.IP5=USART1
|
||||
Mcu.IPNb=6
|
||||
Mcu.Name=STM32F103C(8-B)Tx
|
||||
Mcu.Package=LQFP48
|
||||
Mcu.Pin0=PC14-OSC32_IN
|
||||
Mcu.Pin1=PC15-OSC32_OUT
|
||||
Mcu.Pin10=VP_TIM2_VS_ClockSourceINT
|
||||
Mcu.Pin11=VP_TIM3_VS_ClockSourceINT
|
||||
Mcu.Pin2=PD0-OSC_IN
|
||||
Mcu.Pin3=PD1-OSC_OUT
|
||||
Mcu.Pin4=PB0
|
||||
Mcu.Pin5=PA13
|
||||
Mcu.Pin6=PA14
|
||||
Mcu.Pin7=VP_SYS_VS_Systick
|
||||
Mcu.Pin8=VP_TIM2_VS_ClockSourceINT
|
||||
Mcu.PinsNb=9
|
||||
Mcu.Pin5=PA9
|
||||
Mcu.Pin6=PA10
|
||||
Mcu.Pin7=PA13
|
||||
Mcu.Pin8=PA14
|
||||
Mcu.Pin9=VP_SYS_VS_Systick
|
||||
Mcu.PinsNb=12
|
||||
Mcu.ThirdPartyNb=0
|
||||
Mcu.UserConstants=
|
||||
Mcu.UserName=STM32F103C8Tx
|
||||
@@ -40,10 +45,14 @@ NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4
|
||||
NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
|
||||
NVIC.SysTick_IRQn=true\:15\:0\:false\:false\:true\:false\:true\:false
|
||||
NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
|
||||
PA10.Mode=Asynchronous
|
||||
PA10.Signal=USART1_RX
|
||||
PA13.Mode=Serial_Wire
|
||||
PA13.Signal=SYS_JTMS-SWDIO
|
||||
PA14.Mode=Serial_Wire
|
||||
PA14.Signal=SYS_JTCK-SWCLK
|
||||
PA9.Mode=Asynchronous
|
||||
PA9.Signal=USART1_TX
|
||||
PB0.Locked=true
|
||||
PB0.Signal=GPIO_Output
|
||||
PC14-OSC32_IN.Mode=LSE-External-Oscillator
|
||||
@@ -107,8 +116,14 @@ RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK
|
||||
RCC.TimSysFreq_Value=72000000
|
||||
RCC.USBFreq_Value=72000000
|
||||
RCC.VCOOutput2Freq_Value=8000000
|
||||
TIM3.IPParameters=Period
|
||||
TIM3.Period=7200
|
||||
USART1.IPParameters=VirtualMode
|
||||
USART1.VirtualMode=VM_ASYNC
|
||||
VP_SYS_VS_Systick.Mode=SysTick
|
||||
VP_SYS_VS_Systick.Signal=SYS_VS_Systick
|
||||
VP_TIM2_VS_ClockSourceINT.Mode=Internal
|
||||
VP_TIM2_VS_ClockSourceINT.Signal=TIM2_VS_ClockSourceINT
|
||||
VP_TIM3_VS_ClockSourceINT.Mode=Internal
|
||||
VP_TIM3_VS_ClockSourceINT.Signal=TIM3_VS_ClockSourceINT
|
||||
board=custom
|
||||
|
||||
@@ -28,6 +28,7 @@ typedef struct
|
||||
CAN_TxHeaderTypeDef header;
|
||||
uint8_t data[8];
|
||||
uint32_t bitrate_bps;
|
||||
uint32_t period_ms;
|
||||
CAN_ErrorFlags_t errors;
|
||||
}CANEmu_HandleTypeDef;
|
||||
|
||||
|
||||
@@ -65,7 +65,7 @@
|
||||
/*#define HAL_SPI_MODULE_ENABLED */
|
||||
/*#define HAL_SRAM_MODULE_ENABLED */
|
||||
#define HAL_TIM_MODULE_ENABLED
|
||||
/*#define HAL_UART_MODULE_ENABLED */
|
||||
#define HAL_UART_MODULE_ENABLED
|
||||
/*#define HAL_USART_MODULE_ENABLED */
|
||||
/*#define HAL_WWDG_MODULE_ENABLED */
|
||||
|
||||
|
||||
@@ -34,11 +34,14 @@ extern "C" {
|
||||
|
||||
extern TIM_HandleTypeDef htim2;
|
||||
|
||||
extern TIM_HandleTypeDef htim3;
|
||||
|
||||
/* USER CODE BEGIN Private defines */
|
||||
|
||||
/* USER CODE END Private defines */
|
||||
|
||||
void MX_TIM2_Init(void);
|
||||
void MX_TIM3_Init(void);
|
||||
|
||||
/* USER CODE BEGIN Prototypes */
|
||||
|
||||
|
||||
52
Core/Inc/usart.h
Normal file
52
Core/Inc/usart.h
Normal file
@@ -0,0 +1,52 @@
|
||||
/* USER CODE BEGIN Header */
|
||||
/**
|
||||
******************************************************************************
|
||||
* @file usart.h
|
||||
* @brief This file contains all the function prototypes for
|
||||
* the usart.c file
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* Copyright (c) 2025 STMicroelectronics.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This software is licensed under terms that can be found in the LICENSE file
|
||||
* in the root directory of this software component.
|
||||
* If no LICENSE file comes with this software, it is provided AS-IS.
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
/* USER CODE END Header */
|
||||
/* Define to prevent recursive inclusion -------------------------------------*/
|
||||
#ifndef __USART_H__
|
||||
#define __USART_H__
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* Includes ------------------------------------------------------------------*/
|
||||
#include "main.h"
|
||||
|
||||
/* USER CODE BEGIN Includes */
|
||||
|
||||
/* USER CODE END Includes */
|
||||
|
||||
extern UART_HandleTypeDef huart1;
|
||||
|
||||
/* USER CODE BEGIN Private defines */
|
||||
|
||||
/* USER CODE END Private defines */
|
||||
|
||||
void MX_USART1_UART_Init(void);
|
||||
|
||||
/* USER CODE BEGIN Prototypes */
|
||||
|
||||
/* USER CODE END Prototypes */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __USART_H__ */
|
||||
|
||||
116
Core/Modbus/crc_algs.c
Normal file
116
Core/Modbus/crc_algs.c
Normal file
@@ -0,0 +1,116 @@
|
||||
#include "crc_algs.h"
|
||||
|
||||
|
||||
uint32_t CRC_calc;
|
||||
uint32_t CRC_ref;
|
||||
|
||||
//uint16_t CRC_calc;
|
||||
//uint16_t CRC_ref;
|
||||
|
||||
|
||||
// left this global for debug
|
||||
uint8_t uchCRCHi = 0xFF;
|
||||
uint8_t uchCRCLo = 0xFF;
|
||||
unsigned uIndex;
|
||||
|
||||
|
||||
uint32_t crc32(uint8_t *data, uint32_t data_size)
|
||||
{
|
||||
static const unsigned int crc32_table[] =
|
||||
{
|
||||
0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA, 0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3,
|
||||
0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988, 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91,
|
||||
0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE, 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7,
|
||||
0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC, 0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5,
|
||||
0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172, 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B,
|
||||
0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940, 0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59,
|
||||
0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116, 0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F,
|
||||
0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924, 0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D,
|
||||
0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A, 0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433,
|
||||
0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818, 0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01,
|
||||
0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E, 0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457,
|
||||
0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, 0xFCB9887C, 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65,
|
||||
0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2, 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB,
|
||||
0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0, 0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9,
|
||||
0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086, 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F,
|
||||
0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4, 0x59B33D17, 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD,
|
||||
0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A, 0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683,
|
||||
0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8, 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1,
|
||||
0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE, 0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7,
|
||||
0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC, 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5,
|
||||
0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252, 0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B,
|
||||
0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60, 0xDF60EFC3, 0xA867DF55, 0x316E8EEF, 0x4669BE79,
|
||||
0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236, 0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F,
|
||||
0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04, 0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D,
|
||||
0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A, 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713,
|
||||
0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38, 0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21,
|
||||
0x86D3D2D4, 0xF1D4E242, 0x68DDB3F8, 0x1FDA836E, 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777,
|
||||
0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C, 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45,
|
||||
0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2, 0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB,
|
||||
0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0, 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9,
|
||||
0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6, 0xBAD03605, 0xCDD70693, 0x54DE5729, 0x23D967BF,
|
||||
0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94, 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D
|
||||
};
|
||||
unsigned int crc = 0xFFFFFFFF;
|
||||
while (data_size--)
|
||||
{
|
||||
crc = (crc >> 8) ^ crc32_table[(crc ^ *data) & 255];
|
||||
data++;
|
||||
}
|
||||
return crc^0xFFFFFFFF;
|
||||
}
|
||||
|
||||
|
||||
uint16_t crc16(uint8_t *data, uint32_t data_size)
|
||||
{
|
||||
/*Table of CRC values for high order byte*/
|
||||
static unsigned char auchCRCHi[]=
|
||||
{
|
||||
0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,
|
||||
0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,
|
||||
0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,
|
||||
0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,
|
||||
0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,
|
||||
0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,
|
||||
0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,
|
||||
0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,
|
||||
0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,
|
||||
0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,
|
||||
0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,
|
||||
0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,
|
||||
0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,
|
||||
0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,
|
||||
0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,
|
||||
0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,
|
||||
};
|
||||
/*Table of CRC values for low order byte*/
|
||||
static char auchCRCLo[] =
|
||||
{
|
||||
0x00,0xC0,0xC1,0x01,0xC3,0x03,0x02,0xC2,0xC6,0x06,0x07,0xC7,0x05,0xC5,0xC4,0x04,
|
||||
0xCC,0x0C,0x0D,0xCD,0x0F,0xCF,0xCE,0x0E,0x0A,0xCA,0xCB,0x0B,0xC9,0x09,0x08,0xC8,
|
||||
0xD8,0x18,0x19,0xD9,0x1B,0xDB,0xDA,0x1A,0x1E,0xDE,0xDF,0x1F,0xDD,0x1D,0x1C,0xDC,
|
||||
0x14,0xD4,0xD5,0x15,0xD7,0x17,0x16,0xD6,0xD2,0x12,0x13,0xD3,0x11,0xD1,0xD0,0x10,
|
||||
0xF0,0x30,0x31,0xF1,0x33,0xF3,0xF2,0x32,0x36,0xF6,0xF7,0x37,0xF5,0x35,0x34,0xF4,
|
||||
0x3C,0xFC,0xFD,0x3D,0xFF,0x3F,0x3E,0xFE,0xFA,0x3A,0x3B,0xFB,0x39,0xF9,0xF8,0x38,
|
||||
0x28,0xE8,0xE9,0x29,0xEB,0x2B,0x2A,0xEA,0xEE,0x2E,0x2F,0xEF,0x2D,0xED,0xEC,0x2C,
|
||||
0xE4,0x24,0x25,0xE5,0x27,0xE7,0xE6,0x26,0x22,0xE2,0xE3,0x23,0xE1,0x21,0x20,0xE0,
|
||||
0xA0,0x60,0x61,0xA1,0x63,0xA3,0xA2,0x62,0x66,0xA6,0xA7,0x67,0xA5,0x65,0x64,0xA4,
|
||||
0x6C,0xAC,0xAD,0x6D,0xAF,0x6F,0x6E,0xAE,0xAA,0x6A,0x6B,0xAB,0x69,0xA9,0xA8,0x68,
|
||||
0x78,0xB8,0xB9,0x79,0xBB,0x7B,0x7A,0xBA,0xBE,0x7E,0x7F,0xBF,0x7D,0xBD,0xBC,0x7C,
|
||||
0xB4,0x74,0x75,0xB5,0x77,0xB7,0xB6,0x76,0x72,0xB2,0xB3,0x73,0xB1,0x71,0x70,0xB0,
|
||||
0x50,0x90,0x91,0x51,0x93,0x53,0x52,0x92,0x96,0x56,0x57,0x97,0x55,0x95,0x94,0x54,
|
||||
0x9C,0x5C,0x5D,0x9D,0x5F,0x9F,0x9E,0x5E,0x5A,0x9A,0x9B,0x5B,0x99,0x59,0x58,0x98,
|
||||
0x88,0x48,0x49,0x89,0x4B,0x8B,0x8A,0x4A,0x4E,0x8E,0x8F,0x4F,0x8D,0x4D,0x4C,0x8C,
|
||||
0x44,0x84,0x85,0x45,0x87,0x47,0x46,0x86,0x82,0x42,0x43,0x83,0x41,0x81,0x80,0x40,
|
||||
};
|
||||
uchCRCHi = 0xFF;
|
||||
uchCRCLo = 0xFF;
|
||||
/* CRC Generation Function */
|
||||
while( data_size--) /* pass through message buffer */
|
||||
{
|
||||
uIndex = uchCRCHi ^ *data++; /* calculate the CRC */
|
||||
uchCRCHi = uchCRCLo ^ auchCRCHi[uIndex];
|
||||
uchCRCLo = auchCRCLo[uIndex];
|
||||
}
|
||||
return uchCRCHi | uchCRCLo<<8;
|
||||
}
|
||||
9
Core/Modbus/crc_algs.h
Normal file
9
Core/Modbus/crc_algs.h
Normal file
@@ -0,0 +1,9 @@
|
||||
#include "modbus_config.h"
|
||||
|
||||
// extern here to use in bootloader.c
|
||||
extern uint32_t CRC_calc;
|
||||
extern uint32_t CRC_ref;
|
||||
|
||||
|
||||
uint16_t crc16(uint8_t *data, uint32_t data_size);
|
||||
uint32_t crc32(uint8_t *data, uint32_t data_size);
|
||||
951
Core/Modbus/modbus.c
Normal file
951
Core/Modbus/modbus.c
Normal file
@@ -0,0 +1,951 @@
|
||||
/**
|
||||
**************************************************************************
|
||||
* @file modbus.c
|
||||
* @brief Модуль для реализации MODBUS.
|
||||
**************************************************************************
|
||||
* @details Файл содержит реализацию функций работы с Modbus, включая:
|
||||
* - доступ к coils и registers;
|
||||
* - обработку команд протокола;
|
||||
* - взаимодействие с RS (UART);
|
||||
* - инициализацию.
|
||||
*
|
||||
* @section Функции и макросы
|
||||
*
|
||||
* ### Доступ к coils:
|
||||
* - MB_Set_Coil_Local() — Установить coil по локальному адресу.
|
||||
* - MB_Reset_Coil_Local() — Сбросить coil по локальному адресу.
|
||||
* - MB_Toogle_Coil_Local() — Инвертировать coil по локальному адресу.
|
||||
* - MB_Read_Coil_Local() — Прочитать coil по локальному адресу.
|
||||
* - MB_Write_Coil_Global() — Установить/сбросить coil по глобальному адресу.
|
||||
* - MB_Read_Coil_Global() — Прочитать coil по глобальному адресу.
|
||||
*
|
||||
* ### Обработка команд Modbus:
|
||||
* - MB_DefineRegistersAddress() — Определить начальный адрес регистра.
|
||||
* - MB_DefineCoilsAddress() — Определить начальный адрес coils.
|
||||
* - MB_Check_Address_For_Arr() — Проверить, принадлежит ли адрес массиву.
|
||||
* - Основные команды Modbus:
|
||||
* - MB_Read_Coils()
|
||||
* - MB_Read_Hold_Regs()
|
||||
* - MB_Write_Single_Coil()
|
||||
* - MB_Write_Miltuple_Coils()
|
||||
* - MB_Write_Miltuple_Regs()
|
||||
*
|
||||
* ### Функции для работы с RS (UART):
|
||||
* - RS_Parse_Message() / RS_Collect_Message() — Парсинг и сборка сообщения.
|
||||
* - RS_Response() — Отправка ответа.
|
||||
* - RS_Define_Size_of_RX_Message() — Определение размера принимаемого сообщения.
|
||||
* - RS_Init() — Инициализация UART.
|
||||
*
|
||||
* ### Инициализация:
|
||||
* - MODBUS_FirstInit() — Инициализация модуля Modbus.
|
||||
*
|
||||
* @section Структура данных Modbus
|
||||
*
|
||||
* #### Holding/Input Registers:
|
||||
* - Регистры — 16-битные слова. Доступ к регистрам осуществляется через указатель.
|
||||
* Таким образом, сами регистры могут представлять собой как массив так и структуру.
|
||||
*
|
||||
* #### Coils:
|
||||
* - Coils — это биты, упакованные в 16-битные слова. Доступ к коилам осуществляется через указатель.
|
||||
* Таким образом, сами коилы могут представлять собой как массив так и структуру.
|
||||
*
|
||||
* @section Инструкция по подключению
|
||||
* Для корректной работы надо подключить обработчики RS_UART_Handler(), RS_TIM_Handler(),
|
||||
* в соответствубщие низкоуровневые прерывания UART_IRQHandler, TIM_IRQHandler. После HAL'овского обработчика
|
||||
*
|
||||
* Также необходимо в modbus_config.h настроить дефайны для нужной работы UART
|
||||
* После для запуска Modbus:
|
||||
* @verbatim
|
||||
//----------------Прием модбас----------------//
|
||||
#include "rs_message.h"
|
||||
MODBUS_FirstInit();
|
||||
RS_Receive_IT(&hmodbus1, &MODBUS_MSG);
|
||||
* @endverbatim
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
#include "rs_message.h"
|
||||
uint32_t dbg_temp, dbg_temp2, dbg_temp3; // for debug
|
||||
/* MODBUS HANDLES */
|
||||
extern UART_HandleTypeDef rs_huart;
|
||||
extern TIM_HandleTypeDef rs_htim;
|
||||
RS_HandleTypeDef hmodbus1;
|
||||
|
||||
/* DEFINE REGISTERS/COILS */
|
||||
MB_DeviceIdentificationTypeDef MB_INFO;
|
||||
MB_DataStructureTypeDef MB_DATA;
|
||||
RS_MsgTypeDef MODBUS_MSG;
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
//-----------------------------FOR USER------------------------------
|
||||
/**
|
||||
* @brief First set up of MODBUS.
|
||||
* @details Первый инит модбас. Заполняет структуры и инициализирует таймер и юарт для общения по модбас.
|
||||
* @note This called from main
|
||||
*/
|
||||
void MODBUS_FirstInit(void)
|
||||
{
|
||||
MB_DevoceInentificationInit();
|
||||
//-----------SETUP MODBUS-------------
|
||||
// set up modbus: MB_RX_Size_NotConst and Timeout enable
|
||||
hmodbus1.ID = MODBUS_DEVICE_ID;
|
||||
hmodbus1.sRS_Timeout = MODBUS_TIMEOUT;
|
||||
hmodbus1.sRS_Mode = SLAVE_ALWAYS_WAIT;
|
||||
hmodbus1.sRS_RX_Size_Mode = RS_RX_Size_NotConst;
|
||||
|
||||
// INIT
|
||||
hmodbus1.RS_STATUS = RS_Init(&hmodbus1, &rs_huart, &rs_htim, 0);
|
||||
|
||||
RS_EnableReceive();
|
||||
}
|
||||
/**
|
||||
* @brief Set or Reset Coil at its global address.
|
||||
* @param Addr - адрес коила.
|
||||
* @param WriteVal - Что записать в коил: 0 или 1.
|
||||
* @return ExceptionCode - Код исключения если коила по адресу не существует, и NO_ERRORS если все ок.
|
||||
*
|
||||
* @details Позволяет обратиться к любому коилу по его глобальному адрессу.
|
||||
Вне зависимости от того как коилы размещены в памяти.
|
||||
*/
|
||||
MB_ExceptionTypeDef MB_Write_Coil_Global(uint16_t Addr, MB_CoilsOpTypeDef WriteVal)
|
||||
{
|
||||
//---------CHECK FOR ERRORS----------
|
||||
MB_ExceptionTypeDef Exception = NO_ERRORS;
|
||||
uint16_t *coils;
|
||||
uint16_t start_shift = 0; // shift in coils register
|
||||
|
||||
//------------WRITE COIL-------------
|
||||
Exception = MB_DefineCoilsAddress(&coils, Addr, 1, &start_shift, 1);
|
||||
if(Exception == NO_ERRORS)
|
||||
{
|
||||
switch(WriteVal)
|
||||
{
|
||||
case SET_COIL:
|
||||
*coils |= (1<<start_shift);
|
||||
break;
|
||||
|
||||
case RESET_COIL:
|
||||
*coils &= ~(1<<start_shift);
|
||||
break;
|
||||
|
||||
case TOOGLE_COIL:
|
||||
*coils ^= (1<<start_shift);
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
return Exception;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief Read Coil at its global address.
|
||||
* @param Addr - адрес коила.
|
||||
* @param Exception - Указатель на переменную для кода исключения, в случа неудачи при чтении.
|
||||
* @return uint16_t - Возвращает весь регистр с маской на запрошенном коиле.
|
||||
*
|
||||
* @details Позволяет обратиться к любому коилу по его глобальному адрессу.
|
||||
Вне зависимости от того как коилы размещены в памяти.
|
||||
*/
|
||||
uint16_t MB_Read_Coil_Global(uint16_t Addr, MB_ExceptionTypeDef *Exception)
|
||||
{
|
||||
//---------CHECK FOR ERRORS----------
|
||||
MB_ExceptionTypeDef Exception_tmp;
|
||||
if(Exception == NULL) // if exception is not given to func fill it
|
||||
Exception = &Exception_tmp;
|
||||
|
||||
uint16_t *coils;
|
||||
uint16_t start_shift = 0; // shift in coils register
|
||||
|
||||
//------------READ COIL--------------
|
||||
*Exception = MB_DefineCoilsAddress(&coils, Addr, 1, &start_shift, 0);
|
||||
if(*Exception == NO_ERRORS)
|
||||
{
|
||||
return ((*coils)&(1<<start_shift));
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
//----------------FUNCTIONS FOR PROCESSING MESSAGE-------------------
|
||||
/**
|
||||
* @brief Check is address valid for certain array.
|
||||
* @param Addr - начальный адресс.
|
||||
* @param Qnt - количество запрашиваемых элементов.
|
||||
* @param R_ARR_ADDR - начальный адресс массива R_ARR.
|
||||
* @param R_ARR_NUMB - количество элементов в массиве R_ARR.
|
||||
* @return ExceptionCode - ILLEGAL DATA ADRESS если адресс недействителен, и NO_ERRORS если все ок.
|
||||
*
|
||||
* @details Позволяет определить, принадлежит ли адресс Addr массиву R_ARR:
|
||||
* Если адресс Addr находится в диапазоне адрессов массива R_ARR, то возвращаем NO_ERROR.
|
||||
* Если адресс Addr находится за пределами адрессов массива R_ARR - ILLEGAL_DATA_ADDRESSю.
|
||||
*/
|
||||
MB_ExceptionTypeDef MB_Check_Address_For_Arr(uint16_t Addr, uint16_t Qnt, uint16_t R_ARR_ADDR, uint16_t R_ARR_NUMB)
|
||||
{
|
||||
// if address from this array
|
||||
if(Addr >= R_ARR_ADDR)
|
||||
{
|
||||
// if quantity too big return error
|
||||
if ((Addr - R_ARR_ADDR) + Qnt > R_ARR_NUMB)
|
||||
{
|
||||
return ILLEGAL_DATA_ADDRESS; // return exception code
|
||||
}
|
||||
// if all ok - return no errors
|
||||
return NO_ERRORS;
|
||||
}
|
||||
// if address isnt from this array return error
|
||||
else
|
||||
return ILLEGAL_DATA_ADDRESS; // return exception code
|
||||
}
|
||||
/**
|
||||
* @brief Define Address Origin for Input/Holding Registers
|
||||
* @param pRegs - указатель на указатель регистров.
|
||||
* @param Addr - адрес начального регистра.
|
||||
* @param Qnt - количество запрашиваемых регистров.
|
||||
* @param WriteFlag - флаг регистр нужны для чтения или записи.
|
||||
* @return ExceptionCode - Код исключения если есть, и NO_ERRORS если нет.
|
||||
*
|
||||
* @details Определение адреса начального регистра.
|
||||
* @note WriteFlag пока не используется.
|
||||
*/
|
||||
MB_ExceptionTypeDef MB_DefineRegistersAddress(uint16_t **pRegs, uint16_t Addr, uint16_t Qnt, uint8_t RegisterType)
|
||||
{
|
||||
/* check quantity error */
|
||||
if (Qnt > 125)
|
||||
{
|
||||
return ILLEGAL_DATA_VALUE; // return exception code
|
||||
}
|
||||
|
||||
if(RegisterType == RegisterType_Holding)
|
||||
{
|
||||
// Default holding registers
|
||||
if(MB_Check_Address_For_Arr(Addr, Qnt, R_HOLDING_ADDR, R_HOLDING_QNT) == NO_ERRORS)
|
||||
{
|
||||
*pRegs = MB_Set_Register_Ptr(&MB_DATA.HoldRegs, Addr); // указатель на выбранный по Addr регистр
|
||||
}
|
||||
// if address doesnt match any array - return illegal data address response
|
||||
else
|
||||
{
|
||||
return ILLEGAL_DATA_ADDRESS;
|
||||
}
|
||||
}
|
||||
else if(RegisterType == RegisterType_Input)
|
||||
{
|
||||
// Default input registers
|
||||
if(MB_Check_Address_For_Arr(Addr, Qnt, R_INPUT_ADDR, R_INPUT_QNT) == NO_ERRORS)
|
||||
{
|
||||
*pRegs = MB_Set_Register_Ptr(&MB_DATA.InRegs, Addr); // указатель на выбранный по Addr регистр
|
||||
}
|
||||
// if address doesnt match any array - return illegal data address response
|
||||
else
|
||||
{
|
||||
return ILLEGAL_DATA_ADDRESS;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return ILLEGAL_FUNCTION;
|
||||
}
|
||||
// if found requeried array return no err
|
||||
return NO_ERRORS; // return no errors
|
||||
}
|
||||
/**
|
||||
* @brief Define Address Origin for coils
|
||||
* @param pCoils - указатель на указатель коилов.
|
||||
* @param Addr - адресс начального коила.
|
||||
* @param Qnt - количество запрашиваемых коилов.
|
||||
* @param start_shift - указатель на переменную содержащую сдвиг внутри регистра для начального коила.
|
||||
* @param WriteFlag - флаг коилы нужны для чтения или записи.
|
||||
* @return ExceptionCode - Код исключения если есть, и NO_ERRORS если нет.
|
||||
*
|
||||
* @details Определение адреса начального регистра запрашиваемых коилов.
|
||||
* @note WriteFlag используется для определния регистров GPIO: ODR или IDR.
|
||||
*/
|
||||
MB_ExceptionTypeDef MB_DefineCoilsAddress(uint16_t **pCoils, uint16_t Addr, uint16_t Qnt, uint16_t *start_shift, uint8_t WriteFlag)
|
||||
{
|
||||
/* check quantity error */
|
||||
if (Qnt > 2000)
|
||||
{
|
||||
return ILLEGAL_DATA_VALUE; // return exception code
|
||||
}
|
||||
|
||||
// Default coils
|
||||
if(MB_Check_Address_For_Arr(Addr, Qnt, C_CONTROL_ADDR, C_CONTROL_QNT) == NO_ERRORS)
|
||||
{
|
||||
*pCoils = MB_Set_Coil_Reg_Ptr(&MB_DATA.Coils, Addr); // указатель на выбранный по Addr массив коилов
|
||||
}
|
||||
// if address doesnt match any array - return illegal data address response
|
||||
else
|
||||
{
|
||||
return ILLEGAL_DATA_ADDRESS;
|
||||
}
|
||||
|
||||
*start_shift = Addr % 16; // set shift to requested coil
|
||||
// if found requeried array return no err
|
||||
return NO_ERRORS; // return no errors
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief Proccess command Read Coils (01 - 0x01).
|
||||
* @param modbus_msg - указатель на структуру собщения modbus.
|
||||
* @return fMessageHandled - статус о результате обработки комманды.
|
||||
* @details Обработка команды Read Coils.
|
||||
*/
|
||||
uint8_t MB_Read_Coils(RS_MsgTypeDef *modbus_msg)
|
||||
{
|
||||
//---------CHECK FOR ERRORS----------
|
||||
uint16_t *coils;
|
||||
uint16_t start_shift = 0; // shift in coils register
|
||||
|
||||
modbus_msg->Except_Code = MB_DefineCoilsAddress(&coils, modbus_msg->Addr, modbus_msg->Qnt, &start_shift, 0);
|
||||
if(modbus_msg->Except_Code != NO_ERRORS)
|
||||
return 0;
|
||||
|
||||
//-----------READING COIL------------
|
||||
// setup output message data size
|
||||
modbus_msg->ByteCnt = Divide_Up(modbus_msg->Qnt, 8);
|
||||
// create mask for coils
|
||||
uint16_t mask_for_coils = 0; // mask for coils that've been chosen
|
||||
uint16_t setted_coils = 0; // value of setted coils
|
||||
uint16_t temp_reg = 0; // temp register for saving coils that hasnt been chosen
|
||||
uint16_t coil_cnt = 0; // counter for processed coils
|
||||
|
||||
// cycle until all registers with requered coils would be processed
|
||||
int shift = start_shift; // set shift to first coil in first register
|
||||
int ind = 0; // index for coils registers and data
|
||||
for(; ind <= Divide_Up(start_shift + modbus_msg->Qnt, 16); ind++)
|
||||
{
|
||||
//----SET MASK FOR COILS REGISTER----
|
||||
mask_for_coils = 0;
|
||||
for(; shift < 0x10; shift++)
|
||||
{
|
||||
mask_for_coils |= 1<<(shift); // choose certain coil
|
||||
if(++coil_cnt >= modbus_msg->Qnt)
|
||||
break;
|
||||
}
|
||||
shift = 0; // set shift to zero for the next step
|
||||
|
||||
//-----------READ COILS--------------
|
||||
modbus_msg->DATA[ind] = (*(coils+ind)&mask_for_coils) >> start_shift;
|
||||
if(ind > 0)
|
||||
modbus_msg->DATA[ind-1] |= ((*(coils+ind)&mask_for_coils) << 16) >> start_shift;
|
||||
|
||||
}
|
||||
// т.к. DATA 16-битная, для 8-битной передачи, надо поменять местами верхний и нижний байты
|
||||
for(; ind >= 0; --ind)
|
||||
modbus_msg->DATA[ind] = ByteSwap16(modbus_msg->DATA[ind]);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Proccess command Read Holding Registers (03 - 0x03).
|
||||
* @param modbus_msg - указатель на структуру собщения modbus.
|
||||
* @return fMessageHandled - статус о результате обработки комманды.
|
||||
* @details Обработка команды Read Holding Registers.
|
||||
*/
|
||||
uint8_t MB_Read_Hold_Regs(RS_MsgTypeDef *modbus_msg)
|
||||
{
|
||||
//---------CHECK FOR ERRORS----------
|
||||
// get origin address for data
|
||||
uint16_t *pHoldRegs;
|
||||
modbus_msg->Except_Code = MB_DefineRegistersAddress(&pHoldRegs, modbus_msg->Addr, modbus_msg->Qnt, RegisterType_Holding); // определение адреса регистров
|
||||
if(modbus_msg->Except_Code != NO_ERRORS)
|
||||
return 0;
|
||||
|
||||
|
||||
//-----------READING REGS------------
|
||||
// setup output message data size
|
||||
modbus_msg->ByteCnt = modbus_msg->Qnt*2; // *2 because we transmit 8 bits, not 16 bits
|
||||
// read data
|
||||
int i;
|
||||
for (i = 0; i<modbus_msg->Qnt; i++)
|
||||
{
|
||||
modbus_msg->DATA[i] = *(pHoldRegs++);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Proccess command Read Input Registers (04 - 0x04).
|
||||
* @param modbus_msg - указатель на структуру собщения modbus.
|
||||
* @return fMessageHandled - статус о результате обработки комманды.
|
||||
* @details Обработка команды Read Input Registers.
|
||||
*/
|
||||
uint8_t MB_Read_Input_Regs(RS_MsgTypeDef *modbus_msg)
|
||||
{
|
||||
//---------CHECK FOR ERRORS----------
|
||||
// get origin address for data
|
||||
uint16_t *pInRegs;
|
||||
modbus_msg->Except_Code = MB_DefineRegistersAddress(&pInRegs, modbus_msg->Addr, modbus_msg->Qnt, RegisterType_Input); // определение адреса регистров
|
||||
if(modbus_msg->Except_Code != NO_ERRORS)
|
||||
return 0;
|
||||
|
||||
|
||||
//-----------READING REGS------------
|
||||
// setup output message data size
|
||||
modbus_msg->ByteCnt = modbus_msg->Qnt*2; // *2 because we transmit 8 bits, not 16 bits
|
||||
// read data
|
||||
int i;
|
||||
for (i = 0; i<modbus_msg->Qnt; i++)
|
||||
{
|
||||
if(*((int16_t *)pInRegs) > 0)
|
||||
modbus_msg->DATA[i] = (*pInRegs++);
|
||||
else
|
||||
modbus_msg->DATA[i] = (*pInRegs++);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
/**
|
||||
* @brief Proccess command Write Single Coils (05 - 0x05).
|
||||
* @param modbus_msg - указатель на структуру собщения modbus.
|
||||
* @return fMessageHandled - статус о результате обработки комманды.
|
||||
* @details Обработка команды Write Single Coils.
|
||||
*/
|
||||
uint8_t MB_Write_Single_Coil(RS_MsgTypeDef *modbus_msg)
|
||||
{
|
||||
//---------CHECK FOR ERRORS----------
|
||||
if ((modbus_msg->Qnt != 0x0000) && (modbus_msg->Qnt != 0xFF00))
|
||||
{
|
||||
modbus_msg->Except_Code = ILLEGAL_DATA_VALUE;
|
||||
return 0;
|
||||
}
|
||||
// define position of coil
|
||||
uint16_t *coils;
|
||||
uint16_t start_shift = 0; // shift in coils register
|
||||
modbus_msg->Except_Code = MB_DefineCoilsAddress(&coils, modbus_msg->Addr, 0, &start_shift, 1);
|
||||
if(modbus_msg->Except_Code != NO_ERRORS)
|
||||
return 0;
|
||||
|
||||
|
||||
//----------WRITTING COIL------------
|
||||
if(modbus_msg->Qnt == 0xFF00)
|
||||
*(coils) |= 1<<start_shift; // write flags corresponding to received data
|
||||
else
|
||||
*(coils) &= ~(1<<start_shift); // write flags corresponding to received data
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Proccess command Write Single Register (06 - 0x06).
|
||||
* @param modbus_msg - указатель на структуру собщения modbus.
|
||||
* @return fMessageHandled - статус о результате обработки комманды.
|
||||
* @details Обработка команды Write Single Register.
|
||||
*/
|
||||
uint8_t MB_Write_Single_Reg(RS_MsgTypeDef *modbus_msg)
|
||||
{
|
||||
// get origin address for data
|
||||
uint16_t *pHoldRegs;
|
||||
modbus_msg->Except_Code = MB_DefineRegistersAddress(&pHoldRegs, modbus_msg->Addr, 1, RegisterType_Holding); // определение адреса регистров
|
||||
if(modbus_msg->Except_Code != NO_ERRORS)
|
||||
return 0;
|
||||
|
||||
//-----------WRITTING REG------------
|
||||
*(pHoldRegs) = modbus_msg->Qnt;
|
||||
return 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Proccess command Write Multiple Coils (15 - 0x0F).
|
||||
* @param modbus_msg - указатель на структуру собщения modbus.
|
||||
* @return fMessageHandled - статус о результате обработки комманды.
|
||||
* @details Обработка команды Write Multiple Coils.
|
||||
*/
|
||||
uint8_t MB_Write_Miltuple_Coils(RS_MsgTypeDef *modbus_msg)
|
||||
{
|
||||
//---------CHECK FOR ERRORS----------
|
||||
if (modbus_msg->ByteCnt != Divide_Up(modbus_msg->Qnt, 8))
|
||||
{ // if quantity too large OR if quantity and bytes count arent match
|
||||
modbus_msg->Except_Code = ILLEGAL_DATA_VALUE;
|
||||
return 0;
|
||||
}
|
||||
// define position of coil
|
||||
uint16_t *coils; // pointer to coils
|
||||
uint16_t start_shift = 0; // shift in coils register
|
||||
modbus_msg->Except_Code = MB_DefineCoilsAddress(&coils, modbus_msg->Addr, modbus_msg->Qnt, &start_shift, 1);
|
||||
if(modbus_msg->Except_Code != NO_ERRORS)
|
||||
return 0;
|
||||
|
||||
//----------WRITTING COILS-----------
|
||||
// create mask for coils
|
||||
uint16_t mask_for_coils = 0; // mask for coils that've been chosen
|
||||
uint32_t setted_coils = 0; // value of setted coils
|
||||
uint16_t temp_reg = 0; // temp register for saving coils that hasnt been chosen
|
||||
uint16_t coil_cnt = 0; // counter for processed coils
|
||||
|
||||
// cycle until all registers with requered coils would be processed
|
||||
int shift = start_shift; // set shift to first coil in first register
|
||||
for(int ind = 0; ind <= Divide_Up(start_shift + modbus_msg->Qnt, 16); ind++)
|
||||
{
|
||||
//----SET MASK FOR COILS REGISTER----
|
||||
mask_for_coils = 0;
|
||||
for(; shift < 0x10; shift++)
|
||||
{
|
||||
mask_for_coils |= 1<<(shift); // choose certain coil
|
||||
if(++coil_cnt >= modbus_msg->Qnt)
|
||||
break;
|
||||
}
|
||||
shift = 0; // set shift to zero for the next step
|
||||
|
||||
|
||||
|
||||
//-----------WRITE COILS-------------
|
||||
// get current coils
|
||||
temp_reg = *(coils+ind);
|
||||
// set coils
|
||||
setted_coils = ByteSwap16(modbus_msg->DATA[ind]) << start_shift;
|
||||
if(ind > 0)
|
||||
{
|
||||
setted_coils |= ((ByteSwap16(modbus_msg->DATA[ind-1]) << start_shift) >> 16);
|
||||
}
|
||||
// write coils
|
||||
|
||||
*(coils+ind) = setted_coils & mask_for_coils;
|
||||
// restore untouched coils
|
||||
*(coils+ind) |= temp_reg&(~mask_for_coils);
|
||||
|
||||
|
||||
if(coil_cnt >= modbus_msg->Qnt) // if all coils written - break cycle
|
||||
break; // *kind of unnecessary
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Proccess command Write Multiple Registers (16 - 0x10).
|
||||
* @param modbus_msg - указатель на структуру собщения modbus.
|
||||
* @return fMessageHandled - статус о результате обработки комманды.
|
||||
* @details Обработка команды Write Multiple Registers.
|
||||
*/
|
||||
uint8_t MB_Write_Miltuple_Regs(RS_MsgTypeDef *modbus_msg)
|
||||
{
|
||||
//---------CHECK FOR ERRORS----------
|
||||
if (modbus_msg->Qnt*2 != modbus_msg->ByteCnt)
|
||||
{ // if quantity and bytes count arent match
|
||||
modbus_msg->Except_Code = 3;
|
||||
return 0;
|
||||
}
|
||||
// get origin address for data
|
||||
uint16_t *pHoldRegs;
|
||||
modbus_msg->Except_Code = MB_DefineRegistersAddress(&pHoldRegs, modbus_msg->Addr, modbus_msg->Qnt, RegisterType_Holding); // определение адреса регистров
|
||||
if(modbus_msg->Except_Code != NO_ERRORS)
|
||||
return 0;
|
||||
|
||||
//-----------WRITTING REGS-----------
|
||||
for (int i = 0; i<modbus_msg->Qnt; i++)
|
||||
{
|
||||
*(pHoldRegs++) = modbus_msg->DATA[i];
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
void MB_WriteObjectToMessage(char *mbdata, unsigned *ind, MB_DeviceObjectTypeDef *obj)
|
||||
{
|
||||
mbdata[(*ind)++] = obj->length;
|
||||
for (int i = 0; i < obj->length; i++)
|
||||
{
|
||||
mbdata[(*ind)++] = obj->name[i];
|
||||
}
|
||||
}
|
||||
/**
|
||||
* @brief Proccess command Read Device Identification (43/14 - 0x2B/0E).
|
||||
* @param modbus_msg - указатель на структуру собщения modbus.
|
||||
* @return fMessageHandled - статус о результате обработки комманды.
|
||||
* @details Обработка команды Write Single Register.
|
||||
*/
|
||||
uint8_t MB_Read_Device_Identification(RS_MsgTypeDef *modbus_msg)
|
||||
{
|
||||
char *mbdata = (char *)modbus_msg->DATA;
|
||||
unsigned ind = 0;
|
||||
switch(modbus_msg->DevId.ReadDevId)
|
||||
{
|
||||
case MB_BASIC_IDENTIFICATION:
|
||||
mbdata[ind++] = 0x00;
|
||||
MB_WriteObjectToMessage(mbdata, &ind, &MB_INFO.VendorName);
|
||||
mbdata[ind++] = 0x01;
|
||||
MB_WriteObjectToMessage(mbdata, &ind, &MB_INFO.ProductCode);
|
||||
mbdata[ind++] = 0x02;
|
||||
MB_WriteObjectToMessage(mbdata, &ind, &MB_INFO.Revision);
|
||||
modbus_msg->DevId.NumbOfObj = 3;
|
||||
break;
|
||||
case MB_REGULAR_IDENTIFICATION:
|
||||
mbdata[ind++] = 0x03;
|
||||
MB_WriteObjectToMessage(mbdata, &ind, &MB_INFO.VendorUrl);
|
||||
mbdata[ind++] = 0x04;
|
||||
MB_WriteObjectToMessage(mbdata, &ind, &MB_INFO.ProductName);
|
||||
mbdata[ind++] = 0x05;
|
||||
MB_WriteObjectToMessage(mbdata, &ind, &MB_INFO.ModelName);
|
||||
mbdata[ind++] = 0x06;
|
||||
MB_WriteObjectToMessage(mbdata, &ind, &MB_INFO.UserApplicationName);
|
||||
modbus_msg->DevId.NumbOfObj = 4;
|
||||
break;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
|
||||
modbus_msg->ByteCnt = ind;
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief Respond accord to received message.
|
||||
* @param hRS - указатель на хендлер RS.
|
||||
* @param RS_msg - указатель на структуру сообщения.
|
||||
* @return RS_RES - статус о результате ответа на комманду.
|
||||
* @details Обработка принятой комманды и ответ на неё.
|
||||
*/
|
||||
RS_StatusTypeDef RS_Response(RS_HandleTypeDef *hmodbus, RS_MsgTypeDef *modbus_msg)
|
||||
{
|
||||
RS_StatusTypeDef MB_RES = 0;
|
||||
hmodbus->f.MessageHandled = 0;
|
||||
hmodbus->f.EchoResponse = 0;
|
||||
RS_Reset_TX_Flags(hmodbus); // reset flag for correct transmit
|
||||
|
||||
if(modbus_msg->Func_Code < ERR_VALUES_START)// if no errors after parsing
|
||||
{
|
||||
switch (modbus_msg->Func_Code)
|
||||
{
|
||||
// Read Coils
|
||||
case MB_R_COILS:
|
||||
hmodbus->f.MessageHandled = MB_Read_Coils(hmodbus->pMessagePtr);
|
||||
break;
|
||||
|
||||
// Read Hodling Registers
|
||||
case MB_R_HOLD_REGS:
|
||||
hmodbus->f.MessageHandled = MB_Read_Hold_Regs(hmodbus->pMessagePtr);
|
||||
break;
|
||||
case MB_R_IN_REGS:
|
||||
hmodbus->f.MessageHandled = MB_Read_Input_Regs(hmodbus->pMessagePtr);
|
||||
break;
|
||||
|
||||
|
||||
// Write Single Coils
|
||||
case MB_W_COIL:
|
||||
hmodbus->f.MessageHandled = MB_Write_Single_Coil(hmodbus->pMessagePtr);
|
||||
if(hmodbus->f.MessageHandled)
|
||||
{
|
||||
hmodbus->f.EchoResponse = 1;
|
||||
hmodbus->RS_Message_Size -= 2; // echo response if write ok (minus 2 cause of two CRC bytes)
|
||||
}
|
||||
break;
|
||||
|
||||
case MB_W_HOLD_REG:
|
||||
hmodbus->f.MessageHandled = MB_Write_Single_Reg(hmodbus->pMessagePtr);
|
||||
if(hmodbus->f.MessageHandled)
|
||||
{
|
||||
hmodbus->f.EchoResponse = 1;
|
||||
hmodbus->RS_Message_Size -= 2; // echo response if write ok (minus 2 cause of two CRC bytes)
|
||||
}
|
||||
break;
|
||||
|
||||
// Write Multiple Coils
|
||||
case MB_W_COILS:
|
||||
hmodbus->f.MessageHandled = MB_Write_Miltuple_Coils(hmodbus->pMessagePtr);
|
||||
if(hmodbus->f.MessageHandled)
|
||||
{
|
||||
hmodbus->f.EchoResponse = 1;
|
||||
hmodbus->RS_Message_Size = 6; // echo response if write ok (withous data bytes)
|
||||
}
|
||||
break;
|
||||
|
||||
// Write Multiple Registers
|
||||
case MB_W_HOLD_REGS:
|
||||
hmodbus->f.MessageHandled = MB_Write_Miltuple_Regs(hmodbus->pMessagePtr);
|
||||
if(hmodbus->f.MessageHandled)
|
||||
{
|
||||
hmodbus->f.EchoResponse = 1;
|
||||
hmodbus->RS_Message_Size = 6; // echo response if write ok (withous data bytes)
|
||||
}
|
||||
break;
|
||||
|
||||
case MB_R_DEVICE_INFO:
|
||||
hmodbus->f.MessageHandled = MB_Read_Device_Identification(hmodbus->pMessagePtr);
|
||||
break;
|
||||
|
||||
|
||||
/* unknown func code */
|
||||
default: modbus_msg->Except_Code = 0x01; /* set exception code: illegal function */
|
||||
}
|
||||
|
||||
if(hmodbus->f.MessageHandled == 0)
|
||||
{
|
||||
modbus_msg->Func_Code += ERR_VALUES_START;
|
||||
}
|
||||
else
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
// if we need response - check that transmit isnt busy
|
||||
if( RS_Is_TX_Busy(hmodbus) )
|
||||
RS_Abort(hmodbus, ABORT_TX); // if tx busy - set it free
|
||||
|
||||
// Transmit right there, or sets (fDeferredResponse) to transmit response in main code
|
||||
MB_RES = RS_Handle_Transmit_Start(hmodbus, modbus_msg);
|
||||
|
||||
hmodbus->RS_STATUS = MB_RES;
|
||||
return MB_RES;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Collect message in buffer to transmit it.
|
||||
* @param hRS - указатель на хендлер RS.
|
||||
* @param RS_msg - указатель на структуру сообщения.
|
||||
* @param msg_uart_buff - указатель на буффер UART.
|
||||
* @return RS_RES - статус о результате заполнения буфера.
|
||||
* @details Заполнение буффера UART из структуры сообщения.
|
||||
*/
|
||||
RS_StatusTypeDef RS_Collect_Message(RS_HandleTypeDef *hmodbus, RS_MsgTypeDef *modbus_msg, uint8_t *modbus_uart_buff)
|
||||
{
|
||||
int ind = 0; // ind for modbus-uart buffer
|
||||
|
||||
if(hmodbus->f.EchoResponse && hmodbus->f.MessageHandled) // if echo response need
|
||||
ind = hmodbus->RS_Message_Size;
|
||||
else
|
||||
{
|
||||
//------INFO ABOUT DATA/MESSAGE------
|
||||
//-----------[first bytes]-----------
|
||||
// set ID of message/user
|
||||
modbus_uart_buff[ind++] = modbus_msg->MbAddr;
|
||||
|
||||
// set dat or err response
|
||||
modbus_uart_buff[ind++] = modbus_msg->Func_Code;
|
||||
|
||||
if (modbus_msg->Func_Code < ERR_VALUES_START) // if no error occur
|
||||
{
|
||||
// fill modbus header
|
||||
if(modbus_msg->Func_Code == MB_R_DEVICE_INFO) // devide identification header
|
||||
{
|
||||
modbus_uart_buff[ind++] = modbus_msg->DevId.MEI_Type;
|
||||
modbus_uart_buff[ind++] = modbus_msg->DevId.ReadDevId;
|
||||
modbus_uart_buff[ind++] = modbus_msg->DevId.Conformity;
|
||||
modbus_uart_buff[ind++] = modbus_msg->DevId.MoreFollows;
|
||||
modbus_uart_buff[ind++] = modbus_msg->DevId.NextObjId;
|
||||
modbus_uart_buff[ind++] = modbus_msg->DevId.NumbOfObj;
|
||||
|
||||
if (modbus_msg->ByteCnt > DATA_SIZE*2) // if ByteCnt less than DATA_SIZE
|
||||
{
|
||||
return RS_COLLECT_MSG_ERR;
|
||||
}
|
||||
|
||||
|
||||
//---------------DATA----------------
|
||||
//-----------[data bytes]------------
|
||||
uint8_t *tmp_data_addr = (uint8_t *)modbus_msg->DATA;
|
||||
for(int i = 0; i < modbus_msg->ByteCnt; i++) // filling buffer with data
|
||||
{ // set data
|
||||
modbus_uart_buff[ind++] = *tmp_data_addr;
|
||||
tmp_data_addr++;
|
||||
}
|
||||
|
||||
}
|
||||
else // modbus data header
|
||||
{
|
||||
// set size of received data
|
||||
if (modbus_msg->ByteCnt <= DATA_SIZE*2) // if ByteCnt less than DATA_SIZE
|
||||
modbus_uart_buff[ind++] = modbus_msg->ByteCnt;
|
||||
else // otherwise return data_size err
|
||||
{
|
||||
return RS_COLLECT_MSG_ERR;
|
||||
}
|
||||
|
||||
//---------------DATA----------------
|
||||
//-----------[data bytes]------------
|
||||
uint16_t *tmp_data_addr = (uint16_t *)modbus_msg->DATA;
|
||||
for(int i = 0; i < modbus_msg->ByteCnt; i++) // filling buffer with data
|
||||
{ // set data
|
||||
if (i%2 == 0) // HI byte
|
||||
modbus_uart_buff[ind++] = (*tmp_data_addr)>>8;
|
||||
else // LO byte
|
||||
{
|
||||
modbus_uart_buff[ind++] = *tmp_data_addr;
|
||||
tmp_data_addr++;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
else // if some error occur
|
||||
{ // send expection code
|
||||
modbus_uart_buff[ind++] = modbus_msg->Except_Code;
|
||||
}
|
||||
}
|
||||
//---------------CRC----------------
|
||||
//---------[last 16 bytes]----------
|
||||
// calc crc of received data
|
||||
uint16_t CRC_VALUE = crc16(modbus_uart_buff, ind);
|
||||
// write crc to message structure and modbus-uart buffer
|
||||
modbus_msg->MB_CRC = CRC_VALUE;
|
||||
modbus_uart_buff[ind++] = CRC_VALUE;
|
||||
modbus_uart_buff[ind++] = CRC_VALUE >> 8;
|
||||
|
||||
hmodbus->RS_Message_Size = ind;
|
||||
|
||||
return RS_OK; // returns ok
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Parse message from buffer to process it.
|
||||
* @param hRS - указатель на хендлер RS.
|
||||
* @param RS_msg - указатель на структуру сообщения.
|
||||
* @param msg_uart_buff - указатель на буффер UART.
|
||||
* @return RS_RES - статус о результате заполнения структуры.
|
||||
* @details Заполнение структуры сообщения из буффера UART.
|
||||
*/
|
||||
RS_StatusTypeDef RS_Parse_Message(RS_HandleTypeDef *hmodbus, RS_MsgTypeDef *modbus_msg, uint8_t *modbus_uart_buff)
|
||||
{
|
||||
uint32_t check_empty_buff;
|
||||
int ind = 0; // ind for modbus-uart buffer
|
||||
//-----INFO ABOUT DATA/MESSAGE-------
|
||||
//-----------[first bits]------------
|
||||
// get ID of message/user
|
||||
modbus_msg->MbAddr = modbus_uart_buff[ind++];
|
||||
if(modbus_msg->MbAddr != hmodbus->ID)
|
||||
return RS_SKIP;
|
||||
|
||||
// get func code
|
||||
modbus_msg->Func_Code = modbus_uart_buff[ind++];
|
||||
if(modbus_msg->Func_Code == MB_R_DEVICE_INFO) // if it device identification request
|
||||
{
|
||||
modbus_msg->DevId.MEI_Type = modbus_uart_buff[ind++];
|
||||
modbus_msg->DevId.ReadDevId = modbus_uart_buff[ind++];
|
||||
modbus_msg->DevId.NextObjId = modbus_uart_buff[ind++];
|
||||
modbus_msg->ByteCnt = 0;
|
||||
}
|
||||
else // if its classic modbus request
|
||||
{
|
||||
// get address from CMD
|
||||
modbus_msg->Addr = modbus_uart_buff[ind++] << 8;
|
||||
modbus_msg->Addr |= modbus_uart_buff[ind++];
|
||||
|
||||
// get address from CMD
|
||||
modbus_msg->Qnt = modbus_uart_buff[ind++] << 8;
|
||||
modbus_msg->Qnt |= modbus_uart_buff[ind++];
|
||||
}
|
||||
if(hmodbus->f.RX_Half == 0) // if all message received
|
||||
{
|
||||
//---------------DATA----------------
|
||||
// (optional)
|
||||
if (modbus_msg->ByteCnt != 0)
|
||||
{
|
||||
ind++; // increment ind for data_size byte
|
||||
//check that data size is correct
|
||||
if (modbus_msg->ByteCnt > DATA_SIZE*2)
|
||||
{
|
||||
modbus_msg->Func_Code += ERR_VALUES_START;
|
||||
return RS_PARSE_MSG_ERR;
|
||||
}
|
||||
uint16_t *tmp_data_addr = (uint16_t *)modbus_msg->DATA;
|
||||
for(int i = 0; i < modbus_msg->ByteCnt; i++) // /2 because we transmit 8 bits, not 16 bits
|
||||
{ // set data
|
||||
if (i%2 == 0)
|
||||
*tmp_data_addr = ((uint16_t)modbus_uart_buff[ind++] << 8);
|
||||
else
|
||||
{
|
||||
*tmp_data_addr |= modbus_uart_buff[ind++];
|
||||
tmp_data_addr++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//---------------CRC----------------
|
||||
//----------[last 16 bits]----------
|
||||
// calc crc of received data
|
||||
uint16_t CRC_VALUE = crc16(modbus_uart_buff, ind);
|
||||
// get crc of received data
|
||||
modbus_msg->MB_CRC = modbus_uart_buff[ind++];
|
||||
modbus_msg->MB_CRC |= modbus_uart_buff[ind++] << 8;
|
||||
// compare crc
|
||||
if (modbus_msg->MB_CRC != CRC_VALUE)
|
||||
{
|
||||
modbus_msg->Func_Code += ERR_VALUES_START;
|
||||
}
|
||||
// hmodbus->MB_RESPONSE = MB_CRC_ERR; // set func code - error about wrong crc
|
||||
|
||||
// check is buffer empty
|
||||
check_empty_buff = 0;
|
||||
for(int i=0; i<ind;i++)
|
||||
check_empty_buff += modbus_uart_buff[i];
|
||||
// if(check_empty_buff == 0)
|
||||
// hmodbus->MB_RESPONSE = MB_EMPTY_MSG; //
|
||||
}
|
||||
|
||||
return RS_OK;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Define size of RX Message that need to be received.
|
||||
* @param hRS - указатель на хендлер RS.
|
||||
* @param rx_data_size - указатель на переменную для записи кол-ва байт для принятия.
|
||||
* @return RS_RES - статус о корректности рассчета кол-ва байт для принятия.
|
||||
* @details Определение сколько байтов надо принять по протоколу.
|
||||
*/
|
||||
RS_StatusTypeDef RS_Define_Size_of_RX_Message(RS_HandleTypeDef *hmodbus, uint32_t *rx_data_size)
|
||||
{
|
||||
RS_StatusTypeDef MB_RES = 0;
|
||||
|
||||
MB_RES = RS_Parse_Message(hmodbus, hmodbus->pMessagePtr, hmodbus->pBufferPtr);
|
||||
if(MB_RES == RS_SKIP) // if message not for us
|
||||
return MB_RES; // return
|
||||
|
||||
|
||||
if ((hmodbus->pMessagePtr->Func_Code & ~ERR_VALUES_START) < 0x0F)
|
||||
{
|
||||
hmodbus->pMessagePtr->ByteCnt = 0;
|
||||
*rx_data_size = 1;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
hmodbus->pMessagePtr->ByteCnt = hmodbus->pBufferPtr[RX_FIRST_PART_SIZE-1]; // get numb of data in command
|
||||
// +1 because that defines is size, not ind.
|
||||
*rx_data_size = hmodbus->pMessagePtr->ByteCnt + 2;
|
||||
}
|
||||
|
||||
|
||||
if(hmodbus->pMessagePtr->Func_Code == MB_R_DEVICE_INFO)
|
||||
{
|
||||
*rx_data_size = 0;
|
||||
}
|
||||
|
||||
hmodbus->RS_Message_Size = RX_FIRST_PART_SIZE + *rx_data_size; // size of whole message
|
||||
return RS_OK;
|
||||
}
|
||||
|
||||
//-----------------------------FOR USER------------------------------
|
||||
//-------------------------------------------------------------------
|
||||
|
||||
|
||||
void MB_DevoceInentificationInit(void)
|
||||
{
|
||||
MB_INFO.VendorName.name = MODBUS_VENDOR_NAME;
|
||||
MB_INFO.ProductCode.name = MODBUS_PRODUCT_CODE;
|
||||
MB_INFO.Revision.name = MODBUS_REVISION;
|
||||
MB_INFO.VendorUrl.name = MODBUS_VENDOR_URL;
|
||||
MB_INFO.ProductName.name = MODBUS_PRODUCT_NAME;
|
||||
MB_INFO.ModelName.name = MODBUS_MODEL_NAME;
|
||||
MB_INFO.UserApplicationName.name = MODBUS_USER_APPLICATION_NAME;
|
||||
|
||||
|
||||
MB_INFO.VendorName.length = sizeof(MODBUS_VENDOR_NAME);
|
||||
MB_INFO.ProductCode.length = sizeof(MODBUS_PRODUCT_CODE);
|
||||
MB_INFO.Revision.length = sizeof(MODBUS_REVISION);
|
||||
MB_INFO.VendorUrl.length = sizeof(MODBUS_VENDOR_URL);
|
||||
MB_INFO.ProductName.length = sizeof(MODBUS_PRODUCT_NAME);
|
||||
MB_INFO.ModelName.length = sizeof(MODBUS_MODEL_NAME);
|
||||
MB_INFO.UserApplicationName.length = sizeof(MODBUS_USER_APPLICATION_NAME);
|
||||
}
|
||||
|
||||
|
||||
|
||||
372
Core/Modbus/modbus.h
Normal file
372
Core/Modbus/modbus.h
Normal file
@@ -0,0 +1,372 @@
|
||||
/**
|
||||
**************************************************************************
|
||||
* @file modbus.h
|
||||
* @brief Заголовочный файл модуля MODBUS.
|
||||
* @details Данный файл необходимо подключить в rs_message.h. После подключать
|
||||
* rs_message.h к основному проекту.
|
||||
*
|
||||
* @defgroup MODBUS
|
||||
* @brief Modbus stuff
|
||||
*
|
||||
*************************************************************************/
|
||||
#ifndef __MODBUS_H_
|
||||
#define __MODBUS_H_
|
||||
|
||||
#include "modbus_config.h"
|
||||
#include "modbus_data.h"
|
||||
//#include "settings.h" // for modbus settings
|
||||
|
||||
/**
|
||||
* @addtogroup MODBUS_SETTINGS
|
||||
* @ingroup MODBUS
|
||||
* @brief Some defines for modbus
|
||||
@{
|
||||
*/
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////---SETTINGS---/////////////////////////////
|
||||
// USER SETTINGS FOR MODBUS IN interface_config.h
|
||||
//////////////////////////---SETTINGS---/////////////////////////////
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
/////////////////////---USER MESSAGE DEFINES---//////////////////////
|
||||
//-------------DEFINES FOR STRUCTURE----------------
|
||||
/* defines for structure of modbus message */
|
||||
#define MbAddr_SIZE 1 ///< size of (MbAddr)
|
||||
#define Func_Code_SIZE 1 ///< size of (Func_Code)
|
||||
#define Addr_SIZE 2 ///< size of (Addr)
|
||||
#define Qnt_SIZE 2 ///< size of (Qnt)
|
||||
#define ByteCnt_SIZE 1 ///< size of (ByteCnt)
|
||||
#define DATA_SIZE 125 ///< maximum number of data: DWORD (NOT MESSAGE SIZE)
|
||||
#define CRC_SIZE 2 ///< size of (MB_CRC) in bytes
|
||||
|
||||
/** @brief Size of whole message */
|
||||
#define INFO_SIZE_MAX (MbAddr_SIZE+Func_Code_SIZE+Addr_SIZE+Qnt_SIZE+ByteCnt_SIZE)
|
||||
|
||||
/** @brief Size of first part of message that will be received
|
||||
first receive info part of message, than defines size of rest message*/
|
||||
#define RX_FIRST_PART_SIZE INFO_SIZE_MAX
|
||||
|
||||
/** @brief Size of buffer: max size of whole message */
|
||||
#define MSG_SIZE_MAX (INFO_SIZE_MAX + DATA_SIZE*2 + CRC_SIZE) // max possible size of message
|
||||
|
||||
/** @brief Structure for modbus exception codes */
|
||||
typedef enum //MB_ExceptionTypeDef
|
||||
{
|
||||
// reading
|
||||
NO_ERRORS = 0x00, ///< no errors
|
||||
ILLEGAL_FUNCTION = 0x01, ///< Принятый код функции не может быть обработан
|
||||
ILLEGAL_DATA_ADDRESS = 0x02, ///< Адрес данных, указанный в запросе, недоступен
|
||||
ILLEGAL_DATA_VALUE = 0x03, ///< Значение, содержащееся в поле данных запроса, является недопустимой величиной
|
||||
SLAVE_DEVICE_FAILURE = 0x04, ///< Невосстанавливаемая ошибка имела место, пока ведомое устройство пыталось выполнить затребованное действие
|
||||
// ACKNOWLEDGE = 0x05, ///< idk
|
||||
// SLAVE_DEVICE_BUSY = 0x06, ///< idk
|
||||
// MEMORY_PARITY_ERROR = 0x08, ///< idk
|
||||
}MB_ExceptionTypeDef;
|
||||
|
||||
#define ERR_VALUES_START 0x80U ///< from this value starts error func codes
|
||||
/** @brief Structure for modbus func codes */
|
||||
typedef enum //MB_FunctonTypeDef
|
||||
{
|
||||
/* COMMANDS */
|
||||
// reading
|
||||
MB_R_COILS = 0x01, ///< Чтение битовых ячеек
|
||||
MB_R_DISC_IN = 0x02, ///< Чтение дискретных входов
|
||||
#ifndef MODBUS_SWITCH_COMMAND_R_IN_REGS_AND_R_HOLD_REGS
|
||||
MB_R_HOLD_REGS = 0x03, ///< Чтение входных регистров
|
||||
MB_R_IN_REGS = 0x04, ///< Чтение регистров хранения
|
||||
#else
|
||||
MB_R_HOLD_REGS = 0x04, ///< Чтение входных регистров
|
||||
MB_R_IN_REGS = 0x03, ///< Чтение регистров хранения
|
||||
#endif
|
||||
|
||||
// writting
|
||||
MB_W_COIL = 0x05, ///< Запись битовой ячейки
|
||||
MB_W_HOLD_REG = 0x06, ///< Запись одиночного регистра
|
||||
MB_W_COILS = 0x0F, ///< Запись нескольких битовых ячеек
|
||||
MB_W_HOLD_REGS = 0x10, ///< Запись нескольких регистров
|
||||
|
||||
MB_R_DEVICE_INFO = 0x2B, ///< Чтения информации об устройстве
|
||||
|
||||
/* ERRORS */
|
||||
// error reading
|
||||
MB_ERR_R_COILS = MB_R_COILS + ERR_VALUES_START, ///< Ошибка чтения битовых ячеек
|
||||
MB_ERR_R_DISC_IN = MB_R_DISC_IN + ERR_VALUES_START, ///< Ошибка чтения дискретных входов
|
||||
MB_ERR_R_IN_REGS = MB_R_IN_REGS + ERR_VALUES_START, ///< Ошибка чтения регистров хранения
|
||||
MB_ERR_R_HOLD_REGS = MB_R_HOLD_REGS + ERR_VALUES_START, ///< Ошибка чтения входных регистров
|
||||
|
||||
// error writting
|
||||
MB_ERR_W_COIL = MB_W_COIL + ERR_VALUES_START, ///< Ошибка записи битовой ячейки
|
||||
MB_ERR_W_HOLD_REG = MB_W_HOLD_REG + ERR_VALUES_START, ///< Ошибка записи одиночного регистра
|
||||
MB_ERR_W_COILS = MB_W_COILS + ERR_VALUES_START, ///< Ошибка записи нескольких битовых ячеек
|
||||
MB_ERR_W_HOLD_REGS = MB_W_HOLD_REGS + ERR_VALUES_START, ///< Ошибка записи нескольких регистров
|
||||
}MB_FunctonTypeDef;
|
||||
|
||||
/** @brief Structure for MEI func codes */
|
||||
typedef enum //MB_FunctonTypeDef
|
||||
{
|
||||
MEI_DEVICE_IDENTIFICATION = 0x0E,
|
||||
}MB_MEITypeDef;
|
||||
|
||||
/** @brief Structure for MEI func codes */
|
||||
typedef enum //MB_FunctonTypeDef
|
||||
{
|
||||
MB_BASIC_IDENTIFICATION = 0x01,
|
||||
MB_REGULAR_IDENTIFICATION = 0x02,
|
||||
|
||||
|
||||
/* ERRORS */
|
||||
MB_ERR_BASIC_IDENTIFICATION = MB_BASIC_IDENTIFICATION + ERR_VALUES_START,
|
||||
MB_ERR_REGULAR_IDENTIFICATION = MB_REGULAR_IDENTIFICATION + ERR_VALUES_START,
|
||||
}MB_ConformityTypeDef;
|
||||
|
||||
/** @brief Structure for decive identification message type */
|
||||
typedef struct
|
||||
{
|
||||
MB_MEITypeDef MEI_Type; ///< MEI Type assigned number for Device Identification Interface
|
||||
MB_ConformityTypeDef ReadDevId;
|
||||
MB_ConformityTypeDef Conformity;
|
||||
uint8_t MoreFollows; ///< in this library always a zero
|
||||
uint8_t NextObjId;
|
||||
uint8_t NumbOfObj;
|
||||
}MB_DevIdMsgTypeDef;
|
||||
|
||||
/** @brief Structure for modbus messsage */
|
||||
typedef struct // RS_MsgTypeDef
|
||||
{
|
||||
uint8_t MbAddr; ///< Modbus Slave Address
|
||||
MB_FunctonTypeDef Func_Code; ///< Modbus Function Code
|
||||
MB_DevIdMsgTypeDef DevId; ///< Read Device Identification Header struct
|
||||
uint16_t Addr; ///< Modbus Address of data
|
||||
uint16_t Qnt; ///< Quantity of modbus data
|
||||
uint8_t ByteCnt; ///< Quantity of bytes of data in message to transmit/receive
|
||||
|
||||
uint16_t DATA[DATA_SIZE]; ///< Modbus Data
|
||||
MB_ExceptionTypeDef Except_Code; ///< Exception Code for the command
|
||||
|
||||
uint16_t MB_CRC; ///< Modbus CRC
|
||||
}RS_MsgTypeDef;
|
||||
//--------------------------------------------------
|
||||
extern RS_MsgTypeDef MODBUS_MSG;
|
||||
/////////////////////---MODBUS USER SETTINGS---//////////////////////
|
||||
|
||||
/** MODBUS_SETTINGS
|
||||
* @}
|
||||
*/
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
////////////////////---MODBUS MESSAGE DEFINES---/////////////////////
|
||||
/**
|
||||
* @addtogroup MODBUS_MESSAGE_DEFINES
|
||||
* @ingroup MODBUS
|
||||
* @brief Some defines for modbus
|
||||
@{
|
||||
*/
|
||||
/** @brief Structure for coils operation */
|
||||
typedef enum
|
||||
{
|
||||
SET_COIL,
|
||||
RESET_COIL,
|
||||
TOOGLE_COIL,
|
||||
}MB_CoilsOpTypeDef;
|
||||
|
||||
//--------------------------------------------------
|
||||
|
||||
/**
|
||||
* @brief Macros to set pointer to 16-bit array
|
||||
* @param _arr_ - массив регистров (16-бит).
|
||||
*/
|
||||
#define MB_Set_Arr16_Ptr(_arr_) ((uint16_t*)(&(_arr_)))
|
||||
/**
|
||||
* @brief Macros to set pointer to register
|
||||
* @param _parr_ - массив регистров.
|
||||
* @param _addr_ - Номер регистра (его индекс) от начала массива _arr_.
|
||||
*/
|
||||
#define MB_Set_Register_Ptr(_parr_, _addr_) ((uint16_t *)(_parr_)+(_addr_))
|
||||
|
||||
/**
|
||||
* @brief Macros to set pointer to a certain register that contains certain coil
|
||||
* @param _parr_ - массив коилов.
|
||||
* @param _coil_ - Номер коила от начала массива _arr_.
|
||||
* @note Используется вместе с @ref MB_Set_Coil_Mask
|
||||
@verbatim Пояснение выражений
|
||||
(_coil_/16) - get index (address shift) of register that contain certain coil
|
||||
Visual explanation: 30th coil in coils registers array
|
||||
xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxCx
|
||||
|register[0]----| |register[1]----|
|
||||
|skip this------| |get this-------|
|
||||
|shift to 14 bit|
|
||||
@endverbatim
|
||||
*/
|
||||
#define MB_Set_Coil_Reg_Ptr(_parr_, _coil_) ((uint16_t *)(_parr_)+((_coil_)/16))
|
||||
/**
|
||||
* @brief Macros to set mask to a certain bit in coils register
|
||||
* @param _coil_ - Номер коила от начала массива _arr_.
|
||||
* @note Используется вместе с @ref MB_Set_Coil_Reg_Ptr
|
||||
@verbatim Пояснение выражений
|
||||
(16*(_coil_/16) - how many coils we need to skip. e.g. (16*30/16) - skip 16 coils from first register
|
||||
_coil_-(16*(_coil_/16)) - shift to certain coil in certain register
|
||||
e.g. Coil(30) gets in register[1] (30/16 = 1) coil №14 (30 - (16*30/16) = 30 - 16 = 14)
|
||||
|
||||
Visual explanation: 30th coil in coils registers array
|
||||
xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxCx
|
||||
|register[0]----| |register[1]----|
|
||||
|skip this------| |get this-------|
|
||||
|shift to 14 bit|
|
||||
@endverbatim
|
||||
*/
|
||||
#define MB_Set_Coil_Mask(_coil_) (1 << ( _coil_ - (16*((_coil_)/16)) ))
|
||||
|
||||
/**
|
||||
* @brief Read Coil at its local address.
|
||||
* @param _parr_ - массив коилов.
|
||||
* @param _coil_ - Номер коила от начала массива _arr_.
|
||||
* @return uint16_t - Возвращает запрошенный коил на 0м бите.
|
||||
*
|
||||
* @details Позволяет обратиться к коилу по адресу относительно _arr_.
|
||||
*/
|
||||
#define MB_Read_Coil_Local(_parr_, _coil_) (( *MB_Set_Coil_Reg_Ptr(_parr_, _coil_) & MB_Set_Coil_Mask(_coil_) ) >> (_coil_))
|
||||
/**
|
||||
* @brief Set Coil at its local address.
|
||||
* @param _parr_ - указатель на массив коилов.
|
||||
* @param _coil_ - Номер коила от начала массива _arr_.
|
||||
*
|
||||
* @details Позволяет обратиться к коилу по адресу относительно _arr_.
|
||||
*/
|
||||
#define MB_Set_Coil_Local(_parr_, _coil_) *MB_Set_Coil_Reg_Ptr(_parr_, _coil_) |= MB_Set_Coil_Mask(_coil_)
|
||||
/**
|
||||
* @brief Reset Coil at its local address.
|
||||
* @param _parr_ - указатель на массив коилов.
|
||||
* @param _coil_ - Номер коила от начала массива _arr_.
|
||||
*
|
||||
* @details Позволяет обратиться к коилу по адресу относительно _arr_.
|
||||
*/
|
||||
#define MB_Reset_Coil_Local(_parr_, _coil_) *MB_Set_Coil_Reg_Ptr(_parr_, _coil_) &= ~(MB_Set_Coil_Mask(_coil_))
|
||||
/**
|
||||
* @brief Set Coil at its local address.
|
||||
* @param _parr_ - указатель на массив коилов.
|
||||
* @param _coil_ - Номер коила от начала массива _arr_.
|
||||
*
|
||||
* @details Позволяет обратиться к коилу по адресу относительно _arr_.
|
||||
*/
|
||||
#define MB_Toogle_Coil_Local(_parr_, _coil_) *MB_Set_Coil_Reg_Ptr(_parr_, _coil_) ^= MB_Set_Coil_Mask(_coil_)
|
||||
//--------------------------------------------------
|
||||
|
||||
|
||||
//------------------OTHER DEFINES-------------------
|
||||
#define RegisterType_Holding 0
|
||||
#define RegisterType_Input 1
|
||||
#define RegisterType_Discrete 2
|
||||
// create hadnles and settings for uart, tim, rs with _modbus_ name
|
||||
//--------------------------------------------------
|
||||
|
||||
#ifndef Divide_Up
|
||||
/**
|
||||
* @brief Calc dividing including remainder
|
||||
* @param _val_ - делимое.
|
||||
* @param _div_ - делитель.
|
||||
* @details Если результат деления без остатка: он возвращается как есть
|
||||
Если с остатком - округляется вверх
|
||||
*/
|
||||
//#define Divide_Up(_val_, _div_) (((_val_)%(_div_))? (_val_)/(_div_)+1 : (_val_)/_div_) /* через тернарный оператор */
|
||||
#define Divide_Up(_val_, _div_) ((_val_ - 1) / _div_) + 1 /* через мат выражение */
|
||||
#endif
|
||||
|
||||
#ifndef ByteSwap16
|
||||
/**
|
||||
* @brief Swap between Little Endian and Big Endian
|
||||
* @param v - Переменная для свапа.
|
||||
* @return v (new) - Свапнутая переменная.
|
||||
* @details Переключения между двумя типами хранения слова: HI-LO байты и LO-HI байты.
|
||||
*/
|
||||
#define ByteSwap16(v) (((v&0xFF00) >> (8)) | ((v&0x00FF) << (8)))
|
||||
#endif
|
||||
/** GENERAL_MODBUS_STUFF
|
||||
* @}
|
||||
*/
|
||||
////////////////////---MODBUS MESSAGE DEFINES---/////////////////////
|
||||
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
/////////////////////////---FUNCTIONS---/////////////////////////////
|
||||
/**
|
||||
* @addtogroup MODBUS_FUNCTIONS
|
||||
* @ingroup MODBUS
|
||||
* @brief Function for controling modbus communication
|
||||
*/
|
||||
|
||||
//----------------FUNCTIONS FOR USER----------------
|
||||
/**
|
||||
* @addtogroup MODBUS_DATA_ACCESS_FUNCTIONS
|
||||
* @ingroup MODBUS_FUNCTIONS
|
||||
* @brief Function for user use
|
||||
@{
|
||||
*/
|
||||
/* First set up of MODBUS */
|
||||
void MODBUS_FirstInit(void);
|
||||
/* Set or Reset Coil at its global address */
|
||||
MB_ExceptionTypeDef MB_Write_Coil_Global(uint16_t Addr, MB_CoilsOpTypeDef WriteVal);
|
||||
/* Read Coil at its global address */
|
||||
uint16_t MB_Read_Coil_Global(uint16_t Addr, MB_ExceptionTypeDef *Exception);
|
||||
|
||||
/** MODBUS_DATA_ACCESS_FUNCTIONS
|
||||
* @}
|
||||
*/
|
||||
|
||||
//---------PROCESS MODBUS COMMAND FUNCTIONS---------
|
||||
/**
|
||||
* @addtogroup MODBUS_CMD_PROCESS_FUNCTIONS
|
||||
* @ingroup MODBUS_FUNCTIONS
|
||||
* @brief Function process commands
|
||||
@{
|
||||
*/
|
||||
/* Check is address valid for certain array */
|
||||
MB_ExceptionTypeDef MB_Check_Address_For_Arr(uint16_t Addr, uint16_t Qnt, uint16_t R_ARR_ADDR, uint16_t R_ARR_NUMB);
|
||||
/* Define Address Origin for Input/Holding Registers */
|
||||
MB_ExceptionTypeDef MB_DefineRegistersAddress(uint16_t **pRegs, uint16_t Addr, uint16_t Qnt, uint8_t RegisterType);
|
||||
/* Define Address Origin for coils */
|
||||
MB_ExceptionTypeDef MB_DefineCoilsAddress(uint16_t **pCoils, uint16_t Addr, uint16_t Qnt, uint16_t *start_shift, uint8_t WriteFlag);
|
||||
/* Proccess command Read Coils (01 - 0x01) */
|
||||
uint8_t MB_Read_Coils(RS_MsgTypeDef *modbus_msg);
|
||||
/* Proccess command Read Holding Registers (03 - 0x03) */
|
||||
uint8_t MB_Read_Hold_Regs(RS_MsgTypeDef *modbus_msg);
|
||||
/* Proccess command Read Input Registers (04 - 0x04) */
|
||||
uint8_t MB_Read_Input_Regs(RS_MsgTypeDef *modbus_msg);
|
||||
/* Proccess command Write Single Coils (05 - 0x05) */
|
||||
uint8_t MB_Write_Single_Coil(RS_MsgTypeDef *modbus_msg);
|
||||
/* Proccess command Write Multiple Coils (15 - 0x0F) */
|
||||
uint8_t MB_Write_Miltuple_Coils(RS_MsgTypeDef *modbus_msg);
|
||||
/* Proccess command Write Multiple Register (16 - 0x10) */
|
||||
uint8_t MB_Write_Miltuple_Regs(RS_MsgTypeDef *modbus_msg);
|
||||
|
||||
/** MODBUS_DATA_ACCESS_FUNCTIONS
|
||||
* @}
|
||||
*/
|
||||
/////////////////////////---FUNCTIONS---/////////////////////////////
|
||||
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
/////////////////////////---CALC DEFINES---//////////////////////////
|
||||
|
||||
|
||||
// TRACES DEFINES
|
||||
#ifndef Trace_MB_UART_Enter
|
||||
#define Trace_MB_UART_Enter()
|
||||
#endif //Trace_MB_UART_Enter
|
||||
|
||||
#ifndef Trace_MB_UART_Exit
|
||||
#define Trace_MB_UART_Exit()
|
||||
#endif //Trace_MB_UART_Exit
|
||||
|
||||
#ifndef Trace_MB_TIM_Enter
|
||||
#define Trace_MB_TIM_Enter()
|
||||
#endif //Trace_MB_TIM_Enter
|
||||
|
||||
#ifndef Trace_MB_TIM_Exit
|
||||
#define Trace_MB_TIM_Exit()
|
||||
#endif //Trace_MB_TIM_Exit
|
||||
|
||||
#endif //__MODBUS_H_
|
||||
44
Core/Modbus/modbus_config.h
Normal file
44
Core/Modbus/modbus_config.h
Normal file
@@ -0,0 +1,44 @@
|
||||
/**
|
||||
**************************************************************************
|
||||
* @file interface_config.h
|
||||
* @brief Конфигурация для модбаса
|
||||
*************************************************************************/
|
||||
#ifndef _MODBUS_CONFIG_H_
|
||||
#define _MODBUS_CONFIG_H_
|
||||
#include "stm32f1xx_hal.h"
|
||||
|
||||
// MODBUS PARAMS
|
||||
#define MODBUS_DEVICE_ID 1 ///< девайс текущего устройства
|
||||
#define MODBUS_TIMEOUT 1000*10 ///< максимальнйы тайтаут MB в тиках таймера
|
||||
|
||||
// STRING OBJECTS MODBUS
|
||||
#define MODBUS_VENDOR_NAME "NIO-12"
|
||||
#define MODBUS_PRODUCT_CODE ""
|
||||
#define MODBUS_REVISION "Ver. 1.0"
|
||||
#define MODBUS_VENDOR_URL ""
|
||||
#define MODBUS_PRODUCT_NAME ""
|
||||
#define MODBUS_MODEL_NAME "STM32F103"
|
||||
#define MODBUS_USER_APPLICATION_NAME ""
|
||||
|
||||
// PERIPH FUNCTIONS AND HANDLERS
|
||||
#define RS_UART_Init MX_USART1_UART_Init //инициализация uart
|
||||
#define RS_UART_DeInit HAL_UART_MspDeInit //деинициализация uart
|
||||
#define RS_TIM_Init MX_TIM3_Init //инициализация таймера
|
||||
#define RS_TIM_DeInit HAL_TIM_Base_MspDeInit//деинициализация таймера
|
||||
#define rs_huart huart1 //используемый uart
|
||||
#define rs_htim htim3 //используемый таймера
|
||||
|
||||
|
||||
/**
|
||||
* @brief Поменять комманды 0x03 и 0x04 местами (для LabView терминалки от двигателей)
|
||||
* @details Терминалка от двигателей использует для чтения регистров комманду R_HOLD_REGS вместо R_IN_REGS
|
||||
* Поэтому чтобы считывать Input Regs - надо поменять их местами.
|
||||
*/
|
||||
//#define MODBUS_SWITCH_COMMAND_R_IN_REGS_AND_R_HOLD_REGS
|
||||
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
/////////////////////////---CALC DEFINES---//////////////////////////
|
||||
|
||||
|
||||
|
||||
#endif //_MODBUS_CONFIG_H_
|
||||
192
Core/Modbus/modbus_data.h
Normal file
192
Core/Modbus/modbus_data.h
Normal file
@@ -0,0 +1,192 @@
|
||||
/**
|
||||
**************************************************************************
|
||||
* @file modbus_data.h
|
||||
* @brief Заголовочный файл с описанием даты MODBUS.
|
||||
* @details Данный файл необходимо подключается в rs_message.h. После rs_message.h
|
||||
* подключается к основному проекту.
|
||||
*
|
||||
* @defgroup MODBUS_DATA
|
||||
* @ingroup MODBUS
|
||||
* @brief Modbus data description
|
||||
*
|
||||
*************************************************************************/
|
||||
|
||||
#ifndef _MODBUS_DATA_H_
|
||||
#define _MODBUS_DATA_H_
|
||||
|
||||
#include "stdint.h"
|
||||
//--------------DEFINES FOR REGISTERS---------------
|
||||
// DEFINES FOR ARRAYS
|
||||
/**
|
||||
* @addtogroup MODBUS_DATA_RERISTERS_DEFINES
|
||||
* @ingroup MODBUS_DATA
|
||||
* @brief Defines for registers
|
||||
Структура дефайна адресов
|
||||
@verbatim
|
||||
Для массивов регистров:
|
||||
R_<NAME_ARRAY>_ADDR - модбас адресс первого регистра в массиве
|
||||
R_<NAME_ARRAY>_QNT - количество регистров в массиве
|
||||
|
||||
При добавлении новых массивов регистров, необходимо их добавить в функцию MB_DefineRegistersAddress
|
||||
|
||||
if(MB_Check_Address_For_Arr(Addr, Qnt, R_<NEW_ARRAY>_ADDR, R_<NEW_ARRAY>_QNT) == NO_ERRORS)
|
||||
{
|
||||
*pRegs = MB_Set_Register_Ptr(&<NEW_ARRAY>, Addr); // начало регистров хранения/входных
|
||||
}
|
||||
@endverbatim
|
||||
* @{
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* @brief Регистры хранения
|
||||
*/
|
||||
typedef struct //MB_DataInRegsTypeDef
|
||||
{
|
||||
uint16_t RESERVED;
|
||||
}MB_DataInRegsTypeDef;
|
||||
|
||||
|
||||
/**
|
||||
* @brief Входные регистры
|
||||
*/
|
||||
typedef struct //MB_DataInRegsTypeDef
|
||||
{ // Адрес:
|
||||
uint16_t CAN_BITRATE_KBPS; // 0
|
||||
uint16_t CAN_PERIOD; // 1
|
||||
|
||||
uint16_t CAN_ID_HI; // 2
|
||||
uint16_t CAN_ID_LO; // 3
|
||||
uint16_t CAN_DLC; // 4
|
||||
|
||||
uint16_t reserved[12]; // ...
|
||||
|
||||
uint16_t CAN_DATA_0; // 16
|
||||
uint16_t CAN_DATA_1; // 17
|
||||
uint16_t CAN_DATA_2; // 18
|
||||
uint16_t CAN_DATA_3; // 19
|
||||
uint16_t CAN_DATA_4; // 20
|
||||
uint16_t CAN_DATA_5; // 21
|
||||
uint16_t CAN_DATA_6; // 22
|
||||
uint16_t CAN_DATA_7; // 23
|
||||
}MB_DataHoldRegsTypeDef;
|
||||
|
||||
|
||||
// DEFINES FOR INPUT REGISTERS ARRAYS
|
||||
#define R_INPUT_ADDR 0
|
||||
#define R_INPUT_QNT 1
|
||||
|
||||
// DEFINES FOR HOLDING REGISTERS ARRAYS
|
||||
#define R_HOLDING_ADDR 0
|
||||
#define R_HOLDING_QNT 23
|
||||
|
||||
|
||||
/** MODBUS_DATA_RERISTERS_DEFINES
|
||||
* @}
|
||||
*/
|
||||
|
||||
//----------------DEFINES FOR COILS-----------------
|
||||
/**
|
||||
* @addtogroup MODBUS_DATA_COILS_DEFINES
|
||||
* @ingroup MODBUS_DATA
|
||||
* @brief Defines for coils
|
||||
@verbatim
|
||||
Структура дефайна
|
||||
Для массивов коилов:
|
||||
C_<NAME_ARRAY>_ADDR - модбас адресс первого коила в массиве
|
||||
C_<NAME_ARRAY>_QNT - количество коилов в массиве (минимум 16)
|
||||
|
||||
При добавлении новых массивов коилов, необходимо их добавить в функцию MB_DefineCoilsAddress
|
||||
|
||||
if(MB_Check_Address_For_Arr(Addr, Qnt, C_<NEW_ARRAY>_ADDR, C_<NEW_ARRAY>_QNT) == NO_ERRORS)
|
||||
{
|
||||
*pCoils = MB_Set_Coil_Reg_Ptr(&<NEW_ARRAY>, Addr);
|
||||
}
|
||||
|
||||
@endverbatim
|
||||
* @{
|
||||
*/
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @brief Коилы
|
||||
* @details Желательно с помощью reserved делать стркутуру кратной 16-битам
|
||||
*/
|
||||
typedef struct //MB_DataCoilsTypeDef
|
||||
{ // Адрес:
|
||||
unsigned START_POLLING:1; // 0
|
||||
unsigned START_SINGLE_FRAME:1; // 1
|
||||
|
||||
unsigned HEADER_IDE:1; // 2
|
||||
unsigned HEADER_RTR:1; // 3
|
||||
|
||||
unsigned reserved:13; // ...
|
||||
|
||||
unsigned FLIP_SRS:1; // 16
|
||||
unsigned FLIP_IDE:1; // 17
|
||||
unsigned FLIP_RTR:1; // 18
|
||||
unsigned FLIP_R1:1; // 19
|
||||
unsigned FLIP_R0:1; // 20
|
||||
unsigned FLIP_MSGID_BIT:1; // 21
|
||||
unsigned FLIP_DATA_BIT:1; // 22
|
||||
unsigned FLIP_CRC_BIT:1; // 23
|
||||
unsigned DISABLE_STUFF_BITS:1; // 24
|
||||
}MB_DataCoilsTypeDef;
|
||||
|
||||
// DEFINES FOR COIL ARRAYS
|
||||
#define C_CONTROL_ADDR 0
|
||||
#define C_CONTROL_QNT 24
|
||||
|
||||
/** MODBUS_DATA_COILS_DEFINES
|
||||
* @}
|
||||
*/
|
||||
|
||||
|
||||
//-----------MODBUS DEVICE DATA SETTING-------------
|
||||
// MODBUS DATA STRUCTTURE
|
||||
/**
|
||||
* @brief Структура со всеми регистрами и коилами модбас
|
||||
* @ingroup MODBUS_DATA
|
||||
*/
|
||||
typedef struct // tester modbus data
|
||||
{
|
||||
MB_DataInRegsTypeDef InRegs; ///< Modbus input registers @ref MB_DataInRegsTypeDef
|
||||
|
||||
MB_DataCoilsTypeDef Coils; ///< Modbus coils @ref MB_DataCoilsTypeDef
|
||||
|
||||
MB_DataHoldRegsTypeDef HoldRegs; ///< Modbus holding registers @ref MB_DataHoldRegsTypeDef
|
||||
}MB_DataStructureTypeDef;
|
||||
extern MB_DataStructureTypeDef MB_DATA;
|
||||
|
||||
|
||||
/**
|
||||
* @brief Структура для объекта Modbus
|
||||
* @ingroup MODBUS_DATA
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
unsigned length;
|
||||
char *name;
|
||||
}MB_DeviceObjectTypeDef;
|
||||
/**
|
||||
* @brief Структура для объектов Modbus
|
||||
* @ingroup MODBUS_DATA
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
MB_DeviceObjectTypeDef VendorName;
|
||||
MB_DeviceObjectTypeDef ProductCode;
|
||||
MB_DeviceObjectTypeDef Revision;
|
||||
MB_DeviceObjectTypeDef VendorUrl;
|
||||
MB_DeviceObjectTypeDef ProductName;
|
||||
MB_DeviceObjectTypeDef ModelName;
|
||||
MB_DeviceObjectTypeDef UserApplicationName;
|
||||
}MB_DeviceIdentificationTypeDef;
|
||||
void MB_DevoceInentificationInit(void);
|
||||
|
||||
|
||||
#endif //_MODBUS_DATA_H_
|
||||
|
||||
/////////////////////////////////////////////////////////////
|
||||
///////////////////////TEMP/OUTDATE/OTHER////////////////////
|
||||
550
Core/Modbus/rs_message.c
Normal file
550
Core/Modbus/rs_message.c
Normal file
@@ -0,0 +1,550 @@
|
||||
/**
|
||||
**************************************************************************
|
||||
* @file rs_message.c
|
||||
* @brief Модуль для реализации протоколов по RS/UART.
|
||||
**************************************************************************\
|
||||
* @details
|
||||
* Данный модуль реализует основные функции для приема и передачи сообщений
|
||||
* по протоколу RS через UART в режиме прерываний. Реализована обработка
|
||||
* приема и передачи данных, управление состояниями RS, а также функции для
|
||||
* инициализации и управления периферией.
|
||||
*
|
||||
* Реализованы следующие функции:
|
||||
* - RS_Receive_IT() — запуск приема данных в прерывании по UART.
|
||||
* - RS_Transmit_IT() — запуск передачи данных в прерывании по UART.
|
||||
* - RS_Init() — инициализация структуры RS и привязка периферии.
|
||||
* - RS_ReInit_UART() — переинициализация UART и перезапуск приема данных.
|
||||
* - RS_Abort() — остановка работы RS/UART с очисткой флагов и структур.
|
||||
* - RS_Handle_Receive_Start() — обработка старта приема данных по RS.
|
||||
*
|
||||
* В модуле также определен буфер RS_Buffer[] для хранения принимаемых/передаваемых данных.
|
||||
*
|
||||
* @note
|
||||
* Для корректной работы модуля предполагается использование соответствующих
|
||||
* обработчиков прерываний UART и таймера (RS_UART_Handler(), RS_TIM_Handler()),
|
||||
* которые надо вызывать с обработчиках используемой периферии
|
||||
|
||||
@verbatim
|
||||
//-------------------Функции-------------------//
|
||||
Functions: users
|
||||
- RS_Parse_Message/RS_Collect_Message Заполнение структуры сообщения и буфера
|
||||
- RS_Response Ответ на сообщение
|
||||
- RS_Define_Size_of_RX_Message Определение размера принимаемых данных
|
||||
|
||||
Functions: general
|
||||
- RS_Receive_IT Ожидание комманды и ответ на неё
|
||||
- RS_Transmit_IT Отправление комманды и ожидание ответа
|
||||
- RS_Init Инициализация переферии и структуры для RS
|
||||
- RS_ReInit_UART Реинициализация UART для RS
|
||||
- RS_Abort Отмена приема/передачи по ЮАРТ
|
||||
- RS_Init Инициализация периферии и modbus handler
|
||||
|
||||
Functions: callback/handler
|
||||
- RS_Handle_Receive_Start Функция для запуска приема или остановки RS
|
||||
- RS_Handle_Transmit_Start Функция для запуска передачи или остановки RS
|
||||
|
||||
- RS_UART_RxCpltCallback Коллбек при окончании приема или передачи
|
||||
RS_UART_TxCpltCallback
|
||||
|
||||
- RS_UART_Handler Обработчик прерывания для UART
|
||||
- RS_TIM_Handler Обработчик прерывания для TIM
|
||||
|
||||
@endverbatim
|
||||
*************************************************************************/
|
||||
#include "rs_message.h"
|
||||
|
||||
uint8_t RS_Buffer[MSG_SIZE_MAX]; // uart buffer
|
||||
|
||||
extern void RS_UART_Init(void);
|
||||
extern void RS_UART_DeInit(UART_HandleTypeDef *huart);
|
||||
extern void RS_TIM_Init(void);
|
||||
extern void RS_TIM_DeInit(TIM_HandleTypeDef *htim);
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
//-------------------------GENERAL FUNCTIONS-------------------------
|
||||
/**
|
||||
* @brief Start receive IT.
|
||||
* @param hRS - указатель на хендлер RS.
|
||||
* @param RS_msg - указатель на структуру сообщения.
|
||||
* @return RS_RES - статус о состоянии RS после инициализации приема.
|
||||
*/
|
||||
RS_StatusTypeDef RS_Receive_IT(RS_HandleTypeDef *hRS, RS_MsgTypeDef *RS_msg)
|
||||
{
|
||||
RS_StatusTypeDef RS_RES = 0;
|
||||
HAL_StatusTypeDef uart_res = 0;
|
||||
|
||||
//-------------CHECK RS LINE----------------
|
||||
// check that receive isnt busy
|
||||
if( RS_Is_RX_Busy(hRS) ) // if tx busy - return busy status
|
||||
return RS_BUSY;
|
||||
|
||||
//-----------INITIALIZE RECEIVE-------------
|
||||
// if all OK: start receiving
|
||||
RS_EnableReceive();
|
||||
RS_Set_Busy(hRS); // set RS busy
|
||||
RS_Set_RX_Flags(hRS); // initialize flags for receive
|
||||
hRS->pMessagePtr = RS_msg; // set pointer to message structire for filling it from UARTHandler fucntions
|
||||
|
||||
// start receiving
|
||||
uart_res = HAL_UART_Receive_IT(hRS->huart, hRS->pBufferPtr, RX_FIRST_PART_SIZE); // receive until ByteCnt+1 byte,
|
||||
// then in Callback restart receive for rest bytes
|
||||
|
||||
// if receive isnt started - abort RS
|
||||
if(uart_res != HAL_OK)
|
||||
{
|
||||
RS_RES = RS_Abort(hRS, ABORT_RS);
|
||||
printf_rs_err("\n%d: Error RS: Failed to start RS receiving...", uwTick);
|
||||
}
|
||||
else
|
||||
{
|
||||
RS_RES = RS_OK;
|
||||
printf_rs("\n%d: RS: Start Receiving...", uwTick);
|
||||
}
|
||||
|
||||
hRS->RS_STATUS = RS_RES;
|
||||
return RS_RES; // returns result of receive init
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Start transmit IT.
|
||||
* @param hRS - указатель на хендлер RS.
|
||||
* @param RS_msg - указатель на структуру сообщения.
|
||||
* @return RS_RES - статус о состоянии RS после инициализации передачи.
|
||||
*/
|
||||
RS_StatusTypeDef RS_Transmit_IT(RS_HandleTypeDef *hRS, RS_MsgTypeDef *RS_msg)
|
||||
{
|
||||
RS_StatusTypeDef RS_RES = 0;
|
||||
HAL_StatusTypeDef uart_res = 0;
|
||||
|
||||
//-------------CHECK RS LINE----------------
|
||||
// check that transmit isnt busy
|
||||
if( RS_Is_TX_Busy(hRS) ) // if tx busy - return busy status
|
||||
return RS_BUSY;
|
||||
// check receive line
|
||||
|
||||
|
||||
//------------COLLECT MESSAGE---------------
|
||||
RS_RES = RS_Collect_Message(hRS, RS_msg, hRS->pBufferPtr);
|
||||
if (RS_RES != RS_OK) // if message isnt collect - stop RS and return error in RS_RES
|
||||
{// need collect message status, so doesnt write abort to RS_RES
|
||||
RS_Abort(hRS, ABORT_RS);
|
||||
RS_Handle_Receive_Start(hRS, hRS->pMessagePtr); // restart receive
|
||||
}
|
||||
else // if collect successful
|
||||
{
|
||||
|
||||
//----------INITIALIZE TRANSMIT-------------
|
||||
RS_EnableTransmit();
|
||||
// for(int i = 0; i < hRS->sRS_Timeout; i++);
|
||||
|
||||
RS_Set_Busy(hRS); // set RS busy
|
||||
RS_Set_TX_Flags(hRS); // initialize flags for transmit IT
|
||||
hRS->pMessagePtr = RS_msg; // set pointer for filling given structure from UARTHandler fucntion
|
||||
|
||||
// if all OK: start transmitting
|
||||
uart_res = HAL_UART_Transmit_IT(hRS->huart, hRS->pBufferPtr, hRS->RS_Message_Size);
|
||||
// if transmit isnt started - abort RS
|
||||
if(uart_res != HAL_OK)
|
||||
{
|
||||
RS_RES = RS_Abort(hRS, ABORT_RS);
|
||||
printf_rs_err("\n%d: Error RS: Failed to start RS transmitting...", uwTick);
|
||||
}
|
||||
else
|
||||
{
|
||||
RS_RES = RS_OK;
|
||||
printf_rs("\n%d: RS: Start Transmitting...", uwTick);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
hRS->RS_STATUS = RS_RES;
|
||||
return RS_RES; // returns result of transmit init
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Initialize UART and handle RS stucture.
|
||||
* @param hRS - указатель на хендлер RS.
|
||||
* @param suart - указатель на структуру с настройками UART.
|
||||
* @param stim - указатель на структуру с настройками таймера.
|
||||
* @param pRS_BufferPtr - указатель на буффер для приема-передачи по UART. Если он NULL, то поставиться библиотечный буфер.
|
||||
* @return RS_RES - статус о состоянии RS после инициализации.
|
||||
* @note Инициализация перефирии и структуры для приема-передачи по RS.
|
||||
*/
|
||||
RS_StatusTypeDef RS_Init(RS_HandleTypeDef *hRS, UART_HandleTypeDef *huart, TIM_HandleTypeDef *htim, uint8_t *pRS_BufferPtr)
|
||||
{
|
||||
// check that hRS is defined
|
||||
if (hRS == NULL)
|
||||
return RS_ERR;
|
||||
// check that huart is defined
|
||||
if (huart == NULL)
|
||||
return RS_ERR;
|
||||
// init uart
|
||||
|
||||
// RS_UART_Init();
|
||||
hRS->huart = huart;
|
||||
|
||||
// RS_TIM_Init();
|
||||
hRS->htim = htim;
|
||||
|
||||
if (hRS->sRS_RX_Size_Mode == NULL)
|
||||
return RS_ERR;
|
||||
|
||||
// check that buffer is defined
|
||||
if (hRS->pBufferPtr == NULL)
|
||||
{
|
||||
hRS->pBufferPtr = RS_Buffer; // if no - set default
|
||||
}
|
||||
else
|
||||
hRS->pBufferPtr = pRS_BufferPtr; // if yes - set by user
|
||||
|
||||
return RS_OK;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief ReInitialize UART and RS receive.
|
||||
* @param hRS - указатель на хендлер RS.
|
||||
* @param suart - указатель на структуру с настройками UART.
|
||||
* @return RS_RES - статус о состоянии RS после инициализации.
|
||||
* @note Реинициализация UART и приема по RS.
|
||||
*/
|
||||
HAL_StatusTypeDef RS_ReInit_UART(RS_HandleTypeDef *hRS, UART_HandleTypeDef *huart)
|
||||
{
|
||||
HAL_StatusTypeDef RS_RES;
|
||||
hRS->f.ReInit_UART = 0;
|
||||
|
||||
// // check is settings are valid
|
||||
// if(Check_UART_Init_Struct(suart) != HAL_OK)
|
||||
// return HAL_ERROR;
|
||||
|
||||
RS_Abort(hRS, ABORT_RS);
|
||||
|
||||
RS_UART_DeInit(huart);
|
||||
|
||||
RS_UART_Init();
|
||||
|
||||
|
||||
RS_Receive_IT(hRS, hRS->pMessagePtr);
|
||||
return RS_RES;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief Abort RS/UART.
|
||||
* @param hRS - указатель на хендлер RS.
|
||||
* @param AbortMode - выбор, что надо отменить.
|
||||
- ABORT_TX: Отмена передачи по ЮАРТ, с очищением флагов TX,
|
||||
- ABORT_RX: Отмена приема по ЮАРТ, с очищением флагов RX,
|
||||
- ABORT_RX_TX: Отмена приема и передачи по ЮАРТ,
|
||||
- ABORT_RS: Отмена приема-передачи RS, с очищением всей структуры.
|
||||
* @return RS_RES - статус о состоянии RS после аборта.
|
||||
* @note Отмена работы UART в целом или отмена приема/передачи RS.
|
||||
Также очищается хендл hRS.
|
||||
*/
|
||||
RS_StatusTypeDef RS_Abort(RS_HandleTypeDef *hRS, RS_AbortTypeDef AbortMode)
|
||||
{
|
||||
HAL_StatusTypeDef uart_res = 0;
|
||||
hRS->htim->Instance->CNT = 0;
|
||||
__HAL_TIM_CLEAR_IT(hRS->htim, TIM_IT_UPDATE);
|
||||
|
||||
if(hRS->sRS_Timeout) // if timeout setted
|
||||
HAL_TIM_Base_Stop_IT(hRS->htim); // stop timeout
|
||||
|
||||
if((AbortMode&ABORT_RS) == 0x00)
|
||||
{
|
||||
if((AbortMode&ABORT_RX) == ABORT_RX)
|
||||
{
|
||||
uart_res = HAL_UART_AbortReceive(hRS->huart); // abort receive
|
||||
RS_Reset_RX_Flags(hRS);
|
||||
}
|
||||
|
||||
if((AbortMode&ABORT_TX) == ABORT_TX)
|
||||
{
|
||||
uart_res = HAL_UART_AbortTransmit(hRS->huart); // abort transmit
|
||||
RS_Reset_TX_Flags(hRS);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
uart_res = HAL_UART_Abort(hRS->huart);
|
||||
RS_Clear_All(hRS);
|
||||
}
|
||||
hRS->RS_STATUS = RS_ABORTED;
|
||||
return RS_ABORTED;
|
||||
}
|
||||
|
||||
|
||||
//-------------------------GENERAL FUNCTIONS-------------------------
|
||||
//-------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
//--------------------CALLBACK/HANDLER FUNCTIONS---------------------
|
||||
/**
|
||||
* @brief Handle for starting receive.
|
||||
* @param hRS - указатель на хендлер RS.
|
||||
* @param RS_msg - указатель на структуру сообщения.
|
||||
* @return RS_RES - статус о состоянии RS после инициализации приема или окончания общения.
|
||||
* @note Определяет начинать прием команды/ответа или нет.
|
||||
*/
|
||||
RS_StatusTypeDef RS_Handle_Receive_Start(RS_HandleTypeDef *hRS, RS_MsgTypeDef *RS_msg)
|
||||
{
|
||||
RS_StatusTypeDef RS_RES = 0;
|
||||
|
||||
switch(hRS->sRS_Mode)
|
||||
{
|
||||
case SLAVE_ALWAYS_WAIT: // in slave mode with permanent waiting
|
||||
RS_RES = RS_Receive_IT(hRS, RS_msg); break; // start receiving again
|
||||
case SLAVE_TIMEOUT_WAIT: // in slave mode with timeout waiting (start receiving cmd by request)
|
||||
RS_Set_Free(hRS); RS_RES = RS_OK; break; // end RS communication (set RS unbusy)
|
||||
}
|
||||
|
||||
if(RS_RES != RS_OK)
|
||||
{
|
||||
}
|
||||
|
||||
return RS_RES;
|
||||
}
|
||||
/**
|
||||
* @brief Handle for starting transmit.
|
||||
* @param hRS - указатель на хендлер RS.
|
||||
* @param RS_msg - указатель на структуру сообщения.
|
||||
* @return RS_RES - статус о состоянии RS после инициализации передачи.
|
||||
* @note Определяет отвечать ли на команду или нет.
|
||||
*/
|
||||
RS_StatusTypeDef RS_Handle_Transmit_Start(RS_HandleTypeDef *hRS, RS_MsgTypeDef *RS_msg)
|
||||
{
|
||||
RS_StatusTypeDef RS_RES = 0;
|
||||
|
||||
switch(hRS->sRS_Mode)
|
||||
{
|
||||
case SLAVE_ALWAYS_WAIT: // in slave mode always response
|
||||
case SLAVE_TIMEOUT_WAIT: // transmit response
|
||||
RS_RES = RS_Transmit_IT(hRS, RS_msg); break;
|
||||
}
|
||||
if(RS_RES != RS_OK)
|
||||
{
|
||||
}
|
||||
|
||||
return RS_RES;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief UART RX Callback: define behaviour after receiving parts of message.
|
||||
* @param hRS - указатель на хендлер RS.
|
||||
* @return RS_RES - статус о состоянии RS после обработки приема.
|
||||
* @note Контролирует прием сообщения: определяет размер принимаемой посылки и обрабатывает его.
|
||||
*/
|
||||
RS_StatusTypeDef RS_UART_RxCpltCallback(RS_HandleTypeDef *hRS)
|
||||
{
|
||||
RS_StatusTypeDef RS_RES = 0;
|
||||
HAL_StatusTypeDef uart_res = 0;
|
||||
|
||||
// if we had received bytes before ByteCnt
|
||||
if((hRS->sRS_RX_Size_Mode == RS_RX_Size_NotConst) && (hRS->f.RX_Half == 0)) // if data size isnt constant and its first half, and
|
||||
{ // First receive part of message, then define size of rest of message, and start receive it
|
||||
hRS->f.RX_Half = 1;
|
||||
//---------------FIND DATA SIZE-----------------
|
||||
uint32_t NuRS_of_Rest_Bytes = 0xFFFF;
|
||||
RS_RES = RS_Define_Size_of_RX_Message(hRS, &NuRS_of_Rest_Bytes);
|
||||
|
||||
|
||||
// if we need to skip this message - restart receive
|
||||
if(RS_RES == RS_SKIP || NuRS_of_Rest_Bytes == 0xFFFF)
|
||||
{
|
||||
RS_Abort(hRS, ABORT_RX);
|
||||
RS_RES = RS_Handle_Receive_Start(hRS, hRS->pMessagePtr);
|
||||
return RS_RES;
|
||||
}
|
||||
|
||||
// if there is no bytes to receive
|
||||
if(NuRS_of_Rest_Bytes == 0)
|
||||
{
|
||||
hRS->f.RX_Half = 0;
|
||||
|
||||
//---------PROCESS DATA & ENDING RECEIVING--------
|
||||
RS_Set_RX_End(hRS);
|
||||
|
||||
if(hRS->sRS_Timeout) // if timeout setted
|
||||
HAL_TIM_Base_Stop_IT(hRS->htim); // stop timeout
|
||||
|
||||
// parse received data
|
||||
RS_RES = RS_Parse_Message(hRS, hRS->pMessagePtr, hRS->pBufferPtr); // parse message
|
||||
|
||||
// RESPONSE
|
||||
RS_RES = RS_Response(hRS, hRS->pMessagePtr);
|
||||
return RS_RES;
|
||||
}
|
||||
|
||||
|
||||
//-------------START UART RECEIVE---------------
|
||||
uart_res = HAL_UART_Receive_IT(hRS->huart, (hRS->pBufferPtr + RX_FIRST_PART_SIZE), NuRS_of_Rest_Bytes);
|
||||
|
||||
if(uart_res != HAL_OK)
|
||||
{// need uart status, so doesnt write abort to RS_RES
|
||||
RS_RES = RS_Abort(hRS, ABORT_RS);
|
||||
}
|
||||
else
|
||||
RS_RES = RS_OK;
|
||||
}
|
||||
else // if we had received whole message
|
||||
{
|
||||
hRS->f.RX_Half = 0;
|
||||
|
||||
//---------PROCESS DATA & ENDING RECEIVING--------
|
||||
RS_Set_RX_End(hRS);
|
||||
|
||||
if(hRS->sRS_Timeout) // if timeout setted
|
||||
HAL_TIM_Base_Stop_IT(hRS->htim); // stop timeout
|
||||
|
||||
// parse received data
|
||||
RS_RES = RS_Parse_Message(hRS, hRS->pMessagePtr, hRS->pBufferPtr); // parse message
|
||||
|
||||
// RESPONSE
|
||||
RS_RES = RS_Response(hRS, hRS->pMessagePtr);
|
||||
}
|
||||
|
||||
return RS_RES;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief UART TX Callback: define behaviour after transmiting message.
|
||||
* @param hRS - указатель на хендлер RS.
|
||||
* @return RS_RES - статус о состоянии RS после обработки приема.
|
||||
* @note Определяет поведение RS после передачи сообщения.
|
||||
*/
|
||||
RS_StatusTypeDef RS_UART_TxCpltCallback(RS_HandleTypeDef *hRS)
|
||||
{
|
||||
RS_StatusTypeDef RS_RES = RS_OK;
|
||||
HAL_StatusTypeDef uart_res = 0;
|
||||
|
||||
//--------------ENDING TRANSMITTING-------------
|
||||
RS_Set_TX_End(hRS);
|
||||
RS_EnableReceive();
|
||||
// for(int i = 0; i < hRS->sRS_Timeout; i++);
|
||||
|
||||
//-----------START RECEIVING or END RS----------
|
||||
RS_RES = RS_Handle_Receive_Start(hRS, hRS->pMessagePtr);
|
||||
|
||||
return RS_RES;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Handler for UART.
|
||||
* @param hRS - указатель на хендлер RS.
|
||||
* @note Обрабатывает ошибки если есть и вызывает RS Коллбеки.
|
||||
* Добавить вызов этой функции в UARTx_IRQHandler() после HAL_UART_IRQHandler().
|
||||
*/
|
||||
void RS_UART_Handler(RS_HandleTypeDef *hRS)
|
||||
{
|
||||
//-------------CALL RS CALLBACKS------------
|
||||
/* IF NO ERROR OCCURS */
|
||||
if(hRS->huart->ErrorCode == 0)
|
||||
{
|
||||
hRS->htim->Instance->CNT = 0; // reset cnt;
|
||||
/* Start timeout */
|
||||
if(hRS->sRS_Timeout) // if timeout setted
|
||||
if((hRS->huart->RxXferCount+1 == hRS->huart->RxXferSize) && RS_Is_RX_Busy(hRS)) // if first byte is received and receive is active
|
||||
{
|
||||
hRS->htim->Instance->ARR = hRS->sRS_Timeout; // reset cnt;
|
||||
HAL_TIM_Base_Start_IT(hRS->htim);
|
||||
RS_Set_RX_Active_Flags(hRS);
|
||||
}
|
||||
|
||||
/* RX Callback */
|
||||
if (( hRS->huart->RxXferCount == 0U) && RS_Is_RX_Busy(hRS) && // if all bytes are received and receive is active
|
||||
hRS->huart->RxState != HAL_UART_STATE_BUSY_RX) // also check that receive "REALLY" isnt busy
|
||||
RS_UART_RxCpltCallback(hRS);
|
||||
|
||||
/* TX Callback */
|
||||
if (( hRS->huart->TxXferCount == 0U) && RS_Is_TX_Busy(hRS) && // if all bytes are transmited and transmit is active
|
||||
hRS->huart->gState != HAL_UART_STATE_BUSY_TX) // also check that receive "REALLY" isnt busy
|
||||
RS_UART_TxCpltCallback(hRS);
|
||||
}
|
||||
//----------------ERRORS HANDLER----------------
|
||||
else
|
||||
{
|
||||
/* de-init uart transfer */
|
||||
RS_Abort(hRS, ABORT_RS);
|
||||
RS_Handle_Receive_Start(hRS, hRS->pMessagePtr);
|
||||
// later, maybe, will be added specific handlers for err
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief Handler for TIM.
|
||||
* @param hRS - указатель на хендлер RS.
|
||||
* @note Попадание сюда = таймаут и перезапуск RS приема
|
||||
* Добавить вызов этой функции в TIMx_IRQHandler() после HAL_TIM_IRQHandler().
|
||||
*/
|
||||
void RS_TIM_Handler(RS_HandleTypeDef *hRS)
|
||||
{
|
||||
HAL_TIM_Base_Stop_IT(hRS->htim);
|
||||
RS_Abort(hRS, ABORT_RS);
|
||||
|
||||
RS_Handle_Receive_Start(hRS, hRS->pMessagePtr);
|
||||
}
|
||||
//--------------------CALLBACK/HANDLER FUNCTIONS---------------------
|
||||
//-------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
//--------------WEAK PROTOTYPES FOR PROCESSING MESSAGE---------------
|
||||
/**
|
||||
* @brief Respond accord to received message.
|
||||
* @param hRS - указатель на хендлер RS.
|
||||
* @param RS_msg - указатель на структуру сообщения.
|
||||
* @return RS_RES - статус о результате ответа на комманду.
|
||||
* @note Обработка принятой комманды и ответ на неё.
|
||||
*/
|
||||
__weak RS_StatusTypeDef RS_Response(RS_HandleTypeDef *hRS, RS_MsgTypeDef *RS_msg)
|
||||
{
|
||||
/* Redefine function for user purposes */
|
||||
return RS_ERR;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Collect message in buffer to transmit it.
|
||||
* @param hRS - указатель на хендлер RS.
|
||||
* @param RS_msg - указатель на структуру сообщения.
|
||||
* @param msg_uart_buff - указатель на буффер UART.
|
||||
* @return RS_RES - статус о результате заполнения буфера.
|
||||
* @note Заполнение буффера UART из структуры сообщения.
|
||||
*/
|
||||
__weak RS_StatusTypeDef RS_Collect_Message(RS_HandleTypeDef *hRS, RS_MsgTypeDef *RS_msg, uint8_t *msg_uart_buff)
|
||||
{
|
||||
/* Redefine function for user purposes */
|
||||
return RS_ERR;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Parse message from buffer to process it.
|
||||
* @param hRS - указатель на хендлер RS.
|
||||
* @param RS_msg - указатель на структуру сообщения.
|
||||
* @param msg_uart_buff - указатель на буффер UART.
|
||||
* @return RS_RES - статус о результате заполнения структуры.
|
||||
* @note Заполнение структуры сообщения из буффера UART.
|
||||
*/
|
||||
__weak RS_StatusTypeDef RS_Parse_Message(RS_HandleTypeDef *hRS, RS_MsgTypeDef *RS_msg, uint8_t *msg_uart_buff)
|
||||
{
|
||||
/* Redefine function for user purposes */
|
||||
return RS_ERR;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Define size of RX Message that need to be received.
|
||||
* @param hRS - указатель на хендлер RS.
|
||||
* @param rx_data_size - указатель на переменную для записи кол-ва байт для принятия.
|
||||
* @return RS_RES - статус о корректности рассчета кол-ва байт для принятия.
|
||||
* @note Определение сколько байтов надо принять по протоколу.
|
||||
*/
|
||||
__weak RS_StatusTypeDef RS_Define_Size_of_RX_Message(RS_HandleTypeDef *hRS, uint32_t *rx_data_size)
|
||||
{
|
||||
/* Redefine function for user purposes */
|
||||
return RS_ERR;
|
||||
}
|
||||
//--------------WEAK PROTOTYPES FOR PROCESSING MESSAGE---------------
|
||||
//-------------------------------------------------------------------
|
||||
257
Core/Modbus/rs_message.h
Normal file
257
Core/Modbus/rs_message.h
Normal file
@@ -0,0 +1,257 @@
|
||||
/**
|
||||
**************************************************************************
|
||||
* @file rs_message.h
|
||||
* @brief Заголовочный файл для модуля реализации протоколов по RS/UART.
|
||||
**************************************************************************
|
||||
* @defgroup RS_TOOLS
|
||||
* @brief Всякое для работы по UART/RS
|
||||
**************************************************************************
|
||||
@details
|
||||
**************************************************************************
|
||||
Для настройки RS/UART под нужный протокол, необходимо:
|
||||
- Определить структуру сообщения RS_MsgTypeDef и
|
||||
дефайны RX_FIRST_PART_SIZE и MSG_SIZE_MAX.
|
||||
- Подключить этот файл в раздел rs_message.h.
|
||||
- Определить функции для обработки сообщения: RS_Parse_Message(),
|
||||
RS_Collect_Message(), RS_Response(), RS_Define_Size_of_RX_Message()
|
||||
- Добавить UART/TIM Handler в Хендлер используемых UART/TIM.
|
||||
|
||||
Так же данный модуль использует счетчики
|
||||
**************************************************************************
|
||||
@verbatim
|
||||
Визуальное описание. Форматирование сохраняется как в коде.
|
||||
@endverbatim
|
||||
*************************************************************************/
|
||||
#ifndef __RS_LIB_H_
|
||||
#define __RS_LIB_H_
|
||||
|
||||
#include "modbus.h"
|
||||
|
||||
#include "crc_algs.h"
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
////////////////////////////---DEFINES---////////////////////////////
|
||||
/* Check that all defines required by RS are defined */
|
||||
#ifndef MSG_SIZE_MAX
|
||||
#error Define MSG_SIZE_MAX (Maximum size of message). This is necessary to create buffer for UART.
|
||||
#endif
|
||||
|
||||
#ifndef RX_FIRST_PART_SIZE
|
||||
#error Define RX_FIRST_PART_SIZE (Size of first part of message). This is necessary to receive the first part of the message, from which determine the size of the remaining part of the message.
|
||||
#endif
|
||||
|
||||
|
||||
/* Clear message-uart buffer */
|
||||
#define RS_Clear_Buff(_buff_) for(int i=0; i<MSG_SIZE_MAX;i++) _buff_[i] = NULL
|
||||
|
||||
/* Set/Reset flags */
|
||||
#define RS_Set_Free(_hRS_) _hRS_->f.RS_Busy = 0
|
||||
#define RS_Set_Busy(_hRS_) _hRS_->f.RS_Busy = 1
|
||||
|
||||
#define RS_Set_RX_Flags(_hRS_) _hRS_->f.RX_Busy = 1; _hRS_->f.RX_Done = 0; _hRS_->f.RX_Half = 0
|
||||
#define RS_Set_RX_Active_Flags(_hRS_) _hRS_->f.RX_Ongoing = 1
|
||||
|
||||
|
||||
#define RS_Set_TX_Flags(_hRS_) _hRS_->f.TX_Busy = 1; _hRS_->f.TX_Done = 0
|
||||
|
||||
#define RS_Reset_RX_Active_Flags(_hRS_) _hRS_->f.RX_Ongoing = 0
|
||||
#define RS_Reset_RX_Flags(_hRS_) RS_Reset_RX_Active_Flags(_hRS_); _hRS_->f.RX_Busy = 0; _hRS_->f.RX_Done = 0; _hRS_->f.RX_Half = 0
|
||||
#define RS_Reset_TX_Flags(_hRS_) _hRS_->f.TX_Busy = 0; _hRS_->f.TX_Done = 0
|
||||
|
||||
#define RS_Set_RX_End_Flag(_hRS_) _hRS_->f.RX_Done = 1;
|
||||
#define RS_Set_TX_End_Flag(_hRS_) _hRS_->f.TX_Done = 1
|
||||
|
||||
#define RS_Set_RX_End(_hRS_) RS_Reset_RX_Flags(_hRS_); RS_Set_RX_End_Flag(_hRS_)
|
||||
#define RS_Set_TX_End(_hRS_) RS_Reset_TX_Flags(_hRS_); RS_Set_TX_End_Flag(_hRS_)
|
||||
|
||||
/* Clear all RS stuff */
|
||||
#define RS_Clear_All(_hRS_) RS_Clear_Buff(_hRS_->pBufferPtr); RS_Reset_RX_Flags(_hRS_); RS_Reset_TX_Flags(_hRS_);
|
||||
|
||||
//#define MB_Is_RX_Busy(_hRS_) ((_hRS_->huart->gState&HAL_USART_STATE_BUSY_RX) == HAL_USART_STATE_BUSY_RX)
|
||||
//#define MB_Is_TX_Busy(_hRS_) ((_hRS_->huart->gState&HAL_USART_STATE_BUSY_RX) == HAL_USART_STATE_BUSY_TX)
|
||||
#define RS_Is_RX_Busy(_hRS_) (_hRS_->f.RX_Busy == 1)
|
||||
#define RS_Is_TX_Busy(_hRS_) (_hRS_->f.TX_Busy == 1)
|
||||
|
||||
|
||||
#ifndef RS_EnableReceive
|
||||
#define RS_EnableReceive()
|
||||
#endif
|
||||
#ifndef RS_EnableTransmit
|
||||
#define RS_EnableTransmit()
|
||||
#endif
|
||||
////////////////////////////---DEFINES---////////////////////////////
|
||||
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
///////////////////////---STRUCTURES & ENUMS---//////////////////////
|
||||
//------------------ENUMERATIONS--------------------
|
||||
/** @brief Enums for respond CMD about RS status */
|
||||
typedef enum // RS_StatusTypeDef
|
||||
{
|
||||
/* IN-CODE STATUS (start from 0x01, and goes up)*/
|
||||
/*0x01*/ RS_OK = 0x01,
|
||||
/*0x02*/ RS_ERR,
|
||||
/*0x03*/ RS_ABORTED,
|
||||
/*0x04*/ RS_BUSY,
|
||||
/*0x05*/ RS_SKIP,
|
||||
|
||||
/*0x06*/ RS_COLLECT_MSG_ERR,
|
||||
/*0x07*/ RS_PARSE_MSG_ERR,
|
||||
|
||||
// reserved values
|
||||
// /*0x00*/ RS_UNKNOWN_ERR = 0x00, ///< reserved for case, if no one error founded (nothing changed response from zero)
|
||||
}RS_StatusTypeDef;
|
||||
|
||||
|
||||
/** @brief Enums for RS Modes */
|
||||
typedef enum // RS_ModeTypeDef
|
||||
{
|
||||
SLAVE_ALWAYS_WAIT = 0x01, ///< Slave mode with infinity waiting
|
||||
SLAVE_TIMEOUT_WAIT = 0x02, ///< Slave mode with waiting with timeout
|
||||
// MASTER = 0x03, ///< Master mode
|
||||
}RS_ModeTypeDef;
|
||||
|
||||
/** @brief Enums for RS UART Modes */
|
||||
typedef enum // RS_ITModeTypeDef
|
||||
{
|
||||
BLCK_MODE = 0x00, ///< Blocking mode
|
||||
IT_MODE = 0x01, ///< Interrupt mode
|
||||
}RS_ITModeTypeDef;
|
||||
|
||||
/** @brief Enums for Abort modes */
|
||||
typedef enum // RS_AbortTypeDef
|
||||
{
|
||||
ABORT_TX = 0x01, ///< Abort transmit
|
||||
ABORT_RX = 0x02, ///< Abort receive
|
||||
ABORT_RX_TX = 0x03, ///< Abort receive and transmit
|
||||
ABORT_RS = 0x04, ///< Abort uart and reset RS structure
|
||||
}RS_AbortTypeDef;
|
||||
|
||||
/** @brief Enums for RX Size modes */
|
||||
typedef enum // RS_RXSizeTypeDef
|
||||
{
|
||||
RS_RX_Size_Const = 0x01, ///< size of receiving message is constant
|
||||
RS_RX_Size_NotConst = 0x02, ///< size of receiving message isnt constant
|
||||
}RS_RXSizeTypeDef;
|
||||
|
||||
|
||||
//-----------STRUCTURE FOR HANDLE RS------------
|
||||
/** @brief Struct for flags RS */
|
||||
typedef struct
|
||||
{
|
||||
unsigned RX_Half:1; ///< flag: 0 - receiving msg before ByteCnt, 0 - receiving msg after ByteCnt
|
||||
|
||||
unsigned RS_Busy:1; ///< flag: 1 - RS is busy, 0 - RS isnt busy
|
||||
unsigned RX_Ongoing:1; ///< flag: 1 - receiving data right now, 0 - waiting for receiving data
|
||||
|
||||
unsigned RX_Busy:1; ///< flag: 1 - receiving is active, 0 - receiving isnt active
|
||||
unsigned TX_Busy:1; ///< flag: 1 - transmiting is active, 0 - transmiting isnt active
|
||||
|
||||
unsigned RX_Done:1; ///< flag: 1 - receiving is done, 0 - receiving isnt done
|
||||
unsigned TX_Done:1; ///< flag: 1 - transmiting is done, 0 - transmiting isnt done
|
||||
|
||||
// setted by user
|
||||
unsigned MessageHandled:1; ///< flag: 1 - RS command is handled, 0 - RS command isnt handled yet
|
||||
unsigned EchoResponse:1; ///< flag: 1 - response with received msg, 0 - response with own msg
|
||||
unsigned DeferredResponse:1; ///< flag: 1 - response not in interrupt, 0 - response in interrupt
|
||||
unsigned ReInit_UART:1; ///< flag: 1 - need to reinitialize uart, 0 - nothing
|
||||
}RS_FlagsTypeDef;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @brief Handle for RS communication.
|
||||
* @note Prefixes: h - handle, s - settings, f - flag
|
||||
*/
|
||||
typedef struct // RS_HandleTypeDef
|
||||
{
|
||||
/* MESSAGE */
|
||||
uint8_t ID; ///< ID of RS "channel"
|
||||
RS_MsgTypeDef *pMessagePtr; ///< pointer to message struct
|
||||
uint8_t *pBufferPtr; ///< pointer to message buffer
|
||||
uint32_t RS_Message_Size; ///< size of whole message, not only data
|
||||
|
||||
/* HANDLERS and SETTINGS */
|
||||
UART_HandleTypeDef *huart; ///< handler for used uart
|
||||
TIM_HandleTypeDef *htim; ///< handler for used tim
|
||||
RS_ModeTypeDef sRS_Mode; ///< setting: slave or master @ref RS_ModeTypeDef
|
||||
RS_ITModeTypeDef sRS_IT_Mode; ///< setting: 1 - IT mode, 0 - Blocking mode
|
||||
uint16_t sRS_Timeout; ///< setting: timeout in ms
|
||||
RS_RXSizeTypeDef sRS_RX_Size_Mode; ///< setting: 1 - not const, 0 - const
|
||||
|
||||
/* FLAGS */
|
||||
RS_FlagsTypeDef f; ///< These flags for controling receive/transmit
|
||||
|
||||
/* RS STATUS */
|
||||
RS_StatusTypeDef RS_STATUS; ///< RS status
|
||||
}RS_HandleTypeDef;
|
||||
extern RS_HandleTypeDef hmodbus1;
|
||||
|
||||
|
||||
///////////////////////---STRUCTURES & ENUMS---//////////////////////
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
///////////////////////////---FUNCTIONS---///////////////////////////
|
||||
//----------------FUNCTIONS FOR PROCESSING MESSAGE-------------------
|
||||
/*--------------------Defined by users purposes--------------------*/
|
||||
/* Respond accord to received message */
|
||||
RS_StatusTypeDef RS_Response(RS_HandleTypeDef *hRS, RS_MsgTypeDef *RS_msg);
|
||||
|
||||
/* Collect message in buffer to transmit it */
|
||||
RS_StatusTypeDef RS_Collect_Message(RS_HandleTypeDef *hRS, RS_MsgTypeDef *RS_msg, uint8_t *msg_uart_buff);
|
||||
|
||||
/* Parse message from buffer to process it */
|
||||
RS_StatusTypeDef RS_Parse_Message(RS_HandleTypeDef *hRS, RS_MsgTypeDef *RS_msg, uint8_t *msg_uart_buff);
|
||||
|
||||
/* Define size of RX Message that need to be received */
|
||||
RS_StatusTypeDef RS_Define_Size_of_RX_Message(RS_HandleTypeDef *hRS, uint32_t *rx_data_size);
|
||||
|
||||
|
||||
//-------------------------GENERAL FUNCTIONS-------------------------
|
||||
/*-----------------Should be called from main code-----------------*/
|
||||
/* Start receive IT */
|
||||
RS_StatusTypeDef RS_Receive_IT(RS_HandleTypeDef *hRS, RS_MsgTypeDef *RS_msg);
|
||||
|
||||
/* Start transmit IT */
|
||||
RS_StatusTypeDef RS_Transmit_IT(RS_HandleTypeDef *hRS, RS_MsgTypeDef *RS_msg);
|
||||
|
||||
/* Initialize UART and handle RS stucture */
|
||||
RS_StatusTypeDef RS_Init(RS_HandleTypeDef *hRS, UART_HandleTypeDef *huart, TIM_HandleTypeDef *htim, uint8_t *pRS_BufferPtr);
|
||||
|
||||
/* ReInitialize UART and RS receive */
|
||||
HAL_StatusTypeDef RS_ReInit_UART(RS_HandleTypeDef *hRS, UART_HandleTypeDef *suart);
|
||||
|
||||
/* Abort RS/UART */
|
||||
RS_StatusTypeDef RS_Abort(RS_HandleTypeDef *hRS, RS_AbortTypeDef AbortMode);
|
||||
//-------------------------GENERAL FUNCTIONS-------------------------
|
||||
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
//--------------------CALLBACK/HANDLER FUNCTIONS---------------------
|
||||
/* Handle for starting receive */
|
||||
RS_StatusTypeDef RS_Handle_Receive_Start(RS_HandleTypeDef *hRS, RS_MsgTypeDef *RS_msg);
|
||||
/* Handle for starting transmit */
|
||||
RS_StatusTypeDef RS_Handle_Transmit_Start(RS_HandleTypeDef *hRS, RS_MsgTypeDef *RS_msg);
|
||||
/* UART RX Callback: define behaviour after receiving parts of message */
|
||||
RS_StatusTypeDef RS_UART_RxCpltCallback(RS_HandleTypeDef *hRS);
|
||||
/* UART TX Callback: define behaviour after transmiting message */
|
||||
RS_StatusTypeDef RS_UART_TxCpltCallback(RS_HandleTypeDef *hRS);
|
||||
/* Handler for UART */
|
||||
void RS_UART_Handler(RS_HandleTypeDef *hRS);
|
||||
/* Handler for TIM */
|
||||
void RS_TIM_Handler(RS_HandleTypeDef *hRS);
|
||||
//--------------------CALLBACK/HANDLER FUNCTIONS---------------------
|
||||
///////////////////////////---FUNCTIONS---///////////////////////////
|
||||
|
||||
|
||||
#ifndef printf_rs_err
|
||||
#define printf_rs_err(...)
|
||||
#endif
|
||||
|
||||
#ifndef printf_rs
|
||||
#define printf_rs(...)
|
||||
#endif
|
||||
#endif // __RS_LIB_H_
|
||||
@@ -19,11 +19,13 @@
|
||||
/* Includes ------------------------------------------------------------------*/
|
||||
#include "main.h"
|
||||
#include "tim.h"
|
||||
#include "usart.h"
|
||||
#include "gpio.h"
|
||||
|
||||
/* Private includes ----------------------------------------------------------*/
|
||||
/* USER CODE BEGIN Includes */
|
||||
#include "canEmu.h"
|
||||
#include "rs_message.h"
|
||||
/* USER CODE END Includes */
|
||||
|
||||
/* Private typedef -----------------------------------------------------------*/
|
||||
@@ -56,6 +58,7 @@ void SystemClock_Config(void);
|
||||
/* Private user code ---------------------------------------------------------*/
|
||||
/* USER CODE BEGIN 0 */
|
||||
CANEmu_HandleTypeDef hcanemu;
|
||||
int flag_manual = 0;
|
||||
/* USER CODE END 0 */
|
||||
|
||||
/**
|
||||
@@ -88,16 +91,50 @@ int main(void)
|
||||
/* Initialize all configured peripherals */
|
||||
MX_GPIO_Init();
|
||||
MX_TIM2_Init();
|
||||
MX_TIM3_Init();
|
||||
MX_USART1_UART_Init();
|
||||
/* USER CODE BEGIN 2 */
|
||||
CANEmu_Init(&hcanemu, 125000);
|
||||
hcanemu.header.StdId = 0x123;
|
||||
MODBUS_FirstInit();
|
||||
RS_Receive_IT(&hmodbus1, &MODBUS_MSG);
|
||||
/* USER CODE END 2 */
|
||||
|
||||
/* Infinite loop */
|
||||
/* USER CODE BEGIN WHILE */
|
||||
while (1)
|
||||
{
|
||||
HAL_Delay(100);
|
||||
if(flag_manual == 0)
|
||||
{
|
||||
// can message
|
||||
hcanemu.header.IDE = MB_DATA.Coils.HEADER_IDE;
|
||||
hcanemu.header.RTR = MB_DATA.Coils.HEADER_RTR;
|
||||
hcanemu.bitrate_bps = (uint32_t)MB_DATA.HoldRegs.CAN_BITRATE_KBPS*1000;
|
||||
hcanemu.header.ExtId = ((uint32_t)MB_DATA.HoldRegs.CAN_ID_HI << 16) || MB_DATA.HoldRegs.CAN_ID_LO;
|
||||
hcanemu.header.StdId = hcanemu.header.ExtId;
|
||||
hcanemu.header.DLC = (uint8_t)MB_DATA.HoldRegs.CAN_DLC & 0xF;
|
||||
hcanemu.data[0] = (uint8_t)MB_DATA.HoldRegs.CAN_DATA_0;
|
||||
hcanemu.data[1] = (uint8_t)MB_DATA.HoldRegs.CAN_DATA_1;
|
||||
hcanemu.data[2] = (uint8_t)MB_DATA.HoldRegs.CAN_DATA_2;
|
||||
hcanemu.data[3] = (uint8_t)MB_DATA.HoldRegs.CAN_DATA_3;
|
||||
hcanemu.data[4] = (uint8_t)MB_DATA.HoldRegs.CAN_DATA_4;
|
||||
hcanemu.data[5] = (uint8_t)MB_DATA.HoldRegs.CAN_DATA_5;
|
||||
hcanemu.data[6] = (uint8_t)MB_DATA.HoldRegs.CAN_DATA_6;
|
||||
hcanemu.data[7] = (uint8_t)MB_DATA.HoldRegs.CAN_DATA_7;
|
||||
|
||||
// errors
|
||||
hcanemu.errors.FF_SRS = MB_DATA.Coils.FLIP_SRS;
|
||||
hcanemu.errors.FF_IDE = MB_DATA.Coils.FLIP_IDE;
|
||||
hcanemu.errors.FF_RTR = MB_DATA.Coils.FLIP_RTR;
|
||||
hcanemu.errors.FF_R1 = MB_DATA.Coils.FLIP_R1;
|
||||
hcanemu.errors.FF_R0 = MB_DATA.Coils.FLIP_R0;
|
||||
hcanemu.errors.MSGID = MB_DATA.Coils.FLIP_MSGID_BIT;
|
||||
hcanemu.errors.DATA = MB_DATA.Coils.FLIP_DATA_BIT;
|
||||
hcanemu.errors.CRC_ERR = MB_DATA.Coils.FLIP_CRC_BIT;
|
||||
hcanemu.errors.STUFF_BITS = MB_DATA.Coils.DISABLE_STUFF_BITS;
|
||||
}
|
||||
|
||||
HAL_Delay(hcanemu.period_ms);
|
||||
CANEmu_SendFrame(&hcanemu);
|
||||
/* USER CODE END WHILE */
|
||||
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
/* USER CODE END 0 */
|
||||
|
||||
TIM_HandleTypeDef htim2;
|
||||
TIM_HandleTypeDef htim3;
|
||||
|
||||
/* TIM2 init function */
|
||||
void MX_TIM2_Init(void)
|
||||
@@ -65,6 +66,46 @@ void MX_TIM2_Init(void)
|
||||
|
||||
/* USER CODE END TIM2_Init 2 */
|
||||
|
||||
}
|
||||
/* TIM3 init function */
|
||||
void MX_TIM3_Init(void)
|
||||
{
|
||||
|
||||
/* USER CODE BEGIN TIM3_Init 0 */
|
||||
|
||||
/* USER CODE END TIM3_Init 0 */
|
||||
|
||||
TIM_ClockConfigTypeDef sClockSourceConfig = {0};
|
||||
TIM_MasterConfigTypeDef sMasterConfig = {0};
|
||||
|
||||
/* USER CODE BEGIN TIM3_Init 1 */
|
||||
|
||||
/* USER CODE END TIM3_Init 1 */
|
||||
htim3.Instance = TIM3;
|
||||
htim3.Init.Prescaler = 0;
|
||||
htim3.Init.CounterMode = TIM_COUNTERMODE_UP;
|
||||
htim3.Init.Period = 7200;
|
||||
htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
|
||||
htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
|
||||
if (HAL_TIM_Base_Init(&htim3) != HAL_OK)
|
||||
{
|
||||
Error_Handler();
|
||||
}
|
||||
sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
|
||||
if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK)
|
||||
{
|
||||
Error_Handler();
|
||||
}
|
||||
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
|
||||
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
|
||||
if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK)
|
||||
{
|
||||
Error_Handler();
|
||||
}
|
||||
/* USER CODE BEGIN TIM3_Init 2 */
|
||||
|
||||
/* USER CODE END TIM3_Init 2 */
|
||||
|
||||
}
|
||||
|
||||
void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle)
|
||||
@@ -81,6 +122,17 @@ void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle)
|
||||
|
||||
/* USER CODE END TIM2_MspInit 1 */
|
||||
}
|
||||
else if(tim_baseHandle->Instance==TIM3)
|
||||
{
|
||||
/* USER CODE BEGIN TIM3_MspInit 0 */
|
||||
|
||||
/* USER CODE END TIM3_MspInit 0 */
|
||||
/* TIM3 clock enable */
|
||||
__HAL_RCC_TIM3_CLK_ENABLE();
|
||||
/* USER CODE BEGIN TIM3_MspInit 1 */
|
||||
|
||||
/* USER CODE END TIM3_MspInit 1 */
|
||||
}
|
||||
}
|
||||
|
||||
void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* tim_baseHandle)
|
||||
@@ -97,6 +149,17 @@ void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* tim_baseHandle)
|
||||
|
||||
/* USER CODE END TIM2_MspDeInit 1 */
|
||||
}
|
||||
else if(tim_baseHandle->Instance==TIM3)
|
||||
{
|
||||
/* USER CODE BEGIN TIM3_MspDeInit 0 */
|
||||
|
||||
/* USER CODE END TIM3_MspDeInit 0 */
|
||||
/* Peripheral clock disable */
|
||||
__HAL_RCC_TIM3_CLK_DISABLE();
|
||||
/* USER CODE BEGIN TIM3_MspDeInit 1 */
|
||||
|
||||
/* USER CODE END TIM3_MspDeInit 1 */
|
||||
}
|
||||
}
|
||||
|
||||
/* USER CODE BEGIN 1 */
|
||||
|
||||
117
Core/Src/usart.c
Normal file
117
Core/Src/usart.c
Normal file
@@ -0,0 +1,117 @@
|
||||
/* USER CODE BEGIN Header */
|
||||
/**
|
||||
******************************************************************************
|
||||
* @file usart.c
|
||||
* @brief This file provides code for the configuration
|
||||
* of the USART instances.
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* Copyright (c) 2025 STMicroelectronics.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This software is licensed under terms that can be found in the LICENSE file
|
||||
* in the root directory of this software component.
|
||||
* If no LICENSE file comes with this software, it is provided AS-IS.
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
/* USER CODE END Header */
|
||||
/* Includes ------------------------------------------------------------------*/
|
||||
#include "usart.h"
|
||||
|
||||
/* USER CODE BEGIN 0 */
|
||||
|
||||
/* USER CODE END 0 */
|
||||
|
||||
UART_HandleTypeDef huart1;
|
||||
|
||||
/* USART1 init function */
|
||||
|
||||
void MX_USART1_UART_Init(void)
|
||||
{
|
||||
|
||||
/* USER CODE BEGIN USART1_Init 0 */
|
||||
|
||||
/* USER CODE END USART1_Init 0 */
|
||||
|
||||
/* USER CODE BEGIN USART1_Init 1 */
|
||||
|
||||
/* USER CODE END USART1_Init 1 */
|
||||
huart1.Instance = USART1;
|
||||
huart1.Init.BaudRate = 115200;
|
||||
huart1.Init.WordLength = UART_WORDLENGTH_8B;
|
||||
huart1.Init.StopBits = UART_STOPBITS_1;
|
||||
huart1.Init.Parity = UART_PARITY_NONE;
|
||||
huart1.Init.Mode = UART_MODE_TX_RX;
|
||||
huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
|
||||
huart1.Init.OverSampling = UART_OVERSAMPLING_16;
|
||||
if (HAL_UART_Init(&huart1) != HAL_OK)
|
||||
{
|
||||
Error_Handler();
|
||||
}
|
||||
/* USER CODE BEGIN USART1_Init 2 */
|
||||
|
||||
/* USER CODE END USART1_Init 2 */
|
||||
|
||||
}
|
||||
|
||||
void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle)
|
||||
{
|
||||
|
||||
GPIO_InitTypeDef GPIO_InitStruct = {0};
|
||||
if(uartHandle->Instance==USART1)
|
||||
{
|
||||
/* USER CODE BEGIN USART1_MspInit 0 */
|
||||
|
||||
/* USER CODE END USART1_MspInit 0 */
|
||||
/* USART1 clock enable */
|
||||
__HAL_RCC_USART1_CLK_ENABLE();
|
||||
|
||||
__HAL_RCC_GPIOA_CLK_ENABLE();
|
||||
/**USART1 GPIO Configuration
|
||||
PA9 ------> USART1_TX
|
||||
PA10 ------> USART1_RX
|
||||
*/
|
||||
GPIO_InitStruct.Pin = GPIO_PIN_9;
|
||||
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
|
||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
|
||||
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
|
||||
|
||||
GPIO_InitStruct.Pin = GPIO_PIN_10;
|
||||
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
|
||||
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
||||
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
|
||||
|
||||
/* USER CODE BEGIN USART1_MspInit 1 */
|
||||
|
||||
/* USER CODE END USART1_MspInit 1 */
|
||||
}
|
||||
}
|
||||
|
||||
void HAL_UART_MspDeInit(UART_HandleTypeDef* uartHandle)
|
||||
{
|
||||
|
||||
if(uartHandle->Instance==USART1)
|
||||
{
|
||||
/* USER CODE BEGIN USART1_MspDeInit 0 */
|
||||
|
||||
/* USER CODE END USART1_MspDeInit 0 */
|
||||
/* Peripheral clock disable */
|
||||
__HAL_RCC_USART1_CLK_DISABLE();
|
||||
|
||||
/**USART1 GPIO Configuration
|
||||
PA9 ------> USART1_TX
|
||||
PA10 ------> USART1_RX
|
||||
*/
|
||||
HAL_GPIO_DeInit(GPIOA, GPIO_PIN_9|GPIO_PIN_10);
|
||||
|
||||
/* USER CODE BEGIN USART1_MspDeInit 1 */
|
||||
|
||||
/* USER CODE END USART1_MspDeInit 1 */
|
||||
}
|
||||
}
|
||||
|
||||
/* USER CODE BEGIN 1 */
|
||||
|
||||
/* USER CODE END 1 */
|
||||
File diff suppressed because one or more lines are too long
@@ -148,39 +148,22 @@
|
||||
<Name>-U-O142 -O2254 -SF10000 -C0 -A0 -I0 -HNlocalhost -HP7184 -P1 -N00("ARM CoreSight SW-DP (ARM Core") -D00(1BA01477) -L00(0) -TO131090 -TC10000000 -TT10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F10x_128.FLM -FS08000000 -FL010000 -FP0($$Device:STM32F103C8$Flash\STM32F10x_128.FLM) -WA0 -WE0 -WVCE4 -WS2710 -WM0 -WP2</Name>
|
||||
</SetRegEntry>
|
||||
</TargetDriverDllRegistry>
|
||||
<Breakpoint>
|
||||
<Bp>
|
||||
<Number>0</Number>
|
||||
<Type>0</Type>
|
||||
<LineNumber>183</LineNumber>
|
||||
<EnabledFlag>1</EnabledFlag>
|
||||
<Address>134225938</Address>
|
||||
<ByteObject>0</ByteObject>
|
||||
<HtxType>0</HtxType>
|
||||
<ManyObjects>0</ManyObjects>
|
||||
<SizeOfObject>0</SizeOfObject>
|
||||
<BreakByAccess>0</BreakByAccess>
|
||||
<BreakIfRCount>1</BreakIfRCount>
|
||||
<Filename>..\Core\CANEmu\canform.c</Filename>
|
||||
<ExecCommand></ExecCommand>
|
||||
<Expression>\\CANEmu\../Core/CANEmu/canform.c\183</Expression>
|
||||
</Bp>
|
||||
</Breakpoint>
|
||||
<Breakpoint/>
|
||||
<WatchWindow1>
|
||||
<Ww>
|
||||
<count>0</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>hcanemu</ItemText>
|
||||
<ItemText>hcanemu,0x0A</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>1</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>can_bits</ItemText>
|
||||
<ItemText>MB_DATA,0x0A</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>2</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>raw_len,0x0A</ItemText>
|
||||
<ItemText>flag_manual</ItemText>
|
||||
</Ww>
|
||||
</WatchWindow1>
|
||||
<Tracepoint>
|
||||
@@ -237,7 +220,7 @@
|
||||
|
||||
<Group>
|
||||
<GroupName>Application/MDK-ARM</GroupName>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExp>1</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<cbSel>0</cbSel>
|
||||
<RteFlg>0</RteFlg>
|
||||
@@ -257,7 +240,7 @@
|
||||
|
||||
<Group>
|
||||
<GroupName>Application/User/Core</GroupName>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExp>1</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<cbSel>0</cbSel>
|
||||
<RteFlg>0</RteFlg>
|
||||
@@ -304,6 +287,18 @@
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>../Core/Src/usart.c</PathWithFileName>
|
||||
<FilenameWithoutPath>usart.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>2</GroupNumber>
|
||||
<FileNumber>6</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>../Core/Src/stm32f1xx_it.c</PathWithFileName>
|
||||
<FilenameWithoutPath>stm32f1xx_it.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
@@ -311,7 +306,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>2</GroupNumber>
|
||||
<FileNumber>6</FileNumber>
|
||||
<FileNumber>7</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -331,7 +326,7 @@
|
||||
<RteFlg>0</RteFlg>
|
||||
<File>
|
||||
<GroupNumber>3</GroupNumber>
|
||||
<FileNumber>7</FileNumber>
|
||||
<FileNumber>8</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -343,7 +338,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>3</GroupNumber>
|
||||
<FileNumber>8</FileNumber>
|
||||
<FileNumber>9</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -355,7 +350,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>3</GroupNumber>
|
||||
<FileNumber>9</FileNumber>
|
||||
<FileNumber>10</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -367,7 +362,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>3</GroupNumber>
|
||||
<FileNumber>10</FileNumber>
|
||||
<FileNumber>11</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -379,7 +374,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>3</GroupNumber>
|
||||
<FileNumber>11</FileNumber>
|
||||
<FileNumber>12</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -391,7 +386,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>3</GroupNumber>
|
||||
<FileNumber>12</FileNumber>
|
||||
<FileNumber>13</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -403,7 +398,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>3</GroupNumber>
|
||||
<FileNumber>13</FileNumber>
|
||||
<FileNumber>14</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -415,7 +410,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>3</GroupNumber>
|
||||
<FileNumber>14</FileNumber>
|
||||
<FileNumber>15</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -427,7 +422,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>3</GroupNumber>
|
||||
<FileNumber>15</FileNumber>
|
||||
<FileNumber>16</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -439,7 +434,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>3</GroupNumber>
|
||||
<FileNumber>16</FileNumber>
|
||||
<FileNumber>17</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -451,7 +446,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>3</GroupNumber>
|
||||
<FileNumber>17</FileNumber>
|
||||
<FileNumber>18</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -463,7 +458,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>3</GroupNumber>
|
||||
<FileNumber>18</FileNumber>
|
||||
<FileNumber>19</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -475,7 +470,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>3</GroupNumber>
|
||||
<FileNumber>19</FileNumber>
|
||||
<FileNumber>20</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -485,6 +480,18 @@
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>3</GroupNumber>
|
||||
<FileNumber>21</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.c</PathWithFileName>
|
||||
<FilenameWithoutPath>stm32f1xx_hal_uart.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
</Group>
|
||||
|
||||
<Group>
|
||||
@@ -495,7 +502,7 @@
|
||||
<RteFlg>0</RteFlg>
|
||||
<File>
|
||||
<GroupNumber>4</GroupNumber>
|
||||
<FileNumber>20</FileNumber>
|
||||
<FileNumber>22</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -515,7 +522,7 @@
|
||||
<RteFlg>0</RteFlg>
|
||||
<File>
|
||||
<GroupNumber>5</GroupNumber>
|
||||
<FileNumber>21</FileNumber>
|
||||
<FileNumber>23</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -527,7 +534,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>5</GroupNumber>
|
||||
<FileNumber>22</FileNumber>
|
||||
<FileNumber>24</FileNumber>
|
||||
<FileType>5</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -539,7 +546,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>5</GroupNumber>
|
||||
<FileNumber>23</FileNumber>
|
||||
<FileNumber>25</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -551,7 +558,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>5</GroupNumber>
|
||||
<FileNumber>24</FileNumber>
|
||||
<FileNumber>26</FileNumber>
|
||||
<FileType>5</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -563,6 +570,110 @@
|
||||
</File>
|
||||
</Group>
|
||||
|
||||
<Group>
|
||||
<GroupName>Modbus</GroupName>
|
||||
<tvExp>1</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<cbSel>0</cbSel>
|
||||
<RteFlg>0</RteFlg>
|
||||
<File>
|
||||
<GroupNumber>6</GroupNumber>
|
||||
<FileNumber>27</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\Core\Modbus\crc_algs.c</PathWithFileName>
|
||||
<FilenameWithoutPath>crc_algs.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>6</GroupNumber>
|
||||
<FileNumber>28</FileNumber>
|
||||
<FileType>5</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\Core\Modbus\crc_algs.h</PathWithFileName>
|
||||
<FilenameWithoutPath>crc_algs.h</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>6</GroupNumber>
|
||||
<FileNumber>29</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\Core\Modbus\modbus.c</PathWithFileName>
|
||||
<FilenameWithoutPath>modbus.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>6</GroupNumber>
|
||||
<FileNumber>30</FileNumber>
|
||||
<FileType>5</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\Core\Modbus\modbus.h</PathWithFileName>
|
||||
<FilenameWithoutPath>modbus.h</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>6</GroupNumber>
|
||||
<FileNumber>31</FileNumber>
|
||||
<FileType>5</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\Core\Modbus\modbus_config.h</PathWithFileName>
|
||||
<FilenameWithoutPath>modbus_config.h</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>6</GroupNumber>
|
||||
<FileNumber>32</FileNumber>
|
||||
<FileType>5</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\Core\Modbus\modbus_data.h</PathWithFileName>
|
||||
<FilenameWithoutPath>modbus_data.h</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>6</GroupNumber>
|
||||
<FileNumber>33</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\Core\Modbus\rs_message.c</PathWithFileName>
|
||||
<FilenameWithoutPath>rs_message.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>6</GroupNumber>
|
||||
<FileNumber>34</FileNumber>
|
||||
<FileType>5</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\Core\Modbus\rs_message.h</PathWithFileName>
|
||||
<FilenameWithoutPath>rs_message.h</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
</Group>
|
||||
|
||||
<Group>
|
||||
<GroupName>::CMSIS</GroupName>
|
||||
<tvExp>0</tvExp>
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
<Vendor>STMicroelectronics</Vendor>
|
||||
<PackID>Keil.STM32F1xx_DFP.2.4.0</PackID>
|
||||
<PackURL>http://www.keil.com/pack/</PackURL>
|
||||
<Cpu>IRAM(0x20000000-0x20004FFF) IROM(0x8000000-0x800FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") TZ</Cpu>
|
||||
<Cpu>IRAM(0x20000000-0x20004FFF) IROM(0x8000000-0x800FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") TZ</Cpu>
|
||||
<FlashUtilSpec></FlashUtilSpec>
|
||||
<StartupFile></StartupFile>
|
||||
<FlashDriverDll></FlashDriverDll>
|
||||
@@ -341,7 +341,7 @@
|
||||
<MiscControls></MiscControls>
|
||||
<Define>USE_HAL_DRIVER,STM32F103xB</Define>
|
||||
<Undefine></Undefine>
|
||||
<IncludePath>../Core/Inc;../Drivers/STM32F1xx_HAL_Driver/Inc;../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy;../Drivers/CMSIS/Device/ST/STM32F1xx/Include;../Drivers/CMSIS/Include;..\Core\CANEmu</IncludePath>
|
||||
<IncludePath>../Core/Inc;../Drivers/STM32F1xx_HAL_Driver/Inc;../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy;../Drivers/CMSIS/Device/ST/STM32F1xx/Include;../Drivers/CMSIS/Include;../Core/CANEmu;..\Core\Modbus</IncludePath>
|
||||
</VariousControls>
|
||||
</Cads>
|
||||
<Aads>
|
||||
@@ -410,6 +410,62 @@
|
||||
<FileType>1</FileType>
|
||||
<FilePath>../Core/Src/tim.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>usart.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>../Core/Src/usart.c</FilePath>
|
||||
<FileOption>
|
||||
<CommonProperty>
|
||||
<UseCPPCompiler>2</UseCPPCompiler>
|
||||
<RVCTCodeConst>0</RVCTCodeConst>
|
||||
<RVCTZI>0</RVCTZI>
|
||||
<RVCTOtherData>0</RVCTOtherData>
|
||||
<ModuleSelection>0</ModuleSelection>
|
||||
<IncludeInBuild>1</IncludeInBuild>
|
||||
<AlwaysBuild>2</AlwaysBuild>
|
||||
<GenerateAssemblyFile>2</GenerateAssemblyFile>
|
||||
<AssembleAssemblyFile>2</AssembleAssemblyFile>
|
||||
<PublicsOnly>2</PublicsOnly>
|
||||
<StopOnExitCode>11</StopOnExitCode>
|
||||
<CustomArgument></CustomArgument>
|
||||
<IncludeLibraryModules></IncludeLibraryModules>
|
||||
<ComprImg>1</ComprImg>
|
||||
</CommonProperty>
|
||||
<FileArmAds>
|
||||
<Cads>
|
||||
<interw>2</interw>
|
||||
<Optim>0</Optim>
|
||||
<oTime>2</oTime>
|
||||
<SplitLS>2</SplitLS>
|
||||
<OneElfS>2</OneElfS>
|
||||
<Strict>2</Strict>
|
||||
<EnumInt>2</EnumInt>
|
||||
<PlainCh>2</PlainCh>
|
||||
<Ropi>2</Ropi>
|
||||
<Rwpi>2</Rwpi>
|
||||
<wLevel>0</wLevel>
|
||||
<uThumb>2</uThumb>
|
||||
<uSurpInc>2</uSurpInc>
|
||||
<uC99>2</uC99>
|
||||
<uGnu>2</uGnu>
|
||||
<useXO>2</useXO>
|
||||
<v6Lang>0</v6Lang>
|
||||
<v6LangP>0</v6LangP>
|
||||
<vShortEn>2</vShortEn>
|
||||
<vShortWch>2</vShortWch>
|
||||
<v6Lto>2</v6Lto>
|
||||
<v6WtE>2</v6WtE>
|
||||
<v6Rtti>2</v6Rtti>
|
||||
<VariousControls>
|
||||
<MiscControls></MiscControls>
|
||||
<Define></Define>
|
||||
<Undefine></Undefine>
|
||||
<IncludePath></IncludePath>
|
||||
</VariousControls>
|
||||
</Cads>
|
||||
</FileArmAds>
|
||||
</FileOption>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>stm32f1xx_it.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
@@ -490,6 +546,62 @@
|
||||
<FileType>1</FileType>
|
||||
<FilePath>../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>stm32f1xx_hal_uart.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.c</FilePath>
|
||||
<FileOption>
|
||||
<CommonProperty>
|
||||
<UseCPPCompiler>2</UseCPPCompiler>
|
||||
<RVCTCodeConst>0</RVCTCodeConst>
|
||||
<RVCTZI>0</RVCTZI>
|
||||
<RVCTOtherData>0</RVCTOtherData>
|
||||
<ModuleSelection>0</ModuleSelection>
|
||||
<IncludeInBuild>1</IncludeInBuild>
|
||||
<AlwaysBuild>2</AlwaysBuild>
|
||||
<GenerateAssemblyFile>2</GenerateAssemblyFile>
|
||||
<AssembleAssemblyFile>2</AssembleAssemblyFile>
|
||||
<PublicsOnly>2</PublicsOnly>
|
||||
<StopOnExitCode>11</StopOnExitCode>
|
||||
<CustomArgument></CustomArgument>
|
||||
<IncludeLibraryModules></IncludeLibraryModules>
|
||||
<ComprImg>1</ComprImg>
|
||||
</CommonProperty>
|
||||
<FileArmAds>
|
||||
<Cads>
|
||||
<interw>2</interw>
|
||||
<Optim>0</Optim>
|
||||
<oTime>2</oTime>
|
||||
<SplitLS>2</SplitLS>
|
||||
<OneElfS>2</OneElfS>
|
||||
<Strict>2</Strict>
|
||||
<EnumInt>2</EnumInt>
|
||||
<PlainCh>2</PlainCh>
|
||||
<Ropi>2</Ropi>
|
||||
<Rwpi>2</Rwpi>
|
||||
<wLevel>0</wLevel>
|
||||
<uThumb>2</uThumb>
|
||||
<uSurpInc>2</uSurpInc>
|
||||
<uC99>2</uC99>
|
||||
<uGnu>2</uGnu>
|
||||
<useXO>2</useXO>
|
||||
<v6Lang>0</v6Lang>
|
||||
<v6LangP>0</v6LangP>
|
||||
<vShortEn>2</vShortEn>
|
||||
<vShortWch>2</vShortWch>
|
||||
<v6Lto>2</v6Lto>
|
||||
<v6WtE>2</v6WtE>
|
||||
<v6Rtti>2</v6Rtti>
|
||||
<VariousControls>
|
||||
<MiscControls></MiscControls>
|
||||
<Define></Define>
|
||||
<Undefine></Undefine>
|
||||
<IncludePath></IncludePath>
|
||||
</VariousControls>
|
||||
</Cads>
|
||||
</FileArmAds>
|
||||
</FileOption>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
<Group>
|
||||
@@ -527,6 +639,51 @@
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
<Group>
|
||||
<GroupName>Modbus</GroupName>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>crc_algs.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\Core\Modbus\crc_algs.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>crc_algs.h</FileName>
|
||||
<FileType>5</FileType>
|
||||
<FilePath>..\Core\Modbus\crc_algs.h</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>modbus.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\Core\Modbus\modbus.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>modbus.h</FileName>
|
||||
<FileType>5</FileType>
|
||||
<FilePath>..\Core\Modbus\modbus.h</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>modbus_config.h</FileName>
|
||||
<FileType>5</FileType>
|
||||
<FilePath>..\Core\Modbus\modbus_config.h</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>modbus_data.h</FileName>
|
||||
<FileType>5</FileType>
|
||||
<FilePath>..\Core\Modbus\modbus_data.h</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>rs_message.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\Core\Modbus\rs_message.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>rs_message.h</FileName>
|
||||
<FileType>5</FileType>
|
||||
<FilePath>..\Core\Modbus\rs_message.h</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
<Group>
|
||||
<GroupName>::CMSIS</GroupName>
|
||||
</Group>
|
||||
|
||||
Binary file not shown.
@@ -27,9 +27,12 @@ Project File Date: 08/04/2025
|
||||
<h2>Output:</h2>
|
||||
*** Using Compiler 'V6.19', folder: 'C:\Keil_v5\ARM\ARMCLANG\Bin'
|
||||
Build target 'CANEmu'
|
||||
compiling canform.c...
|
||||
compiling canEmu.c...
|
||||
compiling main.c...
|
||||
compiling modbus.c...
|
||||
compiling rs_message.c...
|
||||
linking...
|
||||
Program Size: Code=8230 RO-data=302 RW-data=12 ZI-data=2284
|
||||
Program Size: Code=11542 RO-data=338 RW-data=12 ZI-data=3116
|
||||
FromELF: creating hex file...
|
||||
"CANEmu\CANEmu.axf" - 0 Error(s), 0 Warning(s).
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
:020000040800F2
|
||||
:10000000F808002089010008AD1600086D150008E9
|
||||
:10001000A916000891020008391A00080000000023
|
||||
:100020000000000000000000000000005D17000854
|
||||
:100030008D030008000000001D170008B517000818
|
||||
:10000000380C002089010008651E0008CD1B00087F
|
||||
:10001000611E0008910200088D2500080000000004
|
||||
:100020000000000000000000000000009121000816
|
||||
:100030008D03000800000000D51E0008E92100081B
|
||||
:10004000A3010008A3010008A3010008A301000800
|
||||
:10005000A3010008A3010008A3010008A3010008F0
|
||||
:10006000A3010008A3010008A3010008A3010008E0
|
||||
@@ -17,17 +17,17 @@
|
||||
:1000F00000F03AF80AA090E8000C82448344AAF188
|
||||
:100100000107DA4501D100F02FF8AFF2090EBAE885
|
||||
:100110000F0013F0010F18BFFB1A43F0010318473B
|
||||
:100120001420000034200000103A24BF78C878C1A1
|
||||
:10012000282D0000482D0000103A24BF78C878C15F
|
||||
:10013000FAD8520724BF30C830C144BF04680C60ED
|
||||
:10014000704700000023002400250026103A28BF35
|
||||
:1001500078C1FBD8520728BF30C148BF0B60704739
|
||||
:100160001FB51FBD10B510BD00F058F81146FFF7C0
|
||||
:10017000F7FF01F083FF00F076F803B4FFF7F2FF1A
|
||||
:10017000F7FF02F02DFD00F076F803B4FFF7F2FF71
|
||||
:1001800003BC00F07DF8000009488047094800479B
|
||||
:10019000FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE737
|
||||
:1001A000FEE7FEE704480549054A064B7047000094
|
||||
:1001B00029180008ED000008F8020020F8080020C7
|
||||
:1001C000F8040020F80400204FF0000200B51346A8
|
||||
:1001B0005D220008ED00000838060020380C002001
|
||||
:1001C00038080020380800204FF0000200B5134620
|
||||
:1001D00094469646203922BFA0E80C50A0E80C5067
|
||||
:1001E000B1F12001BFF4F7AF090728BFA0E80C5018
|
||||
:1001F00048BF0CC05DF804EB890028BF40F8042B11
|
||||
@@ -44,495 +44,704 @@
|
||||
:1002A0004FF08041086840F00100086040F61041BE
|
||||
:1002B000C4F201010120086002B0704780B584B02B
|
||||
:1002C00003900398006A08B9FFE75DE0039800F126
|
||||
:1002D0001801828CADF80820029A01F0E5FC039821
|
||||
:1002D0001801028DADF80820029A02F08FFA0398F7
|
||||
:1002E000016A4AF20020C0F24A4000EB5100B0FB24
|
||||
:1002F000F1F040F27001C2F2000108602420C4F263
|
||||
:1003000000000068ADF80600BDF80600ADF8040076
|
||||
:1003100000200090FFE7009840F27411C2F2000143
|
||||
:100320000968884229D2FFE7009940F27400C2F2BE
|
||||
:1003100000200090FFE7009840F2F831C2F200019F
|
||||
:100320000968884229D2FFE7009940F2F720C2F21B
|
||||
:100330000000405C38B1FFE740F61041C4F2010113
|
||||
:100340000120086006E040F61441C4F201010120DA
|
||||
:100350000860FFE740F27000C2F200000168BDF8DB
|
||||
:1003600004000844ADF80400BDF8040001F0ACFE40
|
||||
:1003600004000844ADF80400BDF8040002F024FDC8
|
||||
:10037000FFE7009801300090CDE740F61041C4F24D
|
||||
:10038000010101200860FFE704B080BD7047000054
|
||||
:1003900081B0EFF3108072B60090FFE7FEE7000037
|
||||
:1003A00080B584B0039000F0C5F9029003980190E5
|
||||
:1003B0000198013048B1FFE740F20400C2F20000AA
|
||||
:1003C0000178019808440190FFE7FFE700F0B2F9D7
|
||||
:1003D0000299401A0199884201D2FFE7F6E704B07A
|
||||
:1003E00080BD000090B00F900E9100200D900990FC
|
||||
:1003F000FFE70E9800680D99C840002800F07F8143
|
||||
:10040000FFE70D99012088400C900E9800680C9928
|
||||
:1004100008400B900B980C99884240F06C81FFE7E4
|
||||
:100420000E9840680590002851D0FFE705980128F4
|
||||
:100430003AD0FFE7059802283FD0FFE70598032848
|
||||
:100440005FD0FFE70598112832D0FFE70598122802
|
||||
:1004500038D0FFE705980021C1F21101884236D05B
|
||||
:10046000FFE705980021C1F2120188422FD0FFE773
|
||||
:1004700005980021C1F22101884228D0FFE70598A4
|
||||
:100480000021C1F22201884221D0FFE70598002116
|
||||
:10049000C1F2310188421AD0FFE705980021C1F26C
|
||||
:1004A0003201884213D02FE00E98C06809902CE0EA
|
||||
:1004B0000E98C0680430099027E00E98C068083094
|
||||
:1004C000099022E00E98C0680C3009901DE00E984B
|
||||
:1004D000806818B9FFE70420099011E00E98806841
|
||||
:1004E000012806D1FFE7082009900C980F990861B0
|
||||
:1004F00005E0082009900C980F994861FFE7FFE795
|
||||
:1005000003E00020099000E0FFE70B98FF2803D8E4
|
||||
:10051000FFE70F98049003E00F9804300490FFE782
|
||||
:10052000049808900B98FF2804D8FFE70D988000E6
|
||||
:10053000039006E00D996FF01F0000EB810003901F
|
||||
:10054000FFE70398079008980068079A0F219140E9
|
||||
:100550008843099991400843089908600E98C0792A
|
||||
:10056000C006002840F1C680FFE7FFE741F218000F
|
||||
:10057000C4F20200016841F001010160006800F06E
|
||||
:10058000010006900698FFE70D9820F0030008216F
|
||||
:10059000C4F2010140580A900D9800F00300810058
|
||||
:1005A0000F2000FA01F10A9888430A900F9840F64C
|
||||
:1005B0000001C4F20101884203D1FFE7002002904C
|
||||
:1005C00026E00F9840F60041C4F20101884203D1B1
|
||||
:1005D000FFE70120019018E00F9841F20001C4F2FA
|
||||
:1005E0000101884203D1FFE7022000900AE00F9941
|
||||
:1005F00041F20042C4F201020420914208BF0320EC
|
||||
:100600000090FFE700980190FFE701980290FFE754
|
||||
:1006100002980D9901F00301890000FA01F10A988E
|
||||
:1006200008430A900A980D9921F003010822C4F2A8
|
||||
:10063000010288500E988079C006002809D5FFE78E
|
||||
:100640000B9A40F20841C4F20101086810430860A7
|
||||
:1006500008E00B9A40F20841C4F201010868904397
|
||||
:100660000860FFE70E9880798006002809D5FFE72B
|
||||
:100670000B9A40F20C41C4F2010108681043086073
|
||||
:1006800008E00B9A40F20C41C4F201010868904363
|
||||
:100690000860FFE70E9880798007002809D5FFE7FA
|
||||
:1006A0000B9A40F20441C4F201010868104308604B
|
||||
:1006B00008E00B9A40F20441C4F20101086890433B
|
||||
:1006C0000860FFE70E988079C00748B1FFE70B9AF2
|
||||
:1006D00040F20041C4F2010108681043086008E0DC
|
||||
:1006E0000B9A40F20041C4F201010868904308608F
|
||||
:1006F000FFE7FFE7FFE70D9801300D9079E610B0B6
|
||||
:100700007047000082B00190ADF802108DF8012012
|
||||
:100710009DF8010028B1FFE7BDF8020001990861CA
|
||||
:1007200005E0BDF80200000401990861FFE702B08E
|
||||
:100730007047000040F2F020C2F2000000687047ED
|
||||
:1007400040F20400C2F20000027840F2F021C2F24E
|
||||
:1007500000010868104408607047000080B542F24C
|
||||
:100760000001C4F20201086840F010000860032094
|
||||
:1007700000F08CF80F2000F005F800F03BF80020A6
|
||||
:1007800080BD000080B582B0009040F20000C2F24F
|
||||
:100790000000006840F20401C2F200010A784FF440
|
||||
:1007A0007A71B1FBF2F1B0FBF1F000F03FFD20B146
|
||||
:1007B000FFE701208DF8070018E000980F280DD8FA
|
||||
:1007C000FFE700994FF0FF30002200F045F8009855
|
||||
:1007D00040F20801C2F20001086003E001208DF838
|
||||
:1007E000070003E000208DF80700FFE79DF80700F1
|
||||
:1007F00002B080BD83B0FFE741F21800C4F20200EE
|
||||
:10080000016841F001010160006800F00100029000
|
||||
:100810000298FFE7FFE741F21C00C4F20200016802
|
||||
:1008200041F080510160006800F080500190019813
|
||||
:10083000FFE7FFE70421C4F2010108680090009877
|
||||
:1008400020F0E0600090009840F000700090009868
|
||||
:100850000860FFE703B0704780B586B08DF81700D9
|
||||
:10086000049103920020029001F0E8F802909DF9B3
|
||||
:100870001700019002980499039A00F019FF0146AD
|
||||
:10088000019801F0E3F806B080BD000080B582B0A9
|
||||
:100890000190019801F0FCF802B080BD80B584B0F1
|
||||
:1008A00002900191029820B9FFE701208DF80F0016
|
||||
:1008B0001BE1019842F20001C4F20201096801F053
|
||||
:1008C0000701884216D9FFE742F20000C4F2020095
|
||||
:1008D000016821F00701019A11430160006800F0EE
|
||||
:1008E00007000199884204D0FFE701208DF80F002E
|
||||
:1008F000FBE0FFE702980078800700282AD5FFE791
|
||||
:10090000029800784007002809D5FFE741F204016A
|
||||
:10091000C4F20201086840F4E0600860FFE7029852
|
||||
:1009200000780007002809D5FFE741F20401C4F26E
|
||||
:100930000201086840F460500860FFE741F20401DA
|
||||
:10094000C4F20201086820F0F000029A9268104395
|
||||
:100950000860FFE702980078C007002860D0FFE732
|
||||
:100960000298406801280ED1FFE741F20000C4F26E
|
||||
:10097000020000688003002804D4FFE701208DF8FE
|
||||
:100980000F00B2E021E00298406802280ED1FFE794
|
||||
:1009900041F20000C4F2020000688001002804D483
|
||||
:1009A000FFE701208DF80F009FE00DE041F200000D
|
||||
:1009B000C4F2020000688007002804D4FFE7012089
|
||||
:1009C0008DF80F0091E0FFE7FFE741F20401C4F268
|
||||
:1009D0000201086820F00300029A52681043086080
|
||||
:1009E000FFF7A8FE0090FFE741F20400C4F2020006
|
||||
:1009F000006800F00C0002994968B0EB810F0ED03E
|
||||
:100A0000FFE7FFF797FE0099401A41F289318842CB
|
||||
:100A100004D3FFE703208DF80F0066E0E4E7FFE76B
|
||||
:100A2000019842F20001C4F20201096801F00701D5
|
||||
:100A3000884216D2FFE742F20000C4F202000168C9
|
||||
:100A400021F00701019A11430160006800F00700DE
|
||||
:100A50000199884204D0FFE701208DF80F0044E09F
|
||||
:100A6000FFE702980078400700280CD5FFE741F225
|
||||
:100A70000401C4F20201086820F4E060029AD2681E
|
||||
:100A800010430860FFE702980078000700280DD5A2
|
||||
:100A9000FFE741F20401C4F20201086820F460504B
|
||||
:100AA000029A126940EAC2000860FFE700F022F8EB
|
||||
:100AB00041F20401C4F202010968C9B20A0942F212
|
||||
:100AC0001211C0F60001895CC84040F20001C2F278
|
||||
:100AD0000001086040F20800C2F200000068FFF761
|
||||
:100AE00051FE00208DF80F00FFE79DF80F0004B0C5
|
||||
:100AF00080BD000086B00020059004900390029015
|
||||
:100B0000019041F20400C4F20200006805900598CB
|
||||
:100B100000F00C000146009100283FD0FFE700984C
|
||||
:100B2000042804D0FFE70098082806D037E041F2F7
|
||||
:100B30000020C0F27A00019037E00598C0F38341AD
|
||||
:100B400042F22210C0F60000405C02909DF81600B0
|
||||
:100B5000C007C0B1FFE741F20400C4F20200006820
|
||||
:100B6000C0F3404142F23210C0F60000405C0490F5
|
||||
:100B7000029841F20021C0F27A0148430499B0FB87
|
||||
:100B8000F1F0039007E0029840F60011C0F23D0139
|
||||
:100B900048430390FFE70398019006E0FFE741F226
|
||||
:100BA0000020C0F27A000190FFE7019806B070477C
|
||||
:100BB00080B586B00490049820B9FFE701208DF835
|
||||
:100BC00017002EE304980078C007002800F0AE80DC
|
||||
:100BD000FFE741F20400C4F20200006800F00C00DC
|
||||
:100BE000042813D0FFE741F20400C4F202000068B9
|
||||
:100BF00000F00C0008281BD1FFE741F20400C4F20A
|
||||
:100C000002000068C003002812D5FFE741F200008F
|
||||
:100C1000C4F2020000688003002808D5FFE70498AA
|
||||
:100C2000406820B9FFE701208DF81700F9E27CE069
|
||||
:100C3000FFE704984068B0F5803F09D1FFE741F233
|
||||
:100C40000001C4F20201086840F48030086032E01C
|
||||
:100C50000498406868B9FFE741F20001C4F202015C
|
||||
:100C6000086820F480300860086820F4802008605C
|
||||
:100C700020E004984068B0F5A02F0DD1FFE741F2C5
|
||||
:100C80000001C4F20201086840F48020086008688E
|
||||
:100C900040F4803008600CE041F20001C4F202012F
|
||||
:100CA000086820F480300860086820F4802008601C
|
||||
:100CB000FFE7FFE7FFE7FFE704984068D0B1FFE7F1
|
||||
:100CC000FFF738FD0390FFE741F20000C4F2020095
|
||||
:100CD0000068800300280CD4FFE7FFF72BFD039981
|
||||
:100CE000401A652804D3FFE703208DF8170098E227
|
||||
:100CF000EAE719E0FFF71EFD0390FFE741F200006D
|
||||
:100D0000C4F202000068800300280CD5FFE7FFF75B
|
||||
:100D100011FD0399401A652804D3FFE703208DF8DD
|
||||
:100D200017007EE2EAE7FFE7FFE7FFE704980078B5
|
||||
:100D30008007002840F18D80FFE741F20400C4F2F3
|
||||
:100D40000200006810F00C0F13D0FFE741F204001E
|
||||
:100D5000C4F20200006800F00C00082829D1FFE767
|
||||
:100D600041F20400C4F202000068C003002820D44D
|
||||
:100D7000FFE741F20000C4F202000068800700288B
|
||||
:100D800009D5FFE704980069012804D0FFE7012096
|
||||
:100D90008DF8170045E241F20001C4F20201086833
|
||||
:100DA00020F0F800049A526940EAC2000860FFE7A8
|
||||
:100DB0004EE00498006958B3FFE70021C4F24221D5
|
||||
:100DC00001200860FFF7B6FC0390FFE741F2000046
|
||||
:100DD000C4F202000068800700280CD4FFE7FFF788
|
||||
:100DE000A9FC0399401A032804D3FFE703208DF8D8
|
||||
:100DF000170016E2EAE741F20001C4F202010868B6
|
||||
:100E000020F0F800049A526940EAC20008601EE02F
|
||||
:100E10000021C4F2422100200860FFF78BFC039000
|
||||
:100E2000FFE741F20000C4F20200006880070028DA
|
||||
:100E30000CD5FFE7FFF77EFC0399401A032804D383
|
||||
:100E4000FFE703208DF81700EBE1EAE7FFE7FFE794
|
||||
:100E5000FFE7049800780007002848D5FFE70498CA
|
||||
:100E6000806918B3FFE740F28041C4F242210120BB
|
||||
:100E70000860FFF75FFC0390FFE741F22400C4F233
|
||||
:100E800002000068800700280CD4FFE7FFF752FC3F
|
||||
:100E90000399401A032804D3FFE703208DF81700B5
|
||||
:100EA000BFE1EAE7012000F03BFC1FE040F2804197
|
||||
:100EB000C4F2422100200860FFF73CFC0390FFE7EA
|
||||
:100EC00041F22400C4F202000068800700280CD51B
|
||||
:100ED000FFE7FFF72FFC0399401A032804D3FFE72D
|
||||
:100EE00003208DF817009CE1EAE7FFE7FFE704988D
|
||||
:100EF00000784007002840F1D880FFE700208DF8F7
|
||||
:100F0000070041F21C00C4F202000068C000002883
|
||||
:100F100013D4FFE7FFE741F21C00C4F202000168AE
|
||||
:100F200041F080510160006800F08050009000980E
|
||||
:100F3000FFE701208DF80700FFE747F20000C4F249
|
||||
:100F400000000068C005002822D4FFE747F2000136
|
||||
:100F5000C4F20001086840F480700860FFF7EAFB03
|
||||
:100F60000390FFE747F20000C4F200000068C005EC
|
||||
:100F700000280CD4FFE7FFF7DDFB0399401A652832
|
||||
:100F800004D3FFE703208DF817004AE1EAE7FFE703
|
||||
:100F9000FFE70498C068012809D1FFE741F220016A
|
||||
:100FA000C4F20201086840F00100086031E00498D2
|
||||
:100FB000C06868B9FFE741F22001C4F20201086885
|
||||
:100FC00020F001000860086820F0040008601FE0BD
|
||||
:100FD0000498C06805280DD1FFE741F22001C4F252
|
||||
:100FE0000201086840F004000860086840F0010051
|
||||
:100FF00008600CE041F22001C4F20201086820F010
|
||||
:1010000001000860086820F004000860FFE7FFE7BF
|
||||
:10101000FFE7FFE70498C068E0B1FFE7FFF78AFB4E
|
||||
:101020000390FFE741F22000C4F20200006880074D
|
||||
:1010300000280ED4FFE7FFF77DFB0399401A41F229
|
||||
:101040008931884204D3FFE703208DF81700E8E0D8
|
||||
:10105000E8E71BE0FFF76EFB0390FFE741F220009B
|
||||
:10106000C4F202000068800700280ED5FFE7FFF7F2
|
||||
:1010700061FB0399401A41F28931884204D3FFE7AA
|
||||
:1010800003208DF81700CCE0E8E7FFE79DF80700A4
|
||||
:10109000012809D1FFE741F21C01C4F202010868EE
|
||||
:1010A00020F080500860FFE7FFE70498C06900283F
|
||||
:1010B00000F0B380FFE741F20400C4F202000068D0
|
||||
:1010C00000F00C00082800F08280FFE70498C06957
|
||||
:1010D00002285CD1FFE76021C4F2422100200860B1
|
||||
:1010E000FFF728FB0390FFE741F20000C4F2020083
|
||||
:1010F0000068800100280CD5FFE7FFF71BFB039970
|
||||
:10110000401A032804D3FFE703208DF8170088E076
|
||||
:10111000EAE70498006AB0F5803F0CD1FFE741F29E
|
||||
:101120000401C4F20201086820F40030049A9268B5
|
||||
:1011300010430860FFE741F20401C4F202010868AD
|
||||
:1011400020F47410049B1A6A5B6A1A431043086007
|
||||
:101150006021C4F2422101200860FFF7EBFA0390FE
|
||||
:10116000FFE741F20000C4F202000068800100289D
|
||||
:101170000CD4FFE7FFF7DEFA0399401A032804D3E3
|
||||
:10118000FFE703208DF817004BE0EAE71EE060213F
|
||||
:10119000C4F2422100200860FFF7CCFA0390FFE779
|
||||
:1011A00041F20000C4F202000068800100280CD562
|
||||
:1011B000FFE7FFF7BFFA0399401A032804D3FFE7BC
|
||||
:1011C00003208DF817002CE0EAE7FFE724E00498FD
|
||||
:1011D000C069012804D1FFE701208DF8170020E045
|
||||
:1011E00041F20400C4F2020000680290029800F488
|
||||
:1011F00080300499096A884208D1FFE7029800F418
|
||||
:1012000070100499496A884204D0FFE701208DF8E4
|
||||
:10121000170006E0FFE7FFE7FFE700208DF8170063
|
||||
:10122000FFE79DF8170006B080BD000080B582B0D2
|
||||
:101230000190019800F094FA02B080BD85B003904F
|
||||
:101240000291FFE7039890F83C00012804D1FFE7E2
|
||||
:1012500002208DF813005BE00399012081F83C0027
|
||||
:10126000FFE7FFE70399022081F83D00039800683B
|
||||
:10127000406801900398006880680090019820F011
|
||||
:10128000700001900298016801980843019001984C
|
||||
:101290000399096848600398006842F60041C4F267
|
||||
:1012A0000101884218D0FFE703980068B0F1804F31
|
||||
:1012B00012D0FFE70398006840F20041C4F2000139
|
||||
:1012C000884209D0FFE70398006840F60001C4F2A5
|
||||
:1012D000000188420ED1FFE7009820F080000090C6
|
||||
:1012E00002984168009808430090009803990968A3
|
||||
:1012F0008860FFE70399012081F83D00FFE703992B
|
||||
:10130000002081F83C00FFE700208DF81300FFE784
|
||||
:101310009DF8130005B0704780B582B0009000982A
|
||||
:1013200020B9FFE701208DF807003FE0009890F812
|
||||
:101330003D0040B9FFE70099002081F83C0000988B
|
||||
:1013400000F038F8FFE70099022081F83D0000998D
|
||||
:1013500051F8040B00F06AFA0099012081F8460068
|
||||
:10136000FFE70099012081F83E00009981F83F00D5
|
||||
:10137000009981F84000009981F84100FFE7FFE7FC
|
||||
:101380000099012081F84200009981F843000099FA
|
||||
:1013900081F84400009981F84500FFE70099012099
|
||||
:1013A00081F83D0000208DF80700FFE79DF8070059
|
||||
:1013B00002B080BD82B0019001980068B0F1804F0A
|
||||
:1013C00010D1FFE7FFE741F21C00C4F20200016800
|
||||
:1013D00041F001010160006800F0010000900098F8
|
||||
:1013E000FFE7FFE702B0704780B586B00490039135
|
||||
:1013F00000208DF80B00FFE7049890F83C000128CE
|
||||
:1014000004D1FFE702208DF81700ABE0049901201A
|
||||
:1014100081F83C00FFE7FFE70499022081F83D00D6
|
||||
:101420000498006880680190019820F0770001908E
|
||||
:10143000019820F47F400190019804990968886020
|
||||
:10144000039800680090002872D0FFE700981028E9
|
||||
:101450006ED0FFE7009820286AD0FFE70098302878
|
||||
:1014600066D0FFE70098402855D0FFE70098502845
|
||||
:1014700037D0FFE70098602840D0FFE70098702839
|
||||
:101480000BD0FFE70098B0F5805F05D0FFE700982C
|
||||
:10149000B0F5005F16D052E055E004980068039B59
|
||||
:1014A0005A689968DB6800F045FA0498006880681B
|
||||
:1014B0000190019840F07700019001980499096823
|
||||
:1014C000886040E004980068039B5A689968DB686C
|
||||
:1014D00000F030FA04980168886840F48040886021
|
||||
:1014E00031E004980068039A5168D26800F052FA1B
|
||||
:1014F00004980068502100F037FA24E0049800684E
|
||||
:10150000039A5168D26800F06DFA0498006860216F
|
||||
:1015100000F02AFA17E004980068039A5168D2682C
|
||||
:1015200000F038FA04980068402100F01DFA0AE043
|
||||
:10153000049800680399096800F016FA03E0012096
|
||||
:101540008DF80B00FFE70499012081F83D00FFE7CB
|
||||
:101550000499002081F83C00FFE79DF80B008DF80E
|
||||
:101560001700FFE79DF8170006B080BDFFE7FEE714
|
||||
:1015700080B58CB000200B900A9009900890FFE78E
|
||||
:1015800041F21800C4F20200016841F0100101604C
|
||||
:10159000006800F0100007900798FFE7FFE741F2AE
|
||||
:1015A0001800C4F20200016841F0200101600068E7
|
||||
:1015B00000F0200006900698FFE7FFE741F21800D0
|
||||
:1015C000C4F20200016841F008010160006800F007
|
||||
:1015D000080005900598FFE7FFE741F21800C4F204
|
||||
:1015E0000200016841F004010160006800F004009D
|
||||
:1015F00004900498FFE740F60040C4F20100039015
|
||||
:101600000121019100220292FFF77CF8019A0299D0
|
||||
:101610000398089209920A9102210B9108A9FEF7FA
|
||||
:10162000E1FE0CB080BD000080B588B000210191C2
|
||||
:1016300007910691059104910391029140F2A41043
|
||||
:10164000C2F200004FF080420260416081604FF6BC
|
||||
:10165000FF72C26001618161FFF75EFE18B1FFE7B2
|
||||
:10166000FEF796FEFFE74FF48050049040F2A4107E
|
||||
:10167000C2F2000004A9FFF7B7FE18B1FFE7FEF7BA
|
||||
:1016800087FEFFE700200290039040F2A410C2F210
|
||||
:10169000000002A9FFF7D2FD18B1FFE7FEF778FEC0
|
||||
:1016A000FFE708B080BD0000FFE7FEE7FFE7FEE7C9
|
||||
:1016B00088B0079006910592079800F00700049003
|
||||
:1016C0000498C0F10700052803D3FFE70420019028
|
||||
:1016D00004E00498C0F107000190FFE7019803902F
|
||||
:1016E00004980430062803D8FFE70020009003E0A8
|
||||
:1016F000049803380090FFE7009802900698039939
|
||||
:10170000012202FA01F101390840029B9840059933
|
||||
:101710009A40013A1140084308B0704770470000F2
|
||||
:1017200082B00190019840F20001C2F20001096804
|
||||
:10173000C90844F6D352C1F26202A1FB0221890911
|
||||
:1017400048430090FFE700BFFFE70098411E00916B
|
||||
:101750000028F8D1FFE702B0704700007047000092
|
||||
:1017600080B582B0009000980138B0F1807F03D33B
|
||||
:10177000FFE70120019019E0009801384EF21401B2
|
||||
:10178000CEF2000108604FF0FF300F2100F05EF94B
|
||||
:101790004EF21801CEF20001002008604EF2100255
|
||||
:1017A000CEF20002072111600190FFE7019802B01C
|
||||
:1017B00080BD000080B5FEF7C3FF80BD80B590B04E
|
||||
:1017C00006A800902821FEF7FFFC0098002305934F
|
||||
:1017D0000493039302930193012206924FF4803104
|
||||
:1017E000079108930A9202220D920E914FF4E01194
|
||||
:1017F0000F91FFF7DDF918B1FFE7FEF7C9FDFFE72D
|
||||
:101800000F20019002210291002003904FF480628A
|
||||
:101810000492059001A8FFF741F818B1FFE7FEF721
|
||||
:10182000B7FDFFE710B080BD7047000083B00290A5
|
||||
:101830000191029800680090029842F60041C4F2BB
|
||||
:101840000101884215D0FFE70298B0F1804F10D017
|
||||
:10185000FFE7029840F20041C4F20001884208D03C
|
||||
:10186000FFE7029840F60001C4F2000188420AD165
|
||||
:10187000FFE7009820F07000009001984168009800
|
||||
:1018800008430090FFE7029842F60041C4F20101CC
|
||||
:10189000884215D0FFE70298B0F1804F10D0FFE7E3
|
||||
:1018A000029840F20041C4F20001884208D0FFE7EC
|
||||
:1018B000029840F60001C4F2000188420AD1FFE715
|
||||
:1018C000009820F4407000900198C1680098084387
|
||||
:1018D0000090FFE7009820F08000019949690843D3
|
||||
:1018E0000090009802990860019880680299C86287
|
||||
:1018F0000198006802998862029842F60041C4F299
|
||||
:101900000101884205D1FFE7019800690299086347
|
||||
:10191000FFE702990120486102980069C00730B1D1
|
||||
:10192000FFE70299086920F001000861FFE703B0B2
|
||||
:101930007047000085B004900391029201930498CF
|
||||
:1019400080680090009820F47F40009003980299EE
|
||||
:10195000019A41EA0221014300980843009000984F
|
||||
:101960000499886005B0704783B002900191029895
|
||||
:1019700080680090009820F0700000900198009915
|
||||
:10198000084340F00700009000980299886003B077
|
||||
:101990007047000085B00490039102920498006A99
|
||||
:1019A00000900499086A20F0010008620498806998
|
||||
:1019B0000190019820F0F00001900299019840EA0E
|
||||
:1019C00001100190009820F00A00009003990098FF
|
||||
:1019D000084300900198049988610098049908626E
|
||||
:1019E00005B0704785B00490039102920498006A94
|
||||
:1019F00000900499086A20F0100008620498806939
|
||||
:101A00000190019820F4704001900299019840EAF9
|
||||
:101A100001300190009820F0A000009003990098F8
|
||||
:101A200040EA011000900198049988610098049997
|
||||
:101A3000086205B070470000FFE7FEE74EF60C5065
|
||||
:101A4000CEF200000068C0F30220704782B08DF82B
|
||||
:101A5000070000919DF9070000280AD4FFE70098CD
|
||||
:101A600000019DF907104EF20042CEF200028854A8
|
||||
:101A70000BE0009800019DF8071001F00F014EF6F1
|
||||
:101A80001452CEF200028854FFE702B07047000003
|
||||
:101A900083B00290029800F0070000904EF60C51BF
|
||||
:101AA000CEF200010868019001984FF6FF02104045
|
||||
:101AB00001900198009A40EA02200022C0F2FA52F6
|
||||
:101AC000104301900198086003B0704783B0029002
|
||||
:101AD00001918DF8032001980068FF280CD8FFE7DA
|
||||
:101AE0009DF803000299DDF804C0DCF80020531CC7
|
||||
:101AF000CCF800308854FFE703B0704780B586B05B
|
||||
:101B00000590049103928DF80B309DF80B0001387D
|
||||
:101B10000190FFE7019800280ED4FFE7059804998B
|
||||
:101B2000039A019BDA4002F00102FFF7CFFFFFE7C3
|
||||
:101B3000019801380190EDE706B080BD80B588B00E
|
||||
:101B400084460A98CDF81CC00691059204938DF83E
|
||||
:101B50000F00049900200860079800788DF80E00A7
|
||||
:101B6000012000908DF80D00059804999DF80E2035
|
||||
:101B7000FFF7ACFF00980290FFE7029806998842B1
|
||||
:101B80003CD2FFE707980299405C8DF80700059862
|
||||
:101B900004999DF80720FFF799FF9DF807009DF82D
|
||||
:101BA0000E1088421DD1FFE79DF80D0001308DF821
|
||||
:101BB0000D009DF80D00052812D1FFE79DF80F00DC
|
||||
:101BC00050B9FFE7059804999DF80720B2FA82F210
|
||||
:101BD0005209FFF77BFFFFE700208DF80D00FFE7BC
|
||||
:101BE00007E001208DF80D009DF807008DF80E002C
|
||||
:101BF000FFE7FFE7029801300290BEE708B080BD22
|
||||
:101C000085B0049003910020ADF80A000190FFE731
|
||||
:101C10000198039988422AD2FFE704980199405C11
|
||||
:101C20008DF80300BDF80A00C0F380308DF8020083
|
||||
:101C3000BDF80A004000ADF80A009DF803009DF8C9
|
||||
:101C40000210484008D0FFE7BDF80A0044F299515D
|
||||
:101C50004840ADF80A00FFE7BDF80A006FF3DF3037
|
||||
:101C6000ADF80A00FFE7019801300190D0E7BDF818
|
||||
:101C70000A0005B07047000081B00090009840F263
|
||||
:101C8000EC21C2F20001096888420BD2FFE7009AFA
|
||||
:101C900040F2EC11C2F20001885CB0FA80F0400919
|
||||
:101CA0008854FFE701B0704780B5A6B02492BDF814
|
||||
:101CB0009020ADF894202390229140F2EC21C2F2C2
|
||||
:101CC00000010F9100220A6040F27810C2F2000079
|
||||
:101CD000027040F2EC10C2F20000FFF7F7FE0F981E
|
||||
:101CE0000068219023988068002858D1FFE7239846
|
||||
:101CF00002686FF3DF2240F2EC10C2F200000C9099
|
||||
:101D000040F2EC21C2F200010E910B23FFF7F6FE28
|
||||
:101D10000C980E990A680B3A2092239A127BFFF7CF
|
||||
:101D2000D5FE0C980E990A68013A1F9200220D9276
|
||||
:101D3000FFF7CCFE0C980D9A0E990B68013B1E9391
|
||||
:101D4000FFF7C4FE0E98006801381D909DF89400BE
|
||||
:101D50008008C00720B1FFE71F98FFF78DFFFFE75E
|
||||
:101D60009DF894004008C00720B1FFE71E98FFF7D8
|
||||
:101D700083FFFFE79DF894000009C00720B1FFE74B
|
||||
:101D80001D98FFF779FFFFE79DF894004009C00711
|
||||
:101D900020B1FFE72098FFF76FFFFFE78AE0239865
|
||||
:101DA000406820F060401C901C98C0F38A4240F2CA
|
||||
:101DB000EC10C2F20000099040F2EC21C2F20001E6
|
||||
:101DC0000B910B23FFF79AFE09980B990A680B3ABF
|
||||
:101DD0001B9201220892FFF779FE089A09980B9945
|
||||
:101DE0000B68013B1A93FFF771FE09980B990A687B
|
||||
:101DF000013A19921C9A6FF39F421223FFF77EFE5D
|
||||
:101E000009980B990A68123A1892239A127BFFF7E5
|
||||
:101E10005DFE09980B990A68013A179200220A920E
|
||||
:101E2000FFF754FE09980A9A0B990B68013B169329
|
||||
:101E3000FFF74CFE0B980068013815909DF8940050
|
||||
:101E4000C00720B1FFE71A98FFF716FFFFE79DF8DC
|
||||
:101E500094004008C00720B1FFE71998FFF70CFF76
|
||||
:101E6000FFE79DF894008008C00720B1FFE71798AE
|
||||
:101E7000FFF702FFFFE79DF89400C008C00720B1FC
|
||||
:101E8000FFE71698FFF7F8FEFFE79DF894000009BA
|
||||
:101E9000C00720B1FFE71598FFF7EEFEFFE79DF8BA
|
||||
:101EA00094004009C00720B1FFE71B98FFF7E4FE4C
|
||||
:101EB000FFE7FFE72398006900F00F0240F2EC1003
|
||||
:101EC000C2F2000040F2EC21C2F200010423FFF74D
|
||||
:101ED00015FE2398C068002867D1FFE723980069A2
|
||||
:101EE00000F00F008DF8530000208DF85200FFE73E
|
||||
:101EF0009DF852109DF8532000209142079008DA77
|
||||
:101F0000FFE79DF8521000200829B8BF0120079074
|
||||
:101F1000FFE70798C007002846D0FFE740F2EC2013
|
||||
:101F2000C2F200000068139022989DF85210405CA5
|
||||
:101F30008DF84B002398007D012812D1FFE79DF812
|
||||
:101F4000520006280DDBFFE740F2EC10C2F2000061
|
||||
:101F500040F2EC21C2F2000100220823FFF7CEFD7F
|
||||
:101F60000DE09DF84B2040F2EC10C2F2000040F270
|
||||
:101F7000EC21C2F200010823FFF7C0FDFFE79DF846
|
||||
:101F800094008009C00740B1FFE79DF8520020B9D6
|
||||
:101F9000FFE71398FFF770FEFFE7FFE79DF8520099
|
||||
:101FA00001308DF85200A3E7FFE740F2EC20C2F2C7
|
||||
:101FB00000000590016840F2EC10C2F200000690AB
|
||||
:101FC000FFF71EFE059902460698ADF848200A68FC
|
||||
:101FD0001192BDF848200F23FFF790FD9DF8941053
|
||||
:101FE0000020B0EBD11F04D0FFE71198FFF744FEAB
|
||||
:101FF000FFE740F2EC10C2F20000029040F2EC2148
|
||||
:10200000C2F20001039101220492FFF75FFD0298E2
|
||||
:10201000039909689DF8952002F001026B461A6049
|
||||
:1020200040F27402C2F2000240F27413C2F20003E2
|
||||
:10203000FFF784FD02980399049AFFF747FD029881
|
||||
:102040000399049AFFF742FD00201090FFE71098D3
|
||||
:10205000062810DCFFE740F2EC10C2F2000040F26C
|
||||
:10206000EC21C2F200010122FFF730FDFFE71098DA
|
||||
:1020700001301090EBE726B080BD000080B582B043
|
||||
:1020800000200190FEF76AFBFFF798FBFFF770FA5C
|
||||
:10209000FFF7CAFA40F27C10C2F2000000904EF640
|
||||
:1020A0004801C0F20101FEF7F5F8009940F2231053
|
||||
:1020B0000860FFE76420FEF773F940F27C10C2F27B
|
||||
:1020C0000000FEF7FBF8F5E783B0ADF80A0044F234
|
||||
:1020D0004020C0F20F00019000200090FFE7242074
|
||||
:1020E000C4F200000068BDF80A10401A00B2B0F156
|
||||
:1020F000FF3F0CDCFFE700980130009044F24121E3
|
||||
:10210000C0F20F01884201D3FFE700E0E7E703B028
|
||||
:1021100070470000000000000000010203040607F1
|
||||
:10212000080902030405060708090A0B0C0D0E0F27
|
||||
:1021300010100102582100080000002010000000CB
|
||||
:10214000280100086821000810000020E8080000AD
|
||||
:10215000440100080000000000127A0001000000A5
|
||||
:08216000100000000000000067
|
||||
:1003A00083B0019000208DF80300019890F821009F
|
||||
:1003B00002280DD0FFE7019904208863FFE7019927
|
||||
:1003C000002081F82000FFE701208DF80B0021E0DC
|
||||
:1003D00001980168086820F00E0008600198016823
|
||||
:1003E000086820F0010008600198C16B026C0120D0
|
||||
:1003F00090404860FFE70199012081F82100FFE764
|
||||
:100400000199002081F82000FFE79DF803008DF896
|
||||
:100410000B00FFE79DF80B0003B0704781B0009020
|
||||
:100420000098806B01B0704780B584B0039000F0F5
|
||||
:10043000C5F90290039801900198013048B1FFE797
|
||||
:1004400040F20400C2F200000178019808440190D3
|
||||
:10045000FFE7FFE700F0B2F90299401A01998842DC
|
||||
:1004600001D2FFE7F6E704B080BD000090B00F9026
|
||||
:100470000E9100200D900990FFE70E9800680D99ED
|
||||
:10048000C840002800F07F81FFE70D9901208840D7
|
||||
:100490000C900E9800680C9908400B900B980C99E2
|
||||
:1004A000884240F06C81FFE70E9840680590002874
|
||||
:1004B00051D0FFE7059801283AD0FFE705980228B8
|
||||
:1004C0003FD0FFE7059803285FD0FFE70598112884
|
||||
:1004D00032D0FFE70598122838D0FFE705980021B1
|
||||
:1004E000C1F21101884236D0FFE705980021C1F220
|
||||
:1004F000120188422FD0FFE705980021C1F22101A7
|
||||
:10050000884228D0FFE705980021C1F222018842E5
|
||||
:1005100021D0FFE705980021C1F2310188421AD0AD
|
||||
:10052000FFE705980021C1F23201884213D02FE085
|
||||
:100530000E98C06809902CE00E98C06804300990AD
|
||||
:1005400027E00E98C0680830099022E00E98C06835
|
||||
:100550000C3009901DE00E98806818B9FFE7042060
|
||||
:10056000099011E00E988068012806D1FFE7082065
|
||||
:1005700009900C980F99086105E0082009900C98E3
|
||||
:100580000F994861FFE7FFE703E00020099000E0D2
|
||||
:10059000FFE70B98FF2803D8FFE70F98049003E0CC
|
||||
:1005A0000F9804300490FFE7049808900B98FF28F8
|
||||
:1005B00004D8FFE70D988000039006E00D996FF0D6
|
||||
:1005C0001F0000EB81000390FFE703980790089855
|
||||
:1005D0000068079A0F219140884309999140084388
|
||||
:1005E000089908600E98C079C006002840F1C680BE
|
||||
:1005F000FFE7FFE741F21800C4F20200016841F092
|
||||
:1006000001010160006800F0010006900698FFE714
|
||||
:100610000D9820F003000821C4F2010140580A900F
|
||||
:100620000D9800F0030081000F2000FA01F10A98F4
|
||||
:1006300088430A900F9840F60001C4F201018842F5
|
||||
:1006400003D1FFE70020029026E00F9840F600411A
|
||||
:10065000C4F20101884203D1FFE70120019018E0B4
|
||||
:100660000F9841F20001C4F20101884203D1FFE773
|
||||
:10067000022000900AE00F9941F20042C4F2010208
|
||||
:100680000420914208BF03200090FFE700980190EA
|
||||
:10069000FFE701980290FFE702980D9901F003012E
|
||||
:1006A000890000FA01F10A9808430A900A980D9906
|
||||
:1006B00021F003010822C4F2010288500E988079CB
|
||||
:1006C000C006002809D5FFE70B9A40F20841C4F2A2
|
||||
:1006D000010108681043086008E00B9A40F20841E5
|
||||
:1006E000C4F20101086890430860FFE70E98807922
|
||||
:1006F0008006002809D5FFE70B9A40F20C41C4F2AE
|
||||
:10070000010108681043086008E00B9A40F20C41B0
|
||||
:10071000C4F20101086890430860FFE70E988079F1
|
||||
:100720008007002809D5FFE70B9A40F20441C4F284
|
||||
:10073000010108681043086008E00B9A40F2044188
|
||||
:10074000C4F20101086890430860FFE70E988079C1
|
||||
:10075000C00748B1FFE70B9A40F20041C4F2010123
|
||||
:1007600008681043086008E00B9A40F20041C4F2A8
|
||||
:100770000101086890430860FFE7FFE7FFE70D9875
|
||||
:1007800001300D9079E610B07047000082B0019002
|
||||
:10079000ADF802108DF801209DF8010028B1FFE7A7
|
||||
:1007A000BDF802000199086105E0BDF802000004EF
|
||||
:1007B00001990861FFE702B07047000040F2346021
|
||||
:1007C000C2F200000068704740F20400C2F200006C
|
||||
:1007D000027840F23461C2F20001086810440860F7
|
||||
:1007E0007047000080B542F20001C4F202010868BF
|
||||
:1007F00040F010000860032000F08CF80F2000F09B
|
||||
:1008000005F800F03BF8002080BD000080B582B004
|
||||
:10081000009040F20000C2F20000006840F20401C3
|
||||
:10082000C2F200010A784FF47A71B1FBF2F1B0FB29
|
||||
:10083000F1F000F069FD20B1FFE701208DF807001D
|
||||
:1008400018E000980F280DD8FFE700994FF0FF300F
|
||||
:10085000002200F045F8009840F20801C2F20001C1
|
||||
:10086000086003E001208DF8070003E000208DF808
|
||||
:100870000700FFE79DF8070002B080BD83B0FFE7E7
|
||||
:1008800041F21800C4F20200016841F00101016068
|
||||
:10089000006800F0010002900298FFE7FFE741F2D4
|
||||
:1008A0001C00C4F20200016841F080510160006840
|
||||
:1008B00000F0805001900198FFE7FFE70421C4F2A7
|
||||
:1008C000010108680090009820F0E0600090009816
|
||||
:1008D00040F00070009000980860FFE703B0704798
|
||||
:1008E00080B586B08DF81700049103920020029025
|
||||
:1008F00001F04EFE02909DF91700019002980499B4
|
||||
:10090000039A01F0B1FA0146019801F049FE06B0E0
|
||||
:1009100080BD000080B582B00190019801F062FEB8
|
||||
:1009200002B080BD80B584B002900191029820B9D8
|
||||
:10093000FFE701208DF80F001BE1019842F2000152
|
||||
:10094000C4F20201096801F00701884216D9FFE7E5
|
||||
:1009500042F20000C4F20200016821F00701019A8E
|
||||
:1009600011430160006800F007000199884204D03B
|
||||
:10097000FFE701208DF80F00FBE0FFE70298007809
|
||||
:10098000800700282AD5FFE7029800784007002852
|
||||
:1009900009D5FFE741F20401C4F20201086840F4FE
|
||||
:1009A000E0600860FFE7029800780007002809D59A
|
||||
:1009B000FFE741F20401C4F20201086840F460500C
|
||||
:1009C0000860FFE741F20401C4F20201086820F068
|
||||
:1009D000F000029A926810430860FFE702980078DE
|
||||
:1009E000C007002860D0FFE70298406801280ED1B8
|
||||
:1009F000FFE741F20000C4F2020000688003002813
|
||||
:100A000004D4FFE701208DF80F00B2E021E0029846
|
||||
:100A1000406802280ED1FFE741F20000C4F2020054
|
||||
:100A200000688001002804D4FFE701208DF80F0042
|
||||
:100A30009FE00DE041F20000C4F202000068800770
|
||||
:100A4000002804D4FFE701208DF80F0091E0FFE7B4
|
||||
:100A5000FFE741F20401C4F20201086820F003003C
|
||||
:100A6000029A526810430860FFF7A8FE0090FFE763
|
||||
:100A700041F20400C4F20200006800F00C00029988
|
||||
:100A80004968B0EB810F0ED0FFE7FFF797FE0099A2
|
||||
:100A9000401A41F28931884204D3FFE703208DF8E0
|
||||
:100AA0000F0066E0E4E7FFE7019842F20001C4F2BC
|
||||
:100AB0000201096801F00701884216D2FFE742F2FD
|
||||
:100AC0000000C4F20200016821F00701019A1143FD
|
||||
:100AD0000160006800F007000199884204D0FFE738
|
||||
:100AE00001208DF80F0044E0FFE7029800784007EE
|
||||
:100AF00000280CD5FFE741F20401C4F202010868A6
|
||||
:100B000020F4E060029AD26810430860FFE7029880
|
||||
:100B10000078000700280DD5FFE741F20401C4F278
|
||||
:100B20000201086820F46050029A126940EAC2008B
|
||||
:100B30000860FFE700F04CF841F20401C4F2020142
|
||||
:100B40000968C9B20A0942F60261C0F60001895C6F
|
||||
:100B5000C84040F20001C2F20001086040F2080003
|
||||
:100B6000C2F200000068FFF751FE00208DF80F0070
|
||||
:100B7000FFE79DF80F0004B080BD000040F20000C8
|
||||
:100B8000C2F200000068704780B5FFF7F7FF41F23E
|
||||
:100B90000401C4F202010968C1F3022242F61261A3
|
||||
:100BA000C0F60001895CC84080BD000080B5FFF739
|
||||
:100BB000E5FF41F20401C4F202010968C1F3C22257
|
||||
:100BC00042F61261C0F60001895CC84080BD000099
|
||||
:100BD00086B000200590049003900290019041F2AD
|
||||
:100BE0000400C4F2020000680590059800F00C00B3
|
||||
:100BF0000146009100283FD0FFE70098042804D068
|
||||
:100C0000FFE70098082806D037E041F20020C0F244
|
||||
:100C10007A00019037E00598C0F3834142F61A60EC
|
||||
:100C2000C0F60000405C02909DF81600C007C0B1FD
|
||||
:100C3000FFE741F20400C4F202000068C0F3404143
|
||||
:100C400042F62A60C0F60000405C0490029841F22F
|
||||
:100C50000021C0F27A0148430499B0FBF1F00390FF
|
||||
:100C600007E0029840F60011C0F23D0148430390AE
|
||||
:100C7000FFE70398019006E0FFE741F20020C0F291
|
||||
:100C80007A000190FFE7019806B0704780B586B002
|
||||
:100C90000490049820B9FFE701208DF817002EE397
|
||||
:100CA00004980078C007002800F0AE80FFE741F20A
|
||||
:100CB0000400C4F20200006800F00C00042813D005
|
||||
:100CC000FFE741F20400C4F20200006800F00C00EB
|
||||
:100CD00008281BD1FFE741F20400C4F202000068BB
|
||||
:100CE000C003002812D5FFE741F20000C4F2020061
|
||||
:100CF00000688003002808D5FFE70498406820B901
|
||||
:100D0000FFE701208DF81700F9E27CE0FFE7049887
|
||||
:100D10004068B0F5803F09D1FFE741F20001C4F21D
|
||||
:100D20000201086840F48030086032E004984068AE
|
||||
:100D300068B9FFE741F20001C4F20201086820F43B
|
||||
:100D400080300860086820F48020086020E0049863
|
||||
:100D50004068B0F5A02F0DD1FFE741F20001C4F2C9
|
||||
:100D60000201086840F480200860086840F4803080
|
||||
:100D700008600CE041F20001C4F20201086820F4AE
|
||||
:100D800080300860086820F480200860FFE7FFE7F3
|
||||
:100D9000FFE7FFE704984068D0B1FFE7FFF70EFDDB
|
||||
:100DA0000390FFE741F20000C4F2020000688003F4
|
||||
:100DB00000280CD4FFE7FFF701FD0399401A6528CE
|
||||
:100DC00004D3FFE703208DF8170098E2EAE719E063
|
||||
:100DD000FFF7F4FC0390FFE741F20000C4F20200C9
|
||||
:100DE0000068800300280CD5FFE7FFF7E7FC0399B4
|
||||
:100DF000401A652804D3FFE703208DF817007EE230
|
||||
:100E0000EAE7FFE7FFE7FFE704980078800700289C
|
||||
:100E100040F18D80FFE741F20400C4F20200006857
|
||||
:100E200010F00C0F13D0FFE741F20400C4F20200EF
|
||||
:100E3000006800F00C00082829D1FFE741F2040007
|
||||
:100E4000C4F202000068C003002820D4FFE741F28A
|
||||
:100E50000000C4F2020000688007002809D5FFE7FF
|
||||
:100E600004980069012804D0FFE701208DF81700DD
|
||||
:100E700045E241F20001C4F20201086820F0F800E6
|
||||
:100E8000049A526940EAC2000860FFE74EE0049805
|
||||
:100E9000006958B3FFE70021C4F242210120086035
|
||||
:100EA000FFF78CFC0390FFE741F20000C4F2020060
|
||||
:100EB0000068800700280CD4FFE7FFF77FFC039948
|
||||
:100EC000401A032804D3FFE703208DF8170016E229
|
||||
:100ED000EAE741F20001C4F20201086820F0F800DC
|
||||
:100EE000049A526940EAC20008601EE00021C4F280
|
||||
:100EF000422100200860FFF761FC0390FFE741F208
|
||||
:100F00000000C4F202000068800700280CD5FFE74B
|
||||
:100F1000FFF754FC0399401A032804D3FFE703208A
|
||||
:100F20008DF81700EBE1EAE7FFE7FFE7FFE704983A
|
||||
:100F300000780007002848D5FFE70498806918B3B7
|
||||
:100F4000FFE740F28041C4F2422101200860FFF730
|
||||
:100F500035FC0390FFE741F22400C4F20200006870
|
||||
:100F6000800700280CD4FFE7FFF728FC0399401AFC
|
||||
:100F7000032804D3FFE703208DF81700BFE1EAE759
|
||||
:100F8000012000F0A9FF1FE040F28041C4F242219D
|
||||
:100F900000200860FFF712FC0390FFE741F22400F5
|
||||
:100FA000C4F202000068800700280CD5FFE7FFF7B5
|
||||
:100FB00005FC0399401A032804D3FFE703208DF8AA
|
||||
:100FC00017009CE1EAE7FFE7FFE704980078400795
|
||||
:100FD000002840F1D880FFE700208DF8070041F29B
|
||||
:100FE0001C00C4F202000068C000002813D4FFE710
|
||||
:100FF000FFE741F21C00C4F20200016841F0805199
|
||||
:101000000160006800F0805000900098FFE7012028
|
||||
:101010008DF80700FFE747F20000C4F20000006807
|
||||
:10102000C005002822D4FFE747F20001C4F2000106
|
||||
:10103000086840F480700860FFF7C0FB0390FFE78A
|
||||
:1010400047F20000C4F200000068C00500280CD47C
|
||||
:10105000FFE7FFF7B3FB0399401A652804D3FFE7C6
|
||||
:1010600003208DF817004AE1EAE7FFE7FFE704985D
|
||||
:10107000C068012809D1FFE741F22001C4F2020152
|
||||
:10108000086840F00100086031E00498C06868B961
|
||||
:10109000FFE741F22001C4F20201086820F00100DC
|
||||
:1010A0000860086820F0040008601FE00498C06829
|
||||
:1010B00005280DD1FFE741F22001C4F202010868C2
|
||||
:1010C00040F004000860086840F0010008600CE08F
|
||||
:1010D00041F22001C4F20201086820F0010008601A
|
||||
:1010E000086820F004000860FFE7FFE7FFE7FFE77C
|
||||
:1010F0000498C068E0B1FFE7FFF760FB0390FFE7EB
|
||||
:1011000041F22000C4F202000068800700280ED4DB
|
||||
:10111000FFE7FFF753FB0399401A41F289318842F8
|
||||
:1011200004D3FFE703208DF81700E8E0E8E71BE0B1
|
||||
:10113000FFF744FB0390FFE741F22000C4F20200F6
|
||||
:101140000068800700280ED5FFE7FFF737FB0399FB
|
||||
:10115000401A41F28931884204D3FFE703208DF819
|
||||
:101160001700CCE0E8E7FFE79DF80700012809D168
|
||||
:10117000FFE741F21C01C4F20201086820F0805030
|
||||
:101180000860FFE7FFE70498C069002800F0B3801B
|
||||
:10119000FFE741F20400C4F20200006800F00C0016
|
||||
:1011A000082800F08280FFE70498C06902285CD11B
|
||||
:1011B000FFE76021C4F2422100200860FFF7FEFA39
|
||||
:1011C0000390FFE741F20000C4F2020000688001D2
|
||||
:1011D00000280CD5FFE7FFF7F1FA0399401A03281E
|
||||
:1011E00004D3FFE703208DF8170088E0EAE70498AE
|
||||
:1011F000006AB0F5803F0CD1FFE741F20401C4F270
|
||||
:101200000201086820F40030049A926810430860D4
|
||||
:10121000FFE741F20401C4F20201086820F47410EF
|
||||
:10122000049B1A6A5B6A1A43104308606021C4F287
|
||||
:10123000422101200860FFF7C1FA0390FFE741F265
|
||||
:101240000000C4F202000068800100280CD4FFE70F
|
||||
:10125000FFF7B4FA0399401A032804D3FFE70320E9
|
||||
:101260008DF817004BE0EAE71EE06021C4F242214E
|
||||
:1012700000200860FFF7A2FA0390FFE741F20000A8
|
||||
:10128000C4F202000068800100280CD5FFE7FFF7D8
|
||||
:1012900095FA0399401A032804D3FFE703208DF839
|
||||
:1012A00017002CE0EAE7FFE724E00498C069012872
|
||||
:1012B00004D1FFE701208DF8170020E041F204007F
|
||||
:1012C000C4F2020000680290029800F48030049991
|
||||
:1012D000096A884208D1FFE7029800F47010049967
|
||||
:1012E000496A884204D0FFE701208DF8170006E024
|
||||
:1012F000FFE7FFE7FFE700208DF81700FFE79DF805
|
||||
:10130000170006B080BD000080B582B00190019842
|
||||
:1013100000F040FF02B080BD85B003900291FFE76E
|
||||
:10132000039890F83C00012804D1FFE702208DF8D3
|
||||
:1013300013005BE00399012081F83C00FFE7FFE721
|
||||
:101340000399022081F83D000398006840680190ED
|
||||
:101350000398006880680090019820F07000019068
|
||||
:10136000029801680198084301900198039909685F
|
||||
:1013700048600398006842F60041C4F201018842C7
|
||||
:1013800018D0FFE703980068B0F1804F12D0FFE754
|
||||
:101390000398006840F20041C4F20001884209D07D
|
||||
:1013A000FFE70398006840F60001C4F2000188429C
|
||||
:1013B0000ED1FFE7009820F080000090029841686D
|
||||
:1013C0000098084300900098039909688860FFE737
|
||||
:1013D0000399012081F83D00FFE70399002081F87F
|
||||
:1013E0003C00FFE700208DF81300FFE79DF8130095
|
||||
:1013F00005B0704780B582B00090009820B9FFE733
|
||||
:1014000001208DF807003FE0009890F83D0040B9BA
|
||||
:10141000FFE70099002081F83C00009800F038F8C0
|
||||
:10142000FFE70099022081F83D00009951F8040B74
|
||||
:1014300000F016FF0099012081F84600FFE70099AF
|
||||
:10144000012081F83E00009981F83F00009981F861
|
||||
:101450004000009981F84100FFE7FFE70099012073
|
||||
:1014600081F84200009981F84300009981F8440016
|
||||
:10147000009981F84500FFE70099012081F83D00BF
|
||||
:1014800000208DF80700FFE79DF8070002B080BD3F
|
||||
:1014900083B0029002980068B0F1804F10D1FFE74E
|
||||
:1014A000FFE741F21C00C4F20200016841F00101B3
|
||||
:1014B0000160006800F0010001900198FFE719E069
|
||||
:1014C0000298006840F20041C4F20001884210D145
|
||||
:1014D000FFE7FFE741F21C00C4F20200016841F09F
|
||||
:1014E00002010160006800F0020000900098FFE730
|
||||
:1014F000FFE7FFE703B0704781B0009000980168F4
|
||||
:10150000C86820F00100C860FFE700980068006A22
|
||||
:1015100041F21111084210D1FFE700980068006AFB
|
||||
:1015200040F24441084207D1FFE70098016808688B
|
||||
:1015300020F001000860FFE7FFE7FFE700990120C6
|
||||
:1015400081F83D00002001B07047000080B586B0F2
|
||||
:101550000490039100208DF80B00FFE7049890F8A9
|
||||
:101560003C00012804D1FFE702208DF81700ABE012
|
||||
:101570000499012081F83C00FFE7FFE7049902206D
|
||||
:1015800081F83D000498006880680190019820F07F
|
||||
:1015900077000190019820F47F4001900198049910
|
||||
:1015A00009688860039800680090002872D0FFE7FF
|
||||
:1015B000009810286ED0FFE7009820286AD0FFE737
|
||||
:1015C0000098302866D0FFE70098402855D0FFE704
|
||||
:1015D0000098502837D0FFE70098602840D0FFE7F8
|
||||
:1015E000009870280BD0FFE70098B0F5805F05D019
|
||||
:1015F000FFE70098B0F5005F16D052E055E0049880
|
||||
:101600000068039B5A689968DB6800F0ADFE049897
|
||||
:10161000006880680190019840F07700019001987F
|
||||
:1016200004990968886040E004980068039B5A6840
|
||||
:101630009968DB6800F098FE04980168886840F4B7
|
||||
:101640008040886031E004980068039A5168D2684D
|
||||
:1016500000F0BAFE04980068502100F09FFE24E0DC
|
||||
:1016600004980068039A5168D26800F0D5FE049887
|
||||
:101670000068602100F092FE17E004980068039A69
|
||||
:101680005168D26800F0A0FE04980068402100F084
|
||||
:1016900085FE0AE0049800680399096800F07EFE60
|
||||
:1016A00003E001208DF80B00FFE70499012081F889
|
||||
:1016B0003D00FFE70499002081F83C00FFE79DF81A
|
||||
:1016C0000B008DF81700FFE79DF8170006B080BDEE
|
||||
:1016D00080B588B00690FFE7FFE70698006850E8FD
|
||||
:1016E000030F20F4F0700590FFE705990698026853
|
||||
:1016F00042E803100028F0D1FFE7FFE7FFE7FFE72C
|
||||
:101700000698006850E8050F20F001000490FFE7FC
|
||||
:1017100004990698026842E805100028F0D1FFE716
|
||||
:10172000FFE70698006B012814D1FFE7FFE7FFE70A
|
||||
:101730000698006850E8030F20F010000390FFE7C0
|
||||
:1017400003990698026842E803100028F0D1FFE7E9
|
||||
:10175000FFE7FFE70698006840690006002832D5D9
|
||||
:10176000FFE7FFE7FFE70698006850E8050F20F065
|
||||
:1017700080000290FFE702990698026842E805108F
|
||||
:101780000028F0D1FFE7FFE70698806BD0B1FFE7B4
|
||||
:101790000698816B002048630698806BFEF700FE78
|
||||
:1017A00078B1FFE70698806BFEF738FE202807D156
|
||||
:1017B000FFE706991020486403208DF81F004EE0D3
|
||||
:1017C000FFE7FFE7FFE7069800684069400600284A
|
||||
:1017D00032D5FFE7FFE7FFE70698006850E8050FFE
|
||||
:1017E00020F040000190FFE701990698026842E866
|
||||
:1017F00005100028F0D1FFE7FFE70698C06BD0B1D5
|
||||
:10180000FFE70698C16B002048630698C06BFEF79F
|
||||
:10181000C7FD78B1FFE70698C06BFEF7FFFD2028F3
|
||||
:1018200007D1FFE706991020486403208DF81F00B8
|
||||
:1018300015E0FFE7FFE7FFE706990020C884069957
|
||||
:10184000C88506994864069A202182F84210069AB3
|
||||
:1018500082F84110069908638DF81F00FFE79DF894
|
||||
:101860001F0008B080BD000080B586B00490FFE77F
|
||||
:10187000FFE70498006850E8030F20F4907003908D
|
||||
:10188000FFE703990498026842E803100028F0D1AA
|
||||
:10189000FFE7FFE7FFE7FFE70498006850E8050F60
|
||||
:1018A00020F001000290FFE702990498026842E8E4
|
||||
:1018B00005100028F0D1FFE7FFE70498006B01282E
|
||||
:1018C00014D1FFE7FFE7FFE70498006850E8030F33
|
||||
:1018D00020F010000190FFE701990498026842E8A7
|
||||
:1018E00003100028F0D1FFE7FFE7FFE70498006846
|
||||
:1018F00040694006002832D5FFE7FFE7FFE704987C
|
||||
:10190000006850E8050F20F040000090FFE70099C4
|
||||
:101910000498026842E805100028F0D1FFE7FFE7CD
|
||||
:101920000498C06BD0B1FFE70498C16B00204863F6
|
||||
:101930000498C06BFEF734FD78B1FFE70498C06BE4
|
||||
:10194000FEF76CFD202807D1FFE7049910204864BA
|
||||
:1019500003208DF817000EE0FFE7FFE7FFE704998B
|
||||
:101960000020C885049A202182F842100499086357
|
||||
:101970008DF81700FFE79DF8170006B080BD000046
|
||||
:1019800080B584B00290FFE7FFE70298006850E856
|
||||
:10199000030F20F0C0000190FFE701990298026850
|
||||
:1019A00042E803100028F0D1FFE7FFE70298006843
|
||||
:1019B00040690006002832D5FFE7FFE7FFE70298FD
|
||||
:1019C000006850E8050F20F080000090FFE70099C4
|
||||
:1019D0000298026842E805100028F0D1FFE7FFE70F
|
||||
:1019E0000298806BD0B1FFE70298816B00204863BA
|
||||
:1019F0000298806BFEF7D4FC78B1FFE70298806B09
|
||||
:101A0000FEF70CFD202807D1FFE70299102048645B
|
||||
:101A100003208DF80F000CE0FFE7FFE7FFE70299D6
|
||||
:101A20000020C884029A202182F841108DF80F000E
|
||||
:101A3000FFE79DF80F0004B080BD000080B582B0C4
|
||||
:101A40000090009820B9FFE701208DF8070040E0E2
|
||||
:101A50000098806908B1FFE700E0FFE7009890F880
|
||||
:101A6000410040B9FFE70099002081F8400000984C
|
||||
:101A700000F034F8FFE70099242081F84100009835
|
||||
:101A80000168C86820F40050C860009800F0EEFCBF
|
||||
:101A900000980168086920F4904008610098016886
|
||||
:101AA000486920F02A00486100980168C86840F43D
|
||||
:101AB0000050C860009900204864009A202182F8F4
|
||||
:101AC0004110009A82F84210009948638DF807008F
|
||||
:101AD000FFE79DF8070002B080BD000080B58AB026
|
||||
:101AE00009900020089007900690059009980068DA
|
||||
:101AF00043F60001C4F20101884239D1FFE7FFE754
|
||||
:101B000041F21800C4F20200016841F48041016012
|
||||
:101B1000006800F4804004900498FFE7FFE741F27A
|
||||
:101B20001800C4F20200016841F00401016000687D
|
||||
:101B300000F0040003900398FFE74FF40070059055
|
||||
:101B4000022006900320089040F60000C4F2010035
|
||||
:101B5000019005A90291FEF789FC019802994FF4C2
|
||||
:101B600080620592002206920792FEF77FFCFFE753
|
||||
:101B70000AB080BD80B584B002900191ADF802201A
|
||||
:101B8000029890F84200202817D1FFE7019820B171
|
||||
:101B9000FFE7BDF8020020B9FFE701208DF80F0034
|
||||
:101BA0000FE002990020086302980199BDF8022015
|
||||
:101BB00000F0BAFC8DF80F0003E002208DF80F0052
|
||||
:101BC000FFE79DF80F0004B080BD0000FFE7FEE7CF
|
||||
:101BD00040F2B001C2F2000142F63560C0F60000EA
|
||||
:101BE000486042F64560C0F60000C86042F62C62CC
|
||||
:101BF000C0F600024A61C861486242F63C62C0F623
|
||||
:101C00000002CA6248630720086001208860092238
|
||||
:101C10000A61886108620A228A62086370470000CC
|
||||
:101C200080B582B0FFF7D4FF40F23040C2F200002E
|
||||
:101C300001900121017042F210724283017602216B
|
||||
:101C4000017740F2E841C2F2000140F2A042C2F244
|
||||
:101C50000002002300F00CFA019981F8240002B080
|
||||
:101C600080BD000080B58CB000200B900A900990D8
|
||||
:101C70000890FFE741F21800C4F20200016841F049
|
||||
:101C800010010160006800F0100007900798FFE75E
|
||||
:101C9000FFE741F21800C4F20200016841F02001A0
|
||||
:101CA0000160006800F0200006900698FFE7FFE75B
|
||||
:101CB00041F21800C4F20200016841F0080101601D
|
||||
:101CC000006800F0080005900598FFE7FFE741F283
|
||||
:101CD0001800C4F20200016841F0040101600068CC
|
||||
:101CE00000F0040004900498FFE740F60040C4F2BE
|
||||
:101CF000010003900121019100220292FEF746FDAE
|
||||
:101D0000019A02990398089209920A9102210B9173
|
||||
:101D100008A9FEF7ABFB0CB080BD000080B588B011
|
||||
:101D2000002101910791069105910491039102917F
|
||||
:101D300040F25840C2F200004FF080420260416021
|
||||
:101D400081604FF6FF72C26001618161FFF752FB53
|
||||
:101D500018B1FFE7FEF71CFBFFE74FF4805004903B
|
||||
:101D600040F25840C2F2000004A9FFF7EFFB18B19F
|
||||
:101D7000FFE7FEF70DFBFFE700200290039040F223
|
||||
:101D80005840C2F2000002A9FFF7C6FA18B1FFE7F7
|
||||
:101D9000FEF7FEFAFFE708B080BD000080B588B00E
|
||||
:101DA00000210191079106910591049103910291FF
|
||||
:101DB00040F2A040C2F2000040F20042C4F2000231
|
||||
:101DC0000260416081604FF4E152C2600161816153
|
||||
:101DD000FFF710FB18B1FFE7FEF7DAFAFFE74FF461
|
||||
:101DE0008050049040F2A040C2F2000004A9FFF726
|
||||
:101DF000ADFB18B1FFE7FEF7CBFAFFE7002002903A
|
||||
:101E0000039040F2A040C2F2000002A9FFF784FA5A
|
||||
:101E100018B1FFE7FEF7BCFAFFE708B080BD00008D
|
||||
:101E200080B582B040F2E840C2F20000019043F673
|
||||
:101E30000001C4F2010101604FF4E1314160002171
|
||||
:101E40008160C16001610C2242618161C161FFF763
|
||||
:101E5000F5FD18B1FFE7FEF79BFAFFE702B080BD82
|
||||
:101E6000FFE7FEE7FFE7FEE788B0079006910592DF
|
||||
:101E7000079800F0070004900498C0F107000528B7
|
||||
:101E800003D3FFE70420019004E00498C0F10700A9
|
||||
:101E90000190FFE70198039004980430062803D8C6
|
||||
:101EA000FFE70020009003E0049803380090FFE76C
|
||||
:101EB0000098029006980399012202FA01F1013973
|
||||
:101EC0000840029B984005999A40013A1140084306
|
||||
:101ED00008B070477047000082B00190019840F24E
|
||||
:101EE0000001C2F200010968C90844F6D352C1F2E8
|
||||
:101EF0006202A1FB0221890948430090FFE700BF6D
|
||||
:101F0000FFE70098411E00910028F8D1FFE702B0DA
|
||||
:101F10007047000080B584B003908DF80B1000204E
|
||||
:101F20008DF80A0003994969096848620398406975
|
||||
:101F300001686FF0010008610398408B28B1FFE74A
|
||||
:101F400003984069FFF7D8FAFFE79DF80B004007B8
|
||||
:101F5000002844D4FFE79DF80B008007002823D514
|
||||
:101F6000FFE703980069FFF77FFC8DF80A000399EB
|
||||
:101F700091F8200000F0FB0081F82000039991F80F
|
||||
:101F8000200000F0F70081F82000039991F820006C
|
||||
:101F900000F0DF0081F82000039991F8200000F0A4
|
||||
:101FA000FE0081F82000FFE79DF80B00C007A8B1F4
|
||||
:101FB000FFE703980069FFF7E3FC8DF80A00039937
|
||||
:101FC00091F8200000F0EF0081F82000039991F8CB
|
||||
:101FD000200000F0BF0081F82000FFE742E00398F6
|
||||
:101FE0000069FFF775FB8DF80A0000200190FFE7FC
|
||||
:101FF0000198B0F5817F0ADCFFE703988168019AB8
|
||||
:1020000000208854FFE7019801300190F0E7039920
|
||||
:1020100091F8200000F0FB0081F82000039991F86E
|
||||
:10202000200000F0F70081F82000039991F82000CB
|
||||
:1020300000F0DF0081F82000039991F8200000F003
|
||||
:10204000FE0081F82000039991F8200000F0EF00D5
|
||||
:1020500081F82000039991F8200000F0BF0081F87A
|
||||
:102060002000FFE70399032081F8240004B080BD1D
|
||||
:1020700085B00390029101920093039820B9FFE785
|
||||
:1020800002208DF8130027E0029820B9FFE7022014
|
||||
:102090008DF8130020E002980399086101980399D4
|
||||
:1020A00048610398007F20B9FFE702208DF81300F4
|
||||
:1020B00012E00398806838B9FFE7039940F2F41002
|
||||
:1020C000C2F20000886003E0009803998860FFE78F
|
||||
:1020D00001208DF81300FFE79DF8130005B070474D
|
||||
:1020E00080B584B00290019100208DF803008DF836
|
||||
:1020F0000200029890F82000C008C00720B1FFE756
|
||||
:1021000004208DF80F003FE0029991F8200040F084
|
||||
:10211000020081F82000029991F8200040F00800A8
|
||||
:1021200081F82000029991F8200000F0DF0081F88A
|
||||
:102130002000029991F8200000F0FE0081F82000B4
|
||||
:102140000198029948600298816800690722FFF7A8
|
||||
:1021500011FD8DF802009DF8020038B1FFE70298EA
|
||||
:102160000421FFF7D7FE8DF8030003E001208DF86E
|
||||
:102170000300FFE79DF80300029981F824009DF811
|
||||
:1021800003008DF80F00FFE79DF80F0004B080BD3D
|
||||
:102190007047000080B582B0009000980138B0F11F
|
||||
:1021A000807F03D3FFE70120019019E000980138F8
|
||||
:1021B0004EF21401CEF2000108604FF0FF300F2103
|
||||
:1021C00000F0EEF94EF21801CEF200010020086096
|
||||
:1021D0004EF21002CEF20002072111600190FFE7DB
|
||||
:1021E000019802B080BD000080B5FEF7EDFA80BD19
|
||||
:1021F00080B590B006A800902821FDF7E5FF009873
|
||||
:102200000023059304930393029301930122069202
|
||||
:102210004FF48031079108930A9202220D920E9199
|
||||
:102220004FF4E0110F91FEF731FD18B1FFE7FEF713
|
||||
:10223000AFF8FFE70F2001900221029100200390E8
|
||||
:102240004FF480620492059001A8FEF76BFB18B171
|
||||
:10225000FFE7FEF79DF8FFE710B080BD7047000074
|
||||
:1022600083B002900191029800680090029842F6B3
|
||||
:102270000041C4F20101884215D0FFE70298B0F195
|
||||
:10228000804F10D0FFE7029840F20041C4F20001F5
|
||||
:10229000884208D0FFE7029840F60001C4F200012E
|
||||
:1022A00088420AD1FFE7009820F070000090019862
|
||||
:1022B0004168009808430090FFE7029842F6004109
|
||||
:1022C000C4F20101884215D0FFE70298B0F1804FB7
|
||||
:1022D00010D0FFE7029840F20041C4F200018842AA
|
||||
:1022E00008D0FFE7029840F60001C4F200018842DE
|
||||
:1022F0000AD1FFE7009820F4407000900198C1686F
|
||||
:10230000009808430090FFE7009820F080000199B2
|
||||
:102310004969084300900098029908600198806814
|
||||
:102320000299C8620198006802998862029842F690
|
||||
:102330000041C4F20101884205D1FFE7019800691C
|
||||
:1023400002990863FFE70299012048610298006939
|
||||
:10235000C00730B1FFE70299086920F00100086169
|
||||
:10236000FFE703B07047000085B00490039102922C
|
||||
:102370000193049880680090009820F47F400090BA
|
||||
:1023800003980299019A41EA022101430098084307
|
||||
:10239000009000980499886005B0704783B002905F
|
||||
:1023A0000191029880680090009820F070000090E1
|
||||
:1023B00001980099084340F00700009000980299A6
|
||||
:1023C000886003B07047000085B0049003910292CA
|
||||
:1023D0000498006A00900499086A20F001000862DD
|
||||
:1023E000049880690190019820F0F0000190029912
|
||||
:1023F000019840EA01100190009820F00A00009036
|
||||
:102400000399009808430090019804998861009806
|
||||
:102410000499086205B0704785B004900391029258
|
||||
:102420000498006A00900499086A20F0100008627D
|
||||
:10243000049880690190019820F4704001900299FD
|
||||
:10244000019840EA01300190009820F0A00000902F
|
||||
:102450000399009840EA011000900198049988615E
|
||||
:1024600000980499086205B07047000080B584B0F8
|
||||
:10247000039003980068006920F44050039A1168A3
|
||||
:10248000D26810430861039988680A694969104352
|
||||
:102490000843029003980068C06841F20C618843C9
|
||||
:1024A0000299084303990968C86003980068406965
|
||||
:1024B00020F44070039A11689269104348610398B0
|
||||
:1024C000006843F60001C4F20101884204D1FFE72D
|
||||
:1024D000FEF76CFB019003E0FEF756FB0190FFE76F
|
||||
:1024E000019819214843039A116852689200B0FB81
|
||||
:1024F000F2FC48F21F52C5F2EB12ACFB023043096A
|
||||
:10250000642003FB10CC322000EB0C10A0FB020275
|
||||
:10251000F02000EA521000EB0310C2F34312104403
|
||||
:10252000886004B080BD000083B002900191ADF8D6
|
||||
:102530000220019802998862BDF8020002998885FC
|
||||
:10254000BDF802000299C8850299002048640299EA
|
||||
:10255000222081F842000298006938B1FFE7029812
|
||||
:102560000168C86840F48070C860FFE7029801689D
|
||||
:10257000486940F00100486102980168C86840F06D
|
||||
:102580002000C860002003B070470000FFE7FEE7AE
|
||||
:102590004EF60C50CEF200000068C0F302207047E7
|
||||
:1025A00082B08DF8070000919DF9070000280AD439
|
||||
:1025B000FFE7009800019DF907104EF20042CEF2AD
|
||||
:1025C000000288540BE0009800019DF8071001F00C
|
||||
:1025D0000F014EF61452CEF200028854FFE702B00B
|
||||
:1025E0007047000083B00290029800F0070000904E
|
||||
:1025F0004EF60C51CEF200010868019001984FF69A
|
||||
:10260000FF02104001900198009A40EA0220002247
|
||||
:10261000C0F2FA52104301900198086003B070476D
|
||||
:1026200083B0029001918DF8032001980068FF2883
|
||||
:102630000CD8FFE79DF803000299DDF804C0DCF830
|
||||
:102640000020531CCCF800308854FFE703B07047DB
|
||||
:1026500080B586B00590049103928DF80B309DF8FB
|
||||
:102660000B0001380190FFE7019800280ED4FFE726
|
||||
:1026700005980499039A019BDA4002F00102FFF7E2
|
||||
:10268000CFFFFFE7019801380190EDE706B080BD6C
|
||||
:1026900080B588B084460A98CDF81CC00691059292
|
||||
:1026A00004938DF80F0004990020086007980078C3
|
||||
:1026B0008DF80E00012000908DF80D00059804990A
|
||||
:1026C0009DF80E20FFF7ACFF00980290FFE70298FC
|
||||
:1026D000069988423CD2FFE707980299405C8DF842
|
||||
:1026E0000700059804999DF80720FFF799FF9DF8CA
|
||||
:1026F00007009DF80E1088421DD1FFE79DF80D00E0
|
||||
:1027000001308DF80D009DF80D00052812D1FFE76E
|
||||
:102710009DF80F0050B9FFE7059804999DF8072030
|
||||
:10272000B2FA82F25209FFF77BFFFFE700208DF833
|
||||
:102730000D00FFE707E001208DF80D009DF8070070
|
||||
:102740008DF80E00FFE7FFE7029801300290BEE728
|
||||
:1027500008B080BD85B0049003910020ADF80A0058
|
||||
:102760000190FFE70198039988422AD2FFE7049875
|
||||
:102770000199405C8DF80300BDF80A00C0F3803079
|
||||
:102780008DF80200BDF80A004000ADF80A009DF87F
|
||||
:1027900003009DF80210484008D0FFE7BDF80A008A
|
||||
:1027A00044F299514840ADF80A00FFE7BDF80A002D
|
||||
:1027B0006FF3DF30ADF80A00FFE7019801300190B8
|
||||
:1027C000D0E7BDF80A0005B07047000081B0009066
|
||||
:1027D000009840F23061C2F20001096888420BD2D1
|
||||
:1027E000FFE7009A40F23051C2F20001885CB0FA73
|
||||
:1027F00080F040098854FFE701B0704780B5A6B06B
|
||||
:102800002492BDF89020ADF894202390229140F2BC
|
||||
:102810003061C2F200010F9100220A6040F2FC30E8
|
||||
:10282000C2F20000027040F23050C2F20000FFF726
|
||||
:10283000F7FE0F980068219023988068002858D1EF
|
||||
:10284000FFE7239802686FF3DF2240F23050C2F2B4
|
||||
:1028500000000C9040F23061C2F200010E910B2397
|
||||
:10286000FFF7F6FE0C980E990A680B3A2092239A0D
|
||||
:10287000127BFFF7D5FE0C980E990A68013A1F9259
|
||||
:1028800000220D92FFF7CCFE0C980D9A0E990B6862
|
||||
:10289000013B1E93FFF7C4FE0E98006801381D909F
|
||||
:1028A0009DF894008008C00720B1FFE71F98FFF74C
|
||||
:1028B0008DFFFFE79DF894004008C00720B1FFE7B7
|
||||
:1028C0001E98FFF783FFFFE79DF894000009C007FB
|
||||
:1028D00020B1FFE71D98FFF779FFFFE79DF894000F
|
||||
:1028E0004009C00720B1FFE72098FFF76FFFFFE71F
|
||||
:1028F0008AE02398406820F060401C901C98C0F348
|
||||
:102900008A4240F23050C2F20000099040F2306139
|
||||
:10291000C2F200010B910B23FFF79AFE09980B9965
|
||||
:102920000A680B3A1B9201220892FFF779FE089A77
|
||||
:1029300009980B990B68013B1A93FFF771FE0998F0
|
||||
:102940000B990A68013A19921C9A6FF39F4212235D
|
||||
:10295000FFF77EFE09980B990A68123A1892239A9B
|
||||
:10296000127BFFF75DFE09980B990A68013A1792EE
|
||||
:1029700000220A92FFF754FE09980A9A0B990B68F5
|
||||
:10298000013B1693FFF74CFE0B9800680138159039
|
||||
:102990009DF89400C00720B1FFE71A98FFF716FFD3
|
||||
:1029A000FFE79DF894004008C00720B1FFE71998A1
|
||||
:1029B000FFF70CFFFFE79DF894008008C00720B1E7
|
||||
:1029C000FFE71798FFF702FFFFE79DF89400C008A4
|
||||
:1029D000C00720B1FFE71698FFF7F8FEFFE79DF864
|
||||
:1029E00094000009C00720B1FFE71598FFF7EEFE3D
|
||||
:1029F000FFE79DF894004009C00720B1FFE71B984E
|
||||
:102A0000FFF7E4FEFFE7FFE72398006900F00F02FD
|
||||
:102A100040F23050C2F2000040F23061C2F20001D8
|
||||
:102A20000423FFF715FE2398C068002867D1FFE74D
|
||||
:102A30002398006900F00F008DF8530000208DF8F6
|
||||
:102A40005200FFE79DF852109DF85320002091425C
|
||||
:102A5000079008DAFFE79DF8521000200829B8BF58
|
||||
:102A600001200790FFE70798C007002846D0FFE73E
|
||||
:102A700040F23060C2F200000068139022989DF886
|
||||
:102A80005210405C8DF84B002398007D012812D134
|
||||
:102A9000FFE79DF8520006280DDBFFE740F23050BB
|
||||
:102AA000C2F2000040F23061C2F2000100220823AD
|
||||
:102AB000FFF7CEFD0DE09DF84B2040F23050C2F202
|
||||
:102AC000000040F23061C2F200010823FFF7C0FDB0
|
||||
:102AD000FFE79DF894008009C00740B1FFE79DF82B
|
||||
:102AE000520020B9FFE71398FFF770FEFFE7FFE7FA
|
||||
:102AF0009DF8520001308DF85200A3E7FFE740F245
|
||||
:102B00003060C2F200000590016840F23050C2F21D
|
||||
:102B100000000690FFF71EFE059902460698ADF8E4
|
||||
:102B200048200A681192BDF848200F23FFF790FD56
|
||||
:102B30009DF894100020B0EBD11F04D0FFE711984E
|
||||
:102B4000FFF744FEFFE740F23050C2F2000002906F
|
||||
:102B500040F23061C2F20001039101220492FFF7BA
|
||||
:102B60005FFD0298039909689DF8952002F0010223
|
||||
:102B70006B461A6040F2F722C2F2000240F2F833CC
|
||||
:102B8000C2F20003FFF784FD02980399049AFFF74D
|
||||
:102B900047FD02980399049AFFF742FD0020109028
|
||||
:102BA000FFE71098062810DCFFE740F23050C2F231
|
||||
:102BB000000040F23061C2F200010122FFF730FD57
|
||||
:102BC000FFE7109801301090EBE726B080BD0000C1
|
||||
:102BD00080B586B000200590FDF704FEFFF708FBE6
|
||||
:102BE000FFF740F8FFF79AF8FFF7D8F8FFF718F962
|
||||
:102BF00040F20440C2F2000004904EF64801C0F2D8
|
||||
:102C00000101FDF747FB049940F223100860FFF72C
|
||||
:102C100007F840F23040C2F2000040F2E801C2F290
|
||||
:102C20000001FFF75DFAFFE740F20040C2F200004A
|
||||
:102C30000068002840F0B480FFE740F27400C2F260
|
||||
:102C400000004168C1F3800140F20442C2F2000278
|
||||
:102C500091604168C1F3C001D16001894FF47A737A
|
||||
:102C600059431162828901200021B1EB024F039088
|
||||
:102C70000AD1FFE740F27400C2F20000C0890028C8
|
||||
:102C800018BF01200390FFE7039800F0010040F215
|
||||
:102C90000441C2F20001019148604868086040F2B6
|
||||
:102CA0007400C2F200000290027C02F00F020A617E
|
||||
:102CB00090F82A200A7690F82C204A7690F82E2058
|
||||
:102CC0008A7690F83020CA7690F832200A7790F809
|
||||
:102CD00034204A7790F836208A7790F83820CA77DF
|
||||
:102CE0004268C2F3404391F8282002F0FE021A44E1
|
||||
:102CF00081F828204268C2F3804391F8282002F02E
|
||||
:102D0000FD0242EA430281F828204268C2F3C04330
|
||||
:102D100091F8282002F0FB0242EA830281F8282081
|
||||
:102D20004268C2F3005391F8282002F0F70242EA09
|
||||
:102D3000C30281F828204268C2F3405391F828204A
|
||||
:102D400002F0EF0242EA031281F828204268C2F33F
|
||||
:102D5000805391F8282002F0DF0242EA431281F802
|
||||
:102D600028204268C2F3C05391F8282002F0BF0225
|
||||
:102D700042EA831281F82820C37991F8282002F0D2
|
||||
:102D80007F0242EAC31281F828204068C0F3406203
|
||||
:102D900091F8290000F0FE00104481F82900FFE7B7
|
||||
:102DA00040F20440C2F200000090406AFDF73CFB94
|
||||
:102DB0000098FDF783FA37E783B0ADF80A0044F2D4
|
||||
:102DC0004020C0F20F00019000200090FFE7242077
|
||||
:102DD000C4F200000068BDF80A10401A00B2B0F159
|
||||
:102DE000FF3F0CDCFFE700980130009044F24121E6
|
||||
:102DF000C0F20F01884201D3FFE700E0E7E703B02C
|
||||
:102E000070470000000000000000010203040607F4
|
||||
:102E1000080900000000010203040203040506077C
|
||||
:102E200008090A0B0C0D0E0F101001025665722EC8
|
||||
:102E300020312E30004E494F2D31320053544D3346
|
||||
:102E40003246313033000000682E000800000020B8
|
||||
:102E50001000000028010008782E00081000002053
|
||||
:102E6000280C00004401000800127A000100000054
|
||||
:082E700010000000000000004A
|
||||
:04000005080000ED02
|
||||
:00000001FF
|
||||
|
||||
@@ -3,9 +3,9 @@
|
||||
<title>Static Call Graph - [CANEmu\CANEmu.axf]</title></head>
|
||||
<body><HR>
|
||||
<H1>Static Call Graph for image CANEmu\CANEmu.axf</H1><HR>
|
||||
<BR><P>#<CALLGRAPH># ARM Linker, 6190004: Last Updated: Mon Aug 4 13:49:17 2025
|
||||
<BR><P>#<CALLGRAPH># ARM Linker, 6190004: Last Updated: Mon Aug 4 16:26:50 2025
|
||||
<BR><P>
|
||||
<H3>Maximum Stack Usage = 252 bytes + Unknown(Functions without stacksize, Cycles, Untraceable Function Pointers)</H3><H3>
|
||||
<H3>Maximum Stack Usage = 268 bytes + Unknown(Functions without stacksize, Cycles, Untraceable Function Pointers)</H3><H3>
|
||||
Call chain for Maximum Stack Depth:</H3>
|
||||
__rt_entry_main ⇒ main ⇒ CANEmu_SendFrame ⇒ form_CAN_bitstream_full ⇒ apply_bit_stuffing_with_error ⇒ append_bit
|
||||
<P>
|
||||
@@ -85,8 +85,8 @@ Function Pointers
|
||||
Global Symbols
|
||||
</H3>
|
||||
<P><STRONG><a name="[36]"></a>__main</STRONG> (Thumb, 8 bytes, Stack size 0 bytes, __main.o(!!!main))
|
||||
<BR><BR>[Calls]<UL><LI><a href="#[38]">>></a> __rt_entry
|
||||
<LI><a href="#[37]">>></a> __scatterload
|
||||
<BR><BR>[Calls]<UL><LI><a href="#[37]">>></a> __scatterload
|
||||
<LI><a href="#[38]">>></a> __rt_entry
|
||||
</UL>
|
||||
<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xb.o(.text)
|
||||
</UL>
|
||||
@@ -98,9 +98,9 @@ Global Symbols
|
||||
<BR><BR>[Calls]<UL><LI><a href="#[38]">>></a> __rt_entry
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[74]"></a>__scatterload_rt2_thumb_only</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, __scatter.o(!!!scatter), UNUSED)
|
||||
<P><STRONG><a name="[89]"></a>__scatterload_rt2_thumb_only</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, __scatter.o(!!!scatter), UNUSED)
|
||||
|
||||
<P><STRONG><a name="[75]"></a>__scatterload_null</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, __scatter.o(!!!scatter), UNUSED)
|
||||
<P><STRONG><a name="[8a]"></a>__scatterload_null</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, __scatter.o(!!!scatter), UNUSED)
|
||||
|
||||
<P><STRONG><a name="[3a]"></a>__scatterload_copy</STRONG> (Thumb, 26 bytes, Stack size unknown bytes, __scatter_copy.o(!!handler_copy), UNUSED)
|
||||
<BR><BR>[Calls]<UL><LI><a href="#[3a]">>></a> __scatterload_copy
|
||||
@@ -108,80 +108,80 @@ Global Symbols
|
||||
<BR>[Called By]<UL><LI><a href="#[3a]">>></a> __scatterload_copy
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[76]"></a>__scatterload_zeroinit</STRONG> (Thumb, 28 bytes, Stack size unknown bytes, __scatter_zi.o(!!handler_zi), UNUSED)
|
||||
<P><STRONG><a name="[8b]"></a>__scatterload_zeroinit</STRONG> (Thumb, 28 bytes, Stack size unknown bytes, __scatter_zi.o(!!handler_zi), UNUSED)
|
||||
|
||||
<P><STRONG><a name="[3e]"></a>__rt_lib_init</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit.o(.ARM.Collect$$libinit$$00000000))
|
||||
<BR><BR>[Called By]<UL><LI><a href="#[3d]">>></a> __rt_entry_li
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[77]"></a>__rt_lib_init_alloca_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000030))
|
||||
<P><STRONG><a name="[8c]"></a>__rt_lib_init_alloca_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000030))
|
||||
|
||||
<P><STRONG><a name="[78]"></a>__rt_lib_init_argv_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$0000002E))
|
||||
<P><STRONG><a name="[8d]"></a>__rt_lib_init_argv_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$0000002E))
|
||||
|
||||
<P><STRONG><a name="[79]"></a>__rt_lib_init_atexit_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$0000001D))
|
||||
<P><STRONG><a name="[8e]"></a>__rt_lib_init_atexit_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$0000001D))
|
||||
|
||||
<P><STRONG><a name="[7a]"></a>__rt_lib_init_clock_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000023))
|
||||
<P><STRONG><a name="[8f]"></a>__rt_lib_init_clock_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000023))
|
||||
|
||||
<P><STRONG><a name="[7b]"></a>__rt_lib_init_cpp_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000034))
|
||||
<P><STRONG><a name="[90]"></a>__rt_lib_init_cpp_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000034))
|
||||
|
||||
<P><STRONG><a name="[7c]"></a>__rt_lib_init_exceptions_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000032))
|
||||
<P><STRONG><a name="[91]"></a>__rt_lib_init_exceptions_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000032))
|
||||
|
||||
<P><STRONG><a name="[7d]"></a>__rt_lib_init_fp_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000002))
|
||||
<P><STRONG><a name="[92]"></a>__rt_lib_init_fp_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000002))
|
||||
|
||||
<P><STRONG><a name="[7e]"></a>__rt_lib_init_fp_trap_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000021))
|
||||
<P><STRONG><a name="[93]"></a>__rt_lib_init_fp_trap_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000021))
|
||||
|
||||
<P><STRONG><a name="[7f]"></a>__rt_lib_init_getenv_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000025))
|
||||
<P><STRONG><a name="[94]"></a>__rt_lib_init_getenv_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000025))
|
||||
|
||||
<P><STRONG><a name="[80]"></a>__rt_lib_init_heap_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$0000000C))
|
||||
<P><STRONG><a name="[95]"></a>__rt_lib_init_heap_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$0000000C))
|
||||
|
||||
<P><STRONG><a name="[81]"></a>__rt_lib_init_lc_collate_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000013))
|
||||
<P><STRONG><a name="[96]"></a>__rt_lib_init_lc_collate_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000013))
|
||||
|
||||
<P><STRONG><a name="[82]"></a>__rt_lib_init_lc_ctype_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000015))
|
||||
<P><STRONG><a name="[97]"></a>__rt_lib_init_lc_ctype_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000015))
|
||||
|
||||
<P><STRONG><a name="[83]"></a>__rt_lib_init_lc_monetary_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000017))
|
||||
<P><STRONG><a name="[98]"></a>__rt_lib_init_lc_monetary_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000017))
|
||||
|
||||
<P><STRONG><a name="[84]"></a>__rt_lib_init_lc_numeric_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000019))
|
||||
<P><STRONG><a name="[99]"></a>__rt_lib_init_lc_numeric_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000019))
|
||||
|
||||
<P><STRONG><a name="[85]"></a>__rt_lib_init_lc_time_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$0000001B))
|
||||
<P><STRONG><a name="[9a]"></a>__rt_lib_init_lc_time_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$0000001B))
|
||||
|
||||
<P><STRONG><a name="[86]"></a>__rt_lib_init_preinit_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000006))
|
||||
<P><STRONG><a name="[9b]"></a>__rt_lib_init_preinit_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000006))
|
||||
|
||||
<P><STRONG><a name="[87]"></a>__rt_lib_init_rand_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000010))
|
||||
<P><STRONG><a name="[9c]"></a>__rt_lib_init_rand_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000010))
|
||||
|
||||
<P><STRONG><a name="[88]"></a>__rt_lib_init_relocate_pie_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000004))
|
||||
<P><STRONG><a name="[9d]"></a>__rt_lib_init_relocate_pie_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000004))
|
||||
|
||||
<P><STRONG><a name="[89]"></a>__rt_lib_init_return</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000035))
|
||||
<P><STRONG><a name="[9e]"></a>__rt_lib_init_return</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000035))
|
||||
|
||||
<P><STRONG><a name="[8a]"></a>__rt_lib_init_signal_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$0000001F))
|
||||
<P><STRONG><a name="[9f]"></a>__rt_lib_init_signal_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$0000001F))
|
||||
|
||||
<P><STRONG><a name="[8b]"></a>__rt_lib_init_stdio_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000027))
|
||||
<P><STRONG><a name="[a0]"></a>__rt_lib_init_stdio_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$00000027))
|
||||
|
||||
<P><STRONG><a name="[8c]"></a>__rt_lib_init_user_alloc_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$0000000E))
|
||||
<P><STRONG><a name="[a1]"></a>__rt_lib_init_user_alloc_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libinit2.o(.ARM.Collect$$libinit$$0000000E))
|
||||
|
||||
<P><STRONG><a name="[43]"></a>__rt_lib_shutdown</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libshutdown.o(.ARM.Collect$$libshutdown$$00000000))
|
||||
<BR><BR>[Called By]<UL><LI><a href="#[42]">>></a> __rt_exit_ls
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[8d]"></a>__rt_lib_shutdown_cpp_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libshutdown2.o(.ARM.Collect$$libshutdown$$00000002))
|
||||
<P><STRONG><a name="[a2]"></a>__rt_lib_shutdown_cpp_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libshutdown2.o(.ARM.Collect$$libshutdown$$00000002))
|
||||
|
||||
<P><STRONG><a name="[8e]"></a>__rt_lib_shutdown_fp_trap_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libshutdown2.o(.ARM.Collect$$libshutdown$$00000007))
|
||||
<P><STRONG><a name="[a3]"></a>__rt_lib_shutdown_fp_trap_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libshutdown2.o(.ARM.Collect$$libshutdown$$00000007))
|
||||
|
||||
<P><STRONG><a name="[8f]"></a>__rt_lib_shutdown_heap_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libshutdown2.o(.ARM.Collect$$libshutdown$$0000000F))
|
||||
<P><STRONG><a name="[a4]"></a>__rt_lib_shutdown_heap_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libshutdown2.o(.ARM.Collect$$libshutdown$$0000000F))
|
||||
|
||||
<P><STRONG><a name="[90]"></a>__rt_lib_shutdown_return</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libshutdown2.o(.ARM.Collect$$libshutdown$$00000010))
|
||||
<P><STRONG><a name="[a5]"></a>__rt_lib_shutdown_return</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libshutdown2.o(.ARM.Collect$$libshutdown$$00000010))
|
||||
|
||||
<P><STRONG><a name="[91]"></a>__rt_lib_shutdown_signal_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libshutdown2.o(.ARM.Collect$$libshutdown$$0000000A))
|
||||
<P><STRONG><a name="[a6]"></a>__rt_lib_shutdown_signal_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libshutdown2.o(.ARM.Collect$$libshutdown$$0000000A))
|
||||
|
||||
<P><STRONG><a name="[92]"></a>__rt_lib_shutdown_stdio_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libshutdown2.o(.ARM.Collect$$libshutdown$$00000004))
|
||||
<P><STRONG><a name="[a7]"></a>__rt_lib_shutdown_stdio_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libshutdown2.o(.ARM.Collect$$libshutdown$$00000004))
|
||||
|
||||
<P><STRONG><a name="[93]"></a>__rt_lib_shutdown_user_alloc_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libshutdown2.o(.ARM.Collect$$libshutdown$$0000000C))
|
||||
<P><STRONG><a name="[a8]"></a>__rt_lib_shutdown_user_alloc_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, libshutdown2.o(.ARM.Collect$$libshutdown$$0000000C))
|
||||
|
||||
<P><STRONG><a name="[38]"></a>__rt_entry</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, __rtentry.o(.ARM.Collect$$rtentry$$00000000))
|
||||
<BR><BR>[Called By]<UL><LI><a href="#[36]">>></a> __main
|
||||
<LI><a href="#[39]">>></a> __scatterload_rt2
|
||||
<BR><BR>[Called By]<UL><LI><a href="#[39]">>></a> __scatterload_rt2
|
||||
<LI><a href="#[36]">>></a> __main
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[94]"></a>__rt_entry_presh_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, __rtentry2.o(.ARM.Collect$$rtentry$$00000002))
|
||||
<P><STRONG><a name="[a9]"></a>__rt_entry_presh_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, __rtentry2.o(.ARM.Collect$$rtentry$$00000002))
|
||||
|
||||
<P><STRONG><a name="[3b]"></a>__rt_entry_sh</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, __rtentry4.o(.ARM.Collect$$rtentry$$00000004))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 8 + Unknown Stack Size
|
||||
@@ -194,17 +194,17 @@ Global Symbols
|
||||
<BR><BR>[Calls]<UL><LI><a href="#[3e]">>></a> __rt_lib_init
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[95]"></a>__rt_entry_postsh_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, __rtentry2.o(.ARM.Collect$$rtentry$$00000009))
|
||||
<P><STRONG><a name="[aa]"></a>__rt_entry_postsh_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, __rtentry2.o(.ARM.Collect$$rtentry$$00000009))
|
||||
|
||||
<P><STRONG><a name="[3f]"></a>__rt_entry_main</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, __rtentry2.o(.ARM.Collect$$rtentry$$0000000D))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 252 + Unknown Stack Size
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 268 + Unknown Stack Size
|
||||
<LI>Call Chain = __rt_entry_main ⇒ main ⇒ CANEmu_SendFrame ⇒ form_CAN_bitstream_full ⇒ apply_bit_stuffing_with_error ⇒ append_bit
|
||||
</UL>
|
||||
<BR>[Calls]<UL><LI><a href="#[41]">>></a> exit
|
||||
<LI><a href="#[40]">>></a> main
|
||||
<BR>[Calls]<UL><LI><a href="#[40]">>></a> main
|
||||
<LI><a href="#[41]">>></a> exit
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[96]"></a>__rt_entry_postli_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, __rtentry2.o(.ARM.Collect$$rtentry$$0000000C))
|
||||
<P><STRONG><a name="[ab]"></a>__rt_entry_postli_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, __rtentry2.o(.ARM.Collect$$rtentry$$0000000C))
|
||||
|
||||
<P><STRONG><a name="[48]"></a>__rt_exit</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, rtexit.o(.ARM.Collect$$rtexit$$00000000))
|
||||
<BR><BR>[Called By]<UL><LI><a href="#[41]">>></a> exit
|
||||
@@ -214,7 +214,7 @@ Global Symbols
|
||||
<BR><BR>[Calls]<UL><LI><a href="#[43]">>></a> __rt_lib_shutdown
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[97]"></a>__rt_exit_prels_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, rtexit2.o(.ARM.Collect$$rtexit$$00000002))
|
||||
<P><STRONG><a name="[ac]"></a>__rt_exit_prels_1</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, rtexit2.o(.ARM.Collect$$rtexit$$00000002))
|
||||
|
||||
<P><STRONG><a name="[44]"></a>__rt_exit_exit</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, rtexit2.o(.ARM.Collect$$rtexit$$00000004))
|
||||
<BR><BR>[Calls]<UL><LI><a href="#[45]">>></a> _sys_exit
|
||||
@@ -360,21 +360,21 @@ Global Symbols
|
||||
<BR><BR>[Called By]<UL><LI><a href="#[3c]">>></a> __user_setup_stackheap
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[6d]"></a>__aeabi_memclr4</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, rt_memclr_w.o(.text))
|
||||
<BR><BR>[Called By]<UL><LI><a href="#[6c]">>></a> SystemClock_Config
|
||||
<P><STRONG><a name="[82]"></a>__aeabi_memclr4</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, rt_memclr_w.o(.text))
|
||||
<BR><BR>[Called By]<UL><LI><a href="#[81]">>></a> SystemClock_Config
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[98]"></a>__aeabi_memclr8</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, rt_memclr_w.o(.text), UNUSED)
|
||||
<P><STRONG><a name="[ad]"></a>__aeabi_memclr8</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, rt_memclr_w.o(.text), UNUSED)
|
||||
|
||||
<P><STRONG><a name="[99]"></a>__rt_memclr_w</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, rt_memclr_w.o(.text), UNUSED)
|
||||
<P><STRONG><a name="[ae]"></a>__rt_memclr_w</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, rt_memclr_w.o(.text), UNUSED)
|
||||
|
||||
<P><STRONG><a name="[9a]"></a>_memset_w</STRONG> (Thumb, 74 bytes, Stack size 4 bytes, rt_memclr_w.o(.text), UNUSED)
|
||||
<P><STRONG><a name="[af]"></a>_memset_w</STRONG> (Thumb, 74 bytes, Stack size 4 bytes, rt_memclr_w.o(.text), UNUSED)
|
||||
|
||||
<P><STRONG><a name="[9b]"></a>__use_two_region_memory</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, heapauxi.o(.text), UNUSED)
|
||||
<P><STRONG><a name="[b0]"></a>__use_two_region_memory</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, heapauxi.o(.text), UNUSED)
|
||||
|
||||
<P><STRONG><a name="[9c]"></a>__rt_heap_escrow$2region</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, heapauxi.o(.text), UNUSED)
|
||||
<P><STRONG><a name="[b1]"></a>__rt_heap_escrow$2region</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, heapauxi.o(.text), UNUSED)
|
||||
|
||||
<P><STRONG><a name="[9d]"></a>__rt_heap_expand$2region</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, heapauxi.o(.text), UNUSED)
|
||||
<P><STRONG><a name="[b2]"></a>__rt_heap_expand$2region</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, heapauxi.o(.text), UNUSED)
|
||||
|
||||
<P><STRONG><a name="[3c]"></a>__user_setup_stackheap</STRONG> (Thumb, 74 bytes, Stack size 8 bytes, sys_stackheap_outer.o(.text))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 8 + Unknown Stack Size
|
||||
@@ -395,28 +395,28 @@ Global Symbols
|
||||
<BR>[Called By]<UL><LI><a href="#[3f]">>></a> __rt_entry_main
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[9e]"></a>__user_libspace</STRONG> (Thumb, 8 bytes, Stack size 0 bytes, libspace.o(.text), UNUSED)
|
||||
<P><STRONG><a name="[b3]"></a>__user_libspace</STRONG> (Thumb, 8 bytes, Stack size 0 bytes, libspace.o(.text), UNUSED)
|
||||
|
||||
<P><STRONG><a name="[46]"></a>__user_perproc_libspace</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, libspace.o(.text))
|
||||
<BR><BR>[Called By]<UL><LI><a href="#[3c]">>></a> __user_setup_stackheap
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[9f]"></a>__user_perthread_libspace</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, libspace.o(.text), UNUSED)
|
||||
<P><STRONG><a name="[b4]"></a>__user_perthread_libspace</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, libspace.o(.text), UNUSED)
|
||||
|
||||
<P><STRONG><a name="[45]"></a>_sys_exit</STRONG> (Thumb, 8 bytes, Stack size 0 bytes, sys_exit.o(.text))
|
||||
<BR><BR>[Called By]<UL><LI><a href="#[44]">>></a> __rt_exit_exit
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[a0]"></a>__I$use$semihosting</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, use_no_semi.o(.text), UNUSED)
|
||||
<P><STRONG><a name="[b5]"></a>__I$use$semihosting</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, use_no_semi.o(.text), UNUSED)
|
||||
|
||||
<P><STRONG><a name="[a1]"></a>__use_no_semihosting_swi</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, use_no_semi.o(.text), UNUSED)
|
||||
<P><STRONG><a name="[b6]"></a>__use_no_semihosting_swi</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, use_no_semi.o(.text), UNUSED)
|
||||
|
||||
<P><STRONG><a name="[a2]"></a>__semihosting_library_function</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, indicate_semi.o(.text), UNUSED)
|
||||
<P><STRONG><a name="[b7]"></a>__semihosting_library_function</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, indicate_semi.o(.text), UNUSED)
|
||||
|
||||
<P><STRONG><a name="[4]"></a>BusFault_Handler</STRONG> (Thumb, 4 bytes, Stack size 0 bytes, stm32f1xx_it.o(.text.BusFault_Handler))
|
||||
<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xb.o(RESET)
|
||||
</UL>
|
||||
<P><STRONG><a name="[73]"></a>CANEmu_Init</STRONG> (Thumb, 40 bytes, Stack size 8 bytes, canemu.o(.text.CANEmu_Init))
|
||||
<P><STRONG><a name="[88]"></a>CANEmu_Init</STRONG> (Thumb, 40 bytes, Stack size 8 bytes, canemu.o(.text.CANEmu_Init))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = CANEmu_Init
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[40]">>></a> main
|
||||
@@ -434,11 +434,29 @@ Global Symbols
|
||||
<P><STRONG><a name="[7]"></a>DebugMon_Handler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_it.o(.text.DebugMon_Handler))
|
||||
<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xb.o(RESET)
|
||||
</UL>
|
||||
<P><STRONG><a name="[69]"></a>Error_Handler</STRONG> (Thumb, 14 bytes, Stack size 4 bytes, main.o(.text.Error_Handler))
|
||||
<P><STRONG><a name="[79]"></a>Error_Handler</STRONG> (Thumb, 14 bytes, Stack size 4 bytes, main.o(.text.Error_Handler))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 4<LI>Call Chain = Error_Handler
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[68]">>></a> MX_TIM2_Init
|
||||
<LI><a href="#[6c]">>></a> SystemClock_Config
|
||||
<BR>[Called By]<UL><LI><a href="#[7c]">>></a> MX_USART1_UART_Init
|
||||
<LI><a href="#[7b]">>></a> MX_TIM3_Init
|
||||
<LI><a href="#[78]">>></a> MX_TIM2_Init
|
||||
<LI><a href="#[81]">>></a> SystemClock_Config
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[69]"></a>HAL_DMA_Abort</STRONG> (Thumb, 124 bytes, Stack size 12 bytes, stm32f1xx_hal_dma.o(.text.HAL_DMA_Abort))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 12<LI>Call Chain = HAL_DMA_Abort
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[6b]">>></a> HAL_UART_AbortReceive
|
||||
<LI><a href="#[6c]">>></a> HAL_UART_AbortTransmit
|
||||
<LI><a href="#[68]">>></a> HAL_UART_Abort
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[6a]"></a>HAL_DMA_GetError</STRONG> (Thumb, 12 bytes, Stack size 4 bytes, stm32f1xx_hal_dma.o(.text.HAL_DMA_GetError))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 4<LI>Call Chain = HAL_DMA_GetError
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[6b]">>></a> HAL_UART_AbortReceive
|
||||
<LI><a href="#[6c]">>></a> HAL_UART_AbortTransmit
|
||||
<LI><a href="#[68]">>></a> HAL_UART_Abort
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[4c]"></a>HAL_Delay</STRONG> (Thumb, 66 bytes, Stack size 24 bytes, stm32f1xx_hal.o(.text.HAL_Delay))
|
||||
@@ -449,25 +467,26 @@ Global Symbols
|
||||
<BR>[Called By]<UL><LI><a href="#[40]">>></a> main
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[67]"></a>HAL_GPIO_Init</STRONG> (Thumb, 798 bytes, Stack size 64 bytes, stm32f1xx_hal_gpio.o(.text.HAL_GPIO_Init))
|
||||
<P><STRONG><a name="[70]"></a>HAL_GPIO_Init</STRONG> (Thumb, 798 bytes, Stack size 64 bytes, stm32f1xx_hal_gpio.o(.text.HAL_GPIO_Init))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 64<LI>Call Chain = HAL_GPIO_Init
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[65]">>></a> MX_GPIO_Init
|
||||
<BR>[Called By]<UL><LI><a href="#[6e]">>></a> HAL_UART_MspInit
|
||||
<LI><a href="#[76]">>></a> MX_GPIO_Init
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[66]"></a>HAL_GPIO_WritePin</STRONG> (Thumb, 46 bytes, Stack size 8 bytes, stm32f1xx_hal_gpio.o(.text.HAL_GPIO_WritePin))
|
||||
<P><STRONG><a name="[77]"></a>HAL_GPIO_WritePin</STRONG> (Thumb, 46 bytes, Stack size 8 bytes, stm32f1xx_hal_gpio.o(.text.HAL_GPIO_WritePin))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = HAL_GPIO_WritePin
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[65]">>></a> MX_GPIO_Init
|
||||
<BR>[Called By]<UL><LI><a href="#[76]">>></a> MX_GPIO_Init
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[4d]"></a>HAL_GetTick</STRONG> (Thumb, 12 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text.HAL_GetTick))
|
||||
<BR><BR>[Called By]<UL><LI><a href="#[58]">>></a> HAL_RCC_ClockConfig
|
||||
<LI><a href="#[5a]">>></a> HAL_RCC_OscConfig
|
||||
<LI><a href="#[5d]">>></a> HAL_RCC_OscConfig
|
||||
<LI><a href="#[4c]">>></a> HAL_Delay
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[6b]"></a>HAL_IncTick</STRONG> (Thumb, 26 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text.HAL_IncTick))
|
||||
<P><STRONG><a name="[80]"></a>HAL_IncTick</STRONG> (Thumb, 26 bytes, Stack size 0 bytes, stm32f1xx_hal.o(.text.HAL_IncTick))
|
||||
<BR><BR>[Called By]<UL><LI><a href="#[9]">>></a> SysTick_Handler
|
||||
</UL>
|
||||
|
||||
@@ -522,7 +541,28 @@ Global Symbols
|
||||
<LI><a href="#[4d]">>></a> HAL_GetTick
|
||||
<LI><a href="#[50]">>></a> HAL_InitTick
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[6c]">>></a> SystemClock_Config
|
||||
<BR>[Called By]<UL><LI><a href="#[81]">>></a> SystemClock_Config
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[5b]"></a>HAL_RCC_GetHCLKFreq</STRONG> (Thumb, 12 bytes, Stack size 0 bytes, stm32f1xx_hal_rcc.o(.text.HAL_RCC_GetHCLKFreq))
|
||||
<BR><BR>[Called By]<UL><LI><a href="#[5c]">>></a> HAL_RCC_GetPCLK2Freq
|
||||
<LI><a href="#[5a]">>></a> HAL_RCC_GetPCLK1Freq
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[5a]"></a>HAL_RCC_GetPCLK1Freq</STRONG> (Thumb, 34 bytes, Stack size 8 bytes, stm32f1xx_hal_rcc.o(.text.HAL_RCC_GetPCLK1Freq))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = HAL_RCC_GetPCLK1Freq
|
||||
</UL>
|
||||
<BR>[Calls]<UL><LI><a href="#[5b]">>></a> HAL_RCC_GetHCLKFreq
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[6f]">>></a> UART_SetConfig
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[5c]"></a>HAL_RCC_GetPCLK2Freq</STRONG> (Thumb, 34 bytes, Stack size 8 bytes, stm32f1xx_hal_rcc.o(.text.HAL_RCC_GetPCLK2Freq))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = HAL_RCC_GetPCLK2Freq
|
||||
</UL>
|
||||
<BR>[Calls]<UL><LI><a href="#[5b]">>></a> HAL_RCC_GetHCLKFreq
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[6f]">>></a> UART_SetConfig
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[59]"></a>HAL_RCC_GetSysClockFreq</STRONG> (Thumb, 188 bytes, Stack size 24 bytes, stm32f1xx_hal_rcc.o(.text.HAL_RCC_GetSysClockFreq))
|
||||
@@ -531,74 +571,168 @@ Global Symbols
|
||||
<BR>[Called By]<UL><LI><a href="#[58]">>></a> HAL_RCC_ClockConfig
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[5a]"></a>HAL_RCC_OscConfig</STRONG> (Thumb, 1658 bytes, Stack size 32 bytes, stm32f1xx_hal_rcc.o(.text.HAL_RCC_OscConfig))
|
||||
<P><STRONG><a name="[5d]"></a>HAL_RCC_OscConfig</STRONG> (Thumb, 1658 bytes, Stack size 32 bytes, stm32f1xx_hal_rcc.o(.text.HAL_RCC_OscConfig))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 40<LI>Call Chain = HAL_RCC_OscConfig ⇒ RCC_Delay
|
||||
</UL>
|
||||
<BR>[Calls]<UL><LI><a href="#[5b]">>></a> RCC_Delay
|
||||
<BR>[Calls]<UL><LI><a href="#[5e]">>></a> RCC_Delay
|
||||
<LI><a href="#[4d]">>></a> HAL_GetTick
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[6c]">>></a> SystemClock_Config
|
||||
<BR>[Called By]<UL><LI><a href="#[81]">>></a> SystemClock_Config
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[52]"></a>HAL_SYSTICK_Config</STRONG> (Thumb, 16 bytes, Stack size 16 bytes, stm32f1xx_hal_cortex.o(.text.HAL_SYSTICK_Config))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 40<LI>Call Chain = HAL_SYSTICK_Config ⇒ SysTick_Config ⇒ __NVIC_SetPriority
|
||||
</UL>
|
||||
<BR>[Calls]<UL><LI><a href="#[5c]">>></a> SysTick_Config
|
||||
<BR>[Calls]<UL><LI><a href="#[5f]">>></a> SysTick_Config
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[50]">>></a> HAL_InitTick
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[6a]"></a>HAL_TIMEx_MasterConfigSynchronization</STRONG> (Thumb, 220 bytes, Stack size 20 bytes, stm32f1xx_hal_tim_ex.o(.text.HAL_TIMEx_MasterConfigSynchronization))
|
||||
<P><STRONG><a name="[7a]"></a>HAL_TIMEx_MasterConfigSynchronization</STRONG> (Thumb, 220 bytes, Stack size 20 bytes, stm32f1xx_hal_tim_ex.o(.text.HAL_TIMEx_MasterConfigSynchronization))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 20<LI>Call Chain = HAL_TIMEx_MasterConfigSynchronization
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[68]">>></a> MX_TIM2_Init
|
||||
<BR>[Called By]<UL><LI><a href="#[7b]">>></a> MX_TIM3_Init
|
||||
<LI><a href="#[78]">>></a> MX_TIM2_Init
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[5d]"></a>HAL_TIM_Base_Init</STRONG> (Thumb, 156 bytes, Stack size 16 bytes, stm32f1xx_hal_tim.o(.text.HAL_TIM_Base_Init))
|
||||
<P><STRONG><a name="[60]"></a>HAL_TIM_Base_Init</STRONG> (Thumb, 156 bytes, Stack size 16 bytes, stm32f1xx_hal_tim.o(.text.HAL_TIM_Base_Init))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 28<LI>Call Chain = HAL_TIM_Base_Init ⇒ TIM_Base_SetConfig
|
||||
</UL>
|
||||
<BR>[Calls]<UL><LI><a href="#[5f]">>></a> TIM_Base_SetConfig
|
||||
<LI><a href="#[5e]">>></a> HAL_TIM_Base_MspInit
|
||||
<BR>[Calls]<UL><LI><a href="#[62]">>></a> TIM_Base_SetConfig
|
||||
<LI><a href="#[61]">>></a> HAL_TIM_Base_MspInit
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[68]">>></a> MX_TIM2_Init
|
||||
<BR>[Called By]<UL><LI><a href="#[7b]">>></a> MX_TIM3_Init
|
||||
<LI><a href="#[78]">>></a> MX_TIM2_Init
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[5e]"></a>HAL_TIM_Base_MspInit</STRONG> (Thumb, 52 bytes, Stack size 8 bytes, tim.o(.text.HAL_TIM_Base_MspInit))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = HAL_TIM_Base_MspInit
|
||||
<P><STRONG><a name="[61]"></a>HAL_TIM_Base_MspInit</STRONG> (Thumb, 104 bytes, Stack size 12 bytes, tim.o(.text.HAL_TIM_Base_MspInit))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 12<LI>Call Chain = HAL_TIM_Base_MspInit
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[5d]">>></a> HAL_TIM_Base_Init
|
||||
<BR>[Called By]<UL><LI><a href="#[60]">>></a> HAL_TIM_Base_Init
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[60]"></a>HAL_TIM_ConfigClockSource</STRONG> (Thumb, 388 bytes, Stack size 32 bytes, stm32f1xx_hal_tim.o(.text.HAL_TIM_ConfigClockSource))
|
||||
<P><STRONG><a name="[7e]"></a>HAL_TIM_Base_Stop_IT</STRONG> (Thumb, 82 bytes, Stack size 4 bytes, stm32f1xx_hal_tim.o(.text.HAL_TIM_Base_Stop_IT))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 4<LI>Call Chain = HAL_TIM_Base_Stop_IT
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[7d]">>></a> RS_Abort
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[63]"></a>HAL_TIM_ConfigClockSource</STRONG> (Thumb, 388 bytes, Stack size 32 bytes, stm32f1xx_hal_tim.o(.text.HAL_TIM_ConfigClockSource))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 52<LI>Call Chain = HAL_TIM_ConfigClockSource ⇒ TIM_ETR_SetConfig
|
||||
</UL>
|
||||
<BR>[Calls]<UL><LI><a href="#[61]">>></a> TIM_ETR_SetConfig
|
||||
<LI><a href="#[64]">>></a> TIM_TI2_ConfigInputStage
|
||||
<LI><a href="#[63]">>></a> TIM_ITRx_SetConfig
|
||||
<LI><a href="#[62]">>></a> TIM_TI1_ConfigInputStage
|
||||
<BR>[Calls]<UL><LI><a href="#[64]">>></a> TIM_ETR_SetConfig
|
||||
<LI><a href="#[67]">>></a> TIM_TI2_ConfigInputStage
|
||||
<LI><a href="#[66]">>></a> TIM_ITRx_SetConfig
|
||||
<LI><a href="#[65]">>></a> TIM_TI1_ConfigInputStage
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[68]">>></a> MX_TIM2_Init
|
||||
<BR>[Called By]<UL><LI><a href="#[7b]">>></a> MX_TIM3_Init
|
||||
<LI><a href="#[78]">>></a> MX_TIM2_Init
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[68]"></a>HAL_UART_Abort</STRONG> (Thumb, 406 bytes, Stack size 40 bytes, stm32f1xx_hal_uart.o(.text.HAL_UART_Abort))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 52<LI>Call Chain = HAL_UART_Abort ⇒ HAL_DMA_Abort
|
||||
</UL>
|
||||
<BR>[Calls]<UL><LI><a href="#[6a]">>></a> HAL_DMA_GetError
|
||||
<LI><a href="#[69]">>></a> HAL_DMA_Abort
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[7d]">>></a> RS_Abort
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[6b]"></a>HAL_UART_AbortReceive</STRONG> (Thumb, 278 bytes, Stack size 32 bytes, stm32f1xx_hal_uart.o(.text.HAL_UART_AbortReceive))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 44<LI>Call Chain = HAL_UART_AbortReceive ⇒ HAL_DMA_Abort
|
||||
</UL>
|
||||
<BR>[Calls]<UL><LI><a href="#[6a]">>></a> HAL_DMA_GetError
|
||||
<LI><a href="#[69]">>></a> HAL_DMA_Abort
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[7d]">>></a> RS_Abort
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[6c]"></a>HAL_UART_AbortTransmit</STRONG> (Thumb, 186 bytes, Stack size 24 bytes, stm32f1xx_hal_uart.o(.text.HAL_UART_AbortTransmit))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 36<LI>Call Chain = HAL_UART_AbortTransmit ⇒ HAL_DMA_Abort
|
||||
</UL>
|
||||
<BR>[Calls]<UL><LI><a href="#[6a]">>></a> HAL_DMA_GetError
|
||||
<LI><a href="#[69]">>></a> HAL_DMA_Abort
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[7d]">>></a> RS_Abort
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[6d]"></a>HAL_UART_Init</STRONG> (Thumb, 158 bytes, Stack size 16 bytes, stm32f1xx_hal_uart.o(.text.HAL_UART_Init))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 128<LI>Call Chain = HAL_UART_Init ⇒ HAL_UART_MspInit ⇒ HAL_GPIO_Init
|
||||
</UL>
|
||||
<BR>[Calls]<UL><LI><a href="#[6f]">>></a> UART_SetConfig
|
||||
<LI><a href="#[6e]">>></a> HAL_UART_MspInit
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[7c]">>></a> MX_USART1_UART_Init
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[6e]"></a>HAL_UART_MspInit</STRONG> (Thumb, 152 bytes, Stack size 48 bytes, usart.o(.text.HAL_UART_MspInit))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 112<LI>Call Chain = HAL_UART_MspInit ⇒ HAL_GPIO_Init
|
||||
</UL>
|
||||
<BR>[Calls]<UL><LI><a href="#[70]">>></a> HAL_GPIO_Init
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[6d]">>></a> HAL_UART_Init
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[71]"></a>HAL_UART_Receive_IT</STRONG> (Thumb, 86 bytes, Stack size 24 bytes, stm32f1xx_hal_uart.o(.text.HAL_UART_Receive_IT))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 36<LI>Call Chain = HAL_UART_Receive_IT ⇒ UART_Start_Receive_IT
|
||||
</UL>
|
||||
<BR>[Calls]<UL><LI><a href="#[72]">>></a> UART_Start_Receive_IT
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[7f]">>></a> RS_Receive_IT
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[2]"></a>HardFault_Handler</STRONG> (Thumb, 4 bytes, Stack size 0 bytes, stm32f1xx_it.o(.text.HardFault_Handler))
|
||||
<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xb.o(RESET)
|
||||
</UL>
|
||||
<P><STRONG><a name="[65]"></a>MX_GPIO_Init</STRONG> (Thumb, 182 bytes, Stack size 56 bytes, gpio.o(.text.MX_GPIO_Init))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 120<LI>Call Chain = MX_GPIO_Init ⇒ HAL_GPIO_Init
|
||||
<P><STRONG><a name="[74]"></a>MB_DevoceInentificationInit</STRONG> (Thumb, 78 bytes, Stack size 0 bytes, modbus.o(.text.MB_DevoceInentificationInit))
|
||||
<BR><BR>[Called By]<UL><LI><a href="#[73]">>></a> MODBUS_FirstInit
|
||||
</UL>
|
||||
<BR>[Calls]<UL><LI><a href="#[67]">>></a> HAL_GPIO_Init
|
||||
<LI><a href="#[66]">>></a> HAL_GPIO_WritePin
|
||||
|
||||
<P><STRONG><a name="[73]"></a>MODBUS_FirstInit</STRONG> (Thumb, 66 bytes, Stack size 16 bytes, modbus.o(.text.MODBUS_FirstInit))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 36<LI>Call Chain = MODBUS_FirstInit ⇒ RS_Init
|
||||
</UL>
|
||||
<BR>[Calls]<UL><LI><a href="#[75]">>></a> RS_Init
|
||||
<LI><a href="#[74]">>></a> MB_DevoceInentificationInit
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[40]">>></a> main
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[68]"></a>MX_TIM2_Init</STRONG> (Thumb, 126 bytes, Stack size 40 bytes, tim.o(.text.MX_TIM2_Init))
|
||||
<P><STRONG><a name="[76]"></a>MX_GPIO_Init</STRONG> (Thumb, 182 bytes, Stack size 56 bytes, gpio.o(.text.MX_GPIO_Init))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 120<LI>Call Chain = MX_GPIO_Init ⇒ HAL_GPIO_Init
|
||||
</UL>
|
||||
<BR>[Calls]<UL><LI><a href="#[70]">>></a> HAL_GPIO_Init
|
||||
<LI><a href="#[77]">>></a> HAL_GPIO_WritePin
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[40]">>></a> main
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[78]"></a>MX_TIM2_Init</STRONG> (Thumb, 126 bytes, Stack size 40 bytes, tim.o(.text.MX_TIM2_Init))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 92<LI>Call Chain = MX_TIM2_Init ⇒ HAL_TIM_ConfigClockSource ⇒ TIM_ETR_SetConfig
|
||||
</UL>
|
||||
<BR>[Calls]<UL><LI><a href="#[6a]">>></a> HAL_TIMEx_MasterConfigSynchronization
|
||||
<LI><a href="#[60]">>></a> HAL_TIM_ConfigClockSource
|
||||
<LI><a href="#[5d]">>></a> HAL_TIM_Base_Init
|
||||
<LI><a href="#[69]">>></a> Error_Handler
|
||||
<BR>[Calls]<UL><LI><a href="#[7a]">>></a> HAL_TIMEx_MasterConfigSynchronization
|
||||
<LI><a href="#[63]">>></a> HAL_TIM_ConfigClockSource
|
||||
<LI><a href="#[60]">>></a> HAL_TIM_Base_Init
|
||||
<LI><a href="#[79]">>></a> Error_Handler
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[40]">>></a> main
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[7b]"></a>MX_TIM3_Init</STRONG> (Thumb, 130 bytes, Stack size 40 bytes, tim.o(.text.MX_TIM3_Init))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 92<LI>Call Chain = MX_TIM3_Init ⇒ HAL_TIM_ConfigClockSource ⇒ TIM_ETR_SetConfig
|
||||
</UL>
|
||||
<BR>[Calls]<UL><LI><a href="#[7a]">>></a> HAL_TIMEx_MasterConfigSynchronization
|
||||
<LI><a href="#[63]">>></a> HAL_TIM_ConfigClockSource
|
||||
<LI><a href="#[60]">>></a> HAL_TIM_Base_Init
|
||||
<LI><a href="#[79]">>></a> Error_Handler
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[40]">>></a> main
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[7c]"></a>MX_USART1_UART_Init</STRONG> (Thumb, 64 bytes, Stack size 16 bytes, usart.o(.text.MX_USART1_UART_Init))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 144<LI>Call Chain = MX_USART1_UART_Init ⇒ HAL_UART_Init ⇒ HAL_UART_MspInit ⇒ HAL_GPIO_Init
|
||||
</UL>
|
||||
<BR>[Calls]<UL><LI><a href="#[6d]">>></a> HAL_UART_Init
|
||||
<LI><a href="#[79]">>></a> Error_Handler
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[40]">>></a> main
|
||||
</UL>
|
||||
@@ -612,24 +746,50 @@ Global Symbols
|
||||
<P><STRONG><a name="[8]"></a>PendSV_Handler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_it.o(.text.PendSV_Handler))
|
||||
<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xb.o(RESET)
|
||||
</UL>
|
||||
<P><STRONG><a name="[7d]"></a>RS_Abort</STRONG> (Thumb, 348 bytes, Stack size 24 bytes, rs_message.o(.text.RS_Abort))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 76<LI>Call Chain = RS_Abort ⇒ HAL_UART_Abort ⇒ HAL_DMA_Abort
|
||||
</UL>
|
||||
<BR>[Calls]<UL><LI><a href="#[6b]">>></a> HAL_UART_AbortReceive
|
||||
<LI><a href="#[6c]">>></a> HAL_UART_AbortTransmit
|
||||
<LI><a href="#[68]">>></a> HAL_UART_Abort
|
||||
<LI><a href="#[7e]">>></a> HAL_TIM_Base_Stop_IT
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[7f]">>></a> RS_Receive_IT
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[75]"></a>RS_Init</STRONG> (Thumb, 112 bytes, Stack size 20 bytes, rs_message.o(.text.RS_Init))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 20<LI>Call Chain = RS_Init
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[73]">>></a> MODBUS_FirstInit
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[7f]"></a>RS_Receive_IT</STRONG> (Thumb, 176 bytes, Stack size 24 bytes, rs_message.o(.text.RS_Receive_IT))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 100<LI>Call Chain = RS_Receive_IT ⇒ RS_Abort ⇒ HAL_UART_Abort ⇒ HAL_DMA_Abort
|
||||
</UL>
|
||||
<BR>[Calls]<UL><LI><a href="#[71]">>></a> HAL_UART_Receive_IT
|
||||
<LI><a href="#[7d]">>></a> RS_Abort
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[40]">>></a> main
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[6]"></a>SVC_Handler</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, stm32f1xx_it.o(.text.SVC_Handler))
|
||||
<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xb.o(RESET)
|
||||
</UL>
|
||||
<P><STRONG><a name="[9]"></a>SysTick_Handler</STRONG> (Thumb, 8 bytes, Stack size 8 bytes, stm32f1xx_it.o(.text.SysTick_Handler))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = SysTick_Handler
|
||||
</UL>
|
||||
<BR>[Calls]<UL><LI><a href="#[6b]">>></a> HAL_IncTick
|
||||
<BR>[Calls]<UL><LI><a href="#[80]">>></a> HAL_IncTick
|
||||
</UL>
|
||||
<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xb.o(RESET)
|
||||
</UL>
|
||||
<P><STRONG><a name="[6c]"></a>SystemClock_Config</STRONG> (Thumb, 108 bytes, Stack size 72 bytes, main.o(.text.SystemClock_Config))
|
||||
<P><STRONG><a name="[81]"></a>SystemClock_Config</STRONG> (Thumb, 108 bytes, Stack size 72 bytes, main.o(.text.SystemClock_Config))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 176 + Unknown Stack Size
|
||||
<LI>Call Chain = SystemClock_Config ⇒ HAL_RCC_ClockConfig ⇒ HAL_InitTick ⇒ HAL_NVIC_SetPriority ⇒ NVIC_EncodePriority
|
||||
</UL>
|
||||
<BR>[Calls]<UL><LI><a href="#[6d]">>></a> __aeabi_memclr4
|
||||
<LI><a href="#[58]">>></a> HAL_RCC_ClockConfig
|
||||
<LI><a href="#[69]">>></a> Error_Handler
|
||||
<LI><a href="#[5a]">>></a> HAL_RCC_OscConfig
|
||||
<BR>[Calls]<UL><LI><a href="#[58]">>></a> HAL_RCC_ClockConfig
|
||||
<LI><a href="#[79]">>></a> Error_Handler
|
||||
<LI><a href="#[5d]">>></a> HAL_RCC_OscConfig
|
||||
<LI><a href="#[82]">>></a> __aeabi_memclr4
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[40]">>></a> main
|
||||
</UL>
|
||||
@@ -637,52 +797,58 @@ Global Symbols
|
||||
<P><STRONG><a name="[35]"></a>SystemInit</STRONG> (Thumb, 2 bytes, Stack size 0 bytes, system_stm32f1xx.o(.text.SystemInit))
|
||||
<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xb.o(.text)
|
||||
</UL>
|
||||
<P><STRONG><a name="[5f]"></a>TIM_Base_SetConfig</STRONG> (Thumb, 262 bytes, Stack size 12 bytes, stm32f1xx_hal_tim.o(.text.TIM_Base_SetConfig))
|
||||
<P><STRONG><a name="[62]"></a>TIM_Base_SetConfig</STRONG> (Thumb, 262 bytes, Stack size 12 bytes, stm32f1xx_hal_tim.o(.text.TIM_Base_SetConfig))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 12<LI>Call Chain = TIM_Base_SetConfig
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[5d]">>></a> HAL_TIM_Base_Init
|
||||
<BR>[Called By]<UL><LI><a href="#[60]">>></a> HAL_TIM_Base_Init
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[61]"></a>TIM_ETR_SetConfig</STRONG> (Thumb, 52 bytes, Stack size 20 bytes, stm32f1xx_hal_tim.o(.text.TIM_ETR_SetConfig))
|
||||
<P><STRONG><a name="[64]"></a>TIM_ETR_SetConfig</STRONG> (Thumb, 52 bytes, Stack size 20 bytes, stm32f1xx_hal_tim.o(.text.TIM_ETR_SetConfig))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 20<LI>Call Chain = TIM_ETR_SetConfig
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[60]">>></a> HAL_TIM_ConfigClockSource
|
||||
<BR>[Called By]<UL><LI><a href="#[63]">>></a> HAL_TIM_ConfigClockSource
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[72]"></a>UART_Start_Receive_IT</STRONG> (Thumb, 98 bytes, Stack size 12 bytes, stm32f1xx_hal_uart.o(.text.UART_Start_Receive_IT))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 12<LI>Call Chain = UART_Start_Receive_IT
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[71]">>></a> HAL_UART_Receive_IT
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[5]"></a>UsageFault_Handler</STRONG> (Thumb, 4 bytes, Stack size 0 bytes, stm32f1xx_it.o(.text.UsageFault_Handler))
|
||||
<BR>[Address Reference Count : 1]<UL><LI> startup_stm32f103xb.o(RESET)
|
||||
</UL>
|
||||
<P><STRONG><a name="[6f]"></a>append_bit</STRONG> (Thumb, 48 bytes, Stack size 12 bytes, canform.o(.text.append_bit))
|
||||
<P><STRONG><a name="[84]"></a>append_bit</STRONG> (Thumb, 48 bytes, Stack size 12 bytes, canform.o(.text.append_bit))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 12<LI>Call Chain = append_bit
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[70]">>></a> apply_bit_stuffing_with_error
|
||||
<LI><a href="#[6e]">>></a> append_bits
|
||||
<BR>[Called By]<UL><LI><a href="#[85]">>></a> apply_bit_stuffing_with_error
|
||||
<LI><a href="#[83]">>></a> append_bits
|
||||
<LI><a href="#[4a]">>></a> form_CAN_bitstream_full
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[6e]"></a>append_bits</STRONG> (Thumb, 64 bytes, Stack size 32 bytes, canform.o(.text.append_bits))
|
||||
<P><STRONG><a name="[83]"></a>append_bits</STRONG> (Thumb, 64 bytes, Stack size 32 bytes, canform.o(.text.append_bits))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 44<LI>Call Chain = append_bits ⇒ append_bit
|
||||
</UL>
|
||||
<BR>[Calls]<UL><LI><a href="#[6f]">>></a> append_bit
|
||||
<BR>[Calls]<UL><LI><a href="#[84]">>></a> append_bit
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[4a]">>></a> form_CAN_bitstream_full
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[70]"></a>apply_bit_stuffing_with_error</STRONG> (Thumb, 196 bytes, Stack size 40 bytes, canform.o(.text.apply_bit_stuffing_with_error))
|
||||
<P><STRONG><a name="[85]"></a>apply_bit_stuffing_with_error</STRONG> (Thumb, 196 bytes, Stack size 40 bytes, canform.o(.text.apply_bit_stuffing_with_error))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 52<LI>Call Chain = apply_bit_stuffing_with_error ⇒ append_bit
|
||||
</UL>
|
||||
<BR>[Calls]<UL><LI><a href="#[6f]">>></a> append_bit
|
||||
<BR>[Calls]<UL><LI><a href="#[84]">>></a> append_bit
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[4a]">>></a> form_CAN_bitstream_full
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[72]"></a>compute_crc15</STRONG> (Thumb, 118 bytes, Stack size 20 bytes, canform.o(.text.compute_crc15))
|
||||
<P><STRONG><a name="[87]"></a>compute_crc15</STRONG> (Thumb, 118 bytes, Stack size 20 bytes, canform.o(.text.compute_crc15))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 20<LI>Call Chain = compute_crc15
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[4a]">>></a> form_CAN_bitstream_full
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[71]"></a>flip_bit</STRONG> (Thumb, 48 bytes, Stack size 4 bytes, canform.o(.text.flip_bit))
|
||||
<P><STRONG><a name="[86]"></a>flip_bit</STRONG> (Thumb, 48 bytes, Stack size 4 bytes, canform.o(.text.flip_bit))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 4<LI>Call Chain = flip_bit
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[4a]">>></a> form_CAN_bitstream_full
|
||||
@@ -691,25 +857,29 @@ Global Symbols
|
||||
<P><STRONG><a name="[4a]"></a>form_CAN_bitstream_full</STRONG> (Thumb, 978 bytes, Stack size 160 bytes, canform.o(.text.form_CAN_bitstream_full))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 212<LI>Call Chain = form_CAN_bitstream_full ⇒ apply_bit_stuffing_with_error ⇒ append_bit
|
||||
</UL>
|
||||
<BR>[Calls]<UL><LI><a href="#[71]">>></a> flip_bit
|
||||
<LI><a href="#[70]">>></a> apply_bit_stuffing_with_error
|
||||
<LI><a href="#[72]">>></a> compute_crc15
|
||||
<LI><a href="#[6e]">>></a> append_bits
|
||||
<LI><a href="#[6f]">>></a> append_bit
|
||||
<BR>[Calls]<UL><LI><a href="#[86]">>></a> flip_bit
|
||||
<LI><a href="#[85]">>></a> apply_bit_stuffing_with_error
|
||||
<LI><a href="#[87]">>></a> compute_crc15
|
||||
<LI><a href="#[83]">>></a> append_bits
|
||||
<LI><a href="#[84]">>></a> append_bit
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[49]">>></a> CANEmu_SendFrame
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[40]"></a>main</STRONG> (Thumb, 76 bytes, Stack size 16 bytes, main.o(.text.main))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 252 + Unknown Stack Size
|
||||
<P><STRONG><a name="[40]"></a>main</STRONG> (Thumb, 488 bytes, Stack size 32 bytes, main.o(.text.main))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 268 + Unknown Stack Size
|
||||
<LI>Call Chain = main ⇒ CANEmu_SendFrame ⇒ form_CAN_bitstream_full ⇒ apply_bit_stuffing_with_error ⇒ append_bit
|
||||
</UL>
|
||||
<BR>[Calls]<UL><LI><a href="#[49]">>></a> CANEmu_SendFrame
|
||||
<LI><a href="#[4c]">>></a> HAL_Delay
|
||||
<LI><a href="#[73]">>></a> CANEmu_Init
|
||||
<LI><a href="#[68]">>></a> MX_TIM2_Init
|
||||
<LI><a href="#[65]">>></a> MX_GPIO_Init
|
||||
<LI><a href="#[6c]">>></a> SystemClock_Config
|
||||
<LI><a href="#[7f]">>></a> RS_Receive_IT
|
||||
<LI><a href="#[73]">>></a> MODBUS_FirstInit
|
||||
<LI><a href="#[88]">>></a> CANEmu_Init
|
||||
<LI><a href="#[7c]">>></a> MX_USART1_UART_Init
|
||||
<LI><a href="#[7b]">>></a> MX_TIM3_Init
|
||||
<LI><a href="#[78]">>></a> MX_TIM2_Init
|
||||
<LI><a href="#[76]">>></a> MX_GPIO_Init
|
||||
<LI><a href="#[81]">>></a> SystemClock_Config
|
||||
<LI><a href="#[4e]">>></a> HAL_Init
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[3f]">>></a> __rt_entry_main
|
||||
@@ -724,28 +894,28 @@ Global Symbols
|
||||
<H3>
|
||||
Local Symbols
|
||||
</H3>
|
||||
<P><STRONG><a name="[62]"></a>TIM_TI1_ConfigInputStage</STRONG> (Thumb, 80 bytes, Stack size 20 bytes, stm32f1xx_hal_tim.o(.text.TIM_TI1_ConfigInputStage))
|
||||
<P><STRONG><a name="[65]"></a>TIM_TI1_ConfigInputStage</STRONG> (Thumb, 80 bytes, Stack size 20 bytes, stm32f1xx_hal_tim.o(.text.TIM_TI1_ConfigInputStage))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 20<LI>Call Chain = TIM_TI1_ConfigInputStage
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[60]">>></a> HAL_TIM_ConfigClockSource
|
||||
<BR>[Called By]<UL><LI><a href="#[63]">>></a> HAL_TIM_ConfigClockSource
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[63]"></a>TIM_ITRx_SetConfig</STRONG> (Thumb, 42 bytes, Stack size 12 bytes, stm32f1xx_hal_tim.o(.text.TIM_ITRx_SetConfig))
|
||||
<P><STRONG><a name="[66]"></a>TIM_ITRx_SetConfig</STRONG> (Thumb, 42 bytes, Stack size 12 bytes, stm32f1xx_hal_tim.o(.text.TIM_ITRx_SetConfig))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 12<LI>Call Chain = TIM_ITRx_SetConfig
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[60]">>></a> HAL_TIM_ConfigClockSource
|
||||
<BR>[Called By]<UL><LI><a href="#[63]">>></a> HAL_TIM_ConfigClockSource
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[64]"></a>TIM_TI2_ConfigInputStage</STRONG> (Thumb, 82 bytes, Stack size 20 bytes, stm32f1xx_hal_tim.o(.text.TIM_TI2_ConfigInputStage))
|
||||
<P><STRONG><a name="[67]"></a>TIM_TI2_ConfigInputStage</STRONG> (Thumb, 82 bytes, Stack size 20 bytes, stm32f1xx_hal_tim.o(.text.TIM_TI2_ConfigInputStage))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 20<LI>Call Chain = TIM_TI2_ConfigInputStage
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[60]">>></a> HAL_TIM_ConfigClockSource
|
||||
<BR>[Called By]<UL><LI><a href="#[63]">>></a> HAL_TIM_ConfigClockSource
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[5b]"></a>RCC_Delay</STRONG> (Thumb, 58 bytes, Stack size 8 bytes, stm32f1xx_hal_rcc.o(.text.RCC_Delay))
|
||||
<P><STRONG><a name="[5e]"></a>RCC_Delay</STRONG> (Thumb, 58 bytes, Stack size 8 bytes, stm32f1xx_hal_rcc.o(.text.RCC_Delay))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = RCC_Delay
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[5a]">>></a> HAL_RCC_OscConfig
|
||||
<BR>[Called By]<UL><LI><a href="#[5d]">>></a> HAL_RCC_OscConfig
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[57]"></a>__NVIC_SetPriorityGrouping</STRONG> (Thumb, 60 bytes, Stack size 12 bytes, stm32f1xx_hal_cortex.o(.text.__NVIC_SetPriorityGrouping))
|
||||
@@ -767,17 +937,26 @@ Local Symbols
|
||||
<P><STRONG><a name="[56]"></a>__NVIC_SetPriority</STRONG> (Thumb, 66 bytes, Stack size 8 bytes, stm32f1xx_hal_cortex.o(.text.__NVIC_SetPriority))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = __NVIC_SetPriority
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[5c]">>></a> SysTick_Config
|
||||
<BR>[Called By]<UL><LI><a href="#[5f]">>></a> SysTick_Config
|
||||
<LI><a href="#[53]">>></a> HAL_NVIC_SetPriority
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[5c]"></a>SysTick_Config</STRONG> (Thumb, 82 bytes, Stack size 16 bytes, stm32f1xx_hal_cortex.o(.text.SysTick_Config))
|
||||
<P><STRONG><a name="[5f]"></a>SysTick_Config</STRONG> (Thumb, 82 bytes, Stack size 16 bytes, stm32f1xx_hal_cortex.o(.text.SysTick_Config))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 24<LI>Call Chain = SysTick_Config ⇒ __NVIC_SetPriority
|
||||
</UL>
|
||||
<BR>[Calls]<UL><LI><a href="#[56]">>></a> __NVIC_SetPriority
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[52]">>></a> HAL_SYSTICK_Config
|
||||
</UL>
|
||||
|
||||
<P><STRONG><a name="[6f]"></a>UART_SetConfig</STRONG> (Thumb, 186 bytes, Stack size 24 bytes, stm32f1xx_hal_uart.o(.text.UART_SetConfig))
|
||||
<BR><BR>[Stack]<UL><LI>Max Depth = 32<LI>Call Chain = UART_SetConfig ⇒ HAL_RCC_GetPCLK2Freq
|
||||
</UL>
|
||||
<BR>[Calls]<UL><LI><a href="#[5c]">>></a> HAL_RCC_GetPCLK2Freq
|
||||
<LI><a href="#[5a]">>></a> HAL_RCC_GetPCLK1Freq
|
||||
</UL>
|
||||
<BR>[Called By]<UL><LI><a href="#[6d]">>></a> HAL_UART_Init
|
||||
</UL>
|
||||
<P>
|
||||
<H3>
|
||||
Undefined Global Symbols
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
"canemu\main.o"
|
||||
"canemu\gpio.o"
|
||||
"canemu\tim.o"
|
||||
"canemu\usart.o"
|
||||
"canemu\stm32f1xx_it.o"
|
||||
"canemu\stm32f1xx_hal_msp.o"
|
||||
"canemu\stm32f1xx_hal_gpio_ex.o"
|
||||
@@ -18,9 +19,13 @@
|
||||
"canemu\stm32f1xx_hal_flash.o"
|
||||
"canemu\stm32f1xx_hal_flash_ex.o"
|
||||
"canemu\stm32f1xx_hal_exti.o"
|
||||
"canemu\stm32f1xx_hal_uart.o"
|
||||
"canemu\system_stm32f1xx.o"
|
||||
"canemu\canemu.o"
|
||||
"canemu\canform.o"
|
||||
"canemu\crc_algs.o"
|
||||
"canemu\modbus.o"
|
||||
"canemu\rs_message.o"
|
||||
--strict --scatter "CANEmu\CANEmu.sct"
|
||||
--summary_stderr --info summarysizes --map --load_addr_map_info --xref --callgraph --symbols
|
||||
--info sizes --info totals --info unused --info veneers
|
||||
|
||||
@@ -27,8 +27,16 @@ Section Cross References
|
||||
main.o(.text.main) refers to main.o(.text.SystemClock_Config) for SystemClock_Config
|
||||
main.o(.text.main) refers to gpio.o(.text.MX_GPIO_Init) for MX_GPIO_Init
|
||||
main.o(.text.main) refers to tim.o(.text.MX_TIM2_Init) for MX_TIM2_Init
|
||||
main.o(.text.main) refers to tim.o(.text.MX_TIM3_Init) for MX_TIM3_Init
|
||||
main.o(.text.main) refers to usart.o(.text.MX_USART1_UART_Init) for MX_USART1_UART_Init
|
||||
main.o(.text.main) refers to main.o(.bss.hcanemu) for hcanemu
|
||||
main.o(.text.main) refers to canemu.o(.text.CANEmu_Init) for CANEmu_Init
|
||||
main.o(.text.main) refers to modbus.o(.text.MODBUS_FirstInit) for MODBUS_FirstInit
|
||||
main.o(.text.main) refers to modbus.o(.bss.hmodbus1) for hmodbus1
|
||||
main.o(.text.main) refers to modbus.o(.bss.MODBUS_MSG) for MODBUS_MSG
|
||||
main.o(.text.main) refers to rs_message.o(.text.RS_Receive_IT) for RS_Receive_IT
|
||||
main.o(.text.main) refers to main.o(.bss.flag_manual) for flag_manual
|
||||
main.o(.text.main) refers to modbus.o(.bss.MB_DATA) for MB_DATA
|
||||
main.o(.text.main) refers to stm32f1xx_hal.o(.text.HAL_Delay) for HAL_Delay
|
||||
main.o(.text.main) refers to canemu.o(.text.CANEmu_SendFrame) for CANEmu_SendFrame
|
||||
main.o(.ARM.exidx.text.main) refers to main.o(.text.main) for [Anonymous Symbol]
|
||||
@@ -47,8 +55,22 @@ Section Cross References
|
||||
tim.o(.text.MX_TIM2_Init) refers to stm32f1xx_hal_tim.o(.text.HAL_TIM_ConfigClockSource) for HAL_TIM_ConfigClockSource
|
||||
tim.o(.text.MX_TIM2_Init) refers to stm32f1xx_hal_tim_ex.o(.text.HAL_TIMEx_MasterConfigSynchronization) for HAL_TIMEx_MasterConfigSynchronization
|
||||
tim.o(.ARM.exidx.text.MX_TIM2_Init) refers to tim.o(.text.MX_TIM2_Init) for [Anonymous Symbol]
|
||||
tim.o(.text.MX_TIM3_Init) refers to tim.o(.bss.htim3) for htim3
|
||||
tim.o(.text.MX_TIM3_Init) refers to stm32f1xx_hal_tim.o(.text.HAL_TIM_Base_Init) for HAL_TIM_Base_Init
|
||||
tim.o(.text.MX_TIM3_Init) refers to main.o(.text.Error_Handler) for Error_Handler
|
||||
tim.o(.text.MX_TIM3_Init) refers to stm32f1xx_hal_tim.o(.text.HAL_TIM_ConfigClockSource) for HAL_TIM_ConfigClockSource
|
||||
tim.o(.text.MX_TIM3_Init) refers to stm32f1xx_hal_tim_ex.o(.text.HAL_TIMEx_MasterConfigSynchronization) for HAL_TIMEx_MasterConfigSynchronization
|
||||
tim.o(.ARM.exidx.text.MX_TIM3_Init) refers to tim.o(.text.MX_TIM3_Init) for [Anonymous Symbol]
|
||||
tim.o(.ARM.exidx.text.HAL_TIM_Base_MspInit) refers to tim.o(.text.HAL_TIM_Base_MspInit) for [Anonymous Symbol]
|
||||
tim.o(.ARM.exidx.text.HAL_TIM_Base_MspDeInit) refers to tim.o(.text.HAL_TIM_Base_MspDeInit) for [Anonymous Symbol]
|
||||
usart.o(.text.MX_USART1_UART_Init) refers to usart.o(.bss.huart1) for huart1
|
||||
usart.o(.text.MX_USART1_UART_Init) refers to stm32f1xx_hal_uart.o(.text.HAL_UART_Init) for HAL_UART_Init
|
||||
usart.o(.text.MX_USART1_UART_Init) refers to main.o(.text.Error_Handler) for Error_Handler
|
||||
usart.o(.ARM.exidx.text.MX_USART1_UART_Init) refers to usart.o(.text.MX_USART1_UART_Init) for [Anonymous Symbol]
|
||||
usart.o(.text.HAL_UART_MspInit) refers to stm32f1xx_hal_gpio.o(.text.HAL_GPIO_Init) for HAL_GPIO_Init
|
||||
usart.o(.ARM.exidx.text.HAL_UART_MspInit) refers to usart.o(.text.HAL_UART_MspInit) for [Anonymous Symbol]
|
||||
usart.o(.text.HAL_UART_MspDeInit) refers to stm32f1xx_hal_gpio.o(.text.HAL_GPIO_DeInit) for HAL_GPIO_DeInit
|
||||
usart.o(.ARM.exidx.text.HAL_UART_MspDeInit) refers to usart.o(.text.HAL_UART_MspDeInit) for [Anonymous Symbol]
|
||||
stm32f1xx_it.o(.ARM.exidx.text.NMI_Handler) refers to stm32f1xx_it.o(.text.NMI_Handler) for [Anonymous Symbol]
|
||||
stm32f1xx_it.o(.ARM.exidx.text.HardFault_Handler) refers to stm32f1xx_it.o(.text.HardFault_Handler) for [Anonymous Symbol]
|
||||
stm32f1xx_it.o(.ARM.exidx.text.MemManage_Handler) refers to stm32f1xx_it.o(.text.MemManage_Handler) for [Anonymous Symbol]
|
||||
@@ -685,6 +707,143 @@ Section Cross References
|
||||
stm32f1xx_hal_exti.o(.ARM.exidx.text.HAL_EXTI_GetPending) refers to stm32f1xx_hal_exti.o(.text.HAL_EXTI_GetPending) for [Anonymous Symbol]
|
||||
stm32f1xx_hal_exti.o(.ARM.exidx.text.HAL_EXTI_ClearPending) refers to stm32f1xx_hal_exti.o(.text.HAL_EXTI_ClearPending) for [Anonymous Symbol]
|
||||
stm32f1xx_hal_exti.o(.ARM.exidx.text.HAL_EXTI_GenerateSWI) refers to stm32f1xx_hal_exti.o(.text.HAL_EXTI_GenerateSWI) for [Anonymous Symbol]
|
||||
stm32f1xx_hal_uart.o(.text.HAL_UART_Init) refers to usart.o(.text.HAL_UART_MspInit) for HAL_UART_MspInit
|
||||
stm32f1xx_hal_uart.o(.text.HAL_UART_Init) refers to stm32f1xx_hal_uart.o(.text.UART_SetConfig) for UART_SetConfig
|
||||
stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_UART_Init) refers to stm32f1xx_hal_uart.o(.text.HAL_UART_Init) for [Anonymous Symbol]
|
||||
stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_UART_MspInit) refers to stm32f1xx_hal_uart.o(.text.HAL_UART_MspInit) for [Anonymous Symbol]
|
||||
stm32f1xx_hal_uart.o(.text.UART_SetConfig) refers to stm32f1xx_hal_rcc.o(.text.HAL_RCC_GetPCLK2Freq) for HAL_RCC_GetPCLK2Freq
|
||||
stm32f1xx_hal_uart.o(.text.UART_SetConfig) refers to stm32f1xx_hal_rcc.o(.text.HAL_RCC_GetPCLK1Freq) for HAL_RCC_GetPCLK1Freq
|
||||
stm32f1xx_hal_uart.o(.ARM.exidx.text.UART_SetConfig) refers to stm32f1xx_hal_uart.o(.text.UART_SetConfig) for [Anonymous Symbol]
|
||||
stm32f1xx_hal_uart.o(.text.HAL_HalfDuplex_Init) refers to usart.o(.text.HAL_UART_MspInit) for HAL_UART_MspInit
|
||||
stm32f1xx_hal_uart.o(.text.HAL_HalfDuplex_Init) refers to stm32f1xx_hal_uart.o(.text.UART_SetConfig) for UART_SetConfig
|
||||
stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_HalfDuplex_Init) refers to stm32f1xx_hal_uart.o(.text.HAL_HalfDuplex_Init) for [Anonymous Symbol]
|
||||
stm32f1xx_hal_uart.o(.text.HAL_LIN_Init) refers to usart.o(.text.HAL_UART_MspInit) for HAL_UART_MspInit
|
||||
stm32f1xx_hal_uart.o(.text.HAL_LIN_Init) refers to stm32f1xx_hal_uart.o(.text.UART_SetConfig) for UART_SetConfig
|
||||
stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_LIN_Init) refers to stm32f1xx_hal_uart.o(.text.HAL_LIN_Init) for [Anonymous Symbol]
|
||||
stm32f1xx_hal_uart.o(.text.HAL_MultiProcessor_Init) refers to usart.o(.text.HAL_UART_MspInit) for HAL_UART_MspInit
|
||||
stm32f1xx_hal_uart.o(.text.HAL_MultiProcessor_Init) refers to stm32f1xx_hal_uart.o(.text.UART_SetConfig) for UART_SetConfig
|
||||
stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_MultiProcessor_Init) refers to stm32f1xx_hal_uart.o(.text.HAL_MultiProcessor_Init) for [Anonymous Symbol]
|
||||
stm32f1xx_hal_uart.o(.text.HAL_UART_DeInit) refers to usart.o(.text.HAL_UART_MspDeInit) for HAL_UART_MspDeInit
|
||||
stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_UART_DeInit) refers to stm32f1xx_hal_uart.o(.text.HAL_UART_DeInit) for [Anonymous Symbol]
|
||||
stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_UART_MspDeInit) refers to stm32f1xx_hal_uart.o(.text.HAL_UART_MspDeInit) for [Anonymous Symbol]
|
||||
stm32f1xx_hal_uart.o(.text.HAL_UART_Transmit) refers to stm32f1xx_hal.o(.text.HAL_GetTick) for HAL_GetTick
|
||||
stm32f1xx_hal_uart.o(.text.HAL_UART_Transmit) refers to stm32f1xx_hal_uart.o(.text.UART_WaitOnFlagUntilTimeout) for UART_WaitOnFlagUntilTimeout
|
||||
stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_UART_Transmit) refers to stm32f1xx_hal_uart.o(.text.HAL_UART_Transmit) for [Anonymous Symbol]
|
||||
stm32f1xx_hal_uart.o(.text.UART_WaitOnFlagUntilTimeout) refers to stm32f1xx_hal.o(.text.HAL_GetTick) for HAL_GetTick
|
||||
stm32f1xx_hal_uart.o(.text.UART_WaitOnFlagUntilTimeout) refers to stm32f1xx_hal_uart.o(.text.UART_EndRxTransfer) for UART_EndRxTransfer
|
||||
stm32f1xx_hal_uart.o(.ARM.exidx.text.UART_WaitOnFlagUntilTimeout) refers to stm32f1xx_hal_uart.o(.text.UART_WaitOnFlagUntilTimeout) for [Anonymous Symbol]
|
||||
stm32f1xx_hal_uart.o(.text.HAL_UART_Receive) refers to stm32f1xx_hal.o(.text.HAL_GetTick) for HAL_GetTick
|
||||
stm32f1xx_hal_uart.o(.text.HAL_UART_Receive) refers to stm32f1xx_hal_uart.o(.text.UART_WaitOnFlagUntilTimeout) for UART_WaitOnFlagUntilTimeout
|
||||
stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_UART_Receive) refers to stm32f1xx_hal_uart.o(.text.HAL_UART_Receive) for [Anonymous Symbol]
|
||||
stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_UART_Transmit_IT) refers to stm32f1xx_hal_uart.o(.text.HAL_UART_Transmit_IT) for [Anonymous Symbol]
|
||||
stm32f1xx_hal_uart.o(.text.HAL_UART_Receive_IT) refers to stm32f1xx_hal_uart.o(.text.UART_Start_Receive_IT) for UART_Start_Receive_IT
|
||||
stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_UART_Receive_IT) refers to stm32f1xx_hal_uart.o(.text.HAL_UART_Receive_IT) for [Anonymous Symbol]
|
||||
stm32f1xx_hal_uart.o(.ARM.exidx.text.UART_Start_Receive_IT) refers to stm32f1xx_hal_uart.o(.text.UART_Start_Receive_IT) for [Anonymous Symbol]
|
||||
stm32f1xx_hal_uart.o(.text.HAL_UART_Transmit_DMA) refers to stm32f1xx_hal_uart.o(.text.UART_DMATransmitCplt) for UART_DMATransmitCplt
|
||||
stm32f1xx_hal_uart.o(.text.HAL_UART_Transmit_DMA) refers to stm32f1xx_hal_uart.o(.text.UART_DMATxHalfCplt) for UART_DMATxHalfCplt
|
||||
stm32f1xx_hal_uart.o(.text.HAL_UART_Transmit_DMA) refers to stm32f1xx_hal_uart.o(.text.UART_DMAError) for UART_DMAError
|
||||
stm32f1xx_hal_uart.o(.text.HAL_UART_Transmit_DMA) refers to stm32f1xx_hal_dma.o(.text.HAL_DMA_Start_IT) for HAL_DMA_Start_IT
|
||||
stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_UART_Transmit_DMA) refers to stm32f1xx_hal_uart.o(.text.HAL_UART_Transmit_DMA) for [Anonymous Symbol]
|
||||
stm32f1xx_hal_uart.o(.text.UART_DMATransmitCplt) refers to stm32f1xx_hal_uart.o(.text.HAL_UART_TxCpltCallback) for HAL_UART_TxCpltCallback
|
||||
stm32f1xx_hal_uart.o(.ARM.exidx.text.UART_DMATransmitCplt) refers to stm32f1xx_hal_uart.o(.text.UART_DMATransmitCplt) for [Anonymous Symbol]
|
||||
stm32f1xx_hal_uart.o(.text.UART_DMATxHalfCplt) refers to stm32f1xx_hal_uart.o(.text.HAL_UART_TxHalfCpltCallback) for HAL_UART_TxHalfCpltCallback
|
||||
stm32f1xx_hal_uart.o(.ARM.exidx.text.UART_DMATxHalfCplt) refers to stm32f1xx_hal_uart.o(.text.UART_DMATxHalfCplt) for [Anonymous Symbol]
|
||||
stm32f1xx_hal_uart.o(.text.UART_DMAError) refers to stm32f1xx_hal_uart.o(.text.UART_EndTxTransfer) for UART_EndTxTransfer
|
||||
stm32f1xx_hal_uart.o(.text.UART_DMAError) refers to stm32f1xx_hal_uart.o(.text.UART_EndRxTransfer) for UART_EndRxTransfer
|
||||
stm32f1xx_hal_uart.o(.text.UART_DMAError) refers to stm32f1xx_hal_uart.o(.text.HAL_UART_ErrorCallback) for HAL_UART_ErrorCallback
|
||||
stm32f1xx_hal_uart.o(.ARM.exidx.text.UART_DMAError) refers to stm32f1xx_hal_uart.o(.text.UART_DMAError) for [Anonymous Symbol]
|
||||
stm32f1xx_hal_uart.o(.text.HAL_UART_Receive_DMA) refers to stm32f1xx_hal_uart.o(.text.UART_Start_Receive_DMA) for UART_Start_Receive_DMA
|
||||
stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_UART_Receive_DMA) refers to stm32f1xx_hal_uart.o(.text.HAL_UART_Receive_DMA) for [Anonymous Symbol]
|
||||
stm32f1xx_hal_uart.o(.text.UART_Start_Receive_DMA) refers to stm32f1xx_hal_uart.o(.text.UART_DMAReceiveCplt) for UART_DMAReceiveCplt
|
||||
stm32f1xx_hal_uart.o(.text.UART_Start_Receive_DMA) refers to stm32f1xx_hal_uart.o(.text.UART_DMARxHalfCplt) for UART_DMARxHalfCplt
|
||||
stm32f1xx_hal_uart.o(.text.UART_Start_Receive_DMA) refers to stm32f1xx_hal_uart.o(.text.UART_DMAError) for UART_DMAError
|
||||
stm32f1xx_hal_uart.o(.text.UART_Start_Receive_DMA) refers to stm32f1xx_hal_dma.o(.text.HAL_DMA_Start_IT) for HAL_DMA_Start_IT
|
||||
stm32f1xx_hal_uart.o(.ARM.exidx.text.UART_Start_Receive_DMA) refers to stm32f1xx_hal_uart.o(.text.UART_Start_Receive_DMA) for [Anonymous Symbol]
|
||||
stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_UART_DMAPause) refers to stm32f1xx_hal_uart.o(.text.HAL_UART_DMAPause) for [Anonymous Symbol]
|
||||
stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_UART_DMAResume) refers to stm32f1xx_hal_uart.o(.text.HAL_UART_DMAResume) for [Anonymous Symbol]
|
||||
stm32f1xx_hal_uart.o(.text.HAL_UART_DMAStop) refers to stm32f1xx_hal_dma.o(.text.HAL_DMA_Abort) for HAL_DMA_Abort
|
||||
stm32f1xx_hal_uart.o(.text.HAL_UART_DMAStop) refers to stm32f1xx_hal_uart.o(.text.UART_EndTxTransfer) for UART_EndTxTransfer
|
||||
stm32f1xx_hal_uart.o(.text.HAL_UART_DMAStop) refers to stm32f1xx_hal_uart.o(.text.UART_EndRxTransfer) for UART_EndRxTransfer
|
||||
stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_UART_DMAStop) refers to stm32f1xx_hal_uart.o(.text.HAL_UART_DMAStop) for [Anonymous Symbol]
|
||||
stm32f1xx_hal_uart.o(.ARM.exidx.text.UART_EndTxTransfer) refers to stm32f1xx_hal_uart.o(.text.UART_EndTxTransfer) for [Anonymous Symbol]
|
||||
stm32f1xx_hal_uart.o(.ARM.exidx.text.UART_EndRxTransfer) refers to stm32f1xx_hal_uart.o(.text.UART_EndRxTransfer) for [Anonymous Symbol]
|
||||
stm32f1xx_hal_uart.o(.text.HAL_UARTEx_ReceiveToIdle) refers to stm32f1xx_hal.o(.text.HAL_GetTick) for HAL_GetTick
|
||||
stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_UARTEx_ReceiveToIdle) refers to stm32f1xx_hal_uart.o(.text.HAL_UARTEx_ReceiveToIdle) for [Anonymous Symbol]
|
||||
stm32f1xx_hal_uart.o(.text.HAL_UARTEx_ReceiveToIdle_IT) refers to stm32f1xx_hal_uart.o(.text.UART_Start_Receive_IT) for UART_Start_Receive_IT
|
||||
stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_UARTEx_ReceiveToIdle_IT) refers to stm32f1xx_hal_uart.o(.text.HAL_UARTEx_ReceiveToIdle_IT) for [Anonymous Symbol]
|
||||
stm32f1xx_hal_uart.o(.text.HAL_UARTEx_ReceiveToIdle_DMA) refers to stm32f1xx_hal_uart.o(.text.UART_Start_Receive_DMA) for UART_Start_Receive_DMA
|
||||
stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_UARTEx_ReceiveToIdle_DMA) refers to stm32f1xx_hal_uart.o(.text.HAL_UARTEx_ReceiveToIdle_DMA) for [Anonymous Symbol]
|
||||
stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_UARTEx_GetRxEventType) refers to stm32f1xx_hal_uart.o(.text.HAL_UARTEx_GetRxEventType) for [Anonymous Symbol]
|
||||
stm32f1xx_hal_uart.o(.text.HAL_UART_Abort) refers to stm32f1xx_hal_dma.o(.text.HAL_DMA_Abort) for HAL_DMA_Abort
|
||||
stm32f1xx_hal_uart.o(.text.HAL_UART_Abort) refers to stm32f1xx_hal_dma.o(.text.HAL_DMA_GetError) for HAL_DMA_GetError
|
||||
stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_UART_Abort) refers to stm32f1xx_hal_uart.o(.text.HAL_UART_Abort) for [Anonymous Symbol]
|
||||
stm32f1xx_hal_uart.o(.text.HAL_UART_AbortTransmit) refers to stm32f1xx_hal_dma.o(.text.HAL_DMA_Abort) for HAL_DMA_Abort
|
||||
stm32f1xx_hal_uart.o(.text.HAL_UART_AbortTransmit) refers to stm32f1xx_hal_dma.o(.text.HAL_DMA_GetError) for HAL_DMA_GetError
|
||||
stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_UART_AbortTransmit) refers to stm32f1xx_hal_uart.o(.text.HAL_UART_AbortTransmit) for [Anonymous Symbol]
|
||||
stm32f1xx_hal_uart.o(.text.HAL_UART_AbortReceive) refers to stm32f1xx_hal_dma.o(.text.HAL_DMA_Abort) for HAL_DMA_Abort
|
||||
stm32f1xx_hal_uart.o(.text.HAL_UART_AbortReceive) refers to stm32f1xx_hal_dma.o(.text.HAL_DMA_GetError) for HAL_DMA_GetError
|
||||
stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_UART_AbortReceive) refers to stm32f1xx_hal_uart.o(.text.HAL_UART_AbortReceive) for [Anonymous Symbol]
|
||||
stm32f1xx_hal_uart.o(.text.HAL_UART_Abort_IT) refers to stm32f1xx_hal_uart.o(.text.UART_DMATxAbortCallback) for UART_DMATxAbortCallback
|
||||
stm32f1xx_hal_uart.o(.text.HAL_UART_Abort_IT) refers to stm32f1xx_hal_uart.o(.text.UART_DMARxAbortCallback) for UART_DMARxAbortCallback
|
||||
stm32f1xx_hal_uart.o(.text.HAL_UART_Abort_IT) refers to stm32f1xx_hal_dma.o(.text.HAL_DMA_Abort_IT) for HAL_DMA_Abort_IT
|
||||
stm32f1xx_hal_uart.o(.text.HAL_UART_Abort_IT) refers to stm32f1xx_hal_uart.o(.text.HAL_UART_AbortCpltCallback) for HAL_UART_AbortCpltCallback
|
||||
stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_UART_Abort_IT) refers to stm32f1xx_hal_uart.o(.text.HAL_UART_Abort_IT) for [Anonymous Symbol]
|
||||
stm32f1xx_hal_uart.o(.text.UART_DMATxAbortCallback) refers to stm32f1xx_hal_uart.o(.text.HAL_UART_AbortCpltCallback) for HAL_UART_AbortCpltCallback
|
||||
stm32f1xx_hal_uart.o(.ARM.exidx.text.UART_DMATxAbortCallback) refers to stm32f1xx_hal_uart.o(.text.UART_DMATxAbortCallback) for [Anonymous Symbol]
|
||||
stm32f1xx_hal_uart.o(.text.UART_DMARxAbortCallback) refers to stm32f1xx_hal_uart.o(.text.HAL_UART_AbortCpltCallback) for HAL_UART_AbortCpltCallback
|
||||
stm32f1xx_hal_uart.o(.ARM.exidx.text.UART_DMARxAbortCallback) refers to stm32f1xx_hal_uart.o(.text.UART_DMARxAbortCallback) for [Anonymous Symbol]
|
||||
stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_UART_AbortCpltCallback) refers to stm32f1xx_hal_uart.o(.text.HAL_UART_AbortCpltCallback) for [Anonymous Symbol]
|
||||
stm32f1xx_hal_uart.o(.text.HAL_UART_AbortTransmit_IT) refers to stm32f1xx_hal_uart.o(.text.UART_DMATxOnlyAbortCallback) for UART_DMATxOnlyAbortCallback
|
||||
stm32f1xx_hal_uart.o(.text.HAL_UART_AbortTransmit_IT) refers to stm32f1xx_hal_dma.o(.text.HAL_DMA_Abort_IT) for HAL_DMA_Abort_IT
|
||||
stm32f1xx_hal_uart.o(.text.HAL_UART_AbortTransmit_IT) refers to stm32f1xx_hal_uart.o(.text.HAL_UART_AbortTransmitCpltCallback) for HAL_UART_AbortTransmitCpltCallback
|
||||
stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_UART_AbortTransmit_IT) refers to stm32f1xx_hal_uart.o(.text.HAL_UART_AbortTransmit_IT) for [Anonymous Symbol]
|
||||
stm32f1xx_hal_uart.o(.text.UART_DMATxOnlyAbortCallback) refers to stm32f1xx_hal_uart.o(.text.HAL_UART_AbortTransmitCpltCallback) for HAL_UART_AbortTransmitCpltCallback
|
||||
stm32f1xx_hal_uart.o(.ARM.exidx.text.UART_DMATxOnlyAbortCallback) refers to stm32f1xx_hal_uart.o(.text.UART_DMATxOnlyAbortCallback) for [Anonymous Symbol]
|
||||
stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_UART_AbortTransmitCpltCallback) refers to stm32f1xx_hal_uart.o(.text.HAL_UART_AbortTransmitCpltCallback) for [Anonymous Symbol]
|
||||
stm32f1xx_hal_uart.o(.text.HAL_UART_AbortReceive_IT) refers to stm32f1xx_hal_uart.o(.text.UART_DMARxOnlyAbortCallback) for UART_DMARxOnlyAbortCallback
|
||||
stm32f1xx_hal_uart.o(.text.HAL_UART_AbortReceive_IT) refers to stm32f1xx_hal_dma.o(.text.HAL_DMA_Abort_IT) for HAL_DMA_Abort_IT
|
||||
stm32f1xx_hal_uart.o(.text.HAL_UART_AbortReceive_IT) refers to stm32f1xx_hal_uart.o(.text.HAL_UART_AbortReceiveCpltCallback) for HAL_UART_AbortReceiveCpltCallback
|
||||
stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_UART_AbortReceive_IT) refers to stm32f1xx_hal_uart.o(.text.HAL_UART_AbortReceive_IT) for [Anonymous Symbol]
|
||||
stm32f1xx_hal_uart.o(.text.UART_DMARxOnlyAbortCallback) refers to stm32f1xx_hal_uart.o(.text.HAL_UART_AbortReceiveCpltCallback) for HAL_UART_AbortReceiveCpltCallback
|
||||
stm32f1xx_hal_uart.o(.ARM.exidx.text.UART_DMARxOnlyAbortCallback) refers to stm32f1xx_hal_uart.o(.text.UART_DMARxOnlyAbortCallback) for [Anonymous Symbol]
|
||||
stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_UART_AbortReceiveCpltCallback) refers to stm32f1xx_hal_uart.o(.text.HAL_UART_AbortReceiveCpltCallback) for [Anonymous Symbol]
|
||||
stm32f1xx_hal_uart.o(.text.HAL_UART_IRQHandler) refers to stm32f1xx_hal_uart.o(.text.UART_Receive_IT) for UART_Receive_IT
|
||||
stm32f1xx_hal_uart.o(.text.HAL_UART_IRQHandler) refers to stm32f1xx_hal_uart.o(.text.UART_EndRxTransfer) for UART_EndRxTransfer
|
||||
stm32f1xx_hal_uart.o(.text.HAL_UART_IRQHandler) refers to stm32f1xx_hal_uart.o(.text.UART_DMAAbortOnError) for UART_DMAAbortOnError
|
||||
stm32f1xx_hal_uart.o(.text.HAL_UART_IRQHandler) refers to stm32f1xx_hal_dma.o(.text.HAL_DMA_Abort_IT) for HAL_DMA_Abort_IT
|
||||
stm32f1xx_hal_uart.o(.text.HAL_UART_IRQHandler) refers to stm32f1xx_hal_uart.o(.text.HAL_UART_ErrorCallback) for HAL_UART_ErrorCallback
|
||||
stm32f1xx_hal_uart.o(.text.HAL_UART_IRQHandler) refers to stm32f1xx_hal_dma.o(.text.HAL_DMA_Abort) for HAL_DMA_Abort
|
||||
stm32f1xx_hal_uart.o(.text.HAL_UART_IRQHandler) refers to stm32f1xx_hal_uart.o(.text.HAL_UARTEx_RxEventCallback) for HAL_UARTEx_RxEventCallback
|
||||
stm32f1xx_hal_uart.o(.text.HAL_UART_IRQHandler) refers to stm32f1xx_hal_uart.o(.text.UART_Transmit_IT) for UART_Transmit_IT
|
||||
stm32f1xx_hal_uart.o(.text.HAL_UART_IRQHandler) refers to stm32f1xx_hal_uart.o(.text.UART_EndTransmit_IT) for UART_EndTransmit_IT
|
||||
stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_UART_IRQHandler) refers to stm32f1xx_hal_uart.o(.text.HAL_UART_IRQHandler) for [Anonymous Symbol]
|
||||
stm32f1xx_hal_uart.o(.text.UART_Receive_IT) refers to stm32f1xx_hal_uart.o(.text.HAL_UARTEx_RxEventCallback) for HAL_UARTEx_RxEventCallback
|
||||
stm32f1xx_hal_uart.o(.text.UART_Receive_IT) refers to stm32f1xx_hal_uart.o(.text.HAL_UART_RxCpltCallback) for HAL_UART_RxCpltCallback
|
||||
stm32f1xx_hal_uart.o(.ARM.exidx.text.UART_Receive_IT) refers to stm32f1xx_hal_uart.o(.text.UART_Receive_IT) for [Anonymous Symbol]
|
||||
stm32f1xx_hal_uart.o(.text.UART_DMAAbortOnError) refers to stm32f1xx_hal_uart.o(.text.HAL_UART_ErrorCallback) for HAL_UART_ErrorCallback
|
||||
stm32f1xx_hal_uart.o(.ARM.exidx.text.UART_DMAAbortOnError) refers to stm32f1xx_hal_uart.o(.text.UART_DMAAbortOnError) for [Anonymous Symbol]
|
||||
stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_UART_ErrorCallback) refers to stm32f1xx_hal_uart.o(.text.HAL_UART_ErrorCallback) for [Anonymous Symbol]
|
||||
stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_UARTEx_RxEventCallback) refers to stm32f1xx_hal_uart.o(.text.HAL_UARTEx_RxEventCallback) for [Anonymous Symbol]
|
||||
stm32f1xx_hal_uart.o(.ARM.exidx.text.UART_Transmit_IT) refers to stm32f1xx_hal_uart.o(.text.UART_Transmit_IT) for [Anonymous Symbol]
|
||||
stm32f1xx_hal_uart.o(.text.UART_EndTransmit_IT) refers to stm32f1xx_hal_uart.o(.text.HAL_UART_TxCpltCallback) for HAL_UART_TxCpltCallback
|
||||
stm32f1xx_hal_uart.o(.ARM.exidx.text.UART_EndTransmit_IT) refers to stm32f1xx_hal_uart.o(.text.UART_EndTransmit_IT) for [Anonymous Symbol]
|
||||
stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_UART_TxCpltCallback) refers to stm32f1xx_hal_uart.o(.text.HAL_UART_TxCpltCallback) for [Anonymous Symbol]
|
||||
stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_UART_TxHalfCpltCallback) refers to stm32f1xx_hal_uart.o(.text.HAL_UART_TxHalfCpltCallback) for [Anonymous Symbol]
|
||||
stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_UART_RxCpltCallback) refers to stm32f1xx_hal_uart.o(.text.HAL_UART_RxCpltCallback) for [Anonymous Symbol]
|
||||
stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_UART_RxHalfCpltCallback) refers to stm32f1xx_hal_uart.o(.text.HAL_UART_RxHalfCpltCallback) for [Anonymous Symbol]
|
||||
stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_LIN_SendBreak) refers to stm32f1xx_hal_uart.o(.text.HAL_LIN_SendBreak) for [Anonymous Symbol]
|
||||
stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_MultiProcessor_EnterMuteMode) refers to stm32f1xx_hal_uart.o(.text.HAL_MultiProcessor_EnterMuteMode) for [Anonymous Symbol]
|
||||
stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_MultiProcessor_ExitMuteMode) refers to stm32f1xx_hal_uart.o(.text.HAL_MultiProcessor_ExitMuteMode) for [Anonymous Symbol]
|
||||
stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_HalfDuplex_EnableTransmitter) refers to stm32f1xx_hal_uart.o(.text.HAL_HalfDuplex_EnableTransmitter) for [Anonymous Symbol]
|
||||
stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_HalfDuplex_EnableReceiver) refers to stm32f1xx_hal_uart.o(.text.HAL_HalfDuplex_EnableReceiver) for [Anonymous Symbol]
|
||||
stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_UART_GetState) refers to stm32f1xx_hal_uart.o(.text.HAL_UART_GetState) for [Anonymous Symbol]
|
||||
stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_UART_GetError) refers to stm32f1xx_hal_uart.o(.text.HAL_UART_GetError) for [Anonymous Symbol]
|
||||
stm32f1xx_hal_uart.o(.text.UART_DMAReceiveCplt) refers to stm32f1xx_hal_uart.o(.text.HAL_UARTEx_RxEventCallback) for HAL_UARTEx_RxEventCallback
|
||||
stm32f1xx_hal_uart.o(.text.UART_DMAReceiveCplt) refers to stm32f1xx_hal_uart.o(.text.HAL_UART_RxCpltCallback) for HAL_UART_RxCpltCallback
|
||||
stm32f1xx_hal_uart.o(.ARM.exidx.text.UART_DMAReceiveCplt) refers to stm32f1xx_hal_uart.o(.text.UART_DMAReceiveCplt) for [Anonymous Symbol]
|
||||
stm32f1xx_hal_uart.o(.text.UART_DMARxHalfCplt) refers to stm32f1xx_hal_uart.o(.text.HAL_UARTEx_RxEventCallback) for HAL_UARTEx_RxEventCallback
|
||||
stm32f1xx_hal_uart.o(.text.UART_DMARxHalfCplt) refers to stm32f1xx_hal_uart.o(.text.HAL_UART_RxHalfCpltCallback) for HAL_UART_RxHalfCpltCallback
|
||||
stm32f1xx_hal_uart.o(.ARM.exidx.text.UART_DMARxHalfCplt) refers to stm32f1xx_hal_uart.o(.text.UART_DMARxHalfCplt) for [Anonymous Symbol]
|
||||
system_stm32f1xx.o(.ARM.exidx.text.SystemInit) refers to system_stm32f1xx.o(.text.SystemInit) for [Anonymous Symbol]
|
||||
system_stm32f1xx.o(.text.SystemCoreClockUpdate) refers to system_stm32f1xx.o(.data.SystemCoreClock) for SystemCoreClock
|
||||
system_stm32f1xx.o(.text.SystemCoreClockUpdate) refers to system_stm32f1xx.o(.rodata.AHBPrescTable) for AHBPrescTable
|
||||
@@ -717,6 +876,117 @@ Section Cross References
|
||||
canform.o(.text.form_CAN_bitstream_full) refers to canform.o(.bss.can_bits_len) for can_bits_len
|
||||
canform.o(.text.form_CAN_bitstream_full) refers to canform.o(.text.apply_bit_stuffing_with_error) for apply_bit_stuffing_with_error
|
||||
canform.o(.ARM.exidx.text.form_CAN_bitstream_full) refers to canform.o(.text.form_CAN_bitstream_full) for [Anonymous Symbol]
|
||||
crc_algs.o(.text.crc32) refers to crc_algs.o(.rodata.crc32.crc32_table) for crc32.crc32_table
|
||||
crc_algs.o(.ARM.exidx.text.crc32) refers to crc_algs.o(.text.crc32) for [Anonymous Symbol]
|
||||
crc_algs.o(.text.crc16) refers to crc_algs.o(.data.uchCRCHi) for uchCRCHi
|
||||
crc_algs.o(.text.crc16) refers to crc_algs.o(.data.uchCRCLo) for uchCRCLo
|
||||
crc_algs.o(.text.crc16) refers to crc_algs.o(.bss.uIndex) for uIndex
|
||||
crc_algs.o(.text.crc16) refers to crc_algs.o(.data.crc16.auchCRCHi) for crc16.auchCRCHi
|
||||
crc_algs.o(.text.crc16) refers to crc_algs.o(.data.crc16.auchCRCLo) for crc16.auchCRCLo
|
||||
crc_algs.o(.ARM.exidx.text.crc16) refers to crc_algs.o(.text.crc16) for [Anonymous Symbol]
|
||||
modbus.o(.text.MODBUS_FirstInit) refers to modbus.o(.text.MB_DevoceInentificationInit) for MB_DevoceInentificationInit
|
||||
modbus.o(.text.MODBUS_FirstInit) refers to modbus.o(.bss.hmodbus1) for hmodbus1
|
||||
modbus.o(.text.MODBUS_FirstInit) refers to usart.o(.bss.huart1) for huart1
|
||||
modbus.o(.text.MODBUS_FirstInit) refers to tim.o(.bss.htim3) for htim3
|
||||
modbus.o(.text.MODBUS_FirstInit) refers to rs_message.o(.text.RS_Init) for RS_Init
|
||||
modbus.o(.ARM.exidx.text.MODBUS_FirstInit) refers to modbus.o(.text.MODBUS_FirstInit) for [Anonymous Symbol]
|
||||
modbus.o(.text.MB_DevoceInentificationInit) refers to modbus.o(.bss.MB_INFO) for MB_INFO
|
||||
modbus.o(.text.MB_DevoceInentificationInit) refers to modbus.o(.rodata.str1.1) for .L.str
|
||||
modbus.o(.ARM.exidx.text.MB_DevoceInentificationInit) refers to modbus.o(.text.MB_DevoceInentificationInit) for [Anonymous Symbol]
|
||||
modbus.o(.text.MB_Write_Coil_Global) refers to modbus.o(.text.MB_DefineCoilsAddress) for MB_DefineCoilsAddress
|
||||
modbus.o(.ARM.exidx.text.MB_Write_Coil_Global) refers to modbus.o(.text.MB_Write_Coil_Global) for [Anonymous Symbol]
|
||||
modbus.o(.text.MB_DefineCoilsAddress) refers to modbus.o(.text.MB_Check_Address_For_Arr) for MB_Check_Address_For_Arr
|
||||
modbus.o(.text.MB_DefineCoilsAddress) refers to modbus.o(.bss.MB_DATA) for MB_DATA
|
||||
modbus.o(.ARM.exidx.text.MB_DefineCoilsAddress) refers to modbus.o(.text.MB_DefineCoilsAddress) for [Anonymous Symbol]
|
||||
modbus.o(.text.MB_Read_Coil_Global) refers to modbus.o(.text.MB_DefineCoilsAddress) for MB_DefineCoilsAddress
|
||||
modbus.o(.ARM.exidx.text.MB_Read_Coil_Global) refers to modbus.o(.text.MB_Read_Coil_Global) for [Anonymous Symbol]
|
||||
modbus.o(.ARM.exidx.text.MB_Check_Address_For_Arr) refers to modbus.o(.text.MB_Check_Address_For_Arr) for [Anonymous Symbol]
|
||||
modbus.o(.text.MB_DefineRegistersAddress) refers to modbus.o(.text.MB_Check_Address_For_Arr) for MB_Check_Address_For_Arr
|
||||
modbus.o(.text.MB_DefineRegistersAddress) refers to modbus.o(.bss.MB_DATA) for MB_DATA
|
||||
modbus.o(.ARM.exidx.text.MB_DefineRegistersAddress) refers to modbus.o(.text.MB_DefineRegistersAddress) for [Anonymous Symbol]
|
||||
modbus.o(.text.MB_Read_Coils) refers to modbus.o(.text.MB_DefineCoilsAddress) for MB_DefineCoilsAddress
|
||||
modbus.o(.ARM.exidx.text.MB_Read_Coils) refers to modbus.o(.text.MB_Read_Coils) for [Anonymous Symbol]
|
||||
modbus.o(.text.MB_Read_Hold_Regs) refers to modbus.o(.text.MB_DefineRegistersAddress) for MB_DefineRegistersAddress
|
||||
modbus.o(.ARM.exidx.text.MB_Read_Hold_Regs) refers to modbus.o(.text.MB_Read_Hold_Regs) for [Anonymous Symbol]
|
||||
modbus.o(.text.MB_Read_Input_Regs) refers to modbus.o(.text.MB_DefineRegistersAddress) for MB_DefineRegistersAddress
|
||||
modbus.o(.ARM.exidx.text.MB_Read_Input_Regs) refers to modbus.o(.text.MB_Read_Input_Regs) for [Anonymous Symbol]
|
||||
modbus.o(.text.MB_Write_Single_Coil) refers to modbus.o(.text.MB_DefineCoilsAddress) for MB_DefineCoilsAddress
|
||||
modbus.o(.ARM.exidx.text.MB_Write_Single_Coil) refers to modbus.o(.text.MB_Write_Single_Coil) for [Anonymous Symbol]
|
||||
modbus.o(.text.MB_Write_Single_Reg) refers to modbus.o(.text.MB_DefineRegistersAddress) for MB_DefineRegistersAddress
|
||||
modbus.o(.ARM.exidx.text.MB_Write_Single_Reg) refers to modbus.o(.text.MB_Write_Single_Reg) for [Anonymous Symbol]
|
||||
modbus.o(.text.MB_Write_Miltuple_Coils) refers to modbus.o(.text.MB_DefineCoilsAddress) for MB_DefineCoilsAddress
|
||||
modbus.o(.ARM.exidx.text.MB_Write_Miltuple_Coils) refers to modbus.o(.text.MB_Write_Miltuple_Coils) for [Anonymous Symbol]
|
||||
modbus.o(.text.MB_Write_Miltuple_Regs) refers to modbus.o(.text.MB_DefineRegistersAddress) for MB_DefineRegistersAddress
|
||||
modbus.o(.ARM.exidx.text.MB_Write_Miltuple_Regs) refers to modbus.o(.text.MB_Write_Miltuple_Regs) for [Anonymous Symbol]
|
||||
modbus.o(.ARM.exidx.text.MB_WriteObjectToMessage) refers to modbus.o(.text.MB_WriteObjectToMessage) for [Anonymous Symbol]
|
||||
modbus.o(.text.MB_Read_Device_Identification) refers to modbus.o(.bss.MB_INFO) for MB_INFO
|
||||
modbus.o(.text.MB_Read_Device_Identification) refers to modbus.o(.text.MB_WriteObjectToMessage) for MB_WriteObjectToMessage
|
||||
modbus.o(.ARM.exidx.text.MB_Read_Device_Identification) refers to modbus.o(.text.MB_Read_Device_Identification) for [Anonymous Symbol]
|
||||
modbus.o(.text.RS_Response) refers to modbus.o(.text.MB_Read_Coils) for MB_Read_Coils
|
||||
modbus.o(.text.RS_Response) refers to modbus.o(.text.MB_Read_Hold_Regs) for MB_Read_Hold_Regs
|
||||
modbus.o(.text.RS_Response) refers to modbus.o(.text.MB_Read_Input_Regs) for MB_Read_Input_Regs
|
||||
modbus.o(.text.RS_Response) refers to modbus.o(.text.MB_Write_Single_Coil) for MB_Write_Single_Coil
|
||||
modbus.o(.text.RS_Response) refers to modbus.o(.text.MB_Write_Single_Reg) for MB_Write_Single_Reg
|
||||
modbus.o(.text.RS_Response) refers to modbus.o(.text.MB_Write_Miltuple_Coils) for MB_Write_Miltuple_Coils
|
||||
modbus.o(.text.RS_Response) refers to modbus.o(.text.MB_Write_Miltuple_Regs) for MB_Write_Miltuple_Regs
|
||||
modbus.o(.text.RS_Response) refers to modbus.o(.text.MB_Read_Device_Identification) for MB_Read_Device_Identification
|
||||
modbus.o(.text.RS_Response) refers to rs_message.o(.text.RS_Abort) for RS_Abort
|
||||
modbus.o(.text.RS_Response) refers to rs_message.o(.text.RS_Handle_Transmit_Start) for RS_Handle_Transmit_Start
|
||||
modbus.o(.ARM.exidx.text.RS_Response) refers to modbus.o(.text.RS_Response) for [Anonymous Symbol]
|
||||
modbus.o(.text.RS_Collect_Message) refers to crc_algs.o(.text.crc16) for crc16
|
||||
modbus.o(.ARM.exidx.text.RS_Collect_Message) refers to modbus.o(.text.RS_Collect_Message) for [Anonymous Symbol]
|
||||
modbus.o(.text.RS_Parse_Message) refers to crc_algs.o(.text.crc16) for crc16
|
||||
modbus.o(.ARM.exidx.text.RS_Parse_Message) refers to modbus.o(.text.RS_Parse_Message) for [Anonymous Symbol]
|
||||
modbus.o(.text.RS_Define_Size_of_RX_Message) refers to modbus.o(.text.RS_Parse_Message) for RS_Parse_Message
|
||||
modbus.o(.ARM.exidx.text.RS_Define_Size_of_RX_Message) refers to modbus.o(.text.RS_Define_Size_of_RX_Message) for [Anonymous Symbol]
|
||||
rs_message.o(.text.RS_Receive_IT) refers to stm32f1xx_hal_uart.o(.text.HAL_UART_Receive_IT) for HAL_UART_Receive_IT
|
||||
rs_message.o(.text.RS_Receive_IT) refers to rs_message.o(.text.RS_Abort) for RS_Abort
|
||||
rs_message.o(.ARM.exidx.text.RS_Receive_IT) refers to rs_message.o(.text.RS_Receive_IT) for [Anonymous Symbol]
|
||||
rs_message.o(.text.RS_Abort) refers to stm32f1xx_hal_tim.o(.text.HAL_TIM_Base_Stop_IT) for HAL_TIM_Base_Stop_IT
|
||||
rs_message.o(.text.RS_Abort) refers to stm32f1xx_hal_uart.o(.text.HAL_UART_AbortReceive) for HAL_UART_AbortReceive
|
||||
rs_message.o(.text.RS_Abort) refers to stm32f1xx_hal_uart.o(.text.HAL_UART_AbortTransmit) for HAL_UART_AbortTransmit
|
||||
rs_message.o(.text.RS_Abort) refers to stm32f1xx_hal_uart.o(.text.HAL_UART_Abort) for HAL_UART_Abort
|
||||
rs_message.o(.ARM.exidx.text.RS_Abort) refers to rs_message.o(.text.RS_Abort) for [Anonymous Symbol]
|
||||
rs_message.o(.text.RS_Transmit_IT) refers to modbus.o(.text.RS_Collect_Message) for RS_Collect_Message
|
||||
rs_message.o(.text.RS_Transmit_IT) refers to rs_message.o(.text.RS_Abort) for RS_Abort
|
||||
rs_message.o(.text.RS_Transmit_IT) refers to rs_message.o(.text.RS_Handle_Receive_Start) for RS_Handle_Receive_Start
|
||||
rs_message.o(.text.RS_Transmit_IT) refers to stm32f1xx_hal_uart.o(.text.HAL_UART_Transmit_IT) for HAL_UART_Transmit_IT
|
||||
rs_message.o(.ARM.exidx.text.RS_Transmit_IT) refers to rs_message.o(.text.RS_Transmit_IT) for [Anonymous Symbol]
|
||||
rs_message.o(.ARM.exidx.text.RS_Collect_Message) refers to rs_message.o(.text.RS_Collect_Message) for [Anonymous Symbol]
|
||||
rs_message.o(.text.RS_Handle_Receive_Start) refers to rs_message.o(.text.RS_Receive_IT) for RS_Receive_IT
|
||||
rs_message.o(.ARM.exidx.text.RS_Handle_Receive_Start) refers to rs_message.o(.text.RS_Handle_Receive_Start) for [Anonymous Symbol]
|
||||
rs_message.o(.text.RS_Init) refers to rs_message.o(.bss.RS_Buffer) for RS_Buffer
|
||||
rs_message.o(.ARM.exidx.text.RS_Init) refers to rs_message.o(.text.RS_Init) for [Anonymous Symbol]
|
||||
rs_message.o(.text.RS_ReInit_UART) refers to rs_message.o(.text.RS_Abort) for RS_Abort
|
||||
rs_message.o(.text.RS_ReInit_UART) refers to usart.o(.text.HAL_UART_MspDeInit) for HAL_UART_MspDeInit
|
||||
rs_message.o(.text.RS_ReInit_UART) refers to usart.o(.text.MX_USART1_UART_Init) for MX_USART1_UART_Init
|
||||
rs_message.o(.text.RS_ReInit_UART) refers to rs_message.o(.text.RS_Receive_IT) for RS_Receive_IT
|
||||
rs_message.o(.ARM.exidx.text.RS_ReInit_UART) refers to rs_message.o(.text.RS_ReInit_UART) for [Anonymous Symbol]
|
||||
rs_message.o(.text.RS_Handle_Transmit_Start) refers to rs_message.o(.text.RS_Transmit_IT) for RS_Transmit_IT
|
||||
rs_message.o(.ARM.exidx.text.RS_Handle_Transmit_Start) refers to rs_message.o(.text.RS_Handle_Transmit_Start) for [Anonymous Symbol]
|
||||
rs_message.o(.text.RS_UART_RxCpltCallback) refers to modbus.o(.text.RS_Define_Size_of_RX_Message) for RS_Define_Size_of_RX_Message
|
||||
rs_message.o(.text.RS_UART_RxCpltCallback) refers to rs_message.o(.text.RS_Abort) for RS_Abort
|
||||
rs_message.o(.text.RS_UART_RxCpltCallback) refers to rs_message.o(.text.RS_Handle_Receive_Start) for RS_Handle_Receive_Start
|
||||
rs_message.o(.text.RS_UART_RxCpltCallback) refers to stm32f1xx_hal_tim.o(.text.HAL_TIM_Base_Stop_IT) for HAL_TIM_Base_Stop_IT
|
||||
rs_message.o(.text.RS_UART_RxCpltCallback) refers to modbus.o(.text.RS_Parse_Message) for RS_Parse_Message
|
||||
rs_message.o(.text.RS_UART_RxCpltCallback) refers to modbus.o(.text.RS_Response) for RS_Response
|
||||
rs_message.o(.text.RS_UART_RxCpltCallback) refers to stm32f1xx_hal_uart.o(.text.HAL_UART_Receive_IT) for HAL_UART_Receive_IT
|
||||
rs_message.o(.ARM.exidx.text.RS_UART_RxCpltCallback) refers to rs_message.o(.text.RS_UART_RxCpltCallback) for [Anonymous Symbol]
|
||||
rs_message.o(.ARM.exidx.text.RS_Define_Size_of_RX_Message) refers to rs_message.o(.text.RS_Define_Size_of_RX_Message) for [Anonymous Symbol]
|
||||
rs_message.o(.ARM.exidx.text.RS_Parse_Message) refers to rs_message.o(.text.RS_Parse_Message) for [Anonymous Symbol]
|
||||
rs_message.o(.ARM.exidx.text.RS_Response) refers to rs_message.o(.text.RS_Response) for [Anonymous Symbol]
|
||||
rs_message.o(.text.RS_UART_TxCpltCallback) refers to rs_message.o(.text.RS_Handle_Receive_Start) for RS_Handle_Receive_Start
|
||||
rs_message.o(.ARM.exidx.text.RS_UART_TxCpltCallback) refers to rs_message.o(.text.RS_UART_TxCpltCallback) for [Anonymous Symbol]
|
||||
rs_message.o(.text.RS_UART_Handler) refers to stm32f1xx_hal_tim.o(.text.HAL_TIM_Base_Start_IT) for HAL_TIM_Base_Start_IT
|
||||
rs_message.o(.text.RS_UART_Handler) refers to rs_message.o(.text.RS_UART_RxCpltCallback) for RS_UART_RxCpltCallback
|
||||
rs_message.o(.text.RS_UART_Handler) refers to rs_message.o(.text.RS_UART_TxCpltCallback) for RS_UART_TxCpltCallback
|
||||
rs_message.o(.text.RS_UART_Handler) refers to rs_message.o(.text.RS_Abort) for RS_Abort
|
||||
rs_message.o(.text.RS_UART_Handler) refers to rs_message.o(.text.RS_Handle_Receive_Start) for RS_Handle_Receive_Start
|
||||
rs_message.o(.ARM.exidx.text.RS_UART_Handler) refers to rs_message.o(.text.RS_UART_Handler) for [Anonymous Symbol]
|
||||
rs_message.o(.text.RS_TIM_Handler) refers to stm32f1xx_hal_tim.o(.text.HAL_TIM_Base_Stop_IT) for HAL_TIM_Base_Stop_IT
|
||||
rs_message.o(.text.RS_TIM_Handler) refers to rs_message.o(.text.RS_Abort) for RS_Abort
|
||||
rs_message.o(.text.RS_TIM_Handler) refers to rs_message.o(.text.RS_Handle_Receive_Start) for RS_Handle_Receive_Start
|
||||
rs_message.o(.ARM.exidx.text.RS_TIM_Handler) refers to rs_message.o(.text.RS_TIM_Handler) for [Anonymous Symbol]
|
||||
__main.o(!!!main) refers to __rtentry.o(.ARM.Collect$$rtentry$$00000000) for __rt_entry
|
||||
__rtentry.o(.ARM.Collect$$rtentry$$00000000) refers (Special) to __rtentry2.o(.ARM.Collect$$rtentry$$0000000A) for __rt_entry_li
|
||||
__rtentry.o(.ARM.Collect$$rtentry$$00000000) refers (Special) to __rtentry2.o(.ARM.Collect$$rtentry$$0000000D) for __rt_entry_main
|
||||
@@ -837,9 +1107,15 @@ Removing Unused input sections from the image.
|
||||
Removing gpio.o(.ARM.exidx.text.MX_GPIO_Init), (8 bytes).
|
||||
Removing tim.o(.text), (0 bytes).
|
||||
Removing tim.o(.ARM.exidx.text.MX_TIM2_Init), (8 bytes).
|
||||
Removing tim.o(.ARM.exidx.text.MX_TIM3_Init), (8 bytes).
|
||||
Removing tim.o(.ARM.exidx.text.HAL_TIM_Base_MspInit), (8 bytes).
|
||||
Removing tim.o(.text.HAL_TIM_Base_MspDeInit), (38 bytes).
|
||||
Removing tim.o(.text.HAL_TIM_Base_MspDeInit), (76 bytes).
|
||||
Removing tim.o(.ARM.exidx.text.HAL_TIM_Base_MspDeInit), (8 bytes).
|
||||
Removing usart.o(.text), (0 bytes).
|
||||
Removing usart.o(.ARM.exidx.text.MX_USART1_UART_Init), (8 bytes).
|
||||
Removing usart.o(.ARM.exidx.text.HAL_UART_MspInit), (8 bytes).
|
||||
Removing usart.o(.text.HAL_UART_MspDeInit), (62 bytes).
|
||||
Removing usart.o(.ARM.exidx.text.HAL_UART_MspDeInit), (8 bytes).
|
||||
Removing stm32f1xx_it.o(.text), (0 bytes).
|
||||
Removing stm32f1xx_it.o(.ARM.exidx.text.NMI_Handler), (8 bytes).
|
||||
Removing stm32f1xx_it.o(.ARM.exidx.text.HardFault_Handler), (8 bytes).
|
||||
@@ -874,7 +1150,6 @@ Removing Unused input sections from the image.
|
||||
Removing stm32f1xx_hal_tim.o(.ARM.exidx.text.HAL_TIM_Base_Stop), (8 bytes).
|
||||
Removing stm32f1xx_hal_tim.o(.text.HAL_TIM_Base_Start_IT), (176 bytes).
|
||||
Removing stm32f1xx_hal_tim.o(.ARM.exidx.text.HAL_TIM_Base_Start_IT), (8 bytes).
|
||||
Removing stm32f1xx_hal_tim.o(.text.HAL_TIM_Base_Stop_IT), (82 bytes).
|
||||
Removing stm32f1xx_hal_tim.o(.ARM.exidx.text.HAL_TIM_Base_Stop_IT), (8 bytes).
|
||||
Removing stm32f1xx_hal_tim.o(.text.HAL_TIM_Base_Start_DMA), (304 bytes).
|
||||
Removing stm32f1xx_hal_tim.o(.ARM.exidx.text.HAL_TIM_Base_Start_DMA), (8 bytes).
|
||||
@@ -1234,11 +1509,8 @@ Removing Unused input sections from the image.
|
||||
Removing stm32f1xx_hal_rcc.o(.ARM.exidx.text.HAL_RCC_EnableCSS), (8 bytes).
|
||||
Removing stm32f1xx_hal_rcc.o(.text.HAL_RCC_DisableCSS), (12 bytes).
|
||||
Removing stm32f1xx_hal_rcc.o(.ARM.exidx.text.HAL_RCC_DisableCSS), (8 bytes).
|
||||
Removing stm32f1xx_hal_rcc.o(.text.HAL_RCC_GetHCLKFreq), (12 bytes).
|
||||
Removing stm32f1xx_hal_rcc.o(.ARM.exidx.text.HAL_RCC_GetHCLKFreq), (8 bytes).
|
||||
Removing stm32f1xx_hal_rcc.o(.text.HAL_RCC_GetPCLK1Freq), (34 bytes).
|
||||
Removing stm32f1xx_hal_rcc.o(.ARM.exidx.text.HAL_RCC_GetPCLK1Freq), (8 bytes).
|
||||
Removing stm32f1xx_hal_rcc.o(.text.HAL_RCC_GetPCLK2Freq), (34 bytes).
|
||||
Removing stm32f1xx_hal_rcc.o(.ARM.exidx.text.HAL_RCC_GetPCLK2Freq), (8 bytes).
|
||||
Removing stm32f1xx_hal_rcc.o(.text.HAL_RCC_GetOscConfig), (302 bytes).
|
||||
Removing stm32f1xx_hal_rcc.o(.ARM.exidx.text.HAL_RCC_GetOscConfig), (8 bytes).
|
||||
@@ -1283,7 +1555,6 @@ Removing Unused input sections from the image.
|
||||
Removing stm32f1xx_hal_dma.o(.ARM.exidx.text.DMA_SetConfig), (8 bytes).
|
||||
Removing stm32f1xx_hal_dma.o(.text.HAL_DMA_Start_IT), (202 bytes).
|
||||
Removing stm32f1xx_hal_dma.o(.ARM.exidx.text.HAL_DMA_Start_IT), (8 bytes).
|
||||
Removing stm32f1xx_hal_dma.o(.text.HAL_DMA_Abort), (124 bytes).
|
||||
Removing stm32f1xx_hal_dma.o(.ARM.exidx.text.HAL_DMA_Abort), (8 bytes).
|
||||
Removing stm32f1xx_hal_dma.o(.text.HAL_DMA_Abort_IT), (284 bytes).
|
||||
Removing stm32f1xx_hal_dma.o(.ARM.exidx.text.HAL_DMA_Abort_IT), (8 bytes).
|
||||
@@ -1297,7 +1568,6 @@ Removing Unused input sections from the image.
|
||||
Removing stm32f1xx_hal_dma.o(.ARM.exidx.text.HAL_DMA_UnRegisterCallback), (8 bytes).
|
||||
Removing stm32f1xx_hal_dma.o(.text.HAL_DMA_GetState), (14 bytes).
|
||||
Removing stm32f1xx_hal_dma.o(.ARM.exidx.text.HAL_DMA_GetState), (8 bytes).
|
||||
Removing stm32f1xx_hal_dma.o(.text.HAL_DMA_GetError), (12 bytes).
|
||||
Removing stm32f1xx_hal_dma.o(.ARM.exidx.text.HAL_DMA_GetError), (8 bytes).
|
||||
Removing stm32f1xx_hal_cortex.o(.text), (0 bytes).
|
||||
Removing stm32f1xx_hal_cortex.o(.ARM.exidx.text.HAL_NVIC_SetPriorityGrouping), (8 bytes).
|
||||
@@ -1469,11 +1739,128 @@ Removing Unused input sections from the image.
|
||||
Removing stm32f1xx_hal_exti.o(.ARM.exidx.text.HAL_EXTI_ClearPending), (8 bytes).
|
||||
Removing stm32f1xx_hal_exti.o(.text.HAL_EXTI_GenerateSWI), (34 bytes).
|
||||
Removing stm32f1xx_hal_exti.o(.ARM.exidx.text.HAL_EXTI_GenerateSWI), (8 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.text), (0 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_UART_Init), (8 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.text.HAL_UART_MspInit), (8 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_UART_MspInit), (8 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.ARM.exidx.text.UART_SetConfig), (8 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.text.HAL_HalfDuplex_Init), (158 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_HalfDuplex_Init), (8 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.text.HAL_LIN_Init), (184 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_LIN_Init), (8 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.text.HAL_MultiProcessor_Init), (202 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_MultiProcessor_Init), (8 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.text.HAL_UART_DeInit), (100 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_UART_DeInit), (8 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.text.HAL_UART_MspDeInit), (8 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_UART_MspDeInit), (8 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.text.HAL_UART_Transmit), (304 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_UART_Transmit), (8 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.text.UART_WaitOnFlagUntilTimeout), (218 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.ARM.exidx.text.UART_WaitOnFlagUntilTimeout), (8 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.text.HAL_UART_Receive), (318 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_UART_Receive), (8 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.text.HAL_UART_Transmit_IT), (114 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_UART_Transmit_IT), (8 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_UART_Receive_IT), (8 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.ARM.exidx.text.UART_Start_Receive_IT), (8 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.text.HAL_UART_Transmit_DMA), (226 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_UART_Transmit_DMA), (8 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.text.UART_DMATransmitCplt), (122 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.ARM.exidx.text.UART_DMATransmitCplt), (8 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.text.UART_DMATxHalfCplt), (22 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.ARM.exidx.text.UART_DMATxHalfCplt), (8 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.text.UART_DMAError), (124 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.ARM.exidx.text.UART_DMAError), (8 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.text.HAL_UART_Receive_DMA), (86 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_UART_Receive_DMA), (8 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.text.UART_Start_Receive_DMA), (268 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.ARM.exidx.text.UART_Start_Receive_DMA), (8 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.text.HAL_UART_DMAPause), (230 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_UART_DMAPause), (8 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.text.HAL_UART_DMAResume), (226 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_UART_DMAResume), (8 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.text.HAL_UART_DMAStop), (204 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_UART_DMAStop), (8 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.text.UART_EndTxTransfer), (54 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.ARM.exidx.text.UART_EndTxTransfer), (8 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.text.UART_EndRxTransfer), (148 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.ARM.exidx.text.UART_EndRxTransfer), (8 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.text.HAL_UARTEx_ReceiveToIdle), (448 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_UARTEx_ReceiveToIdle), (8 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.text.HAL_UARTEx_ReceiveToIdle_IT), (194 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_UARTEx_ReceiveToIdle_IT), (8 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.text.HAL_UARTEx_ReceiveToIdle_DMA), (184 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_UARTEx_ReceiveToIdle_DMA), (8 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.text.HAL_UARTEx_GetRxEventType), (12 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_UARTEx_GetRxEventType), (8 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_UART_Abort), (8 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_UART_AbortTransmit), (8 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_UART_AbortReceive), (8 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.text.HAL_UART_Abort_IT), (478 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_UART_Abort_IT), (8 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.text.UART_DMATxAbortCallback), (86 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.ARM.exidx.text.UART_DMATxAbortCallback), (8 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.text.UART_DMARxAbortCallback), (86 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.ARM.exidx.text.UART_DMARxAbortCallback), (8 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.text.HAL_UART_AbortCpltCallback), (8 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_UART_AbortCpltCallback), (8 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.text.HAL_UART_AbortTransmit_IT), (194 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_UART_AbortTransmit_IT), (8 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.text.UART_DMATxOnlyAbortCallback), (36 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.ARM.exidx.text.UART_DMATxOnlyAbortCallback), (8 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.text.HAL_UART_AbortTransmitCpltCallback), (8 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_UART_AbortTransmitCpltCallback), (8 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.text.HAL_UART_AbortReceive_IT), (290 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_UART_AbortReceive_IT), (8 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.text.UART_DMARxOnlyAbortCallback), (40 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.ARM.exidx.text.UART_DMARxOnlyAbortCallback), (8 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.text.HAL_UART_AbortReceiveCpltCallback), (8 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_UART_AbortReceiveCpltCallback), (8 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.text.HAL_UART_IRQHandler), (1066 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_UART_IRQHandler), (8 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.text.UART_Receive_IT), (362 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.ARM.exidx.text.UART_Receive_IT), (8 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.text.UART_DMAAbortOnError), (32 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.ARM.exidx.text.UART_DMAAbortOnError), (8 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.text.HAL_UART_ErrorCallback), (8 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_UART_ErrorCallback), (8 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.text.HAL_UARTEx_RxEventCallback), (12 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_UARTEx_RxEventCallback), (8 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.text.UART_Transmit_IT), (148 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.ARM.exidx.text.UART_Transmit_IT), (8 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.text.UART_EndTransmit_IT), (38 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.ARM.exidx.text.UART_EndTransmit_IT), (8 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.text.HAL_UART_TxCpltCallback), (8 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_UART_TxCpltCallback), (8 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.text.HAL_UART_TxHalfCpltCallback), (8 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_UART_TxHalfCpltCallback), (8 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.text.HAL_UART_RxCpltCallback), (8 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_UART_RxCpltCallback), (8 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.text.HAL_UART_RxHalfCpltCallback), (8 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_UART_RxHalfCpltCallback), (8 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.text.HAL_LIN_SendBreak), (120 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_LIN_SendBreak), (8 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.text.HAL_MultiProcessor_EnterMuteMode), (126 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_MultiProcessor_EnterMuteMode), (8 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.text.HAL_MultiProcessor_ExitMuteMode), (126 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_MultiProcessor_ExitMuteMode), (8 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.text.HAL_HalfDuplex_EnableTransmitter), (118 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_HalfDuplex_EnableTransmitter), (8 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.text.HAL_HalfDuplex_EnableReceiver), (118 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_HalfDuplex_EnableReceiver), (8 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.text.HAL_UART_GetState), (40 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_UART_GetState), (8 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.text.HAL_UART_GetError), (12 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.ARM.exidx.text.HAL_UART_GetError), (8 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.text.UART_DMAReceiveCplt), (244 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.ARM.exidx.text.UART_DMAReceiveCplt), (8 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.text.UART_DMARxHalfCplt), (52 bytes).
|
||||
Removing stm32f1xx_hal_uart.o(.ARM.exidx.text.UART_DMARxHalfCplt), (8 bytes).
|
||||
Removing system_stm32f1xx.o(.text), (0 bytes).
|
||||
Removing system_stm32f1xx.o(.ARM.exidx.text.SystemInit), (8 bytes).
|
||||
Removing system_stm32f1xx.o(.text.SystemCoreClockUpdate), (290 bytes).
|
||||
Removing system_stm32f1xx.o(.ARM.exidx.text.SystemCoreClockUpdate), (8 bytes).
|
||||
Removing system_stm32f1xx.o(.rodata.APBPrescTable), (8 bytes).
|
||||
Removing canemu.o(.text), (0 bytes).
|
||||
Removing canemu.o(.ARM.exidx.text.CANEmu_Init), (8 bytes).
|
||||
Removing canemu.o(.ARM.exidx.text.wait_exact_ticks), (8 bytes).
|
||||
@@ -1486,8 +1873,91 @@ Removing Unused input sections from the image.
|
||||
Removing canform.o(.ARM.exidx.text.flip_bit), (8 bytes).
|
||||
Removing canform.o(.ARM.exidx.text.form_CAN_bitstream_full), (8 bytes).
|
||||
Removing canform.o(.bss.err_indices), (128 bytes).
|
||||
Removing crc_algs.o(.text), (0 bytes).
|
||||
Removing crc_algs.o(.text.crc32), (68 bytes).
|
||||
Removing crc_algs.o(.ARM.exidx.text.crc32), (8 bytes).
|
||||
Removing crc_algs.o(.text.crc16), (148 bytes).
|
||||
Removing crc_algs.o(.ARM.exidx.text.crc16), (8 bytes).
|
||||
Removing crc_algs.o(.data.uchCRCHi), (1 bytes).
|
||||
Removing crc_algs.o(.data.uchCRCLo), (1 bytes).
|
||||
Removing crc_algs.o(.rodata.crc32.crc32_table), (1024 bytes).
|
||||
Removing crc_algs.o(.data.crc16.auchCRCHi), (256 bytes).
|
||||
Removing crc_algs.o(.data.crc16.auchCRCLo), (256 bytes).
|
||||
Removing crc_algs.o(.bss.uIndex), (4 bytes).
|
||||
Removing crc_algs.o(.bss.CRC_calc), (4 bytes).
|
||||
Removing crc_algs.o(.bss.CRC_ref), (4 bytes).
|
||||
Removing modbus.o(.text), (0 bytes).
|
||||
Removing modbus.o(.ARM.exidx.text.MODBUS_FirstInit), (8 bytes).
|
||||
Removing modbus.o(.ARM.exidx.text.MB_DevoceInentificationInit), (8 bytes).
|
||||
Removing modbus.o(.text.MB_Write_Coil_Global), (152 bytes).
|
||||
Removing modbus.o(.ARM.exidx.text.MB_Write_Coil_Global), (8 bytes).
|
||||
Removing modbus.o(.text.MB_DefineCoilsAddress), (130 bytes).
|
||||
Removing modbus.o(.ARM.exidx.text.MB_DefineCoilsAddress), (8 bytes).
|
||||
Removing modbus.o(.text.MB_Read_Coil_Global), (98 bytes).
|
||||
Removing modbus.o(.ARM.exidx.text.MB_Read_Coil_Global), (8 bytes).
|
||||
Removing modbus.o(.text.MB_Check_Address_For_Arr), (90 bytes).
|
||||
Removing modbus.o(.ARM.exidx.text.MB_Check_Address_For_Arr), (8 bytes).
|
||||
Removing modbus.o(.text.MB_DefineRegistersAddress), (186 bytes).
|
||||
Removing modbus.o(.ARM.exidx.text.MB_DefineRegistersAddress), (8 bytes).
|
||||
Removing modbus.o(.text.MB_Read_Coils), (342 bytes).
|
||||
Removing modbus.o(.ARM.exidx.text.MB_Read_Coils), (8 bytes).
|
||||
Removing modbus.o(.text.MB_Read_Hold_Regs), (114 bytes).
|
||||
Removing modbus.o(.ARM.exidx.text.MB_Read_Hold_Regs), (8 bytes).
|
||||
Removing modbus.o(.text.MB_Read_Input_Regs), (148 bytes).
|
||||
Removing modbus.o(.ARM.exidx.text.MB_Read_Input_Regs), (8 bytes).
|
||||
Removing modbus.o(.text.MB_Write_Single_Coil), (160 bytes).
|
||||
Removing modbus.o(.ARM.exidx.text.MB_Write_Single_Coil), (8 bytes).
|
||||
Removing modbus.o(.text.MB_Write_Single_Reg), (68 bytes).
|
||||
Removing modbus.o(.ARM.exidx.text.MB_Write_Single_Reg), (8 bytes).
|
||||
Removing modbus.o(.text.MB_Write_Miltuple_Coils), (380 bytes).
|
||||
Removing modbus.o(.ARM.exidx.text.MB_Write_Miltuple_Coils), (8 bytes).
|
||||
Removing modbus.o(.text.MB_Write_Miltuple_Regs), (136 bytes).
|
||||
Removing modbus.o(.ARM.exidx.text.MB_Write_Miltuple_Regs), (8 bytes).
|
||||
Removing modbus.o(.text.MB_WriteObjectToMessage), (88 bytes).
|
||||
Removing modbus.o(.ARM.exidx.text.MB_WriteObjectToMessage), (8 bytes).
|
||||
Removing modbus.o(.text.MB_Read_Device_Identification), (304 bytes).
|
||||
Removing modbus.o(.ARM.exidx.text.MB_Read_Device_Identification), (8 bytes).
|
||||
Removing modbus.o(.text.RS_Response), (682 bytes).
|
||||
Removing modbus.o(.ARM.exidx.text.RS_Response), (8 bytes).
|
||||
Removing modbus.o(.text.RS_Collect_Message), (478 bytes).
|
||||
Removing modbus.o(.ARM.exidx.text.RS_Collect_Message), (8 bytes).
|
||||
Removing modbus.o(.text.RS_Parse_Message), (484 bytes).
|
||||
Removing modbus.o(.ARM.exidx.text.RS_Parse_Message), (8 bytes).
|
||||
Removing modbus.o(.text.RS_Define_Size_of_RX_Message), (150 bytes).
|
||||
Removing modbus.o(.ARM.exidx.text.RS_Define_Size_of_RX_Message), (8 bytes).
|
||||
Removing modbus.o(.bss.dbg_temp), (4 bytes).
|
||||
Removing modbus.o(.bss.dbg_temp2), (4 bytes).
|
||||
Removing modbus.o(.bss.dbg_temp3), (4 bytes).
|
||||
Removing rs_message.o(.text), (0 bytes).
|
||||
Removing rs_message.o(.ARM.exidx.text.RS_Receive_IT), (8 bytes).
|
||||
Removing rs_message.o(.ARM.exidx.text.RS_Abort), (8 bytes).
|
||||
Removing rs_message.o(.text.RS_Transmit_IT), (206 bytes).
|
||||
Removing rs_message.o(.ARM.exidx.text.RS_Transmit_IT), (8 bytes).
|
||||
Removing rs_message.o(.text.RS_Collect_Message), (14 bytes).
|
||||
Removing rs_message.o(.ARM.exidx.text.RS_Collect_Message), (8 bytes).
|
||||
Removing rs_message.o(.text.RS_Handle_Receive_Start), (92 bytes).
|
||||
Removing rs_message.o(.ARM.exidx.text.RS_Handle_Receive_Start), (8 bytes).
|
||||
Removing rs_message.o(.ARM.exidx.text.RS_Init), (8 bytes).
|
||||
Removing rs_message.o(.text.RS_ReInit_UART), (56 bytes).
|
||||
Removing rs_message.o(.ARM.exidx.text.RS_ReInit_UART), (8 bytes).
|
||||
Removing rs_message.o(.text.RS_Handle_Transmit_Start), (60 bytes).
|
||||
Removing rs_message.o(.ARM.exidx.text.RS_Handle_Transmit_Start), (8 bytes).
|
||||
Removing rs_message.o(.text.RS_UART_RxCpltCallback), (474 bytes).
|
||||
Removing rs_message.o(.ARM.exidx.text.RS_UART_RxCpltCallback), (8 bytes).
|
||||
Removing rs_message.o(.text.RS_Define_Size_of_RX_Message), (12 bytes).
|
||||
Removing rs_message.o(.ARM.exidx.text.RS_Define_Size_of_RX_Message), (8 bytes).
|
||||
Removing rs_message.o(.text.RS_Parse_Message), (14 bytes).
|
||||
Removing rs_message.o(.ARM.exidx.text.RS_Parse_Message), (8 bytes).
|
||||
Removing rs_message.o(.text.RS_Response), (12 bytes).
|
||||
Removing rs_message.o(.ARM.exidx.text.RS_Response), (8 bytes).
|
||||
Removing rs_message.o(.text.RS_UART_TxCpltCallback), (80 bytes).
|
||||
Removing rs_message.o(.ARM.exidx.text.RS_UART_TxCpltCallback), (8 bytes).
|
||||
Removing rs_message.o(.text.RS_UART_Handler), (222 bytes).
|
||||
Removing rs_message.o(.ARM.exidx.text.RS_UART_Handler), (8 bytes).
|
||||
Removing rs_message.o(.text.RS_TIM_Handler), (34 bytes).
|
||||
Removing rs_message.o(.ARM.exidx.text.RS_TIM_Handler), (8 bytes).
|
||||
|
||||
658 unused section(s) (total 47162 bytes) removed from the image.
|
||||
858 unused section(s) (total 63074 bytes) removed from the image.
|
||||
|
||||
==============================================================================
|
||||
|
||||
@@ -1552,9 +2022,12 @@ Image Symbol Table
|
||||
../fplib/fpinit_empty.s 0x00000000 Number 0 fpinit_empty.o ABSOLUTE
|
||||
canEmu.c 0x00000000 Number 0 canemu.o ABSOLUTE
|
||||
canform.c 0x00000000 Number 0 canform.o ABSOLUTE
|
||||
crc_algs.c 0x00000000 Number 0 crc_algs.o ABSOLUTE
|
||||
dc.s 0x00000000 Number 0 dc.o ABSOLUTE
|
||||
gpio.c 0x00000000 Number 0 gpio.o ABSOLUTE
|
||||
main.c 0x00000000 Number 0 main.o ABSOLUTE
|
||||
modbus.c 0x00000000 Number 0 modbus.o ABSOLUTE
|
||||
rs_message.c 0x00000000 Number 0 rs_message.o ABSOLUTE
|
||||
startup_stm32f103xb.s 0x00000000 Number 0 startup_stm32f103xb.o ABSOLUTE
|
||||
stm32f1xx_hal.c 0x00000000 Number 0 stm32f1xx_hal.o ABSOLUTE
|
||||
stm32f1xx_hal_cortex.c 0x00000000 Number 0 stm32f1xx_hal_cortex.o ABSOLUTE
|
||||
@@ -1570,9 +2043,11 @@ Image Symbol Table
|
||||
stm32f1xx_hal_rcc_ex.c 0x00000000 Number 0 stm32f1xx_hal_rcc_ex.o ABSOLUTE
|
||||
stm32f1xx_hal_tim.c 0x00000000 Number 0 stm32f1xx_hal_tim.o ABSOLUTE
|
||||
stm32f1xx_hal_tim_ex.c 0x00000000 Number 0 stm32f1xx_hal_tim_ex.o ABSOLUTE
|
||||
stm32f1xx_hal_uart.c 0x00000000 Number 0 stm32f1xx_hal_uart.o ABSOLUTE
|
||||
stm32f1xx_it.c 0x00000000 Number 0 stm32f1xx_it.o ABSOLUTE
|
||||
system_stm32f1xx.c 0x00000000 Number 0 system_stm32f1xx.o ABSOLUTE
|
||||
tim.c 0x00000000 Number 0 tim.o ABSOLUTE
|
||||
usart.c 0x00000000 Number 0 usart.o ABSOLUTE
|
||||
RESET 0x08000000 Section 236 startup_stm32f103xb.o(RESET)
|
||||
!!!main 0x080000ec Section 8 __main.o(!!!main)
|
||||
!!!scatter 0x080000f4 Section 52 __scatter.o(!!!scatter)
|
||||
@@ -1634,73 +2109,100 @@ Image Symbol Table
|
||||
[Anonymous Symbol] 0x080002bc Section 0 canemu.o(.text.CANEmu_SendFrame)
|
||||
[Anonymous Symbol] 0x0800038c Section 0 stm32f1xx_it.o(.text.DebugMon_Handler)
|
||||
[Anonymous Symbol] 0x08000390 Section 0 main.o(.text.Error_Handler)
|
||||
[Anonymous Symbol] 0x080003a0 Section 0 stm32f1xx_hal.o(.text.HAL_Delay)
|
||||
[Anonymous Symbol] 0x080003e4 Section 0 stm32f1xx_hal_gpio.o(.text.HAL_GPIO_Init)
|
||||
[Anonymous Symbol] 0x08000704 Section 0 stm32f1xx_hal_gpio.o(.text.HAL_GPIO_WritePin)
|
||||
[Anonymous Symbol] 0x08000734 Section 0 stm32f1xx_hal.o(.text.HAL_GetTick)
|
||||
[Anonymous Symbol] 0x08000740 Section 0 stm32f1xx_hal.o(.text.HAL_IncTick)
|
||||
[Anonymous Symbol] 0x0800075c Section 0 stm32f1xx_hal.o(.text.HAL_Init)
|
||||
[Anonymous Symbol] 0x08000784 Section 0 stm32f1xx_hal.o(.text.HAL_InitTick)
|
||||
[Anonymous Symbol] 0x080007f4 Section 0 stm32f1xx_hal_msp.o(.text.HAL_MspInit)
|
||||
[Anonymous Symbol] 0x08000858 Section 0 stm32f1xx_hal_cortex.o(.text.HAL_NVIC_SetPriority)
|
||||
[Anonymous Symbol] 0x0800088c Section 0 stm32f1xx_hal_cortex.o(.text.HAL_NVIC_SetPriorityGrouping)
|
||||
[Anonymous Symbol] 0x0800089c Section 0 stm32f1xx_hal_rcc.o(.text.HAL_RCC_ClockConfig)
|
||||
[Anonymous Symbol] 0x08000af4 Section 0 stm32f1xx_hal_rcc.o(.text.HAL_RCC_GetSysClockFreq)
|
||||
[Anonymous Symbol] 0x08000bb0 Section 0 stm32f1xx_hal_rcc.o(.text.HAL_RCC_OscConfig)
|
||||
[Anonymous Symbol] 0x0800122c Section 0 stm32f1xx_hal_cortex.o(.text.HAL_SYSTICK_Config)
|
||||
[Anonymous Symbol] 0x0800123c Section 0 stm32f1xx_hal_tim_ex.o(.text.HAL_TIMEx_MasterConfigSynchronization)
|
||||
[Anonymous Symbol] 0x08001318 Section 0 stm32f1xx_hal_tim.o(.text.HAL_TIM_Base_Init)
|
||||
[Anonymous Symbol] 0x080013b4 Section 0 tim.o(.text.HAL_TIM_Base_MspInit)
|
||||
[Anonymous Symbol] 0x080013e8 Section 0 stm32f1xx_hal_tim.o(.text.HAL_TIM_ConfigClockSource)
|
||||
[Anonymous Symbol] 0x0800156c Section 0 stm32f1xx_it.o(.text.HardFault_Handler)
|
||||
[Anonymous Symbol] 0x08001570 Section 0 gpio.o(.text.MX_GPIO_Init)
|
||||
[Anonymous Symbol] 0x08001628 Section 0 tim.o(.text.MX_TIM2_Init)
|
||||
[Anonymous Symbol] 0x080016a8 Section 0 stm32f1xx_it.o(.text.MemManage_Handler)
|
||||
[Anonymous Symbol] 0x080016ac Section 0 stm32f1xx_it.o(.text.NMI_Handler)
|
||||
NVIC_EncodePriority 0x080016b1 Thumb Code 108 stm32f1xx_hal_cortex.o(.text.NVIC_EncodePriority)
|
||||
[Anonymous Symbol] 0x080016b0 Section 0 stm32f1xx_hal_cortex.o(.text.NVIC_EncodePriority)
|
||||
[Anonymous Symbol] 0x0800171c Section 0 stm32f1xx_it.o(.text.PendSV_Handler)
|
||||
RCC_Delay 0x08001721 Thumb Code 58 stm32f1xx_hal_rcc.o(.text.RCC_Delay)
|
||||
[Anonymous Symbol] 0x08001720 Section 0 stm32f1xx_hal_rcc.o(.text.RCC_Delay)
|
||||
[Anonymous Symbol] 0x0800175c Section 0 stm32f1xx_it.o(.text.SVC_Handler)
|
||||
SysTick_Config 0x08001761 Thumb Code 82 stm32f1xx_hal_cortex.o(.text.SysTick_Config)
|
||||
[Anonymous Symbol] 0x08001760 Section 0 stm32f1xx_hal_cortex.o(.text.SysTick_Config)
|
||||
[Anonymous Symbol] 0x080017b4 Section 0 stm32f1xx_it.o(.text.SysTick_Handler)
|
||||
[Anonymous Symbol] 0x080017bc Section 0 main.o(.text.SystemClock_Config)
|
||||
[Anonymous Symbol] 0x08001828 Section 0 system_stm32f1xx.o(.text.SystemInit)
|
||||
[Anonymous Symbol] 0x0800182c Section 0 stm32f1xx_hal_tim.o(.text.TIM_Base_SetConfig)
|
||||
[Anonymous Symbol] 0x08001934 Section 0 stm32f1xx_hal_tim.o(.text.TIM_ETR_SetConfig)
|
||||
TIM_ITRx_SetConfig 0x08001969 Thumb Code 42 stm32f1xx_hal_tim.o(.text.TIM_ITRx_SetConfig)
|
||||
[Anonymous Symbol] 0x08001968 Section 0 stm32f1xx_hal_tim.o(.text.TIM_ITRx_SetConfig)
|
||||
TIM_TI1_ConfigInputStage 0x08001995 Thumb Code 80 stm32f1xx_hal_tim.o(.text.TIM_TI1_ConfigInputStage)
|
||||
[Anonymous Symbol] 0x08001994 Section 0 stm32f1xx_hal_tim.o(.text.TIM_TI1_ConfigInputStage)
|
||||
TIM_TI2_ConfigInputStage 0x080019e5 Thumb Code 82 stm32f1xx_hal_tim.o(.text.TIM_TI2_ConfigInputStage)
|
||||
[Anonymous Symbol] 0x080019e4 Section 0 stm32f1xx_hal_tim.o(.text.TIM_TI2_ConfigInputStage)
|
||||
[Anonymous Symbol] 0x08001a38 Section 0 stm32f1xx_it.o(.text.UsageFault_Handler)
|
||||
__NVIC_GetPriorityGrouping 0x08001a3d Thumb Code 16 stm32f1xx_hal_cortex.o(.text.__NVIC_GetPriorityGrouping)
|
||||
[Anonymous Symbol] 0x08001a3c Section 0 stm32f1xx_hal_cortex.o(.text.__NVIC_GetPriorityGrouping)
|
||||
__NVIC_SetPriority 0x08001a4d Thumb Code 66 stm32f1xx_hal_cortex.o(.text.__NVIC_SetPriority)
|
||||
[Anonymous Symbol] 0x08001a4c Section 0 stm32f1xx_hal_cortex.o(.text.__NVIC_SetPriority)
|
||||
__NVIC_SetPriorityGrouping 0x08001a91 Thumb Code 60 stm32f1xx_hal_cortex.o(.text.__NVIC_SetPriorityGrouping)
|
||||
[Anonymous Symbol] 0x08001a90 Section 0 stm32f1xx_hal_cortex.o(.text.__NVIC_SetPriorityGrouping)
|
||||
[Anonymous Symbol] 0x08001acc Section 0 canform.o(.text.append_bit)
|
||||
[Anonymous Symbol] 0x08001afc Section 0 canform.o(.text.append_bits)
|
||||
[Anonymous Symbol] 0x08001b3c Section 0 canform.o(.text.apply_bit_stuffing_with_error)
|
||||
[Anonymous Symbol] 0x08001c00 Section 0 canform.o(.text.compute_crc15)
|
||||
[Anonymous Symbol] 0x08001c78 Section 0 canform.o(.text.flip_bit)
|
||||
[Anonymous Symbol] 0x08001ca8 Section 0 canform.o(.text.form_CAN_bitstream_full)
|
||||
[Anonymous Symbol] 0x0800207c Section 0 main.o(.text.main)
|
||||
[Anonymous Symbol] 0x080020c8 Section 0 canemu.o(.text.wait_exact_ticks)
|
||||
HAL_RCC_GetSysClockFreq.aPLLMULFactorTable 0x08002122 Data 16 stm32f1xx_hal_rcc.o(.rodata.HAL_RCC_GetSysClockFreq.aPLLMULFactorTable)
|
||||
[Anonymous Symbol] 0x08002122 Section 0 stm32f1xx_hal_rcc.o(.rodata.HAL_RCC_GetSysClockFreq.aPLLMULFactorTable)
|
||||
HAL_RCC_GetSysClockFreq.aPredivFactorTable 0x08002132 Data 2 stm32f1xx_hal_rcc.o(.rodata.HAL_RCC_GetSysClockFreq.aPredivFactorTable)
|
||||
[Anonymous Symbol] 0x08002132 Section 0 stm32f1xx_hal_rcc.o(.rodata.HAL_RCC_GetSysClockFreq.aPredivFactorTable)
|
||||
[Anonymous Symbol] 0x080003a0 Section 0 stm32f1xx_hal_dma.o(.text.HAL_DMA_Abort)
|
||||
[Anonymous Symbol] 0x0800041c Section 0 stm32f1xx_hal_dma.o(.text.HAL_DMA_GetError)
|
||||
[Anonymous Symbol] 0x08000428 Section 0 stm32f1xx_hal.o(.text.HAL_Delay)
|
||||
[Anonymous Symbol] 0x0800046c Section 0 stm32f1xx_hal_gpio.o(.text.HAL_GPIO_Init)
|
||||
[Anonymous Symbol] 0x0800078c Section 0 stm32f1xx_hal_gpio.o(.text.HAL_GPIO_WritePin)
|
||||
[Anonymous Symbol] 0x080007bc Section 0 stm32f1xx_hal.o(.text.HAL_GetTick)
|
||||
[Anonymous Symbol] 0x080007c8 Section 0 stm32f1xx_hal.o(.text.HAL_IncTick)
|
||||
[Anonymous Symbol] 0x080007e4 Section 0 stm32f1xx_hal.o(.text.HAL_Init)
|
||||
[Anonymous Symbol] 0x0800080c Section 0 stm32f1xx_hal.o(.text.HAL_InitTick)
|
||||
[Anonymous Symbol] 0x0800087c Section 0 stm32f1xx_hal_msp.o(.text.HAL_MspInit)
|
||||
[Anonymous Symbol] 0x080008e0 Section 0 stm32f1xx_hal_cortex.o(.text.HAL_NVIC_SetPriority)
|
||||
[Anonymous Symbol] 0x08000914 Section 0 stm32f1xx_hal_cortex.o(.text.HAL_NVIC_SetPriorityGrouping)
|
||||
[Anonymous Symbol] 0x08000924 Section 0 stm32f1xx_hal_rcc.o(.text.HAL_RCC_ClockConfig)
|
||||
[Anonymous Symbol] 0x08000b7c Section 0 stm32f1xx_hal_rcc.o(.text.HAL_RCC_GetHCLKFreq)
|
||||
[Anonymous Symbol] 0x08000b88 Section 0 stm32f1xx_hal_rcc.o(.text.HAL_RCC_GetPCLK1Freq)
|
||||
[Anonymous Symbol] 0x08000bac Section 0 stm32f1xx_hal_rcc.o(.text.HAL_RCC_GetPCLK2Freq)
|
||||
[Anonymous Symbol] 0x08000bd0 Section 0 stm32f1xx_hal_rcc.o(.text.HAL_RCC_GetSysClockFreq)
|
||||
[Anonymous Symbol] 0x08000c8c Section 0 stm32f1xx_hal_rcc.o(.text.HAL_RCC_OscConfig)
|
||||
[Anonymous Symbol] 0x08001308 Section 0 stm32f1xx_hal_cortex.o(.text.HAL_SYSTICK_Config)
|
||||
[Anonymous Symbol] 0x08001318 Section 0 stm32f1xx_hal_tim_ex.o(.text.HAL_TIMEx_MasterConfigSynchronization)
|
||||
[Anonymous Symbol] 0x080013f4 Section 0 stm32f1xx_hal_tim.o(.text.HAL_TIM_Base_Init)
|
||||
[Anonymous Symbol] 0x08001490 Section 0 tim.o(.text.HAL_TIM_Base_MspInit)
|
||||
[Anonymous Symbol] 0x080014f8 Section 0 stm32f1xx_hal_tim.o(.text.HAL_TIM_Base_Stop_IT)
|
||||
[Anonymous Symbol] 0x0800154c Section 0 stm32f1xx_hal_tim.o(.text.HAL_TIM_ConfigClockSource)
|
||||
[Anonymous Symbol] 0x080016d0 Section 0 stm32f1xx_hal_uart.o(.text.HAL_UART_Abort)
|
||||
[Anonymous Symbol] 0x08001868 Section 0 stm32f1xx_hal_uart.o(.text.HAL_UART_AbortReceive)
|
||||
[Anonymous Symbol] 0x08001980 Section 0 stm32f1xx_hal_uart.o(.text.HAL_UART_AbortTransmit)
|
||||
[Anonymous Symbol] 0x08001a3c Section 0 stm32f1xx_hal_uart.o(.text.HAL_UART_Init)
|
||||
[Anonymous Symbol] 0x08001adc Section 0 usart.o(.text.HAL_UART_MspInit)
|
||||
[Anonymous Symbol] 0x08001b74 Section 0 stm32f1xx_hal_uart.o(.text.HAL_UART_Receive_IT)
|
||||
[Anonymous Symbol] 0x08001bcc Section 0 stm32f1xx_it.o(.text.HardFault_Handler)
|
||||
[Anonymous Symbol] 0x08001bd0 Section 0 modbus.o(.text.MB_DevoceInentificationInit)
|
||||
[Anonymous Symbol] 0x08001c20 Section 0 modbus.o(.text.MODBUS_FirstInit)
|
||||
[Anonymous Symbol] 0x08001c64 Section 0 gpio.o(.text.MX_GPIO_Init)
|
||||
[Anonymous Symbol] 0x08001d1c Section 0 tim.o(.text.MX_TIM2_Init)
|
||||
[Anonymous Symbol] 0x08001d9c Section 0 tim.o(.text.MX_TIM3_Init)
|
||||
[Anonymous Symbol] 0x08001e20 Section 0 usart.o(.text.MX_USART1_UART_Init)
|
||||
[Anonymous Symbol] 0x08001e60 Section 0 stm32f1xx_it.o(.text.MemManage_Handler)
|
||||
[Anonymous Symbol] 0x08001e64 Section 0 stm32f1xx_it.o(.text.NMI_Handler)
|
||||
NVIC_EncodePriority 0x08001e69 Thumb Code 108 stm32f1xx_hal_cortex.o(.text.NVIC_EncodePriority)
|
||||
[Anonymous Symbol] 0x08001e68 Section 0 stm32f1xx_hal_cortex.o(.text.NVIC_EncodePriority)
|
||||
[Anonymous Symbol] 0x08001ed4 Section 0 stm32f1xx_it.o(.text.PendSV_Handler)
|
||||
RCC_Delay 0x08001ed9 Thumb Code 58 stm32f1xx_hal_rcc.o(.text.RCC_Delay)
|
||||
[Anonymous Symbol] 0x08001ed8 Section 0 stm32f1xx_hal_rcc.o(.text.RCC_Delay)
|
||||
[Anonymous Symbol] 0x08001f14 Section 0 rs_message.o(.text.RS_Abort)
|
||||
[Anonymous Symbol] 0x08002070 Section 0 rs_message.o(.text.RS_Init)
|
||||
[Anonymous Symbol] 0x080020e0 Section 0 rs_message.o(.text.RS_Receive_IT)
|
||||
[Anonymous Symbol] 0x08002190 Section 0 stm32f1xx_it.o(.text.SVC_Handler)
|
||||
SysTick_Config 0x08002195 Thumb Code 82 stm32f1xx_hal_cortex.o(.text.SysTick_Config)
|
||||
[Anonymous Symbol] 0x08002194 Section 0 stm32f1xx_hal_cortex.o(.text.SysTick_Config)
|
||||
[Anonymous Symbol] 0x080021e8 Section 0 stm32f1xx_it.o(.text.SysTick_Handler)
|
||||
[Anonymous Symbol] 0x080021f0 Section 0 main.o(.text.SystemClock_Config)
|
||||
[Anonymous Symbol] 0x0800225c Section 0 system_stm32f1xx.o(.text.SystemInit)
|
||||
[Anonymous Symbol] 0x08002260 Section 0 stm32f1xx_hal_tim.o(.text.TIM_Base_SetConfig)
|
||||
[Anonymous Symbol] 0x08002368 Section 0 stm32f1xx_hal_tim.o(.text.TIM_ETR_SetConfig)
|
||||
TIM_ITRx_SetConfig 0x0800239d Thumb Code 42 stm32f1xx_hal_tim.o(.text.TIM_ITRx_SetConfig)
|
||||
[Anonymous Symbol] 0x0800239c Section 0 stm32f1xx_hal_tim.o(.text.TIM_ITRx_SetConfig)
|
||||
TIM_TI1_ConfigInputStage 0x080023c9 Thumb Code 80 stm32f1xx_hal_tim.o(.text.TIM_TI1_ConfigInputStage)
|
||||
[Anonymous Symbol] 0x080023c8 Section 0 stm32f1xx_hal_tim.o(.text.TIM_TI1_ConfigInputStage)
|
||||
TIM_TI2_ConfigInputStage 0x08002419 Thumb Code 82 stm32f1xx_hal_tim.o(.text.TIM_TI2_ConfigInputStage)
|
||||
[Anonymous Symbol] 0x08002418 Section 0 stm32f1xx_hal_tim.o(.text.TIM_TI2_ConfigInputStage)
|
||||
UART_SetConfig 0x0800246d Thumb Code 186 stm32f1xx_hal_uart.o(.text.UART_SetConfig)
|
||||
[Anonymous Symbol] 0x0800246c Section 0 stm32f1xx_hal_uart.o(.text.UART_SetConfig)
|
||||
[Anonymous Symbol] 0x08002528 Section 0 stm32f1xx_hal_uart.o(.text.UART_Start_Receive_IT)
|
||||
[Anonymous Symbol] 0x0800258c Section 0 stm32f1xx_it.o(.text.UsageFault_Handler)
|
||||
__NVIC_GetPriorityGrouping 0x08002591 Thumb Code 16 stm32f1xx_hal_cortex.o(.text.__NVIC_GetPriorityGrouping)
|
||||
[Anonymous Symbol] 0x08002590 Section 0 stm32f1xx_hal_cortex.o(.text.__NVIC_GetPriorityGrouping)
|
||||
__NVIC_SetPriority 0x080025a1 Thumb Code 66 stm32f1xx_hal_cortex.o(.text.__NVIC_SetPriority)
|
||||
[Anonymous Symbol] 0x080025a0 Section 0 stm32f1xx_hal_cortex.o(.text.__NVIC_SetPriority)
|
||||
__NVIC_SetPriorityGrouping 0x080025e5 Thumb Code 60 stm32f1xx_hal_cortex.o(.text.__NVIC_SetPriorityGrouping)
|
||||
[Anonymous Symbol] 0x080025e4 Section 0 stm32f1xx_hal_cortex.o(.text.__NVIC_SetPriorityGrouping)
|
||||
[Anonymous Symbol] 0x08002620 Section 0 canform.o(.text.append_bit)
|
||||
[Anonymous Symbol] 0x08002650 Section 0 canform.o(.text.append_bits)
|
||||
[Anonymous Symbol] 0x08002690 Section 0 canform.o(.text.apply_bit_stuffing_with_error)
|
||||
[Anonymous Symbol] 0x08002754 Section 0 canform.o(.text.compute_crc15)
|
||||
[Anonymous Symbol] 0x080027cc Section 0 canform.o(.text.flip_bit)
|
||||
[Anonymous Symbol] 0x080027fc Section 0 canform.o(.text.form_CAN_bitstream_full)
|
||||
[Anonymous Symbol] 0x08002bd0 Section 0 main.o(.text.main)
|
||||
[Anonymous Symbol] 0x08002db8 Section 0 canemu.o(.text.wait_exact_ticks)
|
||||
HAL_RCC_GetSysClockFreq.aPLLMULFactorTable 0x08002e1a Data 16 stm32f1xx_hal_rcc.o(.rodata.HAL_RCC_GetSysClockFreq.aPLLMULFactorTable)
|
||||
[Anonymous Symbol] 0x08002e1a Section 0 stm32f1xx_hal_rcc.o(.rodata.HAL_RCC_GetSysClockFreq.aPLLMULFactorTable)
|
||||
HAL_RCC_GetSysClockFreq.aPredivFactorTable 0x08002e2a Data 2 stm32f1xx_hal_rcc.o(.rodata.HAL_RCC_GetSysClockFreq.aPredivFactorTable)
|
||||
[Anonymous Symbol] 0x08002e2a Section 0 stm32f1xx_hal_rcc.o(.rodata.HAL_RCC_GetSysClockFreq.aPredivFactorTable)
|
||||
.L.str.2 0x08002e2c Data 9 modbus.o(.rodata.str1.1)
|
||||
[Anonymous Symbol] 0x08002e2c Section 0 modbus.o(.rodata.str1.1)
|
||||
.L.str 0x08002e35 Data 7 modbus.o(.rodata.str1.1)
|
||||
.L.str.3 0x08002e3c Data 10 modbus.o(.rodata.str1.1)
|
||||
.L.str.1 0x08002e45 Data 1 modbus.o(.rodata.str1.1)
|
||||
.bss 0x20000010 Section 96 libspace.o(.bss)
|
||||
Heap_Mem 0x200002f8 Data 512 startup_stm32f103xb.o(HEAP)
|
||||
HEAP 0x200002f8 Section 512 startup_stm32f103xb.o(HEAP)
|
||||
Stack_Mem 0x200004f8 Data 1024 startup_stm32f103xb.o(STACK)
|
||||
STACK 0x200004f8 Section 1024 startup_stm32f103xb.o(STACK)
|
||||
__initial_sp 0x200008f8 Data 0 startup_stm32f103xb.o(STACK)
|
||||
Heap_Mem 0x20000638 Data 512 startup_stm32f103xb.o(HEAP)
|
||||
HEAP 0x20000638 Section 512 startup_stm32f103xb.o(HEAP)
|
||||
Stack_Mem 0x20000838 Data 1024 startup_stm32f103xb.o(STACK)
|
||||
STACK 0x20000838 Section 1024 startup_stm32f103xb.o(STACK)
|
||||
__initial_sp 0x20000c38 Data 0 startup_stm32f103xb.o(STACK)
|
||||
|
||||
Global Symbols
|
||||
|
||||
@@ -1855,62 +2357,91 @@ Image Symbol Table
|
||||
CANEmu_SendFrame 0x080002bd Thumb Code 208 canemu.o(.text.CANEmu_SendFrame)
|
||||
DebugMon_Handler 0x0800038d Thumb Code 2 stm32f1xx_it.o(.text.DebugMon_Handler)
|
||||
Error_Handler 0x08000391 Thumb Code 14 main.o(.text.Error_Handler)
|
||||
HAL_Delay 0x080003a1 Thumb Code 66 stm32f1xx_hal.o(.text.HAL_Delay)
|
||||
HAL_GPIO_Init 0x080003e5 Thumb Code 798 stm32f1xx_hal_gpio.o(.text.HAL_GPIO_Init)
|
||||
HAL_GPIO_WritePin 0x08000705 Thumb Code 46 stm32f1xx_hal_gpio.o(.text.HAL_GPIO_WritePin)
|
||||
HAL_GetTick 0x08000735 Thumb Code 12 stm32f1xx_hal.o(.text.HAL_GetTick)
|
||||
HAL_IncTick 0x08000741 Thumb Code 26 stm32f1xx_hal.o(.text.HAL_IncTick)
|
||||
HAL_Init 0x0800075d Thumb Code 38 stm32f1xx_hal.o(.text.HAL_Init)
|
||||
HAL_InitTick 0x08000785 Thumb Code 112 stm32f1xx_hal.o(.text.HAL_InitTick)
|
||||
HAL_MspInit 0x080007f5 Thumb Code 100 stm32f1xx_hal_msp.o(.text.HAL_MspInit)
|
||||
HAL_NVIC_SetPriority 0x08000859 Thumb Code 50 stm32f1xx_hal_cortex.o(.text.HAL_NVIC_SetPriority)
|
||||
HAL_NVIC_SetPriorityGrouping 0x0800088d Thumb Code 16 stm32f1xx_hal_cortex.o(.text.HAL_NVIC_SetPriorityGrouping)
|
||||
HAL_RCC_ClockConfig 0x0800089d Thumb Code 598 stm32f1xx_hal_rcc.o(.text.HAL_RCC_ClockConfig)
|
||||
HAL_RCC_GetSysClockFreq 0x08000af5 Thumb Code 188 stm32f1xx_hal_rcc.o(.text.HAL_RCC_GetSysClockFreq)
|
||||
HAL_RCC_OscConfig 0x08000bb1 Thumb Code 1658 stm32f1xx_hal_rcc.o(.text.HAL_RCC_OscConfig)
|
||||
HAL_SYSTICK_Config 0x0800122d Thumb Code 16 stm32f1xx_hal_cortex.o(.text.HAL_SYSTICK_Config)
|
||||
HAL_TIMEx_MasterConfigSynchronization 0x0800123d Thumb Code 220 stm32f1xx_hal_tim_ex.o(.text.HAL_TIMEx_MasterConfigSynchronization)
|
||||
HAL_TIM_Base_Init 0x08001319 Thumb Code 156 stm32f1xx_hal_tim.o(.text.HAL_TIM_Base_Init)
|
||||
HAL_TIM_Base_MspInit 0x080013b5 Thumb Code 52 tim.o(.text.HAL_TIM_Base_MspInit)
|
||||
HAL_TIM_ConfigClockSource 0x080013e9 Thumb Code 388 stm32f1xx_hal_tim.o(.text.HAL_TIM_ConfigClockSource)
|
||||
HardFault_Handler 0x0800156d Thumb Code 4 stm32f1xx_it.o(.text.HardFault_Handler)
|
||||
MX_GPIO_Init 0x08001571 Thumb Code 182 gpio.o(.text.MX_GPIO_Init)
|
||||
MX_TIM2_Init 0x08001629 Thumb Code 126 tim.o(.text.MX_TIM2_Init)
|
||||
MemManage_Handler 0x080016a9 Thumb Code 4 stm32f1xx_it.o(.text.MemManage_Handler)
|
||||
NMI_Handler 0x080016ad Thumb Code 4 stm32f1xx_it.o(.text.NMI_Handler)
|
||||
PendSV_Handler 0x0800171d Thumb Code 2 stm32f1xx_it.o(.text.PendSV_Handler)
|
||||
SVC_Handler 0x0800175d Thumb Code 2 stm32f1xx_it.o(.text.SVC_Handler)
|
||||
SysTick_Handler 0x080017b5 Thumb Code 8 stm32f1xx_it.o(.text.SysTick_Handler)
|
||||
SystemClock_Config 0x080017bd Thumb Code 108 main.o(.text.SystemClock_Config)
|
||||
SystemInit 0x08001829 Thumb Code 2 system_stm32f1xx.o(.text.SystemInit)
|
||||
TIM_Base_SetConfig 0x0800182d Thumb Code 262 stm32f1xx_hal_tim.o(.text.TIM_Base_SetConfig)
|
||||
TIM_ETR_SetConfig 0x08001935 Thumb Code 52 stm32f1xx_hal_tim.o(.text.TIM_ETR_SetConfig)
|
||||
UsageFault_Handler 0x08001a39 Thumb Code 4 stm32f1xx_it.o(.text.UsageFault_Handler)
|
||||
append_bit 0x08001acd Thumb Code 48 canform.o(.text.append_bit)
|
||||
append_bits 0x08001afd Thumb Code 64 canform.o(.text.append_bits)
|
||||
apply_bit_stuffing_with_error 0x08001b3d Thumb Code 196 canform.o(.text.apply_bit_stuffing_with_error)
|
||||
compute_crc15 0x08001c01 Thumb Code 118 canform.o(.text.compute_crc15)
|
||||
flip_bit 0x08001c79 Thumb Code 48 canform.o(.text.flip_bit)
|
||||
form_CAN_bitstream_full 0x08001ca9 Thumb Code 978 canform.o(.text.form_CAN_bitstream_full)
|
||||
main 0x0800207d Thumb Code 76 main.o(.text.main)
|
||||
wait_exact_ticks 0x080020c9 Thumb Code 74 canemu.o(.text.wait_exact_ticks)
|
||||
AHBPrescTable 0x08002112 Data 16 system_stm32f1xx.o(.rodata.AHBPrescTable)
|
||||
Region$$Table$$Base 0x08002134 Number 0 anon$$obj.o(Region$$Table)
|
||||
Region$$Table$$Limit 0x08002154 Number 0 anon$$obj.o(Region$$Table)
|
||||
HAL_DMA_Abort 0x080003a1 Thumb Code 124 stm32f1xx_hal_dma.o(.text.HAL_DMA_Abort)
|
||||
HAL_DMA_GetError 0x0800041d Thumb Code 12 stm32f1xx_hal_dma.o(.text.HAL_DMA_GetError)
|
||||
HAL_Delay 0x08000429 Thumb Code 66 stm32f1xx_hal.o(.text.HAL_Delay)
|
||||
HAL_GPIO_Init 0x0800046d Thumb Code 798 stm32f1xx_hal_gpio.o(.text.HAL_GPIO_Init)
|
||||
HAL_GPIO_WritePin 0x0800078d Thumb Code 46 stm32f1xx_hal_gpio.o(.text.HAL_GPIO_WritePin)
|
||||
HAL_GetTick 0x080007bd Thumb Code 12 stm32f1xx_hal.o(.text.HAL_GetTick)
|
||||
HAL_IncTick 0x080007c9 Thumb Code 26 stm32f1xx_hal.o(.text.HAL_IncTick)
|
||||
HAL_Init 0x080007e5 Thumb Code 38 stm32f1xx_hal.o(.text.HAL_Init)
|
||||
HAL_InitTick 0x0800080d Thumb Code 112 stm32f1xx_hal.o(.text.HAL_InitTick)
|
||||
HAL_MspInit 0x0800087d Thumb Code 100 stm32f1xx_hal_msp.o(.text.HAL_MspInit)
|
||||
HAL_NVIC_SetPriority 0x080008e1 Thumb Code 50 stm32f1xx_hal_cortex.o(.text.HAL_NVIC_SetPriority)
|
||||
HAL_NVIC_SetPriorityGrouping 0x08000915 Thumb Code 16 stm32f1xx_hal_cortex.o(.text.HAL_NVIC_SetPriorityGrouping)
|
||||
HAL_RCC_ClockConfig 0x08000925 Thumb Code 598 stm32f1xx_hal_rcc.o(.text.HAL_RCC_ClockConfig)
|
||||
HAL_RCC_GetHCLKFreq 0x08000b7d Thumb Code 12 stm32f1xx_hal_rcc.o(.text.HAL_RCC_GetHCLKFreq)
|
||||
HAL_RCC_GetPCLK1Freq 0x08000b89 Thumb Code 34 stm32f1xx_hal_rcc.o(.text.HAL_RCC_GetPCLK1Freq)
|
||||
HAL_RCC_GetPCLK2Freq 0x08000bad Thumb Code 34 stm32f1xx_hal_rcc.o(.text.HAL_RCC_GetPCLK2Freq)
|
||||
HAL_RCC_GetSysClockFreq 0x08000bd1 Thumb Code 188 stm32f1xx_hal_rcc.o(.text.HAL_RCC_GetSysClockFreq)
|
||||
HAL_RCC_OscConfig 0x08000c8d Thumb Code 1658 stm32f1xx_hal_rcc.o(.text.HAL_RCC_OscConfig)
|
||||
HAL_SYSTICK_Config 0x08001309 Thumb Code 16 stm32f1xx_hal_cortex.o(.text.HAL_SYSTICK_Config)
|
||||
HAL_TIMEx_MasterConfigSynchronization 0x08001319 Thumb Code 220 stm32f1xx_hal_tim_ex.o(.text.HAL_TIMEx_MasterConfigSynchronization)
|
||||
HAL_TIM_Base_Init 0x080013f5 Thumb Code 156 stm32f1xx_hal_tim.o(.text.HAL_TIM_Base_Init)
|
||||
HAL_TIM_Base_MspInit 0x08001491 Thumb Code 104 tim.o(.text.HAL_TIM_Base_MspInit)
|
||||
HAL_TIM_Base_Stop_IT 0x080014f9 Thumb Code 82 stm32f1xx_hal_tim.o(.text.HAL_TIM_Base_Stop_IT)
|
||||
HAL_TIM_ConfigClockSource 0x0800154d Thumb Code 388 stm32f1xx_hal_tim.o(.text.HAL_TIM_ConfigClockSource)
|
||||
HAL_UART_Abort 0x080016d1 Thumb Code 406 stm32f1xx_hal_uart.o(.text.HAL_UART_Abort)
|
||||
HAL_UART_AbortReceive 0x08001869 Thumb Code 278 stm32f1xx_hal_uart.o(.text.HAL_UART_AbortReceive)
|
||||
HAL_UART_AbortTransmit 0x08001981 Thumb Code 186 stm32f1xx_hal_uart.o(.text.HAL_UART_AbortTransmit)
|
||||
HAL_UART_Init 0x08001a3d Thumb Code 158 stm32f1xx_hal_uart.o(.text.HAL_UART_Init)
|
||||
HAL_UART_MspInit 0x08001add Thumb Code 152 usart.o(.text.HAL_UART_MspInit)
|
||||
HAL_UART_Receive_IT 0x08001b75 Thumb Code 86 stm32f1xx_hal_uart.o(.text.HAL_UART_Receive_IT)
|
||||
HardFault_Handler 0x08001bcd Thumb Code 4 stm32f1xx_it.o(.text.HardFault_Handler)
|
||||
MB_DevoceInentificationInit 0x08001bd1 Thumb Code 78 modbus.o(.text.MB_DevoceInentificationInit)
|
||||
MODBUS_FirstInit 0x08001c21 Thumb Code 66 modbus.o(.text.MODBUS_FirstInit)
|
||||
MX_GPIO_Init 0x08001c65 Thumb Code 182 gpio.o(.text.MX_GPIO_Init)
|
||||
MX_TIM2_Init 0x08001d1d Thumb Code 126 tim.o(.text.MX_TIM2_Init)
|
||||
MX_TIM3_Init 0x08001d9d Thumb Code 130 tim.o(.text.MX_TIM3_Init)
|
||||
MX_USART1_UART_Init 0x08001e21 Thumb Code 64 usart.o(.text.MX_USART1_UART_Init)
|
||||
MemManage_Handler 0x08001e61 Thumb Code 4 stm32f1xx_it.o(.text.MemManage_Handler)
|
||||
NMI_Handler 0x08001e65 Thumb Code 4 stm32f1xx_it.o(.text.NMI_Handler)
|
||||
PendSV_Handler 0x08001ed5 Thumb Code 2 stm32f1xx_it.o(.text.PendSV_Handler)
|
||||
RS_Abort 0x08001f15 Thumb Code 348 rs_message.o(.text.RS_Abort)
|
||||
RS_Init 0x08002071 Thumb Code 112 rs_message.o(.text.RS_Init)
|
||||
RS_Receive_IT 0x080020e1 Thumb Code 176 rs_message.o(.text.RS_Receive_IT)
|
||||
SVC_Handler 0x08002191 Thumb Code 2 stm32f1xx_it.o(.text.SVC_Handler)
|
||||
SysTick_Handler 0x080021e9 Thumb Code 8 stm32f1xx_it.o(.text.SysTick_Handler)
|
||||
SystemClock_Config 0x080021f1 Thumb Code 108 main.o(.text.SystemClock_Config)
|
||||
SystemInit 0x0800225d Thumb Code 2 system_stm32f1xx.o(.text.SystemInit)
|
||||
TIM_Base_SetConfig 0x08002261 Thumb Code 262 stm32f1xx_hal_tim.o(.text.TIM_Base_SetConfig)
|
||||
TIM_ETR_SetConfig 0x08002369 Thumb Code 52 stm32f1xx_hal_tim.o(.text.TIM_ETR_SetConfig)
|
||||
UART_Start_Receive_IT 0x08002529 Thumb Code 98 stm32f1xx_hal_uart.o(.text.UART_Start_Receive_IT)
|
||||
UsageFault_Handler 0x0800258d Thumb Code 4 stm32f1xx_it.o(.text.UsageFault_Handler)
|
||||
append_bit 0x08002621 Thumb Code 48 canform.o(.text.append_bit)
|
||||
append_bits 0x08002651 Thumb Code 64 canform.o(.text.append_bits)
|
||||
apply_bit_stuffing_with_error 0x08002691 Thumb Code 196 canform.o(.text.apply_bit_stuffing_with_error)
|
||||
compute_crc15 0x08002755 Thumb Code 118 canform.o(.text.compute_crc15)
|
||||
flip_bit 0x080027cd Thumb Code 48 canform.o(.text.flip_bit)
|
||||
form_CAN_bitstream_full 0x080027fd Thumb Code 978 canform.o(.text.form_CAN_bitstream_full)
|
||||
main 0x08002bd1 Thumb Code 488 main.o(.text.main)
|
||||
wait_exact_ticks 0x08002db9 Thumb Code 74 canemu.o(.text.wait_exact_ticks)
|
||||
AHBPrescTable 0x08002e02 Data 16 system_stm32f1xx.o(.rodata.AHBPrescTable)
|
||||
APBPrescTable 0x08002e12 Data 8 system_stm32f1xx.o(.rodata.APBPrescTable)
|
||||
Region$$Table$$Base 0x08002e48 Number 0 anon$$obj.o(Region$$Table)
|
||||
Region$$Table$$Limit 0x08002e68 Number 0 anon$$obj.o(Region$$Table)
|
||||
SystemCoreClock 0x20000000 Data 4 system_stm32f1xx.o(.data.SystemCoreClock)
|
||||
uwTickFreq 0x20000004 Data 1 stm32f1xx_hal.o(.data.uwTickFreq)
|
||||
uwTickPrio 0x20000008 Data 4 stm32f1xx_hal.o(.data.uwTickPrio)
|
||||
__libspace_start 0x20000010 Data 96 libspace.o(.bss)
|
||||
CANEMU_BIT_TICKS 0x20000070 Data 4 canemu.o(.bss.CANEMU_BIT_TICKS)
|
||||
__temporary_stack_top$libspace 0x20000070 Data 0 libspace.o(.bss)
|
||||
can_bits 0x20000074 Data 256 canform.o(.bss.can_bits)
|
||||
can_bits_len 0x20000174 Data 4 canform.o(.bss.can_bits_len)
|
||||
err_indices_count 0x20000178 Data 1 canform.o(.bss.err_indices_count)
|
||||
hcanemu 0x2000017c Data 40 main.o(.bss.hcanemu)
|
||||
htim2 0x200001a4 Data 72 tim.o(.bss.htim2)
|
||||
raw_bits 0x200001ec Data 256 canform.o(.bss.raw_bits)
|
||||
raw_len 0x200002ec Data 4 canform.o(.bss.raw_len)
|
||||
uwTick 0x200002f0 Data 4 stm32f1xx_hal.o(.bss.uwTick)
|
||||
MB_DATA 0x20000074 Data 60 modbus.o(.bss.MB_DATA)
|
||||
MB_INFO 0x200000b0 Data 56 modbus.o(.bss.MB_INFO)
|
||||
MODBUS_MSG 0x200000e8 Data 268 modbus.o(.bss.MODBUS_MSG)
|
||||
RS_Buffer 0x200001f4 Data 259 rs_message.o(.bss.RS_Buffer)
|
||||
can_bits 0x200002f7 Data 256 canform.o(.bss.can_bits)
|
||||
can_bits_len 0x200003f8 Data 4 canform.o(.bss.can_bits_len)
|
||||
err_indices_count 0x200003fc Data 1 canform.o(.bss.err_indices_count)
|
||||
flag_manual 0x20000400 Data 4 main.o(.bss.flag_manual)
|
||||
hcanemu 0x20000404 Data 44 main.o(.bss.hcanemu)
|
||||
hmodbus1 0x20000430 Data 40 modbus.o(.bss.hmodbus1)
|
||||
htim2 0x20000458 Data 72 tim.o(.bss.htim2)
|
||||
htim3 0x200004a0 Data 72 tim.o(.bss.htim3)
|
||||
huart1 0x200004e8 Data 72 usart.o(.bss.huart1)
|
||||
raw_bits 0x20000530 Data 256 canform.o(.bss.raw_bits)
|
||||
raw_len 0x20000630 Data 4 canform.o(.bss.raw_len)
|
||||
uwTick 0x20000634 Data 4 stm32f1xx_hal.o(.bss.uwTick)
|
||||
|
||||
|
||||
|
||||
@@ -1920,176 +2451,221 @@ Memory Map of the image
|
||||
|
||||
Image Entry point : 0x080000ed
|
||||
|
||||
Load Region LR_IROM1 (Base: 0x08000000, Size: 0x00002168, Max: 0x00010000, ABSOLUTE)
|
||||
Load Region LR_IROM1 (Base: 0x08000000, Size: 0x00002e78, Max: 0x00010000, ABSOLUTE)
|
||||
|
||||
Execution Region ER_IROM1 (Exec base: 0x08000000, Load base: 0x08000000, Size: 0x00002154, Max: 0x00010000, ABSOLUTE)
|
||||
Execution Region ER_IROM1 (Exec base: 0x08000000, Load base: 0x08000000, Size: 0x00002e68, Max: 0x00010000, ABSOLUTE)
|
||||
|
||||
Exec Addr Load Addr Size Type Attr Idx E Section Name Object
|
||||
|
||||
0x08000000 0x08000000 0x000000ec Data RO 3 RESET startup_stm32f103xb.o
|
||||
0x080000ec 0x080000ec 0x00000008 Code RO 866 * !!!main c_w.l(__main.o)
|
||||
0x080000f4 0x080000f4 0x00000034 Code RO 1031 !!!scatter c_w.l(__scatter.o)
|
||||
0x08000128 0x08000128 0x0000001a Code RO 1033 !!handler_copy c_w.l(__scatter_copy.o)
|
||||
0x080000ec 0x080000ec 0x00000008 Code RO 1127 * !!!main c_w.l(__main.o)
|
||||
0x080000f4 0x080000f4 0x00000034 Code RO 1292 !!!scatter c_w.l(__scatter.o)
|
||||
0x08000128 0x08000128 0x0000001a Code RO 1294 !!handler_copy c_w.l(__scatter_copy.o)
|
||||
0x08000142 0x08000142 0x00000002 PAD
|
||||
0x08000144 0x08000144 0x0000001c Code RO 1035 !!handler_zi c_w.l(__scatter_zi.o)
|
||||
0x08000160 0x08000160 0x00000002 Code RO 893 .ARM.Collect$$libinit$$00000000 c_w.l(libinit.o)
|
||||
0x08000162 0x08000162 0x00000000 Code RO 900 .ARM.Collect$$libinit$$00000002 c_w.l(libinit2.o)
|
||||
0x08000162 0x08000162 0x00000000 Code RO 902 .ARM.Collect$$libinit$$00000004 c_w.l(libinit2.o)
|
||||
0x08000162 0x08000162 0x00000000 Code RO 904 .ARM.Collect$$libinit$$00000006 c_w.l(libinit2.o)
|
||||
0x08000162 0x08000162 0x00000000 Code RO 907 .ARM.Collect$$libinit$$0000000C c_w.l(libinit2.o)
|
||||
0x08000162 0x08000162 0x00000000 Code RO 909 .ARM.Collect$$libinit$$0000000E c_w.l(libinit2.o)
|
||||
0x08000162 0x08000162 0x00000000 Code RO 911 .ARM.Collect$$libinit$$00000010 c_w.l(libinit2.o)
|
||||
0x08000162 0x08000162 0x00000000 Code RO 914 .ARM.Collect$$libinit$$00000013 c_w.l(libinit2.o)
|
||||
0x08000162 0x08000162 0x00000000 Code RO 916 .ARM.Collect$$libinit$$00000015 c_w.l(libinit2.o)
|
||||
0x08000162 0x08000162 0x00000000 Code RO 918 .ARM.Collect$$libinit$$00000017 c_w.l(libinit2.o)
|
||||
0x08000162 0x08000162 0x00000000 Code RO 920 .ARM.Collect$$libinit$$00000019 c_w.l(libinit2.o)
|
||||
0x08000162 0x08000162 0x00000000 Code RO 922 .ARM.Collect$$libinit$$0000001B c_w.l(libinit2.o)
|
||||
0x08000162 0x08000162 0x00000000 Code RO 924 .ARM.Collect$$libinit$$0000001D c_w.l(libinit2.o)
|
||||
0x08000162 0x08000162 0x00000000 Code RO 926 .ARM.Collect$$libinit$$0000001F c_w.l(libinit2.o)
|
||||
0x08000162 0x08000162 0x00000000 Code RO 928 .ARM.Collect$$libinit$$00000021 c_w.l(libinit2.o)
|
||||
0x08000162 0x08000162 0x00000000 Code RO 930 .ARM.Collect$$libinit$$00000023 c_w.l(libinit2.o)
|
||||
0x08000162 0x08000162 0x00000000 Code RO 932 .ARM.Collect$$libinit$$00000025 c_w.l(libinit2.o)
|
||||
0x08000162 0x08000162 0x00000000 Code RO 934 .ARM.Collect$$libinit$$00000027 c_w.l(libinit2.o)
|
||||
0x08000162 0x08000162 0x00000000 Code RO 938 .ARM.Collect$$libinit$$0000002E c_w.l(libinit2.o)
|
||||
0x08000162 0x08000162 0x00000000 Code RO 940 .ARM.Collect$$libinit$$00000030 c_w.l(libinit2.o)
|
||||
0x08000162 0x08000162 0x00000000 Code RO 942 .ARM.Collect$$libinit$$00000032 c_w.l(libinit2.o)
|
||||
0x08000162 0x08000162 0x00000000 Code RO 944 .ARM.Collect$$libinit$$00000034 c_w.l(libinit2.o)
|
||||
0x08000162 0x08000162 0x00000002 Code RO 945 .ARM.Collect$$libinit$$00000035 c_w.l(libinit2.o)
|
||||
0x08000164 0x08000164 0x00000002 Code RO 967 .ARM.Collect$$libshutdown$$00000000 c_w.l(libshutdown.o)
|
||||
0x08000166 0x08000166 0x00000000 Code RO 982 .ARM.Collect$$libshutdown$$00000002 c_w.l(libshutdown2.o)
|
||||
0x08000166 0x08000166 0x00000000 Code RO 984 .ARM.Collect$$libshutdown$$00000004 c_w.l(libshutdown2.o)
|
||||
0x08000166 0x08000166 0x00000000 Code RO 987 .ARM.Collect$$libshutdown$$00000007 c_w.l(libshutdown2.o)
|
||||
0x08000166 0x08000166 0x00000000 Code RO 990 .ARM.Collect$$libshutdown$$0000000A c_w.l(libshutdown2.o)
|
||||
0x08000166 0x08000166 0x00000000 Code RO 992 .ARM.Collect$$libshutdown$$0000000C c_w.l(libshutdown2.o)
|
||||
0x08000166 0x08000166 0x00000000 Code RO 995 .ARM.Collect$$libshutdown$$0000000F c_w.l(libshutdown2.o)
|
||||
0x08000166 0x08000166 0x00000002 Code RO 996 .ARM.Collect$$libshutdown$$00000010 c_w.l(libshutdown2.o)
|
||||
0x08000168 0x08000168 0x00000000 Code RO 868 .ARM.Collect$$rtentry$$00000000 c_w.l(__rtentry.o)
|
||||
0x08000168 0x08000168 0x00000000 Code RO 870 .ARM.Collect$$rtentry$$00000002 c_w.l(__rtentry2.o)
|
||||
0x08000168 0x08000168 0x00000006 Code RO 882 .ARM.Collect$$rtentry$$00000004 c_w.l(__rtentry4.o)
|
||||
0x0800016e 0x0800016e 0x00000000 Code RO 872 .ARM.Collect$$rtentry$$00000009 c_w.l(__rtentry2.o)
|
||||
0x0800016e 0x0800016e 0x00000004 Code RO 873 .ARM.Collect$$rtentry$$0000000A c_w.l(__rtentry2.o)
|
||||
0x08000172 0x08000172 0x00000000 Code RO 875 .ARM.Collect$$rtentry$$0000000C c_w.l(__rtentry2.o)
|
||||
0x08000172 0x08000172 0x00000008 Code RO 876 .ARM.Collect$$rtentry$$0000000D c_w.l(__rtentry2.o)
|
||||
0x0800017a 0x0800017a 0x00000002 Code RO 897 .ARM.Collect$$rtexit$$00000000 c_w.l(rtexit.o)
|
||||
0x0800017c 0x0800017c 0x00000000 Code RO 947 .ARM.Collect$$rtexit$$00000002 c_w.l(rtexit2.o)
|
||||
0x0800017c 0x0800017c 0x00000004 Code RO 948 .ARM.Collect$$rtexit$$00000003 c_w.l(rtexit2.o)
|
||||
0x08000180 0x08000180 0x00000006 Code RO 949 .ARM.Collect$$rtexit$$00000004 c_w.l(rtexit2.o)
|
||||
0x08000144 0x08000144 0x0000001c Code RO 1296 !!handler_zi c_w.l(__scatter_zi.o)
|
||||
0x08000160 0x08000160 0x00000002 Code RO 1154 .ARM.Collect$$libinit$$00000000 c_w.l(libinit.o)
|
||||
0x08000162 0x08000162 0x00000000 Code RO 1161 .ARM.Collect$$libinit$$00000002 c_w.l(libinit2.o)
|
||||
0x08000162 0x08000162 0x00000000 Code RO 1163 .ARM.Collect$$libinit$$00000004 c_w.l(libinit2.o)
|
||||
0x08000162 0x08000162 0x00000000 Code RO 1165 .ARM.Collect$$libinit$$00000006 c_w.l(libinit2.o)
|
||||
0x08000162 0x08000162 0x00000000 Code RO 1168 .ARM.Collect$$libinit$$0000000C c_w.l(libinit2.o)
|
||||
0x08000162 0x08000162 0x00000000 Code RO 1170 .ARM.Collect$$libinit$$0000000E c_w.l(libinit2.o)
|
||||
0x08000162 0x08000162 0x00000000 Code RO 1172 .ARM.Collect$$libinit$$00000010 c_w.l(libinit2.o)
|
||||
0x08000162 0x08000162 0x00000000 Code RO 1175 .ARM.Collect$$libinit$$00000013 c_w.l(libinit2.o)
|
||||
0x08000162 0x08000162 0x00000000 Code RO 1177 .ARM.Collect$$libinit$$00000015 c_w.l(libinit2.o)
|
||||
0x08000162 0x08000162 0x00000000 Code RO 1179 .ARM.Collect$$libinit$$00000017 c_w.l(libinit2.o)
|
||||
0x08000162 0x08000162 0x00000000 Code RO 1181 .ARM.Collect$$libinit$$00000019 c_w.l(libinit2.o)
|
||||
0x08000162 0x08000162 0x00000000 Code RO 1183 .ARM.Collect$$libinit$$0000001B c_w.l(libinit2.o)
|
||||
0x08000162 0x08000162 0x00000000 Code RO 1185 .ARM.Collect$$libinit$$0000001D c_w.l(libinit2.o)
|
||||
0x08000162 0x08000162 0x00000000 Code RO 1187 .ARM.Collect$$libinit$$0000001F c_w.l(libinit2.o)
|
||||
0x08000162 0x08000162 0x00000000 Code RO 1189 .ARM.Collect$$libinit$$00000021 c_w.l(libinit2.o)
|
||||
0x08000162 0x08000162 0x00000000 Code RO 1191 .ARM.Collect$$libinit$$00000023 c_w.l(libinit2.o)
|
||||
0x08000162 0x08000162 0x00000000 Code RO 1193 .ARM.Collect$$libinit$$00000025 c_w.l(libinit2.o)
|
||||
0x08000162 0x08000162 0x00000000 Code RO 1195 .ARM.Collect$$libinit$$00000027 c_w.l(libinit2.o)
|
||||
0x08000162 0x08000162 0x00000000 Code RO 1199 .ARM.Collect$$libinit$$0000002E c_w.l(libinit2.o)
|
||||
0x08000162 0x08000162 0x00000000 Code RO 1201 .ARM.Collect$$libinit$$00000030 c_w.l(libinit2.o)
|
||||
0x08000162 0x08000162 0x00000000 Code RO 1203 .ARM.Collect$$libinit$$00000032 c_w.l(libinit2.o)
|
||||
0x08000162 0x08000162 0x00000000 Code RO 1205 .ARM.Collect$$libinit$$00000034 c_w.l(libinit2.o)
|
||||
0x08000162 0x08000162 0x00000002 Code RO 1206 .ARM.Collect$$libinit$$00000035 c_w.l(libinit2.o)
|
||||
0x08000164 0x08000164 0x00000002 Code RO 1228 .ARM.Collect$$libshutdown$$00000000 c_w.l(libshutdown.o)
|
||||
0x08000166 0x08000166 0x00000000 Code RO 1243 .ARM.Collect$$libshutdown$$00000002 c_w.l(libshutdown2.o)
|
||||
0x08000166 0x08000166 0x00000000 Code RO 1245 .ARM.Collect$$libshutdown$$00000004 c_w.l(libshutdown2.o)
|
||||
0x08000166 0x08000166 0x00000000 Code RO 1248 .ARM.Collect$$libshutdown$$00000007 c_w.l(libshutdown2.o)
|
||||
0x08000166 0x08000166 0x00000000 Code RO 1251 .ARM.Collect$$libshutdown$$0000000A c_w.l(libshutdown2.o)
|
||||
0x08000166 0x08000166 0x00000000 Code RO 1253 .ARM.Collect$$libshutdown$$0000000C c_w.l(libshutdown2.o)
|
||||
0x08000166 0x08000166 0x00000000 Code RO 1256 .ARM.Collect$$libshutdown$$0000000F c_w.l(libshutdown2.o)
|
||||
0x08000166 0x08000166 0x00000002 Code RO 1257 .ARM.Collect$$libshutdown$$00000010 c_w.l(libshutdown2.o)
|
||||
0x08000168 0x08000168 0x00000000 Code RO 1129 .ARM.Collect$$rtentry$$00000000 c_w.l(__rtentry.o)
|
||||
0x08000168 0x08000168 0x00000000 Code RO 1131 .ARM.Collect$$rtentry$$00000002 c_w.l(__rtentry2.o)
|
||||
0x08000168 0x08000168 0x00000006 Code RO 1143 .ARM.Collect$$rtentry$$00000004 c_w.l(__rtentry4.o)
|
||||
0x0800016e 0x0800016e 0x00000000 Code RO 1133 .ARM.Collect$$rtentry$$00000009 c_w.l(__rtentry2.o)
|
||||
0x0800016e 0x0800016e 0x00000004 Code RO 1134 .ARM.Collect$$rtentry$$0000000A c_w.l(__rtentry2.o)
|
||||
0x08000172 0x08000172 0x00000000 Code RO 1136 .ARM.Collect$$rtentry$$0000000C c_w.l(__rtentry2.o)
|
||||
0x08000172 0x08000172 0x00000008 Code RO 1137 .ARM.Collect$$rtentry$$0000000D c_w.l(__rtentry2.o)
|
||||
0x0800017a 0x0800017a 0x00000002 Code RO 1158 .ARM.Collect$$rtexit$$00000000 c_w.l(rtexit.o)
|
||||
0x0800017c 0x0800017c 0x00000000 Code RO 1208 .ARM.Collect$$rtexit$$00000002 c_w.l(rtexit2.o)
|
||||
0x0800017c 0x0800017c 0x00000004 Code RO 1209 .ARM.Collect$$rtexit$$00000003 c_w.l(rtexit2.o)
|
||||
0x08000180 0x08000180 0x00000006 Code RO 1210 .ARM.Collect$$rtexit$$00000004 c_w.l(rtexit2.o)
|
||||
0x08000186 0x08000186 0x00000002 PAD
|
||||
0x08000188 0x08000188 0x00000040 Code RO 4 .text startup_stm32f103xb.o
|
||||
0x080001c8 0x080001c8 0x0000004e Code RO 862 .text c_w.l(rt_memclr_w.o)
|
||||
0x08000216 0x08000216 0x00000006 Code RO 864 .text c_w.l(heapauxi.o)
|
||||
0x0800021c 0x0800021c 0x0000004a Code RO 884 .text c_w.l(sys_stackheap_outer.o)
|
||||
0x08000266 0x08000266 0x00000012 Code RO 886 .text c_w.l(exit.o)
|
||||
0x08000278 0x08000278 0x00000008 Code RO 894 .text c_w.l(libspace.o)
|
||||
0x08000280 0x08000280 0x0000000c Code RO 957 .text c_w.l(sys_exit.o)
|
||||
0x0800028c 0x0800028c 0x00000002 Code RO 972 .text c_w.l(use_no_semi.o)
|
||||
0x0800028e 0x0800028e 0x00000000 Code RO 974 .text c_w.l(indicate_semi.o)
|
||||
0x080001c8 0x080001c8 0x0000004e Code RO 1123 .text c_w.l(rt_memclr_w.o)
|
||||
0x08000216 0x08000216 0x00000006 Code RO 1125 .text c_w.l(heapauxi.o)
|
||||
0x0800021c 0x0800021c 0x0000004a Code RO 1145 .text c_w.l(sys_stackheap_outer.o)
|
||||
0x08000266 0x08000266 0x00000012 Code RO 1147 .text c_w.l(exit.o)
|
||||
0x08000278 0x08000278 0x00000008 Code RO 1155 .text c_w.l(libspace.o)
|
||||
0x08000280 0x08000280 0x0000000c Code RO 1218 .text c_w.l(sys_exit.o)
|
||||
0x0800028c 0x0800028c 0x00000002 Code RO 1233 .text c_w.l(use_no_semi.o)
|
||||
0x0800028e 0x0800028e 0x00000000 Code RO 1235 .text c_w.l(indicate_semi.o)
|
||||
0x0800028e 0x0800028e 0x00000002 PAD
|
||||
0x08000290 0x08000290 0x00000004 Code RO 54 .text.BusFault_Handler stm32f1xx_it.o
|
||||
0x08000294 0x08000294 0x00000028 Code RO 822 .text.CANEmu_Init canemu.o
|
||||
0x080002bc 0x080002bc 0x000000d0 Code RO 826 .text.CANEmu_SendFrame canemu.o
|
||||
0x0800038c 0x0800038c 0x00000002 Code RO 60 .text.DebugMon_Handler stm32f1xx_it.o
|
||||
0x08000290 0x08000290 0x00000004 Code RO 72 .text.BusFault_Handler stm32f1xx_it.o
|
||||
0x08000294 0x08000294 0x00000028 Code RO 971 .text.CANEmu_Init canemu.o
|
||||
0x080002bc 0x080002bc 0x000000d0 Code RO 975 .text.CANEmu_SendFrame canemu.o
|
||||
0x0800038c 0x0800038c 0x00000002 Code RO 78 .text.DebugMon_Handler stm32f1xx_it.o
|
||||
0x0800038e 0x0800038e 0x00000002 PAD
|
||||
0x08000390 0x08000390 0x0000000e Code RO 15 .text.Error_Handler main.o
|
||||
0x0800039e 0x0800039e 0x00000002 PAD
|
||||
0x080003a0 0x080003a0 0x00000042 Code RO 450 .text.HAL_Delay stm32f1xx_hal.o
|
||||
0x080003e2 0x080003e2 0x00000002 PAD
|
||||
0x080003e4 0x080003e4 0x0000031e Code RO 544 .text.HAL_GPIO_Init stm32f1xx_hal_gpio.o
|
||||
0x08000702 0x08000702 0x00000002 PAD
|
||||
0x08000704 0x08000704 0x0000002e Code RO 550 .text.HAL_GPIO_WritePin stm32f1xx_hal_gpio.o
|
||||
0x08000732 0x08000732 0x00000002 PAD
|
||||
0x08000734 0x08000734 0x0000000c Code RO 442 .text.HAL_GetTick stm32f1xx_hal.o
|
||||
0x08000740 0x08000740 0x0000001a Code RO 440 .text.HAL_IncTick stm32f1xx_hal.o
|
||||
0x0800075a 0x0800075a 0x00000002 PAD
|
||||
0x0800075c 0x0800075c 0x00000026 Code RO 430 .text.HAL_Init stm32f1xx_hal.o
|
||||
0x08000782 0x08000782 0x00000002 PAD
|
||||
0x08000784 0x08000784 0x00000070 Code RO 432 .text.HAL_InitTick stm32f1xx_hal.o
|
||||
0x080007f4 0x080007f4 0x00000064 Code RO 73 .text.HAL_MspInit stm32f1xx_hal_msp.o
|
||||
0x08000858 0x08000858 0x00000032 Code RO 604 .text.HAL_NVIC_SetPriority stm32f1xx_hal_cortex.o
|
||||
0x0800088a 0x0800088a 0x00000002 PAD
|
||||
0x0800088c 0x0800088c 0x00000010 Code RO 600 .text.HAL_NVIC_SetPriorityGrouping stm32f1xx_hal_cortex.o
|
||||
0x0800089c 0x0800089c 0x00000256 Code RO 496 .text.HAL_RCC_ClockConfig stm32f1xx_hal_rcc.o
|
||||
0x08000af2 0x08000af2 0x00000002 PAD
|
||||
0x08000af4 0x08000af4 0x000000bc Code RO 498 .text.HAL_RCC_GetSysClockFreq stm32f1xx_hal_rcc.o
|
||||
0x08000bb0 0x08000bb0 0x0000067a Code RO 492 .text.HAL_RCC_OscConfig stm32f1xx_hal_rcc.o
|
||||
0x0800122a 0x0800122a 0x00000002 PAD
|
||||
0x0800122c 0x0800122c 0x00000010 Code RO 624 .text.HAL_SYSTICK_Config stm32f1xx_hal_cortex.o
|
||||
0x0800123c 0x0800123c 0x000000dc Code RO 407 .text.HAL_TIMEx_MasterConfigSynchronization stm32f1xx_hal_tim_ex.o
|
||||
0x08001318 0x08001318 0x0000009c Code RO 94 .text.HAL_TIM_Base_Init stm32f1xx_hal_tim.o
|
||||
0x080013b4 0x080013b4 0x00000034 Code RO 36 .text.HAL_TIM_Base_MspInit tim.o
|
||||
0x080013e8 0x080013e8 0x00000184 Code RO 286 .text.HAL_TIM_ConfigClockSource stm32f1xx_hal_tim.o
|
||||
0x0800156c 0x0800156c 0x00000004 Code RO 50 .text.HardFault_Handler stm32f1xx_it.o
|
||||
0x08001570 0x08001570 0x000000b6 Code RO 26 .text.MX_GPIO_Init gpio.o
|
||||
0x08001626 0x08001626 0x00000002 PAD
|
||||
0x08001628 0x08001628 0x0000007e Code RO 34 .text.MX_TIM2_Init tim.o
|
||||
0x080016a6 0x080016a6 0x00000002 PAD
|
||||
0x080016a8 0x080016a8 0x00000004 Code RO 52 .text.MemManage_Handler stm32f1xx_it.o
|
||||
0x080016ac 0x080016ac 0x00000004 Code RO 48 .text.NMI_Handler stm32f1xx_it.o
|
||||
0x080016b0 0x080016b0 0x0000006c Code RO 610 .text.NVIC_EncodePriority stm32f1xx_hal_cortex.o
|
||||
0x0800171c 0x0800171c 0x00000002 Code RO 62 .text.PendSV_Handler stm32f1xx_it.o
|
||||
0x0800171e 0x0800171e 0x00000002 PAD
|
||||
0x08001720 0x08001720 0x0000003a Code RO 494 .text.RCC_Delay stm32f1xx_hal_rcc.o
|
||||
0x0800175a 0x0800175a 0x00000002 PAD
|
||||
0x0800175c 0x0800175c 0x00000002 Code RO 58 .text.SVC_Handler stm32f1xx_it.o
|
||||
0x0800175e 0x0800175e 0x00000002 PAD
|
||||
0x08001760 0x08001760 0x00000052 Code RO 626 .text.SysTick_Config stm32f1xx_hal_cortex.o
|
||||
0x080017b2 0x080017b2 0x00000002 PAD
|
||||
0x080017b4 0x080017b4 0x00000008 Code RO 64 .text.SysTick_Handler stm32f1xx_it.o
|
||||
0x080017bc 0x080017bc 0x0000006c Code RO 13 .text.SystemClock_Config main.o
|
||||
0x08001828 0x08001828 0x00000002 Code RO 808 .text.SystemInit system_stm32f1xx.o
|
||||
0x0800182a 0x0800182a 0x00000002 PAD
|
||||
0x0800182c 0x0800182c 0x00000106 Code RO 98 .text.TIM_Base_SetConfig stm32f1xx_hal_tim.o
|
||||
0x08001932 0x08001932 0x00000002 PAD
|
||||
0x08001934 0x08001934 0x00000034 Code RO 284 .text.TIM_ETR_SetConfig stm32f1xx_hal_tim.o
|
||||
0x08001968 0x08001968 0x0000002a Code RO 290 .text.TIM_ITRx_SetConfig stm32f1xx_hal_tim.o
|
||||
0x08001992 0x08001992 0x00000002 PAD
|
||||
0x08001994 0x08001994 0x00000050 Code RO 288 .text.TIM_TI1_ConfigInputStage stm32f1xx_hal_tim.o
|
||||
0x080019e4 0x080019e4 0x00000052 Code RO 292 .text.TIM_TI2_ConfigInputStage stm32f1xx_hal_tim.o
|
||||
0x08001a36 0x08001a36 0x00000002 PAD
|
||||
0x08001a38 0x08001a38 0x00000004 Code RO 56 .text.UsageFault_Handler stm32f1xx_it.o
|
||||
0x08001a3c 0x08001a3c 0x00000010 Code RO 606 .text.__NVIC_GetPriorityGrouping stm32f1xx_hal_cortex.o
|
||||
0x08001a4c 0x08001a4c 0x00000042 Code RO 608 .text.__NVIC_SetPriority stm32f1xx_hal_cortex.o
|
||||
0x08001a8e 0x08001a8e 0x00000002 PAD
|
||||
0x08001a90 0x08001a90 0x0000003c Code RO 602 .text.__NVIC_SetPriorityGrouping stm32f1xx_hal_cortex.o
|
||||
0x08001acc 0x08001acc 0x00000030 Code RO 836 .text.append_bit canform.o
|
||||
0x08001afc 0x08001afc 0x00000040 Code RO 838 .text.append_bits canform.o
|
||||
0x08001b3c 0x08001b3c 0x000000c4 Code RO 842 .text.apply_bit_stuffing_with_error canform.o
|
||||
0x08001c00 0x08001c00 0x00000076 Code RO 840 .text.compute_crc15 canform.o
|
||||
0x08001c76 0x08001c76 0x00000002 PAD
|
||||
0x08001c78 0x08001c78 0x00000030 Code RO 844 .text.flip_bit canform.o
|
||||
0x08001ca8 0x08001ca8 0x000003d2 Code RO 846 .text.form_CAN_bitstream_full canform.o
|
||||
0x0800207a 0x0800207a 0x00000002 PAD
|
||||
0x0800207c 0x0800207c 0x0000004c Code RO 11 .text.main main.o
|
||||
0x080020c8 0x080020c8 0x0000004a Code RO 824 .text.wait_exact_ticks canemu.o
|
||||
0x08002112 0x08002112 0x00000010 Data RO 813 .rodata.AHBPrescTable system_stm32f1xx.o
|
||||
0x08002122 0x08002122 0x00000010 Data RO 520 .rodata.HAL_RCC_GetSysClockFreq.aPLLMULFactorTable stm32f1xx_hal_rcc.o
|
||||
0x08002132 0x08002132 0x00000002 Data RO 521 .rodata.HAL_RCC_GetSysClockFreq.aPredivFactorTable stm32f1xx_hal_rcc.o
|
||||
0x08002134 0x08002134 0x00000020 Data RO 1030 Region$$Table anon$$obj.o
|
||||
0x080003a0 0x080003a0 0x0000007c Code RO 595 .text.HAL_DMA_Abort stm32f1xx_hal_dma.o
|
||||
0x0800041c 0x0800041c 0x0000000c Code RO 609 .text.HAL_DMA_GetError stm32f1xx_hal_dma.o
|
||||
0x08000428 0x08000428 0x00000042 Code RO 468 .text.HAL_Delay stm32f1xx_hal.o
|
||||
0x0800046a 0x0800046a 0x00000002 PAD
|
||||
0x0800046c 0x0800046c 0x0000031e Code RO 562 .text.HAL_GPIO_Init stm32f1xx_hal_gpio.o
|
||||
0x0800078a 0x0800078a 0x00000002 PAD
|
||||
0x0800078c 0x0800078c 0x0000002e Code RO 568 .text.HAL_GPIO_WritePin stm32f1xx_hal_gpio.o
|
||||
0x080007ba 0x080007ba 0x00000002 PAD
|
||||
0x080007bc 0x080007bc 0x0000000c Code RO 460 .text.HAL_GetTick stm32f1xx_hal.o
|
||||
0x080007c8 0x080007c8 0x0000001a Code RO 458 .text.HAL_IncTick stm32f1xx_hal.o
|
||||
0x080007e2 0x080007e2 0x00000002 PAD
|
||||
0x080007e4 0x080007e4 0x00000026 Code RO 448 .text.HAL_Init stm32f1xx_hal.o
|
||||
0x0800080a 0x0800080a 0x00000002 PAD
|
||||
0x0800080c 0x0800080c 0x00000070 Code RO 450 .text.HAL_InitTick stm32f1xx_hal.o
|
||||
0x0800087c 0x0800087c 0x00000064 Code RO 91 .text.HAL_MspInit stm32f1xx_hal_msp.o
|
||||
0x080008e0 0x080008e0 0x00000032 Code RO 622 .text.HAL_NVIC_SetPriority stm32f1xx_hal_cortex.o
|
||||
0x08000912 0x08000912 0x00000002 PAD
|
||||
0x08000914 0x08000914 0x00000010 Code RO 618 .text.HAL_NVIC_SetPriorityGrouping stm32f1xx_hal_cortex.o
|
||||
0x08000924 0x08000924 0x00000256 Code RO 514 .text.HAL_RCC_ClockConfig stm32f1xx_hal_rcc.o
|
||||
0x08000b7a 0x08000b7a 0x00000002 PAD
|
||||
0x08000b7c 0x08000b7c 0x0000000c Code RO 524 .text.HAL_RCC_GetHCLKFreq stm32f1xx_hal_rcc.o
|
||||
0x08000b88 0x08000b88 0x00000022 Code RO 526 .text.HAL_RCC_GetPCLK1Freq stm32f1xx_hal_rcc.o
|
||||
0x08000baa 0x08000baa 0x00000002 PAD
|
||||
0x08000bac 0x08000bac 0x00000022 Code RO 528 .text.HAL_RCC_GetPCLK2Freq stm32f1xx_hal_rcc.o
|
||||
0x08000bce 0x08000bce 0x00000002 PAD
|
||||
0x08000bd0 0x08000bd0 0x000000bc Code RO 516 .text.HAL_RCC_GetSysClockFreq stm32f1xx_hal_rcc.o
|
||||
0x08000c8c 0x08000c8c 0x0000067a Code RO 510 .text.HAL_RCC_OscConfig stm32f1xx_hal_rcc.o
|
||||
0x08001306 0x08001306 0x00000002 PAD
|
||||
0x08001308 0x08001308 0x00000010 Code RO 642 .text.HAL_SYSTICK_Config stm32f1xx_hal_cortex.o
|
||||
0x08001318 0x08001318 0x000000dc Code RO 425 .text.HAL_TIMEx_MasterConfigSynchronization stm32f1xx_hal_tim_ex.o
|
||||
0x080013f4 0x080013f4 0x0000009c Code RO 112 .text.HAL_TIM_Base_Init stm32f1xx_hal_tim.o
|
||||
0x08001490 0x08001490 0x00000068 Code RO 39 .text.HAL_TIM_Base_MspInit tim.o
|
||||
0x080014f8 0x080014f8 0x00000052 Code RO 128 .text.HAL_TIM_Base_Stop_IT stm32f1xx_hal_tim.o
|
||||
0x0800154a 0x0800154a 0x00000002 PAD
|
||||
0x0800154c 0x0800154c 0x00000184 Code RO 304 .text.HAL_TIM_ConfigClockSource stm32f1xx_hal_tim.o
|
||||
0x080016d0 0x080016d0 0x00000196 Code RO 884 .text.HAL_UART_Abort stm32f1xx_hal_uart.o
|
||||
0x08001866 0x08001866 0x00000002 PAD
|
||||
0x08001868 0x08001868 0x00000116 Code RO 888 .text.HAL_UART_AbortReceive stm32f1xx_hal_uart.o
|
||||
0x0800197e 0x0800197e 0x00000002 PAD
|
||||
0x08001980 0x08001980 0x000000ba Code RO 886 .text.HAL_UART_AbortTransmit stm32f1xx_hal_uart.o
|
||||
0x08001a3a 0x08001a3a 0x00000002 PAD
|
||||
0x08001a3c 0x08001a3c 0x0000009e Code RO 826 .text.HAL_UART_Init stm32f1xx_hal_uart.o
|
||||
0x08001ada 0x08001ada 0x00000002 PAD
|
||||
0x08001adc 0x08001adc 0x00000098 Code RO 54 .text.HAL_UART_MspInit usart.o
|
||||
0x08001b74 0x08001b74 0x00000056 Code RO 850 .text.HAL_UART_Receive_IT stm32f1xx_hal_uart.o
|
||||
0x08001bca 0x08001bca 0x00000002 PAD
|
||||
0x08001bcc 0x08001bcc 0x00000004 Code RO 68 .text.HardFault_Handler stm32f1xx_it.o
|
||||
0x08001bd0 0x08001bd0 0x0000004e Code RO 1031 .text.MB_DevoceInentificationInit modbus.o
|
||||
0x08001c1e 0x08001c1e 0x00000002 PAD
|
||||
0x08001c20 0x08001c20 0x00000042 Code RO 1029 .text.MODBUS_FirstInit modbus.o
|
||||
0x08001c62 0x08001c62 0x00000002 PAD
|
||||
0x08001c64 0x08001c64 0x000000b6 Code RO 27 .text.MX_GPIO_Init gpio.o
|
||||
0x08001d1a 0x08001d1a 0x00000002 PAD
|
||||
0x08001d1c 0x08001d1c 0x0000007e Code RO 35 .text.MX_TIM2_Init tim.o
|
||||
0x08001d9a 0x08001d9a 0x00000002 PAD
|
||||
0x08001d9c 0x08001d9c 0x00000082 Code RO 37 .text.MX_TIM3_Init tim.o
|
||||
0x08001e1e 0x08001e1e 0x00000002 PAD
|
||||
0x08001e20 0x08001e20 0x00000040 Code RO 52 .text.MX_USART1_UART_Init usart.o
|
||||
0x08001e60 0x08001e60 0x00000004 Code RO 70 .text.MemManage_Handler stm32f1xx_it.o
|
||||
0x08001e64 0x08001e64 0x00000004 Code RO 66 .text.NMI_Handler stm32f1xx_it.o
|
||||
0x08001e68 0x08001e68 0x0000006c Code RO 628 .text.NVIC_EncodePriority stm32f1xx_hal_cortex.o
|
||||
0x08001ed4 0x08001ed4 0x00000002 Code RO 80 .text.PendSV_Handler stm32f1xx_it.o
|
||||
0x08001ed6 0x08001ed6 0x00000002 PAD
|
||||
0x08001ed8 0x08001ed8 0x0000003a Code RO 512 .text.RCC_Delay stm32f1xx_hal_rcc.o
|
||||
0x08001f12 0x08001f12 0x00000002 PAD
|
||||
0x08001f14 0x08001f14 0x0000015c Code RO 1086 .text.RS_Abort rs_message.o
|
||||
0x08002070 0x08002070 0x00000070 Code RO 1094 .text.RS_Init rs_message.o
|
||||
0x080020e0 0x080020e0 0x000000b0 Code RO 1084 .text.RS_Receive_IT rs_message.o
|
||||
0x08002190 0x08002190 0x00000002 Code RO 76 .text.SVC_Handler stm32f1xx_it.o
|
||||
0x08002192 0x08002192 0x00000002 PAD
|
||||
0x08002194 0x08002194 0x00000052 Code RO 644 .text.SysTick_Config stm32f1xx_hal_cortex.o
|
||||
0x080021e6 0x080021e6 0x00000002 PAD
|
||||
0x080021e8 0x080021e8 0x00000008 Code RO 82 .text.SysTick_Handler stm32f1xx_it.o
|
||||
0x080021f0 0x080021f0 0x0000006c Code RO 13 .text.SystemClock_Config main.o
|
||||
0x0800225c 0x0800225c 0x00000002 Code RO 957 .text.SystemInit system_stm32f1xx.o
|
||||
0x0800225e 0x0800225e 0x00000002 PAD
|
||||
0x08002260 0x08002260 0x00000106 Code RO 116 .text.TIM_Base_SetConfig stm32f1xx_hal_tim.o
|
||||
0x08002366 0x08002366 0x00000002 PAD
|
||||
0x08002368 0x08002368 0x00000034 Code RO 302 .text.TIM_ETR_SetConfig stm32f1xx_hal_tim.o
|
||||
0x0800239c 0x0800239c 0x0000002a Code RO 308 .text.TIM_ITRx_SetConfig stm32f1xx_hal_tim.o
|
||||
0x080023c6 0x080023c6 0x00000002 PAD
|
||||
0x080023c8 0x080023c8 0x00000050 Code RO 306 .text.TIM_TI1_ConfigInputStage stm32f1xx_hal_tim.o
|
||||
0x08002418 0x08002418 0x00000052 Code RO 310 .text.TIM_TI2_ConfigInputStage stm32f1xx_hal_tim.o
|
||||
0x0800246a 0x0800246a 0x00000002 PAD
|
||||
0x0800246c 0x0800246c 0x000000ba Code RO 830 .text.UART_SetConfig stm32f1xx_hal_uart.o
|
||||
0x08002526 0x08002526 0x00000002 PAD
|
||||
0x08002528 0x08002528 0x00000062 Code RO 852 .text.UART_Start_Receive_IT stm32f1xx_hal_uart.o
|
||||
0x0800258a 0x0800258a 0x00000002 PAD
|
||||
0x0800258c 0x0800258c 0x00000004 Code RO 74 .text.UsageFault_Handler stm32f1xx_it.o
|
||||
0x08002590 0x08002590 0x00000010 Code RO 624 .text.__NVIC_GetPriorityGrouping stm32f1xx_hal_cortex.o
|
||||
0x080025a0 0x080025a0 0x00000042 Code RO 626 .text.__NVIC_SetPriority stm32f1xx_hal_cortex.o
|
||||
0x080025e2 0x080025e2 0x00000002 PAD
|
||||
0x080025e4 0x080025e4 0x0000003c Code RO 620 .text.__NVIC_SetPriorityGrouping stm32f1xx_hal_cortex.o
|
||||
0x08002620 0x08002620 0x00000030 Code RO 985 .text.append_bit canform.o
|
||||
0x08002650 0x08002650 0x00000040 Code RO 987 .text.append_bits canform.o
|
||||
0x08002690 0x08002690 0x000000c4 Code RO 991 .text.apply_bit_stuffing_with_error canform.o
|
||||
0x08002754 0x08002754 0x00000076 Code RO 989 .text.compute_crc15 canform.o
|
||||
0x080027ca 0x080027ca 0x00000002 PAD
|
||||
0x080027cc 0x080027cc 0x00000030 Code RO 993 .text.flip_bit canform.o
|
||||
0x080027fc 0x080027fc 0x000003d2 Code RO 995 .text.form_CAN_bitstream_full canform.o
|
||||
0x08002bce 0x08002bce 0x00000002 PAD
|
||||
0x08002bd0 0x08002bd0 0x000001e8 Code RO 11 .text.main main.o
|
||||
0x08002db8 0x08002db8 0x0000004a Code RO 973 .text.wait_exact_ticks canemu.o
|
||||
0x08002e02 0x08002e02 0x00000010 Data RO 962 .rodata.AHBPrescTable system_stm32f1xx.o
|
||||
0x08002e12 0x08002e12 0x00000008 Data RO 963 .rodata.APBPrescTable system_stm32f1xx.o
|
||||
0x08002e1a 0x08002e1a 0x00000010 Data RO 538 .rodata.HAL_RCC_GetSysClockFreq.aPLLMULFactorTable stm32f1xx_hal_rcc.o
|
||||
0x08002e2a 0x08002e2a 0x00000002 Data RO 539 .rodata.HAL_RCC_GetSysClockFreq.aPredivFactorTable stm32f1xx_hal_rcc.o
|
||||
0x08002e2c 0x08002e2c 0x0000001a Data RO 1072 .rodata.str1.1 modbus.o
|
||||
0x08002e46 0x08002e46 0x00000002 PAD
|
||||
0x08002e48 0x08002e48 0x00000020 Data RO 1291 Region$$Table anon$$obj.o
|
||||
|
||||
|
||||
Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x08002158, Size: 0x000008f8, Max: 0x00005000, ABSOLUTE)
|
||||
Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x08002e68, Size: 0x00000c38, Max: 0x00005000, ABSOLUTE)
|
||||
|
||||
Exec Addr Load Addr Size Type Attr Idx E Section Name Object
|
||||
|
||||
0x20000000 0x08002158 0x00000004 Data RW 812 .data.SystemCoreClock system_stm32f1xx.o
|
||||
0x20000004 0x0800215c 0x00000001 Data RW 481 .data.uwTickFreq stm32f1xx_hal.o
|
||||
0x20000005 0x0800215d 0x00000003 PAD
|
||||
0x20000008 0x08002160 0x00000004 Data RW 480 .data.uwTickPrio stm32f1xx_hal.o
|
||||
0x2000000c 0x08002164 0x00000004 PAD
|
||||
0x20000010 - 0x00000060 Zero RW 895 .bss c_w.l(libspace.o)
|
||||
0x20000070 - 0x00000004 Zero RW 828 .bss.CANEMU_BIT_TICKS canemu.o
|
||||
0x20000074 - 0x00000100 Zero RW 852 .bss.can_bits canform.o
|
||||
0x20000174 - 0x00000004 Zero RW 849 .bss.can_bits_len canform.o
|
||||
0x20000178 - 0x00000001 Zero RW 850 .bss.err_indices_count canform.o
|
||||
0x20000179 0x08002164 0x00000003 PAD
|
||||
0x2000017c - 0x00000028 Zero RW 17 .bss.hcanemu main.o
|
||||
0x200001a4 - 0x00000048 Zero RW 40 .bss.htim2 tim.o
|
||||
0x200001ec - 0x00000100 Zero RW 851 .bss.raw_bits canform.o
|
||||
0x200002ec - 0x00000004 Zero RW 848 .bss.raw_len canform.o
|
||||
0x200002f0 - 0x00000004 Zero RW 482 .bss.uwTick stm32f1xx_hal.o
|
||||
0x200002f4 0x08002164 0x00000004 PAD
|
||||
0x200002f8 - 0x00000200 Zero RW 2 HEAP startup_stm32f103xb.o
|
||||
0x200004f8 - 0x00000400 Zero RW 1 STACK startup_stm32f103xb.o
|
||||
0x20000000 0x08002e68 0x00000004 Data RW 961 .data.SystemCoreClock system_stm32f1xx.o
|
||||
0x20000004 0x08002e6c 0x00000001 Data RW 499 .data.uwTickFreq stm32f1xx_hal.o
|
||||
0x20000005 0x08002e6d 0x00000003 PAD
|
||||
0x20000008 0x08002e70 0x00000004 Data RW 498 .data.uwTickPrio stm32f1xx_hal.o
|
||||
0x2000000c 0x08002e74 0x00000004 PAD
|
||||
0x20000010 - 0x00000060 Zero RW 1156 .bss c_w.l(libspace.o)
|
||||
0x20000070 - 0x00000004 Zero RW 977 .bss.CANEMU_BIT_TICKS canemu.o
|
||||
0x20000074 - 0x0000003c Zero RW 1070 .bss.MB_DATA modbus.o
|
||||
0x200000b0 - 0x00000038 Zero RW 1071 .bss.MB_INFO modbus.o
|
||||
0x200000e8 - 0x0000010c Zero RW 1076 .bss.MODBUS_MSG modbus.o
|
||||
0x200001f4 - 0x00000103 Zero RW 1114 .bss.RS_Buffer rs_message.o
|
||||
0x200002f7 - 0x00000100 Zero RW 1001 .bss.can_bits canform.o
|
||||
0x200003f7 0x08002e74 0x00000001 PAD
|
||||
0x200003f8 - 0x00000004 Zero RW 998 .bss.can_bits_len canform.o
|
||||
0x200003fc - 0x00000001 Zero RW 999 .bss.err_indices_count canform.o
|
||||
0x200003fd 0x08002e74 0x00000003 PAD
|
||||
0x20000400 - 0x00000004 Zero RW 17 .bss.flag_manual main.o
|
||||
0x20000404 - 0x0000002c Zero RW 18 .bss.hcanemu main.o
|
||||
0x20000430 - 0x00000028 Zero RW 1069 .bss.hmodbus1 modbus.o
|
||||
0x20000458 - 0x00000048 Zero RW 43 .bss.htim2 tim.o
|
||||
0x200004a0 - 0x00000048 Zero RW 44 .bss.htim3 tim.o
|
||||
0x200004e8 - 0x00000048 Zero RW 58 .bss.huart1 usart.o
|
||||
0x20000530 - 0x00000100 Zero RW 1000 .bss.raw_bits canform.o
|
||||
0x20000630 - 0x00000004 Zero RW 997 .bss.raw_len canform.o
|
||||
0x20000634 - 0x00000004 Zero RW 500 .bss.uwTick stm32f1xx_hal.o
|
||||
0x20000638 - 0x00000200 Zero RW 2 HEAP startup_stm32f103xb.o
|
||||
0x20000838 - 0x00000400 Zero RW 1 STACK startup_stm32f103xb.o
|
||||
|
||||
|
||||
==============================================================================
|
||||
@@ -2099,26 +2675,31 @@ Image component sizes
|
||||
|
||||
Code (inc. data) RO Data RW Data ZI Data Debug Object Name
|
||||
|
||||
322 0 0 0 4 2724 canemu.o
|
||||
322 0 0 0 4 2746 canemu.o
|
||||
1452 0 0 0 521 4078 canform.o
|
||||
182 0 0 0 0 1516 gpio.o
|
||||
198 0 0 0 40 2510 main.o
|
||||
610 0 0 0 48 2785 main.o
|
||||
144 0 26 0 424 15875 modbus.o
|
||||
636 0 0 0 259 10566 rs_message.o
|
||||
64 26 236 0 1536 780 startup_stm32f103xb.o
|
||||
254 0 0 5 4 5537 stm32f1xx_hal.o
|
||||
414 0 0 0 0 7488 stm32f1xx_hal_cortex.o
|
||||
136 0 0 0 0 6248 stm32f1xx_hal_dma.o
|
||||
844 0 0 0 0 4192 stm32f1xx_hal_gpio.o
|
||||
100 0 0 0 0 1176 stm32f1xx_hal_msp.o
|
||||
2502 0 18 0 0 7388 stm32f1xx_hal_rcc.o
|
||||
1062 0 0 0 0 35467 stm32f1xx_hal_tim.o
|
||||
2582 0 18 0 0 7388 stm32f1xx_hal_rcc.o
|
||||
1144 0 0 0 0 35467 stm32f1xx_hal_tim.o
|
||||
220 0 0 0 0 15009 stm32f1xx_hal_tim_ex.o
|
||||
1398 0 0 0 0 19913 stm32f1xx_hal_uart.o
|
||||
34 0 0 0 0 1003 stm32f1xx_it.o
|
||||
2 0 16 4 0 1547 system_stm32f1xx.o
|
||||
178 0 0 0 72 4433 tim.o
|
||||
2 0 24 4 0 1547 system_stm32f1xx.o
|
||||
360 0 0 0 144 4755 tim.o
|
||||
216 0 0 0 72 4069 usart.o
|
||||
|
||||
----------------------------------------------------------------------
|
||||
7874 26 302 12 2188 94848 Object Totals
|
||||
11186 26 338 12 3020 152138 Object Totals
|
||||
0 0 32 0 0 0 (incl. Generated)
|
||||
46 0 0 3 11 0 (incl. Padding)
|
||||
72 0 2 3 8 0 (incl. Padding)
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
@@ -2166,15 +2747,15 @@ Image component sizes
|
||||
|
||||
Code (inc. data) RO Data RW Data ZI Data Debug
|
||||
|
||||
8230 42 302 12 2284 95092 Grand Totals
|
||||
8230 42 302 12 2284 95092 ELF Image Totals
|
||||
8230 42 302 12 0 0 ROM Totals
|
||||
11542 42 338 12 3116 152282 Grand Totals
|
||||
11542 42 338 12 3116 152282 ELF Image Totals
|
||||
11542 42 338 12 0 0 ROM Totals
|
||||
|
||||
==============================================================================
|
||||
|
||||
Total RO Size (Code + RO Data) 8532 ( 8.33kB)
|
||||
Total RW Size (RW Data + ZI Data) 2296 ( 2.24kB)
|
||||
Total ROM Size (Code + RO Data + RW Data) 8544 ( 8.34kB)
|
||||
Total RO Size (Code + RO Data) 11880 ( 11.60kB)
|
||||
Total RW Size (RW Data + ZI Data) 3128 ( 3.05kB)
|
||||
Total ROM Size (Code + RO Data + RW Data) 11892 ( 11.61kB)
|
||||
|
||||
==============================================================================
|
||||
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -28,5 +28,6 @@ canemu/canemu.o: ..\Core\CANEmu\canEmu.c ..\Core\CANEmu\canEmu.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_pwr.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim_ex.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_uart.h \
|
||||
C:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \
|
||||
C:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h ..\Core\Inc\tim.h
|
||||
|
||||
Binary file not shown.
@@ -27,5 +27,6 @@ canemu/canform.o: ..\Core\CANEmu\canform.c ..\Core\CANEmu\canform.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_pwr.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim_ex.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_uart.h \
|
||||
C:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \
|
||||
C:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h
|
||||
|
||||
31
MDK-ARM/CANEmu/crc_algs.d
Normal file
31
MDK-ARM/CANEmu/crc_algs.d
Normal file
@@ -0,0 +1,31 @@
|
||||
canemu/crc_algs.o: ..\Core\Modbus\crc_algs.c ..\Core\Modbus\crc_algs.h \
|
||||
..\Core\Modbus\modbus_config.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal.h \
|
||||
..\Core\Inc\stm32f1xx_hal_conf.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_rcc.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_def.h \
|
||||
..\Drivers\CMSIS\Device\ST\STM32F1xx\Include\stm32f1xx.h \
|
||||
..\Drivers\CMSIS\Device\ST\STM32F1xx\Include\stm32f103xb.h \
|
||||
..\Drivers\CMSIS\Include\core_cm3.h \
|
||||
C:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \
|
||||
..\Drivers\CMSIS\Include\cmsis_version.h \
|
||||
..\Drivers\CMSIS\Include\cmsis_compiler.h \
|
||||
..\Drivers\CMSIS\Include\cmsis_armclang.h \
|
||||
C:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \
|
||||
C:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \
|
||||
..\Drivers\CMSIS\Device\ST\STM32F1xx\Include\system_stm32f1xx.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\Legacy\stm32_hal_legacy.h \
|
||||
C:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_rcc_ex.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_gpio.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_gpio_ex.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_exti.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_dma.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_dma_ex.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_cortex.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_flash.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_flash_ex.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_pwr.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim_ex.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_uart.h
|
||||
BIN
MDK-ARM/CANEmu/crc_algs.o
Normal file
BIN
MDK-ARM/CANEmu/crc_algs.o
Normal file
Binary file not shown.
@@ -26,4 +26,5 @@ canemu/gpio.o: ..\Core\Src\gpio.c ..\Core\Inc\gpio.h ..\Core\Inc\main.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_flash_ex.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_pwr.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim_ex.h
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim_ex.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_uart.h
|
||||
|
||||
@@ -27,7 +27,11 @@ canemu/main.o: ..\Core\Src\main.c ..\Core\Inc\main.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_pwr.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim_ex.h \
|
||||
..\Core\Inc\tim.h ..\Core\Inc\gpio.h ..\Core\CANEmu\canEmu.h \
|
||||
..\Core\CANEmu\canform.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_uart.h \
|
||||
..\Core\Inc\tim.h ..\Core\Inc\usart.h ..\Core\Inc\gpio.h \
|
||||
..\Core\CANEmu\canEmu.h ..\Core\CANEmu\canform.h \
|
||||
C:\Keil_v5\ARM\ARMCLANG\Bin\..\include\string.h \
|
||||
C:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h
|
||||
C:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdbool.h \
|
||||
..\Core\Modbus\rs_message.h ..\Core\Modbus\modbus.h \
|
||||
..\Core\Modbus\modbus_config.h ..\Core\Modbus\modbus_data.h \
|
||||
..\Core\Modbus\crc_algs.h
|
||||
|
||||
Binary file not shown.
32
MDK-ARM/CANEmu/modbus.d
Normal file
32
MDK-ARM/CANEmu/modbus.d
Normal file
@@ -0,0 +1,32 @@
|
||||
canemu/modbus.o: ..\Core\Modbus\modbus.c ..\Core\Modbus\rs_message.h \
|
||||
..\Core\Modbus\modbus.h ..\Core\Modbus\modbus_config.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal.h \
|
||||
..\Core\Inc\stm32f1xx_hal_conf.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_rcc.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_def.h \
|
||||
..\Drivers\CMSIS\Device\ST\STM32F1xx\Include\stm32f1xx.h \
|
||||
..\Drivers\CMSIS\Device\ST\STM32F1xx\Include\stm32f103xb.h \
|
||||
..\Drivers\CMSIS\Include\core_cm3.h \
|
||||
C:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \
|
||||
..\Drivers\CMSIS\Include\cmsis_version.h \
|
||||
..\Drivers\CMSIS\Include\cmsis_compiler.h \
|
||||
..\Drivers\CMSIS\Include\cmsis_armclang.h \
|
||||
C:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \
|
||||
C:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \
|
||||
..\Drivers\CMSIS\Device\ST\STM32F1xx\Include\system_stm32f1xx.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\Legacy\stm32_hal_legacy.h \
|
||||
C:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_rcc_ex.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_gpio.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_gpio_ex.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_exti.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_dma.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_dma_ex.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_cortex.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_flash.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_flash_ex.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_pwr.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim_ex.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_uart.h \
|
||||
..\Core\Modbus\modbus_data.h ..\Core\Modbus\crc_algs.h
|
||||
BIN
MDK-ARM/CANEmu/modbus.o
Normal file
BIN
MDK-ARM/CANEmu/modbus.o
Normal file
Binary file not shown.
33
MDK-ARM/CANEmu/rs_message.d
Normal file
33
MDK-ARM/CANEmu/rs_message.d
Normal file
@@ -0,0 +1,33 @@
|
||||
canemu/rs_message.o: ..\Core\Modbus\rs_message.c \
|
||||
..\Core\Modbus\rs_message.h ..\Core\Modbus\modbus.h \
|
||||
..\Core\Modbus\modbus_config.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal.h \
|
||||
..\Core\Inc\stm32f1xx_hal_conf.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_rcc.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_def.h \
|
||||
..\Drivers\CMSIS\Device\ST\STM32F1xx\Include\stm32f1xx.h \
|
||||
..\Drivers\CMSIS\Device\ST\STM32F1xx\Include\stm32f103xb.h \
|
||||
..\Drivers\CMSIS\Include\core_cm3.h \
|
||||
C:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stdint.h \
|
||||
..\Drivers\CMSIS\Include\cmsis_version.h \
|
||||
..\Drivers\CMSIS\Include\cmsis_compiler.h \
|
||||
..\Drivers\CMSIS\Include\cmsis_armclang.h \
|
||||
C:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_compat.h \
|
||||
C:\Keil_v5\ARM\ARMCLANG\Bin\..\include\arm_acle.h \
|
||||
..\Drivers\CMSIS\Device\ST\STM32F1xx\Include\system_stm32f1xx.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\Legacy\stm32_hal_legacy.h \
|
||||
C:\Keil_v5\ARM\ARMCLANG\Bin\..\include\stddef.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_rcc_ex.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_gpio.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_gpio_ex.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_exti.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_dma.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_dma_ex.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_cortex.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_flash.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_flash_ex.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_pwr.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim_ex.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_uart.h \
|
||||
..\Core\Modbus\modbus_data.h ..\Core\Modbus\crc_algs.h
|
||||
BIN
MDK-ARM/CANEmu/rs_message.o
Normal file
BIN
MDK-ARM/CANEmu/rs_message.o
Normal file
Binary file not shown.
@@ -27,4 +27,5 @@ canemu/stm32f1xx_hal.o: \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_flash_ex.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_pwr.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim_ex.h
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim_ex.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_uart.h
|
||||
|
||||
@@ -27,4 +27,5 @@ canemu/stm32f1xx_hal_cortex.o: \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_flash_ex.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_pwr.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim_ex.h
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim_ex.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_uart.h
|
||||
|
||||
@@ -27,4 +27,5 @@ canemu/stm32f1xx_hal_dma.o: \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_flash_ex.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_pwr.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim_ex.h
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim_ex.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_uart.h
|
||||
|
||||
@@ -27,4 +27,5 @@ canemu/stm32f1xx_hal_exti.o: \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_flash_ex.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_pwr.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim_ex.h
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim_ex.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_uart.h
|
||||
|
||||
@@ -27,4 +27,5 @@ canemu/stm32f1xx_hal_flash.o: \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_flash_ex.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_pwr.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim_ex.h
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim_ex.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_uart.h
|
||||
|
||||
@@ -27,4 +27,5 @@ canemu/stm32f1xx_hal_flash_ex.o: \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_flash_ex.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_pwr.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim_ex.h
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim_ex.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_uart.h
|
||||
|
||||
@@ -27,4 +27,5 @@ canemu/stm32f1xx_hal_gpio.o: \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_flash_ex.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_pwr.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim_ex.h
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim_ex.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_uart.h
|
||||
|
||||
@@ -27,4 +27,5 @@ canemu/stm32f1xx_hal_gpio_ex.o: \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_flash_ex.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_pwr.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim_ex.h
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim_ex.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_uart.h
|
||||
|
||||
@@ -26,4 +26,5 @@ canemu/stm32f1xx_hal_msp.o: ..\Core\Src\stm32f1xx_hal_msp.c \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_flash_ex.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_pwr.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim_ex.h
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim_ex.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_uart.h
|
||||
|
||||
@@ -27,4 +27,5 @@ canemu/stm32f1xx_hal_pwr.o: \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_flash_ex.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_pwr.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim_ex.h
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim_ex.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_uart.h
|
||||
|
||||
@@ -27,4 +27,5 @@ canemu/stm32f1xx_hal_rcc.o: \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_flash_ex.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_pwr.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim_ex.h
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_tim_ex.h \
|
||||
..\Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_hal_uart.h
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user