сделал новую версию рабаем с 0
This commit is contained in:
48
.gitignore
vendored
48
.gitignore
vendored
@@ -1,48 +0,0 @@
|
|||||||
# ---> uVision
|
|
||||||
# git ignore file for Keil µVision Project
|
|
||||||
|
|
||||||
# µVision 5 and µVision 4 Project screen layout file
|
|
||||||
*.uvguix.*
|
|
||||||
*.uvgui.*
|
|
||||||
|
|
||||||
# Listing Files
|
|
||||||
*.i
|
|
||||||
*.lst
|
|
||||||
*.m51
|
|
||||||
*.m66
|
|
||||||
*.map
|
|
||||||
|
|
||||||
# Object Files
|
|
||||||
*.axf
|
|
||||||
*.b[0-2][0-9]
|
|
||||||
*.b3[0-1]
|
|
||||||
*.bak
|
|
||||||
*.build_log.htm
|
|
||||||
*.crf
|
|
||||||
*.d
|
|
||||||
*.dep
|
|
||||||
*.elf
|
|
||||||
*.htm
|
|
||||||
*.iex
|
|
||||||
*.lnp
|
|
||||||
*.o
|
|
||||||
*.obj
|
|
||||||
*.sbr
|
|
||||||
|
|
||||||
# Firmware Files
|
|
||||||
*.bin
|
|
||||||
*.h86
|
|
||||||
*.hex
|
|
||||||
|
|
||||||
# Build Files
|
|
||||||
.bat
|
|
||||||
|
|
||||||
# Debugger Files
|
|
||||||
.ini
|
|
||||||
|
|
||||||
# JLink Files
|
|
||||||
JLinkLog.txt
|
|
||||||
|
|
||||||
# Other Files
|
|
||||||
|
|
||||||
/john103C6T6/MDK-ARM/john103C6T6.uvoptx
|
|
||||||
11
.gitmodules
vendored
11
.gitmodules
vendored
@@ -1,11 +0,0 @@
|
|||||||
[submodule "external_flash_eeprom"]
|
|
||||||
path = external_flash_eeprom
|
|
||||||
url = https://git.arktika.cyou/set506/external_flash_eeprom.git
|
|
||||||
[submodule "labview_proj"]
|
|
||||||
path = labview_proj
|
|
||||||
url = https://git.arktika.cyou/Andrey/labview_proj.git
|
|
||||||
branch = master
|
|
||||||
[submodule "core/STM32_Modbus"]
|
|
||||||
path = core/STM32_Modbus
|
|
||||||
url = https://git.arktika.cyou/set506/STM32_Modbus.git
|
|
||||||
branch = release
|
|
||||||
Binary file not shown.
Binary file not shown.
Submodule core/STM32_Modbus deleted from cba13802b1
Submodule external_flash_eeprom deleted from 6ec779c11d
File diff suppressed because one or more lines are too long
@@ -1,147 +0,0 @@
|
|||||||
/* USER CODE BEGIN Header */
|
|
||||||
/**
|
|
||||||
***************************************************************
|
|
||||||
* 1 2 3 4 5 6 7 8 *
|
|
||||||
* --- +++ *
|
|
||||||
* *
|
|
||||||
*****************************************************************
|
|
||||||
|
|
||||||
|
|
||||||
******************************************************************************
|
|
||||||
* @file : main.h
|
|
||||||
* @brief : Header for main.c file.
|
|
||||||
* This file contains the common defines of the application.
|
|
||||||
******************************************************************************
|
|
||||||
* @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 __MAIN_H
|
|
||||||
#define __MAIN_H
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Includes ------------------------------------------------------------------*/
|
|
||||||
#include "stm32f1xx_hal.h"
|
|
||||||
#include "modbus_data.h"
|
|
||||||
#include "PROJ_setup.h"
|
|
||||||
#include "dallas_tools.h"
|
|
||||||
|
|
||||||
/* Private includes ----------------------------------------------------------*/
|
|
||||||
/* USER CODE BEGIN Includes */
|
|
||||||
typedef enum
|
|
||||||
{
|
|
||||||
FuncOK=0,
|
|
||||||
FuncERROR=1
|
|
||||||
|
|
||||||
}FuncStat;
|
|
||||||
|
|
||||||
|
|
||||||
typedef enum {
|
|
||||||
CONFIG_DEVICE_ID = 0,
|
|
||||||
CONFIG_BAUDRATE,
|
|
||||||
CONFIG_CALIBRATION,
|
|
||||||
CONFIG_SETTINGS
|
|
||||||
} ConfigParams;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef enum {
|
|
||||||
STATE_OPEN_VALVE = 0, // open
|
|
||||||
STATE_CLOSE_VALVE= 1 // close
|
|
||||||
} ValveState;
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
uint32_t id[2];
|
|
||||||
float temp;
|
|
||||||
uint16_t location;
|
|
||||||
uint8_t t_open;
|
|
||||||
float t_set;
|
|
||||||
uint8_t t_close;
|
|
||||||
uint8_t status_T_sense:1 ;
|
|
||||||
ValveState state;
|
|
||||||
uint16_t count;
|
|
||||||
}TEMP_TypeDef;
|
|
||||||
typedef struct {
|
|
||||||
uint32_t init_tsens : 1; // Update Interrupt Flag (бит 0) — флаг переполнения/обновления
|
|
||||||
|
|
||||||
// ... (другие биты могут быть зарезервированы или использоваться в расширенных таймерах)
|
|
||||||
} Flags_TypeDef;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* USER CODE END Includes */
|
|
||||||
|
|
||||||
/* Exported types ------------------------------------------------------------*/
|
|
||||||
/* USER CODE BEGIN ET */
|
|
||||||
#define reset_blink_delay 50
|
|
||||||
#define rest_iter 10
|
|
||||||
#define GPIOB11_valve MB_DATA.Coils.coils[0].state_val_bit.state_val_01
|
|
||||||
#define ralay_5v_on GPIOA->ODR&(1<<10);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
extern void handle_command(char* cmd);
|
|
||||||
typedef void (*FunctionPointer)(void);
|
|
||||||
|
|
||||||
uint16_t handle_valves(TEMP_TypeDef* temp_sense[MAX_SENSE]);
|
|
||||||
void init_setpoint_all_T_sense(TEMP_TypeDef* temp_sense, int size_array);
|
|
||||||
void iwdg_refresh(void);
|
|
||||||
void led_blink(GPIO_TypeDef *GPIOx,uint16_t GPIO_Pin,uint8_t iter,uint16_t delay);
|
|
||||||
FuncStat Field_modbus(MB_DataStructureTypeDef* MB_DATA, Flags_TypeDef* flag);
|
|
||||||
FuncStat packStruct(MB_DataStructureTypeDef* MB_DATA,int sizeARR);
|
|
||||||
void Check_Tconnect(MB_DataStructureTypeDef* MB_DATA, Flags_TypeDef* flag ,DALLAS_HandleTypeDef* hdallas, int a[50]);
|
|
||||||
FuncStat value_control(void );
|
|
||||||
|
|
||||||
void reinit_t_sens(void);
|
|
||||||
|
|
||||||
/* USER CODE END ET */
|
|
||||||
|
|
||||||
/* Exported constants --------------------------------------------------------*/
|
|
||||||
/* USER CODE BEGIN EC */
|
|
||||||
|
|
||||||
/* USER CODE END EC */
|
|
||||||
|
|
||||||
/* Exported macro ------------------------------------------------------------*/
|
|
||||||
/* USER CODE BEGIN EM */
|
|
||||||
|
|
||||||
/* USER CODE END EM */
|
|
||||||
|
|
||||||
/* Exported functions prototypes ---------------------------------------------*/
|
|
||||||
void Error_Handler(void);
|
|
||||||
|
|
||||||
/* USER CODE BEGIN EFP */
|
|
||||||
|
|
||||||
/* USER CODE END EFP */
|
|
||||||
|
|
||||||
/* Private defines -----------------------------------------------------------*/
|
|
||||||
#define Relay_dc5v_Pin GPIO_PIN_10
|
|
||||||
#define Relay_dc5v_GPIO_Port GPIOA
|
|
||||||
#define One_wire_Pin GPIO_PIN_15
|
|
||||||
#define One_wire_GPIO_Port GPIOA
|
|
||||||
|
|
||||||
/* USER CODE BEGIN Private defines */
|
|
||||||
|
|
||||||
/* USER CODE END Private defines */
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* __MAIN_H */
|
|
||||||
@@ -1,52 +0,0 @@
|
|||||||
/* USER CODE BEGIN Header */
|
|
||||||
/**
|
|
||||||
******************************************************************************
|
|
||||||
* @file rtc.h
|
|
||||||
* @brief This file contains all the function prototypes for
|
|
||||||
* the rtc.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 __RTC_H__
|
|
||||||
#define __RTC_H__
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Includes ------------------------------------------------------------------*/
|
|
||||||
#include "main.h"
|
|
||||||
|
|
||||||
/* USER CODE BEGIN Includes */
|
|
||||||
|
|
||||||
/* USER CODE END Includes */
|
|
||||||
|
|
||||||
extern RTC_HandleTypeDef hrtc;
|
|
||||||
|
|
||||||
/* USER CODE BEGIN Private defines */
|
|
||||||
|
|
||||||
/* USER CODE END Private defines */
|
|
||||||
|
|
||||||
void MX_RTC_Init(void);
|
|
||||||
|
|
||||||
/* USER CODE BEGIN Prototypes */
|
|
||||||
|
|
||||||
/* USER CODE END Prototypes */
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* __RTC_H__ */
|
|
||||||
|
|
||||||
@@ -1,74 +0,0 @@
|
|||||||
/* USER CODE BEGIN Header */
|
|
||||||
/**
|
|
||||||
******************************************************************************
|
|
||||||
* @file stm32f1xx_it.h
|
|
||||||
* @brief This file contains the headers of the interrupt handlers.
|
|
||||||
******************************************************************************
|
|
||||||
* @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 __STM32F1xx_IT_H
|
|
||||||
#define __STM32F1xx_IT_H
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Private includes ----------------------------------------------------------*/
|
|
||||||
/* USER CODE BEGIN Includes */
|
|
||||||
|
|
||||||
/* USER CODE END Includes */
|
|
||||||
|
|
||||||
/* Exported types ------------------------------------------------------------*/
|
|
||||||
/* USER CODE BEGIN ET */
|
|
||||||
|
|
||||||
/* USER CODE END ET */
|
|
||||||
|
|
||||||
/* Exported constants --------------------------------------------------------*/
|
|
||||||
/* USER CODE BEGIN EC */
|
|
||||||
|
|
||||||
/* USER CODE END EC */
|
|
||||||
|
|
||||||
/* Exported macro ------------------------------------------------------------*/
|
|
||||||
/* USER CODE BEGIN EM */
|
|
||||||
|
|
||||||
/* USER CODE END EM */
|
|
||||||
|
|
||||||
/* Exported functions prototypes ---------------------------------------------*/
|
|
||||||
void NMI_Handler(void);
|
|
||||||
void HardFault_Handler(void);
|
|
||||||
void MemManage_Handler(void);
|
|
||||||
void BusFault_Handler(void);
|
|
||||||
void UsageFault_Handler(void);
|
|
||||||
void SVC_Handler(void);
|
|
||||||
void DebugMon_Handler(void);
|
|
||||||
void PendSV_Handler(void);
|
|
||||||
void SysTick_Handler(void);
|
|
||||||
void RTC_IRQHandler(void);
|
|
||||||
void TIM1_BRK_IRQHandler(void);
|
|
||||||
void TIM1_UP_IRQHandler(void);
|
|
||||||
void TIM1_TRG_COM_IRQHandler(void);
|
|
||||||
void TIM1_CC_IRQHandler(void);
|
|
||||||
void TIM2_IRQHandler(void);
|
|
||||||
void TIM3_IRQHandler(void);
|
|
||||||
void USART1_IRQHandler(void);
|
|
||||||
/* USER CODE BEGIN EFP */
|
|
||||||
|
|
||||||
/* USER CODE END EFP */
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* __STM32F1xx_IT_H */
|
|
||||||
@@ -1,55 +0,0 @@
|
|||||||
/* USER CODE BEGIN Header */
|
|
||||||
/**
|
|
||||||
******************************************************************************
|
|
||||||
* @file tim.h
|
|
||||||
* @brief This file contains all the function prototypes for
|
|
||||||
* the tim.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 __TIM_H__
|
|
||||||
#define __TIM_H__
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Includes ------------------------------------------------------------------*/
|
|
||||||
#include "main.h"
|
|
||||||
|
|
||||||
/* USER CODE BEGIN Includes */
|
|
||||||
|
|
||||||
/* USER CODE END Includes */
|
|
||||||
|
|
||||||
extern TIM_HandleTypeDef htim1;
|
|
||||||
|
|
||||||
extern TIM_HandleTypeDef htim2;
|
|
||||||
|
|
||||||
/* USER CODE BEGIN Private defines */
|
|
||||||
|
|
||||||
/* USER CODE END Private defines */
|
|
||||||
|
|
||||||
void MX_TIM1_Init(void);
|
|
||||||
void MX_TIM2_Init(void);
|
|
||||||
|
|
||||||
/* USER CODE BEGIN Prototypes */
|
|
||||||
|
|
||||||
/* USER CODE END Prototypes */
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* __TIM_H__ */
|
|
||||||
|
|
||||||
@@ -1,52 +0,0 @@
|
|||||||
/* 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__ */
|
|
||||||
|
|
||||||
@@ -1,107 +0,0 @@
|
|||||||
/* USER CODE BEGIN Header */
|
|
||||||
/**
|
|
||||||
******************************************************************************
|
|
||||||
* @file gpio.c
|
|
||||||
* @brief This file provides code for the configuration
|
|
||||||
* of all used GPIO pins.
|
|
||||||
******************************************************************************
|
|
||||||
* @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 "gpio.h"
|
|
||||||
|
|
||||||
/* USER CODE BEGIN 0 */
|
|
||||||
|
|
||||||
/* USER CODE END 0 */
|
|
||||||
|
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------*/
|
|
||||||
/* Configure GPIO */
|
|
||||||
/*----------------------------------------------------------------------------*/
|
|
||||||
/* USER CODE BEGIN 1 */
|
|
||||||
|
|
||||||
/* USER CODE END 1 */
|
|
||||||
|
|
||||||
/** Configure pins as
|
|
||||||
* Analog
|
|
||||||
* Input
|
|
||||||
* Output
|
|
||||||
* EVENT_OUT
|
|
||||||
* EXTI
|
|
||||||
*/
|
|
||||||
void MX_GPIO_Init(void)
|
|
||||||
{
|
|
||||||
|
|
||||||
GPIO_InitTypeDef GPIO_InitStruct = {0};
|
|
||||||
|
|
||||||
/* GPIO Ports Clock Enable */
|
|
||||||
__HAL_RCC_GPIOC_CLK_ENABLE();
|
|
||||||
__HAL_RCC_GPIOD_CLK_ENABLE();
|
|
||||||
__HAL_RCC_GPIOA_CLK_ENABLE();
|
|
||||||
__HAL_RCC_GPIOB_CLK_ENABLE();
|
|
||||||
|
|
||||||
/*Configure GPIO pin Output Level */
|
|
||||||
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET);
|
|
||||||
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_14, GPIO_PIN_RESET);
|
|
||||||
|
|
||||||
/*Configure GPIO pin Output Level */
|
|
||||||
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4
|
|
||||||
|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7|GPIO_PIN_8
|
|
||||||
|GPIO_PIN_9|Relay_dc5v_Pin|One_wire_Pin, GPIO_PIN_RESET);
|
|
||||||
|
|
||||||
/*Configure GPIO pin Output Level */
|
|
||||||
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_10
|
|
||||||
|GPIO_PIN_11|GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14
|
|
||||||
|GPIO_PIN_15, GPIO_PIN_RESET);
|
|
||||||
|
|
||||||
/*Configure GPIO pin : PC13 */
|
|
||||||
GPIO_InitStruct.Pin = GPIO_PIN_13|GPIO_PIN_14;
|
|
||||||
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
|
|
||||||
GPIO_InitStruct.Pull = GPIO_PULLUP;
|
|
||||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
|
||||||
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
|
|
||||||
|
|
||||||
/*Configure GPIO pin : PA0 */
|
|
||||||
GPIO_InitStruct.Pin = GPIO_PIN_0;
|
|
||||||
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
|
|
||||||
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
|
||||||
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
|
|
||||||
|
|
||||||
/*Configure GPIO pins : PA1 PA2 PA3 PA4
|
|
||||||
PA5 PA6 PA7 PA8
|
|
||||||
PA9 Relay_dc5v_Pin One_wire_Pin */
|
|
||||||
GPIO_InitStruct.Pin = GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4
|
|
||||||
|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7|GPIO_PIN_8
|
|
||||||
|GPIO_PIN_9|Relay_dc5v_Pin|One_wire_Pin;
|
|
||||||
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
|
|
||||||
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
|
||||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
|
||||||
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
|
|
||||||
|
|
||||||
/*Configure GPIO pins : PB0 PB1 PB2 PB10
|
|
||||||
PB11 PB12 PB13 PB14
|
|
||||||
PB15 */
|
|
||||||
GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_10
|
|
||||||
|GPIO_PIN_11|GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14
|
|
||||||
|GPIO_PIN_15;
|
|
||||||
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
|
|
||||||
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
|
||||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
|
||||||
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/* USER CODE BEGIN 2 */
|
|
||||||
|
|
||||||
/* USER CODE END 2 */
|
|
||||||
@@ -1,552 +0,0 @@
|
|||||||
/* USER CODE BEGIN Header */
|
|
||||||
/**
|
|
||||||
******************************************************************************
|
|
||||||
* @file : main.c
|
|
||||||
* @brief : Main program body
|
|
||||||
******************************************************************************
|
|
||||||
* @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 "main.h"
|
|
||||||
#include "adc.h"
|
|
||||||
#include "can.h"
|
|
||||||
#include "i2c.h"
|
|
||||||
#include "rtc.h"
|
|
||||||
#include "spi.h"
|
|
||||||
#include "tim.h"
|
|
||||||
#include "usart.h"
|
|
||||||
#include "gpio.h"
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* Private includes ----------------------------------------------------------*/
|
|
||||||
/* USER CODE BEGIN Includes */
|
|
||||||
#include "dallas_tools.h"
|
|
||||||
|
|
||||||
#include "def.h"
|
|
||||||
#include <stdio.h>
|
|
||||||
#include "modbus.h"
|
|
||||||
#include "eeprom_emul.h"
|
|
||||||
#include "stdio.h"
|
|
||||||
#include "flash_ring.h"
|
|
||||||
#include "string.h"
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* USER CODE END Includes */
|
|
||||||
|
|
||||||
/* Private typedef -----------------------------------------------------------*/
|
|
||||||
/* USER CODE BEGIN PTD */
|
|
||||||
|
|
||||||
/* USER CODE END PTD */
|
|
||||||
|
|
||||||
/* Private define ------------------------------------------------------------*/
|
|
||||||
/* USER CODE BEGIN PD */
|
|
||||||
uint16_t iter, cnt = 5;
|
|
||||||
uint8_t init_retries = 5;
|
|
||||||
uint8_t ralay_5v_on_var = 0;
|
|
||||||
/* USER CODE END PD */
|
|
||||||
|
|
||||||
/* Private macro -------------------------------------------------------------*/
|
|
||||||
/* USER CODE BEGIN PM */
|
|
||||||
float temperature;
|
|
||||||
uint8_t roms[MAX_DEVICES][8];
|
|
||||||
Flags_TypeDef flag;
|
|
||||||
//extern uint8_t devices_found ;
|
|
||||||
uint8_t _debug_init = 0;
|
|
||||||
TEMP_TypeDef temp_sense[30];
|
|
||||||
float set_temp_old[30];
|
|
||||||
char rx_buffer[64];
|
|
||||||
uint8_t rx_index = 0;
|
|
||||||
char command_ready = 0;
|
|
||||||
uint8_t uart_byte = 0;
|
|
||||||
uint8_t first_in = 1;
|
|
||||||
DALLAS_SensorHandleTypeDef sens[30];
|
|
||||||
int init_sens = 0;
|
|
||||||
FlashRecord_t* record;
|
|
||||||
uint8_t flash_buff[RECORD_SIZE - 4];
|
|
||||||
|
|
||||||
|
|
||||||
/* USER CODE END PM */
|
|
||||||
|
|
||||||
/* Private variables ---------------------------------------------------------*/
|
|
||||||
|
|
||||||
/* USER CODE BEGIN PV */
|
|
||||||
int last_page_addr = LAST_PAGE_ADDR;
|
|
||||||
|
|
||||||
/* USER CODE END PV */
|
|
||||||
|
|
||||||
/* Private function prototypes -----------------------------------------------*/
|
|
||||||
void SystemClock_Config(void);
|
|
||||||
/* USER CODE BEGIN PFP */
|
|
||||||
|
|
||||||
/* USER CODE END PFP */
|
|
||||||
|
|
||||||
/* Private user code ---------------------------------------------------------*/
|
|
||||||
/* USER CODE BEGIN 0 */
|
|
||||||
|
|
||||||
/* USER CODE END 0 */
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief The application entry point.
|
|
||||||
* @retval int
|
|
||||||
*/
|
|
||||||
int main(void)
|
|
||||||
{
|
|
||||||
|
|
||||||
/* USER CODE BEGIN 1 */
|
|
||||||
|
|
||||||
/* USER CODE END 1 */
|
|
||||||
|
|
||||||
/* MCU Configuration--------------------------------------------------------*/
|
|
||||||
|
|
||||||
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
|
|
||||||
HAL_Init();
|
|
||||||
|
|
||||||
/* USER CODE BEGIN Init */
|
|
||||||
|
|
||||||
/* USER CODE END Init */
|
|
||||||
|
|
||||||
/* Configure the system clock */
|
|
||||||
SystemClock_Config();
|
|
||||||
|
|
||||||
/* USER CODE BEGIN SysInit */
|
|
||||||
|
|
||||||
|
|
||||||
/* USER CODE END SysInit */
|
|
||||||
|
|
||||||
/* Initialize all configured peripherals */
|
|
||||||
MX_GPIO_Init();
|
|
||||||
MX_TIM1_Init();
|
|
||||||
MX_USART1_UART_Init();
|
|
||||||
MX_TIM2_Init();
|
|
||||||
MX_ADC1_Init();
|
|
||||||
MX_CAN_Init();
|
|
||||||
MX_I2C1_Init();
|
|
||||||
MX_RTC_Init();
|
|
||||||
MX_SPI1_Init();
|
|
||||||
/* USER CODE BEGIN 2 */
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
led_blink(GPIOC, 13, rest_iter, reset_blink_delay);
|
|
||||||
MODBUS_FirstInit(&hmodbus1, &mb_huart, &mb_htim);
|
|
||||||
MODBUS_Config(&hmodbus1, MODBUS_DEVICE_ID, MODBUS_TIMEOUT, MODBUS_MODE_SLAVE);
|
|
||||||
// Запуск приема Modbus
|
|
||||||
MODBUS_SlaveStart(&hmodbus1, NULL);
|
|
||||||
uint8_t uart_byte = 0;
|
|
||||||
Dallas_BusFirstInit(&htim1);
|
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
|
||||||
reinit_t_sens();
|
|
||||||
init_setpoint_all_T_sense(temp_sense, hdallas.onewire->RomCnt);
|
|
||||||
|
|
||||||
MB_DATA.InRegs.num_Tsens = hdallas.onewire->RomCnt;
|
|
||||||
// BufferState_t buffer_state = buffer_init();
|
|
||||||
for(int i=0;i<RECORD_SIZE;i++)
|
|
||||||
{
|
|
||||||
flash_buff[i]=i;
|
|
||||||
|
|
||||||
}
|
|
||||||
/* USER CODE END 2 */
|
|
||||||
|
|
||||||
/* Infinite loop */
|
|
||||||
/* USER CODE BEGIN WHILE */
|
|
||||||
while (1)
|
|
||||||
{
|
|
||||||
|
|
||||||
|
|
||||||
// if (MB_DATA.Coils.relay_struct[0].state_val_bit.Temp11_relay_isOn)
|
|
||||||
// {
|
|
||||||
// MB_DATA.Coils.relay_struct[0].state_val_bit.Temp11_relay_isOn = 0;
|
|
||||||
// BufferState_t state = buffer_init();
|
|
||||||
// uint32_t idx = (state.write_index ) % RECORDS_PER_PAGE;
|
|
||||||
// FlashRecord_t* record = buffer_read_record(idx);
|
|
||||||
|
|
||||||
// }
|
|
||||||
// if (MB_DATA.Coils.relay_struct[0].state_val_bit.Temp10_relay_isOn)
|
|
||||||
// {
|
|
||||||
// MB_DATA.Coils.relay_struct[0].state_val_bit.Temp10_relay_isOn = 0;
|
|
||||||
// FlashRecord_t new_record;
|
|
||||||
// new_record.timestamp = HAL_GetTick();
|
|
||||||
// memcpy(new_record.data, flash_buff, sizeof(new_record.data));
|
|
||||||
|
|
||||||
// HAL_StatusTypeDef status = buffer_write_record(&new_record, &buffer_state);
|
|
||||||
|
|
||||||
// if (status == HAL_OK)
|
|
||||||
// {
|
|
||||||
// // printf("Record written successfully\n");
|
|
||||||
// GPIOC->ODR |= 1 << 13;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// }
|
|
||||||
temp_sense[0].t_close = 1;
|
|
||||||
Field_modbus(&MB_DATA, &flag);
|
|
||||||
Check_Tconnect(&MB_DATA, &flag, &hdallas, 0);
|
|
||||||
value_control();
|
|
||||||
init_setpoint_all_T_sense(temp_sense, hdallas.onewire->RomCnt);
|
|
||||||
// handle_valves(temp_sense[]);
|
|
||||||
Dallas_StartConvertTAll(&hdallas, DALLAS_WAIT_BUS, 0);
|
|
||||||
for(int i = 0; i < hdallas.onewire->RomCnt; i++)
|
|
||||||
{
|
|
||||||
if(sens[i].isLost)
|
|
||||||
{
|
|
||||||
sens[i].lost_cnt ++;
|
|
||||||
}
|
|
||||||
Dallas_ReadTemperature(&sens[i]);
|
|
||||||
MB_DATA.InRegs.sens_Temp[i] = sens[i].temperature * 10;
|
|
||||||
/////////////////////////заменить на define ralay_5v_on_var GPIOA->ODR|=1<<10;
|
|
||||||
ralay_5v_on_var = MB_DATA.Coils.coils[1].state_val_bit.state_val_05;
|
|
||||||
if (ralay_5v_on_var)
|
|
||||||
{
|
|
||||||
GPIOA->ODR |= 1 << 10;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
GPIOA->ODR &= ~(1 << 10);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* USER CODE END WHILE */
|
|
||||||
|
|
||||||
/* USER CODE BEGIN 3 */
|
|
||||||
//iwdg_refresh();
|
|
||||||
|
|
||||||
//HAL_Delay(200);
|
|
||||||
}
|
|
||||||
/* USER CODE END 3 */
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief System Clock Configuration
|
|
||||||
* @retval None
|
|
||||||
*/
|
|
||||||
void SystemClock_Config(void)
|
|
||||||
{
|
|
||||||
RCC_OscInitTypeDef RCC_OscInitStruct = {0};
|
|
||||||
RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
|
|
||||||
RCC_PeriphCLKInitTypeDef PeriphClkInit = {0};
|
|
||||||
|
|
||||||
/** Initializes the RCC Oscillators according to the specified parameters
|
|
||||||
* in the RCC_OscInitTypeDef structure.
|
|
||||||
*/
|
|
||||||
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_LSI | RCC_OSCILLATORTYPE_HSE;
|
|
||||||
RCC_OscInitStruct.HSEState = RCC_HSE_ON;
|
|
||||||
RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1;
|
|
||||||
RCC_OscInitStruct.HSIState = RCC_HSI_ON;
|
|
||||||
RCC_OscInitStruct.LSIState = RCC_LSI_ON;
|
|
||||||
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
|
|
||||||
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
|
|
||||||
RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9;
|
|
||||||
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
|
|
||||||
{
|
|
||||||
Error_Handler();
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Initializes the CPU, AHB and APB buses clocks
|
|
||||||
*/
|
|
||||||
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK
|
|
||||||
| RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;
|
|
||||||
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
|
|
||||||
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
|
|
||||||
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
|
|
||||||
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
|
|
||||||
|
|
||||||
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)
|
|
||||||
{
|
|
||||||
Error_Handler();
|
|
||||||
}
|
|
||||||
PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_RTC | RCC_PERIPHCLK_ADC;
|
|
||||||
PeriphClkInit.RTCClockSelection = RCC_RTCCLKSOURCE_LSI;
|
|
||||||
PeriphClkInit.AdcClockSelection = RCC_ADCPCLK2_DIV6;
|
|
||||||
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
|
|
||||||
{
|
|
||||||
Error_Handler();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* USER CODE BEGIN 4 */
|
|
||||||
void iwdg_refresh(void)
|
|
||||||
{
|
|
||||||
IWDG->KR = 0xAAAA; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
}
|
|
||||||
void led_blink(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, uint8_t iter, uint16_t delay)
|
|
||||||
{
|
|
||||||
for(int i = 0; i < iter; i++)
|
|
||||||
{
|
|
||||||
GPIOx->ODR ^= (1 << GPIO_Pin);
|
|
||||||
HAL_Delay(delay);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void Check_Tconnect(MB_DataStructureTypeDef* MB_DATA, Flags_TypeDef* flag, DALLAS_HandleTypeDef* hdallas, int a[0])
|
|
||||||
{
|
|
||||||
for(int i = 0; i < hdallas->onewire->RomCnt; i++)
|
|
||||||
{
|
|
||||||
if(sens[i].isLost)
|
|
||||||
{
|
|
||||||
//init_sens=1;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
if (init_sens || flag->init_tsens)
|
|
||||||
{
|
|
||||||
init_sens = 0;
|
|
||||||
flag->init_tsens = 0;
|
|
||||||
//Dallas_BusFirstInit(&htim1);
|
|
||||||
DS18B20_Search(&DS, &OW) ;
|
|
||||||
reinit_t_sens();
|
|
||||||
MB_DATA->InRegs.num_Tsens = hdallas->onewire->RomCnt;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void reinit_t_sens(void)
|
|
||||||
{
|
|
||||||
for ( int i = 0; i < hdallas.onewire->RomCnt; i++)
|
|
||||||
{
|
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> ROM-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
//sens[i].Init.init_func = &Dallas_SensorInitByROM;
|
|
||||||
// sens[i].Init.InitParam.ROM = rom_address;
|
|
||||||
sens[i].Init.InitParam.Ind = i;
|
|
||||||
sens[i].Init.init_func = &Dallas_SensorInitByInd;
|
|
||||||
sens[i].Init.Resolution = DALLAS_CONFIG_9_BITS;
|
|
||||||
MB_DATA.HoldRegs.set_Temp[i] = sens[i].set_temp = 20.;
|
|
||||||
MB_DATA.HoldRegs.set_hyst[i] = sens[i].hyst = 1;
|
|
||||||
Dallas_AddNewSensors(&hdallas, &sens[i]);
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
FuncStat packStruct(MB_DataStructureTypeDef* MB_DATA, int sizeARR)
|
|
||||||
{
|
|
||||||
for(int i = 0; i < sizeARR; i++)
|
|
||||||
{
|
|
||||||
for(int sens_num = 0; sens_num < hdallas.onewire->RomCnt; sens_num++)
|
|
||||||
{
|
|
||||||
switch(sens_num)
|
|
||||||
{
|
|
||||||
case 0:
|
|
||||||
MB_DATA->Coils.status_tSens[i].state_val_bit.Temp1_isConnected = sens[i * 16 + sens_num ].isConnected;
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
MB_DATA->Coils.status_tSens[i].state_val_bit.Temp2_isConnected = sens[i * 16 + sens_num ].isConnected;
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
MB_DATA->Coils.status_tSens[i].state_val_bit.Temp3_isConnected = sens[i * 16 + sens_num ].isConnected;
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
MB_DATA->Coils.status_tSens[i].state_val_bit.Temp4_isConnected = sens[i * 16 + sens_num ].isConnected;
|
|
||||||
break;
|
|
||||||
case 4:
|
|
||||||
MB_DATA->Coils.status_tSens[i].state_val_bit.Temp5_isConnected = sens[i * 16 + sens_num ].isConnected;
|
|
||||||
break;
|
|
||||||
case 5:
|
|
||||||
MB_DATA->Coils.status_tSens[i].state_val_bit.Temp6_isConnected = sens[i * 16 + sens_num ].isConnected;
|
|
||||||
break;
|
|
||||||
case 6:
|
|
||||||
MB_DATA->Coils.status_tSens[i].state_val_bit.Temp7_isConnected = sens[i * 16 + sens_num ].isConnected;
|
|
||||||
break;
|
|
||||||
case 7:
|
|
||||||
MB_DATA->Coils.status_tSens[i].state_val_bit.Temp8_isConnected = sens[i * 16 + sens_num ].isConnected;
|
|
||||||
break;
|
|
||||||
case 8:
|
|
||||||
MB_DATA->Coils.status_tSens[i].state_val_bit.Temp9_isConnected = sens[i * 16 + sens_num ].isConnected;
|
|
||||||
break;
|
|
||||||
case 9:
|
|
||||||
MB_DATA->Coils.status_tSens[i].state_val_bit.Temp10_isConnected = sens[i * 16 + sens_num ].isConnected;
|
|
||||||
break;
|
|
||||||
case 10:
|
|
||||||
MB_DATA->Coils.status_tSens[i].state_val_bit.Temp11_isConnected = sens[i * 16 + sens_num ].isConnected;
|
|
||||||
break;
|
|
||||||
case 11:
|
|
||||||
MB_DATA->Coils.status_tSens[i].state_val_bit.Temp12_isConnected = sens[i * 16 + sens_num ].isConnected;
|
|
||||||
break;
|
|
||||||
case 12:
|
|
||||||
MB_DATA->Coils.status_tSens[i].state_val_bit.Temp13_isConnected = sens[i * 16 + sens_num ].isConnected;
|
|
||||||
break;
|
|
||||||
case 13:
|
|
||||||
MB_DATA->Coils.status_tSens[i].state_val_bit.Temp14_isConnected = sens[i * 16 + sens_num ].isConnected;
|
|
||||||
break;
|
|
||||||
case 14:
|
|
||||||
MB_DATA->Coils.status_tSens[i].state_val_bit.Temp15_isConnected = sens[i * 16 + sens_num ].isConnected;
|
|
||||||
break;
|
|
||||||
case 15:
|
|
||||||
MB_DATA->Coils.status_tSens[i].state_val_bit.Temp16_isConnected = sens[i * 16 + sens_num ].isConnected;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return FuncOK;
|
|
||||||
|
|
||||||
}
|
|
||||||
FuncStat Field_modbus(MB_DataStructureTypeDef* MB_DATA, Flags_TypeDef* flag)
|
|
||||||
{
|
|
||||||
|
|
||||||
MB_DATA->InRegs.ID = *hdallas.ds_devices;
|
|
||||||
flag->init_tsens = MB_DATA->Coils.init_Tsens;
|
|
||||||
packStruct(MB_DATA, MAX_SENSE / 16);
|
|
||||||
if (_debug_init || MB_DATA->Coils.init_param)
|
|
||||||
{
|
|
||||||
_debug_init = 0;
|
|
||||||
|
|
||||||
MB_DATA->Coils.init_param = 0;
|
|
||||||
for(int i = 0; i < hdallas.onewire->RomCnt; i++)
|
|
||||||
{
|
|
||||||
sens[i].set_temp = MB_DATA->HoldRegs.set_Temp[i];
|
|
||||||
sens[i].hyst = MB_DATA->HoldRegs.set_hyst[i];
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
return FuncOK;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
FuncStat value_control(void )
|
|
||||||
{
|
|
||||||
|
|
||||||
for(int i = 0; i < hdallas.onewire->RomCnt; i++)
|
|
||||||
{
|
|
||||||
if (sens[i].temperature < sens[i].set_temp - sens[i].hyst)
|
|
||||||
|
|
||||||
{
|
|
||||||
|
|
||||||
MB_DATA.Coils.relay_struct_off.all |= 1 << i;
|
|
||||||
MB_DATA.Coils.relay_struct_on.all &= ~(1 << i);
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
else
|
|
||||||
|
|
||||||
if (sens[i].temperature > sens[i].set_temp + sens[i].hyst)
|
|
||||||
{
|
|
||||||
|
|
||||||
MB_DATA.Coils.relay_struct_off.all &= ~(1 << i);
|
|
||||||
MB_DATA.Coils.relay_struct_on.all |= 1 << i;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
else
|
|
||||||
|
|
||||||
if (sens[i].temperature == sens[i].set_temp )
|
|
||||||
{
|
|
||||||
MB_DATA.Coils.relay_struct_on.all &= ~(1 << i);
|
|
||||||
MB_DATA.Coils.relay_struct_off.all &= ~(1 << i);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
return FuncOK;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
uint16_t handle_valves(TEMP_TypeDef* temp_sense[MAX_SENSE] )
|
|
||||||
{
|
|
||||||
|
|
||||||
if (temp_sense[0]->state == STATE_OPEN_VALVE)
|
|
||||||
{
|
|
||||||
GPIOC->ODR |= 1 << 14;
|
|
||||||
}
|
|
||||||
else if (temp_sense[0]->state == STATE_CLOSE_VALVE)
|
|
||||||
{
|
|
||||||
GPIOC->ODR &= ~(1 << 14);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 1;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void init_setpoint_all_T_sense(TEMP_TypeDef* temp_sense, int size_array)
|
|
||||||
{
|
|
||||||
//ds_search_devices();
|
|
||||||
for(int i = 0; i < size_array ; i++)
|
|
||||||
{
|
|
||||||
temp_sense[i].id[0] = roms[i][0] << 0 | roms[i][1] << 8 | roms[i][2] << 16 | roms[i][3] << 24;
|
|
||||||
temp_sense[i].id[1] = roms[i][4] << 0 | roms[i][5] << 8 | roms[i][6] << 16 | roms[i][7] << 24;
|
|
||||||
temp_sense[i].count = i + 1;
|
|
||||||
temp_sense[i].location = 1;
|
|
||||||
temp_sense[i].t_open = 22;
|
|
||||||
temp_sense[i].t_close = 18;
|
|
||||||
temp_sense[i].status_T_sense = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/* USER CODE END 4 */
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Period elapsed callback in non blocking mode
|
|
||||||
* @note This function is called when TIM3 interrupt took place, inside
|
|
||||||
* HAL_TIM_IRQHandler(). It makes a direct call to HAL_IncTick() to increment
|
|
||||||
* a global variable "uwTick" used as application time base.
|
|
||||||
* @param htim : TIM handle
|
|
||||||
* @retval None
|
|
||||||
*/
|
|
||||||
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
|
|
||||||
{
|
|
||||||
/* USER CODE BEGIN Callback 0 */
|
|
||||||
|
|
||||||
/* USER CODE END Callback 0 */
|
|
||||||
if (htim->Instance == TIM3)
|
|
||||||
{
|
|
||||||
HAL_IncTick();
|
|
||||||
}
|
|
||||||
/* USER CODE BEGIN Callback 1 */
|
|
||||||
|
|
||||||
/* USER CODE END Callback 1 */
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief This function is executed in case of error occurrence.
|
|
||||||
* @retval None
|
|
||||||
*/
|
|
||||||
void Error_Handler(void)
|
|
||||||
{
|
|
||||||
/* USER CODE BEGIN Error_Handler_Debug */
|
|
||||||
/* User can add his own implementation to report the HAL error return state */
|
|
||||||
__disable_irq();
|
|
||||||
while (1)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
/* USER CODE END Error_Handler_Debug */
|
|
||||||
}
|
|
||||||
#ifdef USE_FULL_ASSERT
|
|
||||||
/**
|
|
||||||
* @brief Reports the name of the source file and the source line number
|
|
||||||
* where the assert_param error has occurred.
|
|
||||||
* @param file: pointer to the source file name
|
|
||||||
* @param line: assert_param error line source number
|
|
||||||
* @retval None
|
|
||||||
*/
|
|
||||||
void assert_failed(uint8_t *file, uint32_t line)
|
|
||||||
{
|
|
||||||
/* USER CODE BEGIN 6 */
|
|
||||||
/* User can add his own implementation to report the file name and line number,
|
|
||||||
ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
|
|
||||||
/* USER CODE END 6 */
|
|
||||||
}
|
|
||||||
#endif /* USE_FULL_ASSERT */
|
|
||||||
@@ -1,127 +0,0 @@
|
|||||||
/* USER CODE BEGIN Header */
|
|
||||||
/**
|
|
||||||
******************************************************************************
|
|
||||||
* @file rtc.c
|
|
||||||
* @brief This file provides code for the configuration
|
|
||||||
* of the RTC 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 "rtc.h"
|
|
||||||
|
|
||||||
/* USER CODE BEGIN 0 */
|
|
||||||
|
|
||||||
/* USER CODE END 0 */
|
|
||||||
|
|
||||||
RTC_HandleTypeDef hrtc;
|
|
||||||
|
|
||||||
/* RTC init function */
|
|
||||||
void MX_RTC_Init(void)
|
|
||||||
{
|
|
||||||
|
|
||||||
/* USER CODE BEGIN RTC_Init 0 */
|
|
||||||
|
|
||||||
/* USER CODE END RTC_Init 0 */
|
|
||||||
|
|
||||||
RTC_TimeTypeDef sTime = {0};
|
|
||||||
RTC_DateTypeDef DateToUpdate = {0};
|
|
||||||
|
|
||||||
/* USER CODE BEGIN RTC_Init 1 */
|
|
||||||
|
|
||||||
/* USER CODE END RTC_Init 1 */
|
|
||||||
|
|
||||||
/** Initialize RTC Only
|
|
||||||
*/
|
|
||||||
hrtc.Instance = RTC;
|
|
||||||
hrtc.Init.AsynchPrediv = RTC_AUTO_1_SECOND;
|
|
||||||
hrtc.Init.OutPut = RTC_OUTPUTSOURCE_NONE;
|
|
||||||
if (HAL_RTC_Init(&hrtc) != HAL_OK)
|
|
||||||
{
|
|
||||||
Error_Handler();
|
|
||||||
}
|
|
||||||
|
|
||||||
/* USER CODE BEGIN Check_RTC_BKUP */
|
|
||||||
|
|
||||||
/* USER CODE END Check_RTC_BKUP */
|
|
||||||
|
|
||||||
/** Initialize RTC and set the Time and Date
|
|
||||||
*/
|
|
||||||
sTime.Hours = 0x0;
|
|
||||||
sTime.Minutes = 0x0;
|
|
||||||
sTime.Seconds = 0x0;
|
|
||||||
|
|
||||||
if (HAL_RTC_SetTime(&hrtc, &sTime, RTC_FORMAT_BCD) != HAL_OK)
|
|
||||||
{
|
|
||||||
Error_Handler();
|
|
||||||
}
|
|
||||||
DateToUpdate.WeekDay = RTC_WEEKDAY_MONDAY;
|
|
||||||
DateToUpdate.Month = RTC_MONTH_JANUARY;
|
|
||||||
DateToUpdate.Date = 0x1;
|
|
||||||
DateToUpdate.Year = 0x0;
|
|
||||||
|
|
||||||
if (HAL_RTC_SetDate(&hrtc, &DateToUpdate, RTC_FORMAT_BCD) != HAL_OK)
|
|
||||||
{
|
|
||||||
Error_Handler();
|
|
||||||
}
|
|
||||||
/* USER CODE BEGIN RTC_Init 2 */
|
|
||||||
|
|
||||||
/* USER CODE END RTC_Init 2 */
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void HAL_RTC_MspInit(RTC_HandleTypeDef* rtcHandle)
|
|
||||||
{
|
|
||||||
|
|
||||||
if(rtcHandle->Instance==RTC)
|
|
||||||
{
|
|
||||||
/* USER CODE BEGIN RTC_MspInit 0 */
|
|
||||||
|
|
||||||
/* USER CODE END RTC_MspInit 0 */
|
|
||||||
HAL_PWR_EnableBkUpAccess();
|
|
||||||
/* Enable BKP CLK enable for backup registers */
|
|
||||||
__HAL_RCC_BKP_CLK_ENABLE();
|
|
||||||
/* RTC clock enable */
|
|
||||||
__HAL_RCC_RTC_ENABLE();
|
|
||||||
|
|
||||||
/* RTC interrupt Init */
|
|
||||||
HAL_NVIC_SetPriority(RTC_IRQn, 0, 0);
|
|
||||||
HAL_NVIC_EnableIRQ(RTC_IRQn);
|
|
||||||
/* USER CODE BEGIN RTC_MspInit 1 */
|
|
||||||
|
|
||||||
/* USER CODE END RTC_MspInit 1 */
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void HAL_RTC_MspDeInit(RTC_HandleTypeDef* rtcHandle)
|
|
||||||
{
|
|
||||||
|
|
||||||
if(rtcHandle->Instance==RTC)
|
|
||||||
{
|
|
||||||
/* USER CODE BEGIN RTC_MspDeInit 0 */
|
|
||||||
|
|
||||||
/* USER CODE END RTC_MspDeInit 0 */
|
|
||||||
/* Peripheral clock disable */
|
|
||||||
__HAL_RCC_RTC_DISABLE();
|
|
||||||
|
|
||||||
/* RTC interrupt Deinit */
|
|
||||||
HAL_NVIC_DisableIRQ(RTC_IRQn);
|
|
||||||
/* USER CODE BEGIN RTC_MspDeInit 1 */
|
|
||||||
|
|
||||||
/* USER CODE END RTC_MspDeInit 1 */
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* USER CODE BEGIN 1 */
|
|
||||||
|
|
||||||
/* USER CODE END 1 */
|
|
||||||
@@ -1,330 +0,0 @@
|
|||||||
/* USER CODE BEGIN Header */
|
|
||||||
/**
|
|
||||||
******************************************************************************
|
|
||||||
* @file stm32f1xx_it.c
|
|
||||||
* @brief Interrupt Service Routines.
|
|
||||||
******************************************************************************
|
|
||||||
* @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 "main.h"
|
|
||||||
#include "stm32f1xx_it.h"
|
|
||||||
/* Private includes ----------------------------------------------------------*/
|
|
||||||
/* USER CODE BEGIN Includes */
|
|
||||||
#include "modbus.h"
|
|
||||||
/* USER CODE END Includes */
|
|
||||||
|
|
||||||
/* Private typedef -----------------------------------------------------------*/
|
|
||||||
/* USER CODE BEGIN TD */
|
|
||||||
|
|
||||||
/* USER CODE END TD */
|
|
||||||
|
|
||||||
/* Private define ------------------------------------------------------------*/
|
|
||||||
/* USER CODE BEGIN PD */
|
|
||||||
|
|
||||||
/* USER CODE END PD */
|
|
||||||
|
|
||||||
/* Private macro -------------------------------------------------------------*/
|
|
||||||
/* USER CODE BEGIN PM */
|
|
||||||
|
|
||||||
/* USER CODE END PM */
|
|
||||||
|
|
||||||
/* Private variables ---------------------------------------------------------*/
|
|
||||||
/* USER CODE BEGIN PV */
|
|
||||||
|
|
||||||
/* USER CODE END PV */
|
|
||||||
|
|
||||||
/* Private function prototypes -----------------------------------------------*/
|
|
||||||
/* USER CODE BEGIN PFP */
|
|
||||||
|
|
||||||
/* USER CODE END PFP */
|
|
||||||
|
|
||||||
/* Private user code ---------------------------------------------------------*/
|
|
||||||
/* USER CODE BEGIN 0 */
|
|
||||||
|
|
||||||
/* USER CODE END 0 */
|
|
||||||
|
|
||||||
/* External variables --------------------------------------------------------*/
|
|
||||||
extern RTC_HandleTypeDef hrtc;
|
|
||||||
extern TIM_HandleTypeDef htim1;
|
|
||||||
extern TIM_HandleTypeDef htim2;
|
|
||||||
extern UART_HandleTypeDef huart1;
|
|
||||||
extern TIM_HandleTypeDef htim3;
|
|
||||||
|
|
||||||
/* USER CODE BEGIN EV */
|
|
||||||
|
|
||||||
/* USER CODE END EV */
|
|
||||||
|
|
||||||
/******************************************************************************/
|
|
||||||
/* Cortex-M3 Processor Interruption and Exception Handlers */
|
|
||||||
/******************************************************************************/
|
|
||||||
/**
|
|
||||||
* @brief This function handles Non maskable interrupt.
|
|
||||||
*/
|
|
||||||
void NMI_Handler(void)
|
|
||||||
{
|
|
||||||
/* USER CODE BEGIN NonMaskableInt_IRQn 0 */
|
|
||||||
|
|
||||||
/* USER CODE END NonMaskableInt_IRQn 0 */
|
|
||||||
/* USER CODE BEGIN NonMaskableInt_IRQn 1 */
|
|
||||||
while (1)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
/* USER CODE END NonMaskableInt_IRQn 1 */
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief This function handles Hard fault interrupt.
|
|
||||||
*/
|
|
||||||
void HardFault_Handler(void)
|
|
||||||
{
|
|
||||||
/* USER CODE BEGIN HardFault_IRQn 0 */
|
|
||||||
|
|
||||||
/* USER CODE END HardFault_IRQn 0 */
|
|
||||||
while (1)
|
|
||||||
{
|
|
||||||
/* USER CODE BEGIN W1_HardFault_IRQn 0 */
|
|
||||||
/* USER CODE END W1_HardFault_IRQn 0 */
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief This function handles Memory management fault.
|
|
||||||
*/
|
|
||||||
void MemManage_Handler(void)
|
|
||||||
{
|
|
||||||
/* USER CODE BEGIN MemoryManagement_IRQn 0 */
|
|
||||||
|
|
||||||
/* USER CODE END MemoryManagement_IRQn 0 */
|
|
||||||
while (1)
|
|
||||||
{
|
|
||||||
/* USER CODE BEGIN W1_MemoryManagement_IRQn 0 */
|
|
||||||
/* USER CODE END W1_MemoryManagement_IRQn 0 */
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief This function handles Prefetch fault, memory access fault.
|
|
||||||
*/
|
|
||||||
void BusFault_Handler(void)
|
|
||||||
{
|
|
||||||
/* USER CODE BEGIN BusFault_IRQn 0 */
|
|
||||||
|
|
||||||
/* USER CODE END BusFault_IRQn 0 */
|
|
||||||
while (1)
|
|
||||||
{
|
|
||||||
/* USER CODE BEGIN W1_BusFault_IRQn 0 */
|
|
||||||
/* USER CODE END W1_BusFault_IRQn 0 */
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief This function handles Undefined instruction or illegal state.
|
|
||||||
*/
|
|
||||||
void UsageFault_Handler(void)
|
|
||||||
{
|
|
||||||
/* USER CODE BEGIN UsageFault_IRQn 0 */
|
|
||||||
|
|
||||||
/* USER CODE END UsageFault_IRQn 0 */
|
|
||||||
while (1)
|
|
||||||
{
|
|
||||||
/* USER CODE BEGIN W1_UsageFault_IRQn 0 */
|
|
||||||
/* USER CODE END W1_UsageFault_IRQn 0 */
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief This function handles System service call via SWI instruction.
|
|
||||||
*/
|
|
||||||
void SVC_Handler(void)
|
|
||||||
{
|
|
||||||
/* USER CODE BEGIN SVCall_IRQn 0 */
|
|
||||||
|
|
||||||
/* USER CODE END SVCall_IRQn 0 */
|
|
||||||
/* USER CODE BEGIN SVCall_IRQn 1 */
|
|
||||||
|
|
||||||
/* USER CODE END SVCall_IRQn 1 */
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief This function handles Debug monitor.
|
|
||||||
*/
|
|
||||||
void DebugMon_Handler(void)
|
|
||||||
{
|
|
||||||
/* USER CODE BEGIN DebugMonitor_IRQn 0 */
|
|
||||||
|
|
||||||
/* USER CODE END DebugMonitor_IRQn 0 */
|
|
||||||
/* USER CODE BEGIN DebugMonitor_IRQn 1 */
|
|
||||||
|
|
||||||
/* USER CODE END DebugMonitor_IRQn 1 */
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief This function handles Pendable request for system service.
|
|
||||||
*/
|
|
||||||
void PendSV_Handler(void)
|
|
||||||
{
|
|
||||||
/* USER CODE BEGIN PendSV_IRQn 0 */
|
|
||||||
|
|
||||||
/* USER CODE END PendSV_IRQn 0 */
|
|
||||||
/* USER CODE BEGIN PendSV_IRQn 1 */
|
|
||||||
|
|
||||||
/* USER CODE END PendSV_IRQn 1 */
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief This function handles System tick timer.
|
|
||||||
*/
|
|
||||||
void SysTick_Handler(void)
|
|
||||||
{
|
|
||||||
/* USER CODE BEGIN SysTick_IRQn 0 */
|
|
||||||
|
|
||||||
/* USER CODE END SysTick_IRQn 0 */
|
|
||||||
|
|
||||||
/* USER CODE BEGIN SysTick_IRQn 1 */
|
|
||||||
|
|
||||||
/* USER CODE END SysTick_IRQn 1 */
|
|
||||||
}
|
|
||||||
|
|
||||||
/******************************************************************************/
|
|
||||||
/* STM32F1xx Peripheral Interrupt Handlers */
|
|
||||||
/* Add here the Interrupt Handlers for the used peripherals. */
|
|
||||||
/* For the available peripheral interrupt handler names, */
|
|
||||||
/* please refer to the startup file (startup_stm32f1xx.s). */
|
|
||||||
/******************************************************************************/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief This function handles RTC global interrupt.
|
|
||||||
*/
|
|
||||||
void RTC_IRQHandler(void)
|
|
||||||
{
|
|
||||||
/* USER CODE BEGIN RTC_IRQn 0 */
|
|
||||||
|
|
||||||
/* USER CODE END RTC_IRQn 0 */
|
|
||||||
HAL_RTCEx_RTCIRQHandler(&hrtc);
|
|
||||||
/* USER CODE BEGIN RTC_IRQn 1 */
|
|
||||||
|
|
||||||
/* USER CODE END RTC_IRQn 1 */
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief This function handles TIM1 break interrupt.
|
|
||||||
*/
|
|
||||||
void TIM1_BRK_IRQHandler(void)
|
|
||||||
{
|
|
||||||
/* USER CODE BEGIN TIM1_BRK_IRQn 0 */
|
|
||||||
|
|
||||||
/* USER CODE END TIM1_BRK_IRQn 0 */
|
|
||||||
HAL_TIM_IRQHandler(&htim1);
|
|
||||||
/* USER CODE BEGIN TIM1_BRK_IRQn 1 */
|
|
||||||
|
|
||||||
/* USER CODE END TIM1_BRK_IRQn 1 */
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief This function handles TIM1 update interrupt.
|
|
||||||
*/
|
|
||||||
void TIM1_UP_IRQHandler(void)
|
|
||||||
{
|
|
||||||
/* USER CODE BEGIN TIM1_UP_IRQn 0 */
|
|
||||||
|
|
||||||
/* USER CODE END TIM1_UP_IRQn 0 */
|
|
||||||
HAL_TIM_IRQHandler(&htim1);
|
|
||||||
/* USER CODE BEGIN TIM1_UP_IRQn 1 */
|
|
||||||
|
|
||||||
//GPIOC->ODR^=(1<<13);
|
|
||||||
/* USER CODE END TIM1_UP_IRQn 1 */
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief This function handles TIM1 trigger and commutation interrupts.
|
|
||||||
*/
|
|
||||||
void TIM1_TRG_COM_IRQHandler(void)
|
|
||||||
{
|
|
||||||
/* USER CODE BEGIN TIM1_TRG_COM_IRQn 0 */
|
|
||||||
|
|
||||||
/* USER CODE END TIM1_TRG_COM_IRQn 0 */
|
|
||||||
HAL_TIM_IRQHandler(&htim1);
|
|
||||||
/* USER CODE BEGIN TIM1_TRG_COM_IRQn 1 */
|
|
||||||
|
|
||||||
/* USER CODE END TIM1_TRG_COM_IRQn 1 */
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief This function handles TIM1 capture compare interrupt.
|
|
||||||
*/
|
|
||||||
void TIM1_CC_IRQHandler(void)
|
|
||||||
{
|
|
||||||
/* USER CODE BEGIN TIM1_CC_IRQn 0 */
|
|
||||||
|
|
||||||
/* USER CODE END TIM1_CC_IRQn 0 */
|
|
||||||
HAL_TIM_IRQHandler(&htim1);
|
|
||||||
/* USER CODE BEGIN TIM1_CC_IRQn 1 */
|
|
||||||
|
|
||||||
/* USER CODE END TIM1_CC_IRQn 1 */
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief This function handles TIM2 global interrupt.
|
|
||||||
*/
|
|
||||||
void TIM2_IRQHandler(void)
|
|
||||||
{
|
|
||||||
/* USER CODE BEGIN TIM2_IRQn 0 */
|
|
||||||
RS_TIM_Handler(&hmodbus1);
|
|
||||||
return;
|
|
||||||
/* USER CODE END TIM2_IRQn 0 */
|
|
||||||
HAL_TIM_IRQHandler(&htim2);
|
|
||||||
/* USER CODE BEGIN TIM2_IRQn 1 */
|
|
||||||
//RS_TIM_Handler(&hmodbus1);
|
|
||||||
/* USER CODE END TIM2_IRQn 1 */
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief This function handles TIM3 global interrupt.
|
|
||||||
*/
|
|
||||||
void TIM3_IRQHandler(void)
|
|
||||||
{
|
|
||||||
/* USER CODE BEGIN TIM3_IRQn 0 */
|
|
||||||
static uint8_t first_in=1;
|
|
||||||
/* USER CODE END TIM3_IRQn 0 */
|
|
||||||
HAL_TIM_IRQHandler(&htim3);
|
|
||||||
/* USER CODE BEGIN TIM3_IRQn 1 */
|
|
||||||
if (first_in)
|
|
||||||
{
|
|
||||||
first_in=0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* USER CODE END TIM3_IRQn 1 */
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief This function handles USART1 global interrupt.
|
|
||||||
*/
|
|
||||||
void USART1_IRQHandler(void)
|
|
||||||
{
|
|
||||||
/* USER CODE BEGIN USART1_IRQn 0 */
|
|
||||||
RS_UART_Handler(&hmodbus1);
|
|
||||||
return;
|
|
||||||
/* USER CODE END USART1_IRQn 0 */
|
|
||||||
HAL_UART_IRQHandler(&huart1);
|
|
||||||
/* USER CODE BEGIN USART1_IRQn 1 */
|
|
||||||
//RS_UART_Handler(&hmodbus1);
|
|
||||||
|
|
||||||
|
|
||||||
/* USER CODE END USART1_IRQn 1 */
|
|
||||||
}
|
|
||||||
|
|
||||||
/* USER CODE BEGIN 1 */
|
|
||||||
|
|
||||||
/* USER CODE END 1 */
|
|
||||||
@@ -1,191 +0,0 @@
|
|||||||
/* USER CODE BEGIN Header */
|
|
||||||
/**
|
|
||||||
******************************************************************************
|
|
||||||
* @file tim.c
|
|
||||||
* @brief This file provides code for the configuration
|
|
||||||
* of the TIM 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 "tim.h"
|
|
||||||
|
|
||||||
/* USER CODE BEGIN 0 */
|
|
||||||
|
|
||||||
/* USER CODE END 0 */
|
|
||||||
|
|
||||||
TIM_HandleTypeDef htim1;
|
|
||||||
TIM_HandleTypeDef htim2;
|
|
||||||
|
|
||||||
/* TIM1 init function */
|
|
||||||
void MX_TIM1_Init(void)
|
|
||||||
{
|
|
||||||
|
|
||||||
/* USER CODE BEGIN TIM1_Init 0 */
|
|
||||||
|
|
||||||
/* USER CODE END TIM1_Init 0 */
|
|
||||||
|
|
||||||
TIM_ClockConfigTypeDef sClockSourceConfig = {0};
|
|
||||||
TIM_MasterConfigTypeDef sMasterConfig = {0};
|
|
||||||
|
|
||||||
/* USER CODE BEGIN TIM1_Init 1 */
|
|
||||||
|
|
||||||
/* USER CODE END TIM1_Init 1 */
|
|
||||||
htim1.Instance = TIM1;
|
|
||||||
htim1.Init.Prescaler = 0;
|
|
||||||
htim1.Init.CounterMode = TIM_COUNTERMODE_UP;
|
|
||||||
htim1.Init.Period = 65535;
|
|
||||||
htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
|
|
||||||
htim1.Init.RepetitionCounter = 0;
|
|
||||||
htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
|
|
||||||
if (HAL_TIM_Base_Init(&htim1) != HAL_OK)
|
|
||||||
{
|
|
||||||
Error_Handler();
|
|
||||||
}
|
|
||||||
sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
|
|
||||||
if (HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig) != HAL_OK)
|
|
||||||
{
|
|
||||||
Error_Handler();
|
|
||||||
}
|
|
||||||
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
|
|
||||||
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
|
|
||||||
if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK)
|
|
||||||
{
|
|
||||||
Error_Handler();
|
|
||||||
}
|
|
||||||
/* USER CODE BEGIN TIM1_Init 2 */
|
|
||||||
|
|
||||||
/* USER CODE END TIM1_Init 2 */
|
|
||||||
|
|
||||||
}
|
|
||||||
/* TIM2 init function */
|
|
||||||
void MX_TIM2_Init(void)
|
|
||||||
{
|
|
||||||
|
|
||||||
/* USER CODE BEGIN TIM2_Init 0 */
|
|
||||||
|
|
||||||
/* USER CODE END TIM2_Init 0 */
|
|
||||||
|
|
||||||
TIM_ClockConfigTypeDef sClockSourceConfig = {0};
|
|
||||||
TIM_MasterConfigTypeDef sMasterConfig = {0};
|
|
||||||
|
|
||||||
/* USER CODE BEGIN TIM2_Init 1 */
|
|
||||||
|
|
||||||
/* USER CODE END TIM2_Init 1 */
|
|
||||||
htim2.Instance = TIM2;
|
|
||||||
htim2.Init.Prescaler = 72-1;
|
|
||||||
htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
|
|
||||||
htim2.Init.Period = 65535;
|
|
||||||
htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
|
|
||||||
htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
|
|
||||||
if (HAL_TIM_Base_Init(&htim2) != HAL_OK)
|
|
||||||
{
|
|
||||||
Error_Handler();
|
|
||||||
}
|
|
||||||
sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
|
|
||||||
if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK)
|
|
||||||
{
|
|
||||||
Error_Handler();
|
|
||||||
}
|
|
||||||
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
|
|
||||||
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
|
|
||||||
if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK)
|
|
||||||
{
|
|
||||||
Error_Handler();
|
|
||||||
}
|
|
||||||
/* USER CODE BEGIN TIM2_Init 2 */
|
|
||||||
|
|
||||||
/* USER CODE END TIM2_Init 2 */
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle)
|
|
||||||
{
|
|
||||||
|
|
||||||
if(tim_baseHandle->Instance==TIM1)
|
|
||||||
{
|
|
||||||
/* USER CODE BEGIN TIM1_MspInit 0 */
|
|
||||||
|
|
||||||
/* USER CODE END TIM1_MspInit 0 */
|
|
||||||
/* TIM1 clock enable */
|
|
||||||
__HAL_RCC_TIM1_CLK_ENABLE();
|
|
||||||
|
|
||||||
/* TIM1 interrupt Init */
|
|
||||||
HAL_NVIC_SetPriority(TIM1_BRK_IRQn, 0, 0);
|
|
||||||
HAL_NVIC_EnableIRQ(TIM1_BRK_IRQn);
|
|
||||||
HAL_NVIC_SetPriority(TIM1_UP_IRQn, 0, 0);
|
|
||||||
HAL_NVIC_EnableIRQ(TIM1_UP_IRQn);
|
|
||||||
HAL_NVIC_SetPriority(TIM1_TRG_COM_IRQn, 0, 0);
|
|
||||||
HAL_NVIC_EnableIRQ(TIM1_TRG_COM_IRQn);
|
|
||||||
HAL_NVIC_SetPriority(TIM1_CC_IRQn, 0, 0);
|
|
||||||
HAL_NVIC_EnableIRQ(TIM1_CC_IRQn);
|
|
||||||
/* USER CODE BEGIN TIM1_MspInit 1 */
|
|
||||||
|
|
||||||
/* USER CODE END TIM1_MspInit 1 */
|
|
||||||
}
|
|
||||||
else if(tim_baseHandle->Instance==TIM2)
|
|
||||||
{
|
|
||||||
/* USER CODE BEGIN TIM2_MspInit 0 */
|
|
||||||
|
|
||||||
/* USER CODE END TIM2_MspInit 0 */
|
|
||||||
/* TIM2 clock enable */
|
|
||||||
__HAL_RCC_TIM2_CLK_ENABLE();
|
|
||||||
|
|
||||||
/* TIM2 interrupt Init */
|
|
||||||
HAL_NVIC_SetPriority(TIM2_IRQn, 0, 0);
|
|
||||||
HAL_NVIC_EnableIRQ(TIM2_IRQn);
|
|
||||||
/* USER CODE BEGIN TIM2_MspInit 1 */
|
|
||||||
|
|
||||||
/* USER CODE END TIM2_MspInit 1 */
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* tim_baseHandle)
|
|
||||||
{
|
|
||||||
|
|
||||||
if(tim_baseHandle->Instance==TIM1)
|
|
||||||
{
|
|
||||||
/* USER CODE BEGIN TIM1_MspDeInit 0 */
|
|
||||||
|
|
||||||
/* USER CODE END TIM1_MspDeInit 0 */
|
|
||||||
/* Peripheral clock disable */
|
|
||||||
__HAL_RCC_TIM1_CLK_DISABLE();
|
|
||||||
|
|
||||||
/* TIM1 interrupt Deinit */
|
|
||||||
HAL_NVIC_DisableIRQ(TIM1_BRK_IRQn);
|
|
||||||
HAL_NVIC_DisableIRQ(TIM1_UP_IRQn);
|
|
||||||
HAL_NVIC_DisableIRQ(TIM1_TRG_COM_IRQn);
|
|
||||||
HAL_NVIC_DisableIRQ(TIM1_CC_IRQn);
|
|
||||||
/* USER CODE BEGIN TIM1_MspDeInit 1 */
|
|
||||||
|
|
||||||
/* USER CODE END TIM1_MspDeInit 1 */
|
|
||||||
}
|
|
||||||
else if(tim_baseHandle->Instance==TIM2)
|
|
||||||
{
|
|
||||||
/* USER CODE BEGIN TIM2_MspDeInit 0 */
|
|
||||||
|
|
||||||
/* USER CODE END TIM2_MspDeInit 0 */
|
|
||||||
/* Peripheral clock disable */
|
|
||||||
__HAL_RCC_TIM2_CLK_DISABLE();
|
|
||||||
|
|
||||||
/* TIM2 interrupt Deinit */
|
|
||||||
HAL_NVIC_DisableIRQ(TIM2_IRQn);
|
|
||||||
/* USER CODE BEGIN TIM2_MspDeInit 1 */
|
|
||||||
|
|
||||||
/* USER CODE END TIM2_MspDeInit 1 */
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* USER CODE BEGIN 1 */
|
|
||||||
|
|
||||||
/* USER CODE END 1 */
|
|
||||||
@@ -1,124 +0,0 @@
|
|||||||
/* 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 */
|
|
||||||
huart1.ReceptionType=HAL_UART_RECEPTION_TOIDLE;
|
|
||||||
/* 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_GPIOB_CLK_ENABLE();
|
|
||||||
/**USART1 GPIO Configuration
|
|
||||||
PB6 ------> USART1_TX
|
|
||||||
PB7 ------> USART1_RX
|
|
||||||
*/
|
|
||||||
GPIO_InitStruct.Pin = GPIO_PIN_6;
|
|
||||||
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
|
|
||||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
|
|
||||||
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
|
|
||||||
|
|
||||||
GPIO_InitStruct.Pin = GPIO_PIN_7;
|
|
||||||
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
|
|
||||||
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
|
||||||
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
|
|
||||||
|
|
||||||
__HAL_AFIO_REMAP_USART1_ENABLE();
|
|
||||||
|
|
||||||
/* USART1 interrupt Init */
|
|
||||||
HAL_NVIC_SetPriority(USART1_IRQn, 0, 0);
|
|
||||||
HAL_NVIC_EnableIRQ(USART1_IRQn);
|
|
||||||
/* 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
|
|
||||||
PB6 ------> USART1_TX
|
|
||||||
PB7 ------> USART1_RX
|
|
||||||
*/
|
|
||||||
HAL_GPIO_DeInit(GPIOB, GPIO_PIN_6|GPIO_PIN_7);
|
|
||||||
|
|
||||||
/* USART1 interrupt Deinit */
|
|
||||||
HAL_NVIC_DisableIRQ(USART1_IRQn);
|
|
||||||
/* USER CODE BEGIN USART1_MspDeInit 1 */
|
|
||||||
|
|
||||||
/* USER CODE END USART1_MspDeInit 1 */
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* USER CODE BEGIN 1 */
|
|
||||||
|
|
||||||
/* USER CODE END 1 */
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
/*
|
|
||||||
* UVISION generated file: DO NOT EDIT!
|
|
||||||
* Generated by: uVision version 5.41.0.0
|
|
||||||
*
|
|
||||||
* Project: 'john103C6T6'
|
|
||||||
* Target: 'john103C6T6'
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef RTE_COMPONENTS_H
|
|
||||||
#define RTE_COMPONENTS_H
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Define the Device Header File:
|
|
||||||
*/
|
|
||||||
#define CMSIS_device_header "stm32f10x.h"
|
|
||||||
|
|
||||||
/* Keil::Compiler&ARM Compiler:I/O:STDOUT&Breakpoint@1.2.0 */
|
|
||||||
#define RTE_Compiler_IO_STDOUT /* Compiler I/O: STDOUT */
|
|
||||||
#define RTE_Compiler_IO_STDOUT_BKPT /* Compiler I/O: STDOUT Breakpoint */
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* RTE_COMPONENTS_H */
|
|
||||||
@@ -1,1015 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
|
|
||||||
<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_optx.xsd">
|
|
||||||
|
|
||||||
<SchemaVersion>1.0</SchemaVersion>
|
|
||||||
|
|
||||||
<Header>### uVision Project, (C) Keil Software</Header>
|
|
||||||
|
|
||||||
<Extensions>
|
|
||||||
<cExt>*.c</cExt>
|
|
||||||
<aExt>*.s*; *.src; *.a*</aExt>
|
|
||||||
<oExt>*.obj; *.o</oExt>
|
|
||||||
<lExt>*.lib</lExt>
|
|
||||||
<tExt>*.txt; *.h; *.inc; *.md</tExt>
|
|
||||||
<pExt>*.plm</pExt>
|
|
||||||
<CppX>*.cpp</CppX>
|
|
||||||
<nMigrate>0</nMigrate>
|
|
||||||
</Extensions>
|
|
||||||
|
|
||||||
<DaveTm>
|
|
||||||
<dwLowDateTime>0</dwLowDateTime>
|
|
||||||
<dwHighDateTime>0</dwHighDateTime>
|
|
||||||
</DaveTm>
|
|
||||||
|
|
||||||
<Target>
|
|
||||||
<TargetName>john103C6T6</TargetName>
|
|
||||||
<ToolsetNumber>0x4</ToolsetNumber>
|
|
||||||
<ToolsetName>ARM-ADS</ToolsetName>
|
|
||||||
<TargetOption>
|
|
||||||
<CLKADS>12000000</CLKADS>
|
|
||||||
<OPTTT>
|
|
||||||
<gFlags>1</gFlags>
|
|
||||||
<BeepAtEnd>1</BeepAtEnd>
|
|
||||||
<RunSim>0</RunSim>
|
|
||||||
<RunTarget>1</RunTarget>
|
|
||||||
<RunAbUc>0</RunAbUc>
|
|
||||||
</OPTTT>
|
|
||||||
<OPTHX>
|
|
||||||
<HexSelection>1</HexSelection>
|
|
||||||
<FlashByte>65535</FlashByte>
|
|
||||||
<HexRangeLowAddress>0</HexRangeLowAddress>
|
|
||||||
<HexRangeHighAddress>0</HexRangeHighAddress>
|
|
||||||
<HexOffset>0</HexOffset>
|
|
||||||
</OPTHX>
|
|
||||||
<OPTLEX>
|
|
||||||
<PageWidth>79</PageWidth>
|
|
||||||
<PageLength>66</PageLength>
|
|
||||||
<TabStop>8</TabStop>
|
|
||||||
<ListingPath>C:\Users\z\Documents\</ListingPath>
|
|
||||||
</OPTLEX>
|
|
||||||
<ListingPage>
|
|
||||||
<CreateCListing>1</CreateCListing>
|
|
||||||
<CreateAListing>1</CreateAListing>
|
|
||||||
<CreateLListing>1</CreateLListing>
|
|
||||||
<CreateIListing>0</CreateIListing>
|
|
||||||
<AsmCond>1</AsmCond>
|
|
||||||
<AsmSymb>1</AsmSymb>
|
|
||||||
<AsmXref>0</AsmXref>
|
|
||||||
<CCond>1</CCond>
|
|
||||||
<CCode>0</CCode>
|
|
||||||
<CListInc>0</CListInc>
|
|
||||||
<CSymb>0</CSymb>
|
|
||||||
<LinkerCodeListing>0</LinkerCodeListing>
|
|
||||||
</ListingPage>
|
|
||||||
<OPTXL>
|
|
||||||
<LMap>1</LMap>
|
|
||||||
<LComments>1</LComments>
|
|
||||||
<LGenerateSymbols>1</LGenerateSymbols>
|
|
||||||
<LLibSym>1</LLibSym>
|
|
||||||
<LLines>1</LLines>
|
|
||||||
<LLocSym>1</LLocSym>
|
|
||||||
<LPubSym>1</LPubSym>
|
|
||||||
<LXref>0</LXref>
|
|
||||||
<LExpSel>0</LExpSel>
|
|
||||||
</OPTXL>
|
|
||||||
<OPTFL>
|
|
||||||
<tvExp>1</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<IsCurrentTarget>1</IsCurrentTarget>
|
|
||||||
</OPTFL>
|
|
||||||
<CpuCode>18</CpuCode>
|
|
||||||
<DebugOpt>
|
|
||||||
<uSim>0</uSim>
|
|
||||||
<uTrg>1</uTrg>
|
|
||||||
<sLdApp>1</sLdApp>
|
|
||||||
<sGomain>1</sGomain>
|
|
||||||
<sRbreak>1</sRbreak>
|
|
||||||
<sRwatch>1</sRwatch>
|
|
||||||
<sRmem>1</sRmem>
|
|
||||||
<sRfunc>1</sRfunc>
|
|
||||||
<sRbox>1</sRbox>
|
|
||||||
<tLdApp>1</tLdApp>
|
|
||||||
<tGomain>1</tGomain>
|
|
||||||
<tRbreak>1</tRbreak>
|
|
||||||
<tRwatch>1</tRwatch>
|
|
||||||
<tRmem>1</tRmem>
|
|
||||||
<tRfunc>1</tRfunc>
|
|
||||||
<tRbox>1</tRbox>
|
|
||||||
<tRtrace>1</tRtrace>
|
|
||||||
<sRSysVw>1</sRSysVw>
|
|
||||||
<tRSysVw>1</tRSysVw>
|
|
||||||
<sRunDeb>0</sRunDeb>
|
|
||||||
<sLrtime>0</sLrtime>
|
|
||||||
<bEvRecOn>1</bEvRecOn>
|
|
||||||
<bSchkAxf>0</bSchkAxf>
|
|
||||||
<bTchkAxf>0</bTchkAxf>
|
|
||||||
<nTsel>6</nTsel>
|
|
||||||
<sDll></sDll>
|
|
||||||
<sDllPa></sDllPa>
|
|
||||||
<sDlgDll></sDlgDll>
|
|
||||||
<sDlgPa></sDlgPa>
|
|
||||||
<sIfile></sIfile>
|
|
||||||
<tDll></tDll>
|
|
||||||
<tDllPa></tDllPa>
|
|
||||||
<tDlgDll></tDlgDll>
|
|
||||||
<tDlgPa></tDlgPa>
|
|
||||||
<tIfile></tIfile>
|
|
||||||
<pMon>STLink\ST-LINKIII-KEIL_SWO.dll</pMon>
|
|
||||||
</DebugOpt>
|
|
||||||
<TargetDriverDllRegistry>
|
|
||||||
<SetRegEntry>
|
|
||||||
<Number>0</Number>
|
|
||||||
<Key>UL2CM3</Key>
|
|
||||||
<Name>UL2CM3(-S0 -C0 -P0 ) -FN1 -FC1000 -FD20000000 -FF0STM32F10x_128 -FL020000 -FS08000000 -FP0($$Device:STM32F103C8$Flash\STM32F10x_128.FLM)</Name>
|
|
||||||
</SetRegEntry>
|
|
||||||
<SetRegEntry>
|
|
||||||
<Number>0</Number>
|
|
||||||
<Key>ST-LINKIII-KEIL_SWO</Key>
|
|
||||||
<Name>-U7&2A27EDAB&0&3 -O206 -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 -FC1000 -FN1 -FF0STM32F10x_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32F103C8$Flash\STM32F10x_128.FLM) -WA0 -WE0 -WVCE4 -WS2710 -WM0 -WP2 -WK0-R0</Name>
|
|
||||||
</SetRegEntry>
|
|
||||||
<SetRegEntry>
|
|
||||||
<Number>0</Number>
|
|
||||||
<Key>ARMRTXEVENTFLAGS</Key>
|
|
||||||
<Name>-L70 -Z18 -C0 -M0 -T1</Name>
|
|
||||||
</SetRegEntry>
|
|
||||||
<SetRegEntry>
|
|
||||||
<Number>0</Number>
|
|
||||||
<Key>DLGTARM</Key>
|
|
||||||
<Name>(1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)</Name>
|
|
||||||
</SetRegEntry>
|
|
||||||
<SetRegEntry>
|
|
||||||
<Number>0</Number>
|
|
||||||
<Key>ARMDBGFLAGS</Key>
|
|
||||||
<Name></Name>
|
|
||||||
</SetRegEntry>
|
|
||||||
<SetRegEntry>
|
|
||||||
<Number>0</Number>
|
|
||||||
<Key>DLGUARM</Key>
|
|
||||||
<Name>(105=-1,-1,-1,-1,0)</Name>
|
|
||||||
</SetRegEntry>
|
|
||||||
</TargetDriverDllRegistry>
|
|
||||||
<Breakpoint/>
|
|
||||||
<WatchWindow1>
|
|
||||||
<Ww>
|
|
||||||
<count>0</count>
|
|
||||||
<WinNumber>1</WinNumber>
|
|
||||||
<ItemText>sens,0x0A</ItemText>
|
|
||||||
</Ww>
|
|
||||||
<Ww>
|
|
||||||
<count>1</count>
|
|
||||||
<WinNumber>1</WinNumber>
|
|
||||||
<ItemText>MB_DATA,0x0A</ItemText>
|
|
||||||
</Ww>
|
|
||||||
<Ww>
|
|
||||||
<count>2</count>
|
|
||||||
<WinNumber>1</WinNumber>
|
|
||||||
<ItemText>temp_sense</ItemText>
|
|
||||||
</Ww>
|
|
||||||
<Ww>
|
|
||||||
<count>3</count>
|
|
||||||
<WinNumber>1</WinNumber>
|
|
||||||
<ItemText>roms</ItemText>
|
|
||||||
</Ww>
|
|
||||||
<Ww>
|
|
||||||
<count>4</count>
|
|
||||||
<WinNumber>1</WinNumber>
|
|
||||||
<ItemText>state</ItemText>
|
|
||||||
</Ww>
|
|
||||||
<Ww>
|
|
||||||
<count>5</count>
|
|
||||||
<WinNumber>1</WinNumber>
|
|
||||||
<ItemText>last_page_addr</ItemText>
|
|
||||||
</Ww>
|
|
||||||
<Ww>
|
|
||||||
<count>6</count>
|
|
||||||
<WinNumber>1</WinNumber>
|
|
||||||
<ItemText>\\john103C6T6\../EEPROM_Emul/src/flash_ring.c\buffer_write_record\record_addr</ItemText>
|
|
||||||
</Ww>
|
|
||||||
<Ww>
|
|
||||||
<count>7</count>
|
|
||||||
<WinNumber>1</WinNumber>
|
|
||||||
<ItemText>record</ItemText>
|
|
||||||
</Ww>
|
|
||||||
<Ww>
|
|
||||||
<count>8</count>
|
|
||||||
<WinNumber>1</WinNumber>
|
|
||||||
<ItemText>flash_buff</ItemText>
|
|
||||||
</Ww>
|
|
||||||
<Ww>
|
|
||||||
<count>9</count>
|
|
||||||
<WinNumber>1</WinNumber>
|
|
||||||
<ItemText>new_record</ItemText>
|
|
||||||
</Ww>
|
|
||||||
<Ww>
|
|
||||||
<count>10</count>
|
|
||||||
<WinNumber>1</WinNumber>
|
|
||||||
<ItemText>state</ItemText>
|
|
||||||
</Ww>
|
|
||||||
<Ww>
|
|
||||||
<count>11</count>
|
|
||||||
<WinNumber>1</WinNumber>
|
|
||||||
<ItemText>htim</ItemText>
|
|
||||||
</Ww>
|
|
||||||
<Ww>
|
|
||||||
<count>12</count>
|
|
||||||
<WinNumber>1</WinNumber>
|
|
||||||
<ItemText>sens[i].set_temp</ItemText>
|
|
||||||
</Ww>
|
|
||||||
<Ww>
|
|
||||||
<count>13</count>
|
|
||||||
<WinNumber>1</WinNumber>
|
|
||||||
<ItemText>flag,0x0A</ItemText>
|
|
||||||
</Ww>
|
|
||||||
</WatchWindow1>
|
|
||||||
<WatchWindow2>
|
|
||||||
<Ww>
|
|
||||||
<count>0</count>
|
|
||||||
<WinNumber>2</WinNumber>
|
|
||||||
<ItemText>resolution</ItemText>
|
|
||||||
</Ww>
|
|
||||||
<Ww>
|
|
||||||
<count>1</count>
|
|
||||||
<WinNumber>2</WinNumber>
|
|
||||||
<ItemText>hmodbus1</ItemText>
|
|
||||||
</Ww>
|
|
||||||
<Ww>
|
|
||||||
<count>2</count>
|
|
||||||
<WinNumber>2</WinNumber>
|
|
||||||
<ItemText>hdallas,0x0A</ItemText>
|
|
||||||
</Ww>
|
|
||||||
</WatchWindow2>
|
|
||||||
<MemoryWindow1>
|
|
||||||
<Mm>
|
|
||||||
<WinNumber>1</WinNumber>
|
|
||||||
<SubType>0</SubType>
|
|
||||||
<ItemText>0x0800f800</ItemText>
|
|
||||||
<AccSizeX>0</AccSizeX>
|
|
||||||
</Mm>
|
|
||||||
</MemoryWindow1>
|
|
||||||
<Tracepoint>
|
|
||||||
<THDelay>0</THDelay>
|
|
||||||
</Tracepoint>
|
|
||||||
<DebugFlag>
|
|
||||||
<trace>0</trace>
|
|
||||||
<periodic>1</periodic>
|
|
||||||
<aLwin>1</aLwin>
|
|
||||||
<aCover>0</aCover>
|
|
||||||
<aSer1>0</aSer1>
|
|
||||||
<aSer2>0</aSer2>
|
|
||||||
<aPa>0</aPa>
|
|
||||||
<viewmode>1</viewmode>
|
|
||||||
<vrSel>0</vrSel>
|
|
||||||
<aSym>0</aSym>
|
|
||||||
<aTbox>0</aTbox>
|
|
||||||
<AscS1>0</AscS1>
|
|
||||||
<AscS2>0</AscS2>
|
|
||||||
<AscS3>0</AscS3>
|
|
||||||
<aSer3>0</aSer3>
|
|
||||||
<eProf>0</eProf>
|
|
||||||
<aLa>0</aLa>
|
|
||||||
<aPa1>0</aPa1>
|
|
||||||
<AscS4>0</AscS4>
|
|
||||||
<aSer4>0</aSer4>
|
|
||||||
<StkLoc>1</StkLoc>
|
|
||||||
<TrcWin>0</TrcWin>
|
|
||||||
<newCpu>0</newCpu>
|
|
||||||
<uProt>0</uProt>
|
|
||||||
</DebugFlag>
|
|
||||||
<LintExecutable></LintExecutable>
|
|
||||||
<LintConfigFile></LintConfigFile>
|
|
||||||
<bLintAuto>0</bLintAuto>
|
|
||||||
<bAutoGenD>0</bAutoGenD>
|
|
||||||
<LntExFlags>0</LntExFlags>
|
|
||||||
<pMisraName></pMisraName>
|
|
||||||
<pszMrule></pszMrule>
|
|
||||||
<pSingCmds></pSingCmds>
|
|
||||||
<pMultCmds></pMultCmds>
|
|
||||||
<pMisraNamep></pMisraNamep>
|
|
||||||
<pszMrulep></pszMrulep>
|
|
||||||
<pSingCmdsp></pSingCmdsp>
|
|
||||||
<pMultCmdsp></pMultCmdsp>
|
|
||||||
<SystemViewers>
|
|
||||||
<Entry>
|
|
||||||
<Name>System Viewer\FLASH</Name>
|
|
||||||
<WinId>35904</WinId>
|
|
||||||
</Entry>
|
|
||||||
<Entry>
|
|
||||||
<Name>System Viewer\GPIOB</Name>
|
|
||||||
<WinId>35900</WinId>
|
|
||||||
</Entry>
|
|
||||||
<Entry>
|
|
||||||
<Name>System Viewer\GPIOC</Name>
|
|
||||||
<WinId>35905</WinId>
|
|
||||||
</Entry>
|
|
||||||
</SystemViewers>
|
|
||||||
<DebugDescription>
|
|
||||||
<Enable>1</Enable>
|
|
||||||
<EnableFlashSeq>0</EnableFlashSeq>
|
|
||||||
<EnableLog>0</EnableLog>
|
|
||||||
<Protocol>2</Protocol>
|
|
||||||
<DbgClock>10000000</DbgClock>
|
|
||||||
</DebugDescription>
|
|
||||||
</TargetOption>
|
|
||||||
</Target>
|
|
||||||
|
|
||||||
<Group>
|
|
||||||
<GroupName>Application/MDK-ARM</GroupName>
|
|
||||||
<tvExp>1</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<cbSel>0</cbSel>
|
|
||||||
<RteFlg>0</RteFlg>
|
|
||||||
<File>
|
|
||||||
<GroupNumber>1</GroupNumber>
|
|
||||||
<FileNumber>1</FileNumber>
|
|
||||||
<FileType>2</FileType>
|
|
||||||
<tvExp>0</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<bDave2>0</bDave2>
|
|
||||||
<PathWithFileName>.\startup_stm32f10x_md.s</PathWithFileName>
|
|
||||||
<FilenameWithoutPath>startup_stm32f10x_md.s</FilenameWithoutPath>
|
|
||||||
<RteFlg>0</RteFlg>
|
|
||||||
<bShared>0</bShared>
|
|
||||||
</File>
|
|
||||||
</Group>
|
|
||||||
|
|
||||||
<Group>
|
|
||||||
<GroupName>Application/User/Core</GroupName>
|
|
||||||
<tvExp>1</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<cbSel>0</cbSel>
|
|
||||||
<RteFlg>0</RteFlg>
|
|
||||||
<File>
|
|
||||||
<GroupNumber>2</GroupNumber>
|
|
||||||
<FileNumber>2</FileNumber>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<tvExp>0</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<bDave2>0</bDave2>
|
|
||||||
<PathWithFileName>..\Core\Src\dallas_tools.c</PathWithFileName>
|
|
||||||
<FilenameWithoutPath>dallas_tools.c</FilenameWithoutPath>
|
|
||||||
<RteFlg>0</RteFlg>
|
|
||||||
<bShared>0</bShared>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<GroupNumber>2</GroupNumber>
|
|
||||||
<FileNumber>3</FileNumber>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<tvExp>0</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<bDave2>0</bDave2>
|
|
||||||
<PathWithFileName>..\Core\Src\ds18b20_driver.c</PathWithFileName>
|
|
||||||
<FilenameWithoutPath>ds18b20_driver.c</FilenameWithoutPath>
|
|
||||||
<RteFlg>0</RteFlg>
|
|
||||||
<bShared>0</bShared>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<GroupNumber>2</GroupNumber>
|
|
||||||
<FileNumber>4</FileNumber>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<tvExp>0</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<bDave2>0</bDave2>
|
|
||||||
<PathWithFileName>..\Core\Src\onewire.c</PathWithFileName>
|
|
||||||
<FilenameWithoutPath>onewire.c</FilenameWithoutPath>
|
|
||||||
<RteFlg>0</RteFlg>
|
|
||||||
<bShared>0</bShared>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<GroupNumber>2</GroupNumber>
|
|
||||||
<FileNumber>5</FileNumber>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<tvExp>0</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<bDave2>0</bDave2>
|
|
||||||
<PathWithFileName>..\Core\Src\ow_port.c</PathWithFileName>
|
|
||||||
<FilenameWithoutPath>ow_port.c</FilenameWithoutPath>
|
|
||||||
<RteFlg>0</RteFlg>
|
|
||||||
<bShared>0</bShared>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<GroupNumber>2</GroupNumber>
|
|
||||||
<FileNumber>6</FileNumber>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<tvExp>1</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<bDave2>0</bDave2>
|
|
||||||
<PathWithFileName>../Core/Src/main.c</PathWithFileName>
|
|
||||||
<FilenameWithoutPath>main.c</FilenameWithoutPath>
|
|
||||||
<RteFlg>0</RteFlg>
|
|
||||||
<bShared>0</bShared>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<GroupNumber>2</GroupNumber>
|
|
||||||
<FileNumber>7</FileNumber>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<tvExp>0</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<bDave2>0</bDave2>
|
|
||||||
<PathWithFileName>../Core/Src/gpio.c</PathWithFileName>
|
|
||||||
<FilenameWithoutPath>gpio.c</FilenameWithoutPath>
|
|
||||||
<RteFlg>0</RteFlg>
|
|
||||||
<bShared>0</bShared>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<GroupNumber>2</GroupNumber>
|
|
||||||
<FileNumber>8</FileNumber>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<tvExp>0</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<bDave2>0</bDave2>
|
|
||||||
<PathWithFileName>../Core/Src/adc.c</PathWithFileName>
|
|
||||||
<FilenameWithoutPath>adc.c</FilenameWithoutPath>
|
|
||||||
<RteFlg>0</RteFlg>
|
|
||||||
<bShared>0</bShared>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<GroupNumber>2</GroupNumber>
|
|
||||||
<FileNumber>9</FileNumber>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<tvExp>0</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<bDave2>0</bDave2>
|
|
||||||
<PathWithFileName>../Core/Src/can.c</PathWithFileName>
|
|
||||||
<FilenameWithoutPath>can.c</FilenameWithoutPath>
|
|
||||||
<RteFlg>0</RteFlg>
|
|
||||||
<bShared>0</bShared>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<GroupNumber>2</GroupNumber>
|
|
||||||
<FileNumber>10</FileNumber>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<tvExp>0</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<bDave2>0</bDave2>
|
|
||||||
<PathWithFileName>../Core/Src/i2c.c</PathWithFileName>
|
|
||||||
<FilenameWithoutPath>i2c.c</FilenameWithoutPath>
|
|
||||||
<RteFlg>0</RteFlg>
|
|
||||||
<bShared>0</bShared>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<GroupNumber>2</GroupNumber>
|
|
||||||
<FileNumber>11</FileNumber>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<tvExp>0</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<bDave2>0</bDave2>
|
|
||||||
<PathWithFileName>../Core/Src/rtc.c</PathWithFileName>
|
|
||||||
<FilenameWithoutPath>rtc.c</FilenameWithoutPath>
|
|
||||||
<RteFlg>0</RteFlg>
|
|
||||||
<bShared>0</bShared>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<GroupNumber>2</GroupNumber>
|
|
||||||
<FileNumber>12</FileNumber>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<tvExp>0</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<bDave2>0</bDave2>
|
|
||||||
<PathWithFileName>../Core/Src/spi.c</PathWithFileName>
|
|
||||||
<FilenameWithoutPath>spi.c</FilenameWithoutPath>
|
|
||||||
<RteFlg>0</RteFlg>
|
|
||||||
<bShared>0</bShared>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<GroupNumber>2</GroupNumber>
|
|
||||||
<FileNumber>13</FileNumber>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<tvExp>0</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<bDave2>0</bDave2>
|
|
||||||
<PathWithFileName>../Core/Src/tim.c</PathWithFileName>
|
|
||||||
<FilenameWithoutPath>tim.c</FilenameWithoutPath>
|
|
||||||
<RteFlg>0</RteFlg>
|
|
||||||
<bShared>0</bShared>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<GroupNumber>2</GroupNumber>
|
|
||||||
<FileNumber>14</FileNumber>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<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>15</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>
|
|
||||||
<bShared>0</bShared>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<GroupNumber>2</GroupNumber>
|
|
||||||
<FileNumber>16</FileNumber>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<tvExp>0</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<bDave2>0</bDave2>
|
|
||||||
<PathWithFileName>../Core/Src/stm32f1xx_hal_msp.c</PathWithFileName>
|
|
||||||
<FilenameWithoutPath>stm32f1xx_hal_msp.c</FilenameWithoutPath>
|
|
||||||
<RteFlg>0</RteFlg>
|
|
||||||
<bShared>0</bShared>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<GroupNumber>2</GroupNumber>
|
|
||||||
<FileNumber>17</FileNumber>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<tvExp>0</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<bDave2>0</bDave2>
|
|
||||||
<PathWithFileName>../Core/Src/stm32f1xx_hal_timebase_tim.c</PathWithFileName>
|
|
||||||
<FilenameWithoutPath>stm32f1xx_hal_timebase_tim.c</FilenameWithoutPath>
|
|
||||||
<RteFlg>0</RteFlg>
|
|
||||||
<bShared>0</bShared>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<GroupNumber>2</GroupNumber>
|
|
||||||
<FileNumber>18</FileNumber>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<tvExp>0</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<bDave2>0</bDave2>
|
|
||||||
<PathWithFileName>..\EEPROM_Emul\src\flash_ring.c</PathWithFileName>
|
|
||||||
<FilenameWithoutPath>flash_ring.c</FilenameWithoutPath>
|
|
||||||
<RteFlg>0</RteFlg>
|
|
||||||
<bShared>0</bShared>
|
|
||||||
</File>
|
|
||||||
</Group>
|
|
||||||
|
|
||||||
<Group>
|
|
||||||
<GroupName>Drivers/STM32F1xx_HAL_Driver</GroupName>
|
|
||||||
<tvExp>0</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<cbSel>0</cbSel>
|
|
||||||
<RteFlg>0</RteFlg>
|
|
||||||
<File>
|
|
||||||
<GroupNumber>3</GroupNumber>
|
|
||||||
<FileNumber>19</FileNumber>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<tvExp>0</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<bDave2>0</bDave2>
|
|
||||||
<PathWithFileName>../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c</PathWithFileName>
|
|
||||||
<FilenameWithoutPath>stm32f1xx_hal_gpio_ex.c</FilenameWithoutPath>
|
|
||||||
<RteFlg>0</RteFlg>
|
|
||||||
<bShared>0</bShared>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<GroupNumber>3</GroupNumber>
|
|
||||||
<FileNumber>20</FileNumber>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<tvExp>0</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<bDave2>0</bDave2>
|
|
||||||
<PathWithFileName>../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.c</PathWithFileName>
|
|
||||||
<FilenameWithoutPath>stm32f1xx_hal_tim.c</FilenameWithoutPath>
|
|
||||||
<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_tim_ex.c</PathWithFileName>
|
|
||||||
<FilenameWithoutPath>stm32f1xx_hal_tim_ex.c</FilenameWithoutPath>
|
|
||||||
<RteFlg>0</RteFlg>
|
|
||||||
<bShared>0</bShared>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<GroupNumber>3</GroupNumber>
|
|
||||||
<FileNumber>22</FileNumber>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<tvExp>0</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<bDave2>0</bDave2>
|
|
||||||
<PathWithFileName>../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.c</PathWithFileName>
|
|
||||||
<FilenameWithoutPath>stm32f1xx_hal_adc.c</FilenameWithoutPath>
|
|
||||||
<RteFlg>0</RteFlg>
|
|
||||||
<bShared>0</bShared>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<GroupNumber>3</GroupNumber>
|
|
||||||
<FileNumber>23</FileNumber>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<tvExp>0</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<bDave2>0</bDave2>
|
|
||||||
<PathWithFileName>../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.c</PathWithFileName>
|
|
||||||
<FilenameWithoutPath>stm32f1xx_hal_adc_ex.c</FilenameWithoutPath>
|
|
||||||
<RteFlg>0</RteFlg>
|
|
||||||
<bShared>0</bShared>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<GroupNumber>3</GroupNumber>
|
|
||||||
<FileNumber>24</FileNumber>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<tvExp>0</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<bDave2>0</bDave2>
|
|
||||||
<PathWithFileName>../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c</PathWithFileName>
|
|
||||||
<FilenameWithoutPath>stm32f1xx_hal.c</FilenameWithoutPath>
|
|
||||||
<RteFlg>0</RteFlg>
|
|
||||||
<bShared>0</bShared>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<GroupNumber>3</GroupNumber>
|
|
||||||
<FileNumber>25</FileNumber>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<tvExp>0</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<bDave2>0</bDave2>
|
|
||||||
<PathWithFileName>../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c</PathWithFileName>
|
|
||||||
<FilenameWithoutPath>stm32f1xx_hal_rcc.c</FilenameWithoutPath>
|
|
||||||
<RteFlg>0</RteFlg>
|
|
||||||
<bShared>0</bShared>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<GroupNumber>3</GroupNumber>
|
|
||||||
<FileNumber>26</FileNumber>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<tvExp>0</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<bDave2>0</bDave2>
|
|
||||||
<PathWithFileName>../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c</PathWithFileName>
|
|
||||||
<FilenameWithoutPath>stm32f1xx_hal_rcc_ex.c</FilenameWithoutPath>
|
|
||||||
<RteFlg>0</RteFlg>
|
|
||||||
<bShared>0</bShared>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<GroupNumber>3</GroupNumber>
|
|
||||||
<FileNumber>27</FileNumber>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<tvExp>0</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<bDave2>0</bDave2>
|
|
||||||
<PathWithFileName>../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c</PathWithFileName>
|
|
||||||
<FilenameWithoutPath>stm32f1xx_hal_gpio.c</FilenameWithoutPath>
|
|
||||||
<RteFlg>0</RteFlg>
|
|
||||||
<bShared>0</bShared>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<GroupNumber>3</GroupNumber>
|
|
||||||
<FileNumber>28</FileNumber>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<tvExp>0</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<bDave2>0</bDave2>
|
|
||||||
<PathWithFileName>../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c</PathWithFileName>
|
|
||||||
<FilenameWithoutPath>stm32f1xx_hal_dma.c</FilenameWithoutPath>
|
|
||||||
<RteFlg>0</RteFlg>
|
|
||||||
<bShared>0</bShared>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<GroupNumber>3</GroupNumber>
|
|
||||||
<FileNumber>29</FileNumber>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<tvExp>0</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<bDave2>0</bDave2>
|
|
||||||
<PathWithFileName>../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c</PathWithFileName>
|
|
||||||
<FilenameWithoutPath>stm32f1xx_hal_cortex.c</FilenameWithoutPath>
|
|
||||||
<RteFlg>0</RteFlg>
|
|
||||||
<bShared>0</bShared>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<GroupNumber>3</GroupNumber>
|
|
||||||
<FileNumber>30</FileNumber>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<tvExp>0</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<bDave2>0</bDave2>
|
|
||||||
<PathWithFileName>../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c</PathWithFileName>
|
|
||||||
<FilenameWithoutPath>stm32f1xx_hal_pwr.c</FilenameWithoutPath>
|
|
||||||
<RteFlg>0</RteFlg>
|
|
||||||
<bShared>0</bShared>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<GroupNumber>3</GroupNumber>
|
|
||||||
<FileNumber>31</FileNumber>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<tvExp>0</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<bDave2>0</bDave2>
|
|
||||||
<PathWithFileName>../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c</PathWithFileName>
|
|
||||||
<FilenameWithoutPath>stm32f1xx_hal_flash.c</FilenameWithoutPath>
|
|
||||||
<RteFlg>0</RteFlg>
|
|
||||||
<bShared>0</bShared>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<GroupNumber>3</GroupNumber>
|
|
||||||
<FileNumber>32</FileNumber>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<tvExp>0</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<bDave2>0</bDave2>
|
|
||||||
<PathWithFileName>../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c</PathWithFileName>
|
|
||||||
<FilenameWithoutPath>stm32f1xx_hal_flash_ex.c</FilenameWithoutPath>
|
|
||||||
<RteFlg>0</RteFlg>
|
|
||||||
<bShared>0</bShared>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<GroupNumber>3</GroupNumber>
|
|
||||||
<FileNumber>33</FileNumber>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<tvExp>0</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<bDave2>0</bDave2>
|
|
||||||
<PathWithFileName>../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.c</PathWithFileName>
|
|
||||||
<FilenameWithoutPath>stm32f1xx_hal_exti.c</FilenameWithoutPath>
|
|
||||||
<RteFlg>0</RteFlg>
|
|
||||||
<bShared>0</bShared>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<GroupNumber>3</GroupNumber>
|
|
||||||
<FileNumber>34</FileNumber>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<tvExp>0</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<bDave2>0</bDave2>
|
|
||||||
<PathWithFileName>../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_can.c</PathWithFileName>
|
|
||||||
<FilenameWithoutPath>stm32f1xx_hal_can.c</FilenameWithoutPath>
|
|
||||||
<RteFlg>0</RteFlg>
|
|
||||||
<bShared>0</bShared>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<GroupNumber>3</GroupNumber>
|
|
||||||
<FileNumber>35</FileNumber>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<tvExp>0</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<bDave2>0</bDave2>
|
|
||||||
<PathWithFileName>../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.c</PathWithFileName>
|
|
||||||
<FilenameWithoutPath>stm32f1xx_hal_i2c.c</FilenameWithoutPath>
|
|
||||||
<RteFlg>0</RteFlg>
|
|
||||||
<bShared>0</bShared>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<GroupNumber>3</GroupNumber>
|
|
||||||
<FileNumber>36</FileNumber>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<tvExp>0</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<bDave2>0</bDave2>
|
|
||||||
<PathWithFileName>../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rtc.c</PathWithFileName>
|
|
||||||
<FilenameWithoutPath>stm32f1xx_hal_rtc.c</FilenameWithoutPath>
|
|
||||||
<RteFlg>0</RteFlg>
|
|
||||||
<bShared>0</bShared>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<GroupNumber>3</GroupNumber>
|
|
||||||
<FileNumber>37</FileNumber>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<tvExp>0</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<bDave2>0</bDave2>
|
|
||||||
<PathWithFileName>../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rtc_ex.c</PathWithFileName>
|
|
||||||
<FilenameWithoutPath>stm32f1xx_hal_rtc_ex.c</FilenameWithoutPath>
|
|
||||||
<RteFlg>0</RteFlg>
|
|
||||||
<bShared>0</bShared>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<GroupNumber>3</GroupNumber>
|
|
||||||
<FileNumber>38</FileNumber>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<tvExp>0</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<bDave2>0</bDave2>
|
|
||||||
<PathWithFileName>../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_spi.c</PathWithFileName>
|
|
||||||
<FilenameWithoutPath>stm32f1xx_hal_spi.c</FilenameWithoutPath>
|
|
||||||
<RteFlg>0</RteFlg>
|
|
||||||
<bShared>0</bShared>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<GroupNumber>3</GroupNumber>
|
|
||||||
<FileNumber>39</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>
|
|
||||||
<GroupName>Drivers/CMSIS</GroupName>
|
|
||||||
<tvExp>1</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<cbSel>0</cbSel>
|
|
||||||
<RteFlg>0</RteFlg>
|
|
||||||
<File>
|
|
||||||
<GroupNumber>4</GroupNumber>
|
|
||||||
<FileNumber>40</FileNumber>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<tvExp>0</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<bDave2>0</bDave2>
|
|
||||||
<PathWithFileName>../Core/Src/system_stm32f1xx.c</PathWithFileName>
|
|
||||||
<FilenameWithoutPath>system_stm32f1xx.c</FilenameWithoutPath>
|
|
||||||
<RteFlg>0</RteFlg>
|
|
||||||
<bShared>0</bShared>
|
|
||||||
</File>
|
|
||||||
</Group>
|
|
||||||
|
|
||||||
<Group>
|
|
||||||
<GroupName>modbus</GroupName>
|
|
||||||
<tvExp>0</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<cbSel>0</cbSel>
|
|
||||||
<RteFlg>0</RteFlg>
|
|
||||||
<File>
|
|
||||||
<GroupNumber>5</GroupNumber>
|
|
||||||
<FileNumber>41</FileNumber>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<tvExp>0</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<bDave2>0</bDave2>
|
|
||||||
<PathWithFileName>..\..\core\STM32_Modbus\Src\__crc_algs.c</PathWithFileName>
|
|
||||||
<FilenameWithoutPath>__crc_algs.c</FilenameWithoutPath>
|
|
||||||
<RteFlg>0</RteFlg>
|
|
||||||
<bShared>0</bShared>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<GroupNumber>5</GroupNumber>
|
|
||||||
<FileNumber>42</FileNumber>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<tvExp>0</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<bDave2>0</bDave2>
|
|
||||||
<PathWithFileName>..\..\core\STM32_Modbus\Src\__modbus_compat.c</PathWithFileName>
|
|
||||||
<FilenameWithoutPath>__modbus_compat.c</FilenameWithoutPath>
|
|
||||||
<RteFlg>0</RteFlg>
|
|
||||||
<bShared>0</bShared>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<GroupNumber>5</GroupNumber>
|
|
||||||
<FileNumber>43</FileNumber>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<tvExp>1</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<bDave2>0</bDave2>
|
|
||||||
<PathWithFileName>..\..\core\STM32_Modbus\Src\modbus.c</PathWithFileName>
|
|
||||||
<FilenameWithoutPath>modbus.c</FilenameWithoutPath>
|
|
||||||
<RteFlg>0</RteFlg>
|
|
||||||
<bShared>0</bShared>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<GroupNumber>5</GroupNumber>
|
|
||||||
<FileNumber>44</FileNumber>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<tvExp>0</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<bDave2>0</bDave2>
|
|
||||||
<PathWithFileName>..\..\core\STM32_Modbus\Src\modbus_coils.c</PathWithFileName>
|
|
||||||
<FilenameWithoutPath>modbus_coils.c</FilenameWithoutPath>
|
|
||||||
<RteFlg>0</RteFlg>
|
|
||||||
<bShared>0</bShared>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<GroupNumber>5</GroupNumber>
|
|
||||||
<FileNumber>45</FileNumber>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<tvExp>0</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<bDave2>0</bDave2>
|
|
||||||
<PathWithFileName>..\..\core\STM32_Modbus\Src\modbus_core.c</PathWithFileName>
|
|
||||||
<FilenameWithoutPath>modbus_core.c</FilenameWithoutPath>
|
|
||||||
<RteFlg>0</RteFlg>
|
|
||||||
<bShared>0</bShared>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<GroupNumber>5</GroupNumber>
|
|
||||||
<FileNumber>46</FileNumber>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<tvExp>0</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<bDave2>0</bDave2>
|
|
||||||
<PathWithFileName>..\..\core\STM32_Modbus\Src\modbus_devid.c</PathWithFileName>
|
|
||||||
<FilenameWithoutPath>modbus_devid.c</FilenameWithoutPath>
|
|
||||||
<RteFlg>0</RteFlg>
|
|
||||||
<bShared>0</bShared>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<GroupNumber>5</GroupNumber>
|
|
||||||
<FileNumber>47</FileNumber>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<tvExp>0</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<bDave2>0</bDave2>
|
|
||||||
<PathWithFileName>..\..\core\STM32_Modbus\Src\modbus_diag.c</PathWithFileName>
|
|
||||||
<FilenameWithoutPath>modbus_diag.c</FilenameWithoutPath>
|
|
||||||
<RteFlg>0</RteFlg>
|
|
||||||
<bShared>0</bShared>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<GroupNumber>5</GroupNumber>
|
|
||||||
<FileNumber>48</FileNumber>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<tvExp>0</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<bDave2>0</bDave2>
|
|
||||||
<PathWithFileName>..\..\core\STM32_Modbus\Src\modbus_holdregs.c</PathWithFileName>
|
|
||||||
<FilenameWithoutPath>modbus_holdregs.c</FilenameWithoutPath>
|
|
||||||
<RteFlg>0</RteFlg>
|
|
||||||
<bShared>0</bShared>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<GroupNumber>5</GroupNumber>
|
|
||||||
<FileNumber>49</FileNumber>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<tvExp>0</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<bDave2>0</bDave2>
|
|
||||||
<PathWithFileName>..\..\core\STM32_Modbus\Src\modbus_inputregs.c</PathWithFileName>
|
|
||||||
<FilenameWithoutPath>modbus_inputregs.c</FilenameWithoutPath>
|
|
||||||
<RteFlg>0</RteFlg>
|
|
||||||
<bShared>0</bShared>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<GroupNumber>5</GroupNumber>
|
|
||||||
<FileNumber>50</FileNumber>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<tvExp>0</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<bDave2>0</bDave2>
|
|
||||||
<PathWithFileName>..\..\core\STM32_Modbus\Src\modbus_master.c</PathWithFileName>
|
|
||||||
<FilenameWithoutPath>modbus_master.c</FilenameWithoutPath>
|
|
||||||
<RteFlg>0</RteFlg>
|
|
||||||
<bShared>0</bShared>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<GroupNumber>5</GroupNumber>
|
|
||||||
<FileNumber>51</FileNumber>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<tvExp>0</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<bDave2>0</bDave2>
|
|
||||||
<PathWithFileName>..\..\core\STM32_Modbus\Src\modbus_slave.c</PathWithFileName>
|
|
||||||
<FilenameWithoutPath>modbus_slave.c</FilenameWithoutPath>
|
|
||||||
<RteFlg>0</RteFlg>
|
|
||||||
<bShared>0</bShared>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<GroupNumber>5</GroupNumber>
|
|
||||||
<FileNumber>52</FileNumber>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<tvExp>0</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<bDave2>0</bDave2>
|
|
||||||
<PathWithFileName>..\..\core\STM32_Modbus\Src\rs_message.c</PathWithFileName>
|
|
||||||
<FilenameWithoutPath>rs_message.c</FilenameWithoutPath>
|
|
||||||
<RteFlg>0</RteFlg>
|
|
||||||
<bShared>0</bShared>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<GroupNumber>5</GroupNumber>
|
|
||||||
<FileNumber>53</FileNumber>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<tvExp>0</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<bDave2>0</bDave2>
|
|
||||||
<PathWithFileName>..\Modbus\modbus_data.c</PathWithFileName>
|
|
||||||
<FilenameWithoutPath>modbus_data.c</FilenameWithoutPath>
|
|
||||||
<RteFlg>0</RteFlg>
|
|
||||||
<bShared>0</bShared>
|
|
||||||
</File>
|
|
||||||
</Group>
|
|
||||||
|
|
||||||
<Group>
|
|
||||||
<GroupName>::CMSIS</GroupName>
|
|
||||||
<tvExp>0</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<cbSel>0</cbSel>
|
|
||||||
<RteFlg>1</RteFlg>
|
|
||||||
</Group>
|
|
||||||
|
|
||||||
<Group>
|
|
||||||
<GroupName>::CMSIS Driver</GroupName>
|
|
||||||
<tvExp>0</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<cbSel>0</cbSel>
|
|
||||||
<RteFlg>1</RteFlg>
|
|
||||||
</Group>
|
|
||||||
|
|
||||||
<Group>
|
|
||||||
<GroupName>::Compiler</GroupName>
|
|
||||||
<tvExp>0</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<cbSel>0</cbSel>
|
|
||||||
<RteFlg>1</RteFlg>
|
|
||||||
</Group>
|
|
||||||
|
|
||||||
</ProjectOpt>
|
|
||||||
@@ -1,1341 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
|
|
||||||
<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_projx.xsd">
|
|
||||||
|
|
||||||
<SchemaVersion>2.1</SchemaVersion>
|
|
||||||
|
|
||||||
<Header>### uVision Project, (C) Keil Software</Header>
|
|
||||||
|
|
||||||
<Targets>
|
|
||||||
<Target>
|
|
||||||
<TargetName>john103C6T6</TargetName>
|
|
||||||
<ToolsetNumber>0x4</ToolsetNumber>
|
|
||||||
<ToolsetName>ARM-ADS</ToolsetName>
|
|
||||||
<pArmCC>6220000::V6.22::ARMCLANG</pArmCC>
|
|
||||||
<pCCUsed>6220000::V6.22::ARMCLANG</pCCUsed>
|
|
||||||
<uAC6>1</uAC6>
|
|
||||||
<TargetOption>
|
|
||||||
<TargetCommonOption>
|
|
||||||
<Device>STM32F103C8</Device>
|
|
||||||
<Vendor>STMicroelectronics</Vendor>
|
|
||||||
<PackID>Keil.STM32F1xx_DFP.2.4.0</PackID>
|
|
||||||
<PackURL>http://www.keil.com/pack/</PackURL>
|
|
||||||
<Cpu>IRAM(0x20000000,0x00005000) IROM(0x08000000,0x00010000) CPUTYPE("Cortex-M3") CLOCK(12000000) ELITTLE</Cpu>
|
|
||||||
<FlashUtilSpec></FlashUtilSpec>
|
|
||||||
<StartupFile></StartupFile>
|
|
||||||
<FlashDriverDll>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32F10x_128 -FS08000000 -FL020000 -FP0($$Device:STM32F103C8$Flash\STM32F10x_128.FLM))</FlashDriverDll>
|
|
||||||
<DeviceId>0</DeviceId>
|
|
||||||
<RegisterFile>$$Device:STM32F103C8$Device\Include\stm32f10x.h</RegisterFile>
|
|
||||||
<MemoryEnv></MemoryEnv>
|
|
||||||
<Cmp></Cmp>
|
|
||||||
<Asm></Asm>
|
|
||||||
<Linker></Linker>
|
|
||||||
<OHString></OHString>
|
|
||||||
<InfinionOptionDll></InfinionOptionDll>
|
|
||||||
<SLE66CMisc></SLE66CMisc>
|
|
||||||
<SLE66AMisc></SLE66AMisc>
|
|
||||||
<SLE66LinkerMisc></SLE66LinkerMisc>
|
|
||||||
<SFDFile>$$Device:STM32F103C8$SVD\STM32F103xx.svd</SFDFile>
|
|
||||||
<bCustSvd>0</bCustSvd>
|
|
||||||
<UseEnv>0</UseEnv>
|
|
||||||
<BinPath></BinPath>
|
|
||||||
<IncludePath></IncludePath>
|
|
||||||
<LibPath></LibPath>
|
|
||||||
<RegisterFilePath></RegisterFilePath>
|
|
||||||
<DBRegisterFilePath></DBRegisterFilePath>
|
|
||||||
<TargetStatus>
|
|
||||||
<Error>0</Error>
|
|
||||||
<ExitCodeStop>0</ExitCodeStop>
|
|
||||||
<ButtonStop>0</ButtonStop>
|
|
||||||
<NotGenerated>0</NotGenerated>
|
|
||||||
<InvalidFlash>1</InvalidFlash>
|
|
||||||
</TargetStatus>
|
|
||||||
<OutputDirectory>john103C6T6\</OutputDirectory>
|
|
||||||
<OutputName>john103C6T6</OutputName>
|
|
||||||
<CreateExecutable>1</CreateExecutable>
|
|
||||||
<CreateLib>0</CreateLib>
|
|
||||||
<CreateHexFile>1</CreateHexFile>
|
|
||||||
<DebugInformation>1</DebugInformation>
|
|
||||||
<BrowseInformation>1</BrowseInformation>
|
|
||||||
<ListingPath>C:\Users\z\Documents\</ListingPath>
|
|
||||||
<HexFormatSelection>1</HexFormatSelection>
|
|
||||||
<Merge32K>0</Merge32K>
|
|
||||||
<CreateBatchFile>0</CreateBatchFile>
|
|
||||||
<BeforeCompile>
|
|
||||||
<RunUserProg1>0</RunUserProg1>
|
|
||||||
<RunUserProg2>0</RunUserProg2>
|
|
||||||
<UserProg1Name></UserProg1Name>
|
|
||||||
<UserProg2Name></UserProg2Name>
|
|
||||||
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
|
|
||||||
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
|
|
||||||
<nStopU1X>0</nStopU1X>
|
|
||||||
<nStopU2X>0</nStopU2X>
|
|
||||||
</BeforeCompile>
|
|
||||||
<BeforeMake>
|
|
||||||
<RunUserProg1>0</RunUserProg1>
|
|
||||||
<RunUserProg2>0</RunUserProg2>
|
|
||||||
<UserProg1Name></UserProg1Name>
|
|
||||||
<UserProg2Name></UserProg2Name>
|
|
||||||
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
|
|
||||||
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
|
|
||||||
<nStopB1X>0</nStopB1X>
|
|
||||||
<nStopB2X>0</nStopB2X>
|
|
||||||
</BeforeMake>
|
|
||||||
<AfterMake>
|
|
||||||
<RunUserProg1>0</RunUserProg1>
|
|
||||||
<RunUserProg2>0</RunUserProg2>
|
|
||||||
<UserProg1Name></UserProg1Name>
|
|
||||||
<UserProg2Name></UserProg2Name>
|
|
||||||
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
|
|
||||||
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
|
|
||||||
<nStopA1X>0</nStopA1X>
|
|
||||||
<nStopA2X>0</nStopA2X>
|
|
||||||
</AfterMake>
|
|
||||||
<SelectedForBatchBuild>1</SelectedForBatchBuild>
|
|
||||||
<SVCSIdString></SVCSIdString>
|
|
||||||
</TargetCommonOption>
|
|
||||||
<CommonProperty>
|
|
||||||
<UseCPPCompiler>0</UseCPPCompiler>
|
|
||||||
<RVCTCodeConst>0</RVCTCodeConst>
|
|
||||||
<RVCTZI>0</RVCTZI>
|
|
||||||
<RVCTOtherData>0</RVCTOtherData>
|
|
||||||
<ModuleSelection>0</ModuleSelection>
|
|
||||||
<IncludeInBuild>1</IncludeInBuild>
|
|
||||||
<AlwaysBuild>0</AlwaysBuild>
|
|
||||||
<GenerateAssemblyFile>0</GenerateAssemblyFile>
|
|
||||||
<AssembleAssemblyFile>0</AssembleAssemblyFile>
|
|
||||||
<PublicsOnly>0</PublicsOnly>
|
|
||||||
<StopOnExitCode>3</StopOnExitCode>
|
|
||||||
<CustomArgument></CustomArgument>
|
|
||||||
<IncludeLibraryModules></IncludeLibraryModules>
|
|
||||||
<ComprImg>0</ComprImg>
|
|
||||||
</CommonProperty>
|
|
||||||
<DllOption>
|
|
||||||
<SimDllName>SARMCM3.DLL</SimDllName>
|
|
||||||
<SimDllArguments> -REMAP</SimDllArguments>
|
|
||||||
<SimDlgDll>DCM.DLL</SimDlgDll>
|
|
||||||
<SimDlgDllArguments>-pCM3</SimDlgDllArguments>
|
|
||||||
<TargetDllName>SARMCM3.DLL</TargetDllName>
|
|
||||||
<TargetDllArguments></TargetDllArguments>
|
|
||||||
<TargetDlgDll>TCM.DLL</TargetDlgDll>
|
|
||||||
<TargetDlgDllArguments>-pCM3</TargetDlgDllArguments>
|
|
||||||
</DllOption>
|
|
||||||
<DebugOption>
|
|
||||||
<OPTHX>
|
|
||||||
<HexSelection>1</HexSelection>
|
|
||||||
<HexRangeLowAddress>0</HexRangeLowAddress>
|
|
||||||
<HexRangeHighAddress>0</HexRangeHighAddress>
|
|
||||||
<HexOffset>0</HexOffset>
|
|
||||||
<Oh166RecLen>16</Oh166RecLen>
|
|
||||||
</OPTHX>
|
|
||||||
</DebugOption>
|
|
||||||
<Utilities>
|
|
||||||
<Flash1>
|
|
||||||
<UseTargetDll>1</UseTargetDll>
|
|
||||||
<UseExternalTool>0</UseExternalTool>
|
|
||||||
<RunIndependent>0</RunIndependent>
|
|
||||||
<UpdateFlashBeforeDebugging>1</UpdateFlashBeforeDebugging>
|
|
||||||
<Capability>1</Capability>
|
|
||||||
<DriverSelection>4096</DriverSelection>
|
|
||||||
</Flash1>
|
|
||||||
<bUseTDR>1</bUseTDR>
|
|
||||||
<Flash2>BIN\UL2CM3.DLL</Flash2>
|
|
||||||
<Flash3></Flash3>
|
|
||||||
<Flash4></Flash4>
|
|
||||||
<pFcarmOut></pFcarmOut>
|
|
||||||
<pFcarmGrp></pFcarmGrp>
|
|
||||||
<pFcArmRoot></pFcArmRoot>
|
|
||||||
<FcArmLst>0</FcArmLst>
|
|
||||||
</Utilities>
|
|
||||||
<TargetArmAds>
|
|
||||||
<ArmAdsMisc>
|
|
||||||
<GenerateListings>0</GenerateListings>
|
|
||||||
<asHll>1</asHll>
|
|
||||||
<asAsm>1</asAsm>
|
|
||||||
<asMacX>1</asMacX>
|
|
||||||
<asSyms>1</asSyms>
|
|
||||||
<asFals>1</asFals>
|
|
||||||
<asDbgD>1</asDbgD>
|
|
||||||
<asForm>1</asForm>
|
|
||||||
<ldLst>0</ldLst>
|
|
||||||
<ldmm>1</ldmm>
|
|
||||||
<ldXref>1</ldXref>
|
|
||||||
<BigEnd>0</BigEnd>
|
|
||||||
<AdsALst>0</AdsALst>
|
|
||||||
<AdsACrf>1</AdsACrf>
|
|
||||||
<AdsANop>0</AdsANop>
|
|
||||||
<AdsANot>0</AdsANot>
|
|
||||||
<AdsLLst>1</AdsLLst>
|
|
||||||
<AdsLmap>1</AdsLmap>
|
|
||||||
<AdsLcgr>1</AdsLcgr>
|
|
||||||
<AdsLsym>1</AdsLsym>
|
|
||||||
<AdsLszi>1</AdsLszi>
|
|
||||||
<AdsLtoi>1</AdsLtoi>
|
|
||||||
<AdsLsun>1</AdsLsun>
|
|
||||||
<AdsLven>1</AdsLven>
|
|
||||||
<AdsLsxf>1</AdsLsxf>
|
|
||||||
<RvctClst>0</RvctClst>
|
|
||||||
<GenPPlst>0</GenPPlst>
|
|
||||||
<AdsCpuType>"Cortex-M3"</AdsCpuType>
|
|
||||||
<RvctDeviceName></RvctDeviceName>
|
|
||||||
<mOS>0</mOS>
|
|
||||||
<uocRom>0</uocRom>
|
|
||||||
<uocRam>0</uocRam>
|
|
||||||
<hadIROM>1</hadIROM>
|
|
||||||
<hadIRAM>1</hadIRAM>
|
|
||||||
<hadXRAM>0</hadXRAM>
|
|
||||||
<uocXRam>0</uocXRam>
|
|
||||||
<RvdsVP>0</RvdsVP>
|
|
||||||
<RvdsMve>0</RvdsMve>
|
|
||||||
<RvdsCdeCp>0</RvdsCdeCp>
|
|
||||||
<nBranchProt>0</nBranchProt>
|
|
||||||
<hadIRAM2>0</hadIRAM2>
|
|
||||||
<hadIROM2>0</hadIROM2>
|
|
||||||
<StupSel>8</StupSel>
|
|
||||||
<useUlib>0</useUlib>
|
|
||||||
<EndSel>0</EndSel>
|
|
||||||
<uLtcg>0</uLtcg>
|
|
||||||
<nSecure>0</nSecure>
|
|
||||||
<RoSelD>3</RoSelD>
|
|
||||||
<RwSelD>3</RwSelD>
|
|
||||||
<CodeSel>0</CodeSel>
|
|
||||||
<OptFeed>0</OptFeed>
|
|
||||||
<NoZi1>0</NoZi1>
|
|
||||||
<NoZi2>0</NoZi2>
|
|
||||||
<NoZi3>0</NoZi3>
|
|
||||||
<NoZi4>0</NoZi4>
|
|
||||||
<NoZi5>0</NoZi5>
|
|
||||||
<Ro1Chk>0</Ro1Chk>
|
|
||||||
<Ro2Chk>0</Ro2Chk>
|
|
||||||
<Ro3Chk>0</Ro3Chk>
|
|
||||||
<Ir1Chk>1</Ir1Chk>
|
|
||||||
<Ir2Chk>0</Ir2Chk>
|
|
||||||
<Ra1Chk>0</Ra1Chk>
|
|
||||||
<Ra2Chk>0</Ra2Chk>
|
|
||||||
<Ra3Chk>0</Ra3Chk>
|
|
||||||
<Im1Chk>1</Im1Chk>
|
|
||||||
<Im2Chk>0</Im2Chk>
|
|
||||||
<OnChipMemories>
|
|
||||||
<Ocm1>
|
|
||||||
<Type>0</Type>
|
|
||||||
<StartAddress>0x0</StartAddress>
|
|
||||||
<Size>0x0</Size>
|
|
||||||
</Ocm1>
|
|
||||||
<Ocm2>
|
|
||||||
<Type>0</Type>
|
|
||||||
<StartAddress>0x0</StartAddress>
|
|
||||||
<Size>0x0</Size>
|
|
||||||
</Ocm2>
|
|
||||||
<Ocm3>
|
|
||||||
<Type>0</Type>
|
|
||||||
<StartAddress>0x0</StartAddress>
|
|
||||||
<Size>0x0</Size>
|
|
||||||
</Ocm3>
|
|
||||||
<Ocm4>
|
|
||||||
<Type>0</Type>
|
|
||||||
<StartAddress>0x0</StartAddress>
|
|
||||||
<Size>0x0</Size>
|
|
||||||
</Ocm4>
|
|
||||||
<Ocm5>
|
|
||||||
<Type>0</Type>
|
|
||||||
<StartAddress>0x0</StartAddress>
|
|
||||||
<Size>0x0</Size>
|
|
||||||
</Ocm5>
|
|
||||||
<Ocm6>
|
|
||||||
<Type>0</Type>
|
|
||||||
<StartAddress>0x0</StartAddress>
|
|
||||||
<Size>0x0</Size>
|
|
||||||
</Ocm6>
|
|
||||||
<IRAM>
|
|
||||||
<Type>0</Type>
|
|
||||||
<StartAddress>0x20000000</StartAddress>
|
|
||||||
<Size>0x5000</Size>
|
|
||||||
</IRAM>
|
|
||||||
<IROM>
|
|
||||||
<Type>1</Type>
|
|
||||||
<StartAddress>0x8000000</StartAddress>
|
|
||||||
<Size>0x10000</Size>
|
|
||||||
</IROM>
|
|
||||||
<XRAM>
|
|
||||||
<Type>0</Type>
|
|
||||||
<StartAddress>0x0</StartAddress>
|
|
||||||
<Size>0x0</Size>
|
|
||||||
</XRAM>
|
|
||||||
<OCR_RVCT1>
|
|
||||||
<Type>1</Type>
|
|
||||||
<StartAddress>0x0</StartAddress>
|
|
||||||
<Size>0x0</Size>
|
|
||||||
</OCR_RVCT1>
|
|
||||||
<OCR_RVCT2>
|
|
||||||
<Type>1</Type>
|
|
||||||
<StartAddress>0x0</StartAddress>
|
|
||||||
<Size>0x0</Size>
|
|
||||||
</OCR_RVCT2>
|
|
||||||
<OCR_RVCT3>
|
|
||||||
<Type>1</Type>
|
|
||||||
<StartAddress>0x0</StartAddress>
|
|
||||||
<Size>0x0</Size>
|
|
||||||
</OCR_RVCT3>
|
|
||||||
<OCR_RVCT4>
|
|
||||||
<Type>1</Type>
|
|
||||||
<StartAddress>0x8000000</StartAddress>
|
|
||||||
<Size>0x10000</Size>
|
|
||||||
</OCR_RVCT4>
|
|
||||||
<OCR_RVCT5>
|
|
||||||
<Type>1</Type>
|
|
||||||
<StartAddress>0x0</StartAddress>
|
|
||||||
<Size>0x0</Size>
|
|
||||||
</OCR_RVCT5>
|
|
||||||
<OCR_RVCT6>
|
|
||||||
<Type>0</Type>
|
|
||||||
<StartAddress>0x0</StartAddress>
|
|
||||||
<Size>0x0</Size>
|
|
||||||
</OCR_RVCT6>
|
|
||||||
<OCR_RVCT7>
|
|
||||||
<Type>0</Type>
|
|
||||||
<StartAddress>0x0</StartAddress>
|
|
||||||
<Size>0x0</Size>
|
|
||||||
</OCR_RVCT7>
|
|
||||||
<OCR_RVCT8>
|
|
||||||
<Type>0</Type>
|
|
||||||
<StartAddress>0x0</StartAddress>
|
|
||||||
<Size>0x0</Size>
|
|
||||||
</OCR_RVCT8>
|
|
||||||
<OCR_RVCT9>
|
|
||||||
<Type>0</Type>
|
|
||||||
<StartAddress>0x20000000</StartAddress>
|
|
||||||
<Size>0x5000</Size>
|
|
||||||
</OCR_RVCT9>
|
|
||||||
<OCR_RVCT10>
|
|
||||||
<Type>0</Type>
|
|
||||||
<StartAddress>0x0</StartAddress>
|
|
||||||
<Size>0x0</Size>
|
|
||||||
</OCR_RVCT10>
|
|
||||||
</OnChipMemories>
|
|
||||||
<RvctStartVector></RvctStartVector>
|
|
||||||
</ArmAdsMisc>
|
|
||||||
<Cads>
|
|
||||||
<interw>1</interw>
|
|
||||||
<Optim>1</Optim>
|
|
||||||
<oTime>0</oTime>
|
|
||||||
<SplitLS>0</SplitLS>
|
|
||||||
<OneElfS>1</OneElfS>
|
|
||||||
<Strict>0</Strict>
|
|
||||||
<EnumInt>0</EnumInt>
|
|
||||||
<PlainCh>0</PlainCh>
|
|
||||||
<Ropi>0</Ropi>
|
|
||||||
<Rwpi>0</Rwpi>
|
|
||||||
<wLevel>3</wLevel>
|
|
||||||
<uThumb>0</uThumb>
|
|
||||||
<uSurpInc>0</uSurpInc>
|
|
||||||
<uC99>1</uC99>
|
|
||||||
<uGnu>0</uGnu>
|
|
||||||
<useXO>0</useXO>
|
|
||||||
<v6Lang>5</v6Lang>
|
|
||||||
<v6LangP>5</v6LangP>
|
|
||||||
<vShortEn>1</vShortEn>
|
|
||||||
<vShortWch>1</vShortWch>
|
|
||||||
<v6Lto>0</v6Lto>
|
|
||||||
<v6WtE>0</v6WtE>
|
|
||||||
<v6Rtti>0</v6Rtti>
|
|
||||||
<VariousControls>
|
|
||||||
<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;../Modbus;..\EEPROM_Emul\lib;..\..\core\STM32_Modbus\Inc;..\EEPROM_Emul\lib</IncludePath>
|
|
||||||
</VariousControls>
|
|
||||||
</Cads>
|
|
||||||
<Aads>
|
|
||||||
<interw>1</interw>
|
|
||||||
<Ropi>0</Ropi>
|
|
||||||
<Rwpi>0</Rwpi>
|
|
||||||
<thumb>0</thumb>
|
|
||||||
<SplitLS>0</SplitLS>
|
|
||||||
<SwStkChk>0</SwStkChk>
|
|
||||||
<NoWarn>0</NoWarn>
|
|
||||||
<uSurpInc>0</uSurpInc>
|
|
||||||
<useXO>0</useXO>
|
|
||||||
<ClangAsOpt>1</ClangAsOpt>
|
|
||||||
<VariousControls>
|
|
||||||
<MiscControls></MiscControls>
|
|
||||||
<Define></Define>
|
|
||||||
<Undefine></Undefine>
|
|
||||||
<IncludePath></IncludePath>
|
|
||||||
</VariousControls>
|
|
||||||
</Aads>
|
|
||||||
<LDads>
|
|
||||||
<umfTarg>1</umfTarg>
|
|
||||||
<Ropi>0</Ropi>
|
|
||||||
<Rwpi>0</Rwpi>
|
|
||||||
<noStLib>0</noStLib>
|
|
||||||
<RepFail>1</RepFail>
|
|
||||||
<useFile>0</useFile>
|
|
||||||
<TextAddressRange></TextAddressRange>
|
|
||||||
<DataAddressRange></DataAddressRange>
|
|
||||||
<pXoBase></pXoBase>
|
|
||||||
<ScatterFile></ScatterFile>
|
|
||||||
<IncludeLibs></IncludeLibs>
|
|
||||||
<IncludeLibsPath></IncludeLibsPath>
|
|
||||||
<Misc></Misc>
|
|
||||||
<LinkerInputFile></LinkerInputFile>
|
|
||||||
<DisabledWarnings></DisabledWarnings>
|
|
||||||
</LDads>
|
|
||||||
</TargetArmAds>
|
|
||||||
</TargetOption>
|
|
||||||
<Groups>
|
|
||||||
<Group>
|
|
||||||
<GroupName>Application/MDK-ARM</GroupName>
|
|
||||||
<Files>
|
|
||||||
<File>
|
|
||||||
<FileName>startup_stm32f10x_md.s</FileName>
|
|
||||||
<FileType>2</FileType>
|
|
||||||
<FilePath>.\startup_stm32f10x_md.s</FilePath>
|
|
||||||
</File>
|
|
||||||
</Files>
|
|
||||||
</Group>
|
|
||||||
<Group>
|
|
||||||
<GroupName>Application/User/Core</GroupName>
|
|
||||||
<Files>
|
|
||||||
<File>
|
|
||||||
<FileName>dallas_tools.c</FileName>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<FilePath>..\Core\Src\dallas_tools.c</FilePath>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<FileName>ds18b20_driver.c</FileName>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<FilePath>..\Core\Src\ds18b20_driver.c</FilePath>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<FileName>onewire.c</FileName>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<FilePath>..\Core\Src\onewire.c</FilePath>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<FileName>ow_port.c</FileName>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<FilePath>..\Core\Src\ow_port.c</FilePath>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<FileName>main.c</FileName>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<FilePath>../Core/Src/main.c</FilePath>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<FileName>gpio.c</FileName>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<FilePath>../Core/Src/gpio.c</FilePath>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<FileName>adc.c</FileName>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<FilePath>../Core/Src/adc.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>can.c</FileName>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<FilePath>../Core/Src/can.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>i2c.c</FileName>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<FilePath>../Core/Src/i2c.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>rtc.c</FileName>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<FilePath>../Core/Src/rtc.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>spi.c</FileName>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<FilePath>../Core/Src/spi.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>tim.c</FileName>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<FilePath>../Core/Src/tim.c</FilePath>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<FileName>usart.c</FileName>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<FilePath>../Core/Src/usart.c</FilePath>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<FileName>stm32f1xx_it.c</FileName>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<FilePath>../Core/Src/stm32f1xx_it.c</FilePath>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<FileName>stm32f1xx_hal_msp.c</FileName>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<FilePath>../Core/Src/stm32f1xx_hal_msp.c</FilePath>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<FileName>stm32f1xx_hal_timebase_tim.c</FileName>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<FilePath>../Core/Src/stm32f1xx_hal_timebase_tim.c</FilePath>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<FileName>flash_ring.c</FileName>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<FilePath>..\EEPROM_Emul\src\flash_ring.c</FilePath>
|
|
||||||
</File>
|
|
||||||
</Files>
|
|
||||||
</Group>
|
|
||||||
<Group>
|
|
||||||
<GroupName>Drivers/STM32F1xx_HAL_Driver</GroupName>
|
|
||||||
<Files>
|
|
||||||
<File>
|
|
||||||
<FileName>stm32f1xx_hal_gpio_ex.c</FileName>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<FilePath>../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c</FilePath>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<FileName>stm32f1xx_hal_tim.c</FileName>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<FilePath>../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.c</FilePath>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<FileName>stm32f1xx_hal_tim_ex.c</FileName>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<FilePath>../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.c</FilePath>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<FileName>stm32f1xx_hal_adc.c</FileName>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<FilePath>../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.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_hal_adc_ex.c</FileName>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<FilePath>../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.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_hal.c</FileName>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<FilePath>../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c</FilePath>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<FileName>stm32f1xx_hal_rcc.c</FileName>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<FilePath>../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c</FilePath>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<FileName>stm32f1xx_hal_rcc_ex.c</FileName>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<FilePath>../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c</FilePath>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<FileName>stm32f1xx_hal_gpio.c</FileName>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<FilePath>../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c</FilePath>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<FileName>stm32f1xx_hal_dma.c</FileName>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<FilePath>../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c</FilePath>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<FileName>stm32f1xx_hal_cortex.c</FileName>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<FilePath>../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c</FilePath>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<FileName>stm32f1xx_hal_pwr.c</FileName>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<FilePath>../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c</FilePath>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<FileName>stm32f1xx_hal_flash.c</FileName>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<FilePath>../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c</FilePath>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<FileName>stm32f1xx_hal_flash_ex.c</FileName>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<FilePath>../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c</FilePath>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<FileName>stm32f1xx_hal_exti.c</FileName>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<FilePath>../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.c</FilePath>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<FileName>stm32f1xx_hal_can.c</FileName>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<FilePath>../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_can.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_hal_i2c.c</FileName>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<FilePath>../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.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_hal_rtc.c</FileName>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<FilePath>../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rtc.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_hal_rtc_ex.c</FileName>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<FilePath>../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rtc_ex.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_hal_spi.c</FileName>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<FilePath>../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_spi.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_hal_uart.c</FileName>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<FilePath>../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.c</FilePath>
|
|
||||||
</File>
|
|
||||||
</Files>
|
|
||||||
</Group>
|
|
||||||
<Group>
|
|
||||||
<GroupName>Drivers/CMSIS</GroupName>
|
|
||||||
<Files>
|
|
||||||
<File>
|
|
||||||
<FileName>system_stm32f1xx.c</FileName>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<FilePath>../Core/Src/system_stm32f1xx.c</FilePath>
|
|
||||||
</File>
|
|
||||||
</Files>
|
|
||||||
</Group>
|
|
||||||
<Group>
|
|
||||||
<GroupName>modbus</GroupName>
|
|
||||||
<Files>
|
|
||||||
<File>
|
|
||||||
<FileName>__crc_algs.c</FileName>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<FilePath>..\..\core\STM32_Modbus\Src\__crc_algs.c</FilePath>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<FileName>__modbus_compat.c</FileName>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<FilePath>..\..\core\STM32_Modbus\Src\__modbus_compat.c</FilePath>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<FileName>modbus.c</FileName>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<FilePath>..\..\core\STM32_Modbus\Src\modbus.c</FilePath>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<FileName>modbus_coils.c</FileName>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<FilePath>..\..\core\STM32_Modbus\Src\modbus_coils.c</FilePath>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<FileName>modbus_core.c</FileName>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<FilePath>..\..\core\STM32_Modbus\Src\modbus_core.c</FilePath>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<FileName>modbus_devid.c</FileName>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<FilePath>..\..\core\STM32_Modbus\Src\modbus_devid.c</FilePath>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<FileName>modbus_diag.c</FileName>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<FilePath>..\..\core\STM32_Modbus\Src\modbus_diag.c</FilePath>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<FileName>modbus_holdregs.c</FileName>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<FilePath>..\..\core\STM32_Modbus\Src\modbus_holdregs.c</FilePath>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<FileName>modbus_inputregs.c</FileName>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<FilePath>..\..\core\STM32_Modbus\Src\modbus_inputregs.c</FilePath>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<FileName>modbus_master.c</FileName>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<FilePath>..\..\core\STM32_Modbus\Src\modbus_master.c</FilePath>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<FileName>modbus_slave.c</FileName>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<FilePath>..\..\core\STM32_Modbus\Src\modbus_slave.c</FilePath>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<FileName>rs_message.c</FileName>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<FilePath>..\..\core\STM32_Modbus\Src\rs_message.c</FilePath>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<FileName>modbus_data.c</FileName>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<FilePath>..\Modbus\modbus_data.c</FilePath>
|
|
||||||
</File>
|
|
||||||
</Files>
|
|
||||||
</Group>
|
|
||||||
<Group>
|
|
||||||
<GroupName>::CMSIS</GroupName>
|
|
||||||
</Group>
|
|
||||||
<Group>
|
|
||||||
<GroupName>::CMSIS Driver</GroupName>
|
|
||||||
</Group>
|
|
||||||
<Group>
|
|
||||||
<GroupName>::Compiler</GroupName>
|
|
||||||
</Group>
|
|
||||||
</Groups>
|
|
||||||
</Target>
|
|
||||||
</Targets>
|
|
||||||
|
|
||||||
<RTE>
|
|
||||||
<apis>
|
|
||||||
<api Capiversion="2.3.0" Cclass="CMSIS Driver" Cgroup="Flash" exclusive="0">
|
|
||||||
<package name="CMSIS" schemaVersion="1.7.7" url="http://www.keil.com/pack/" vendor="ARM" version="5.9.0"/>
|
|
||||||
<targetInfos>
|
|
||||||
<targetInfo name="john103C6T6"/>
|
|
||||||
</targetInfos>
|
|
||||||
</api>
|
|
||||||
</apis>
|
|
||||||
<components>
|
|
||||||
<component Capiversion="2.3.0" Cclass="CMSIS Driver" Cgroup="Flash" Csub="Custom" Cvendor="ARM" Cversion="1.0.0" custom="1">
|
|
||||||
<package name="CMSIS" schemaVersion="1.7.7" url="http://www.keil.com/pack/" vendor="ARM" version="5.9.0"/>
|
|
||||||
<targetInfos>
|
|
||||||
<targetInfo name="john103C6T6"/>
|
|
||||||
</targetInfos>
|
|
||||||
</component>
|
|
||||||
<component Cclass="CMSIS" Cgroup="CORE" Cvendor="ARM" Cversion="6.1.0" condition="ARMv6_7_8-M Device">
|
|
||||||
<package name="CMSIS" schemaVersion="1.7.36" url="https://www.keil.com/pack/" vendor="ARM" version="6.1.0"/>
|
|
||||||
<targetInfos>
|
|
||||||
<targetInfo name="john103C6T6"/>
|
|
||||||
</targetInfos>
|
|
||||||
</component>
|
|
||||||
<component Cbundle="ARM Compiler" Cclass="Compiler" Cgroup="I/O" Csub="STDOUT" Cvariant="Breakpoint" Cvendor="Keil" Cversion="1.2.0" condition="ARMCC Cortex-M">
|
|
||||||
<package name="ARM_Compiler" schemaVersion="1.7.7" url="https://www.keil.com/pack/" vendor="Keil" version="1.7.2"/>
|
|
||||||
<targetInfos>
|
|
||||||
<targetInfo name="john103C6T6"/>
|
|
||||||
</targetInfos>
|
|
||||||
</component>
|
|
||||||
</components>
|
|
||||||
<files/>
|
|
||||||
</RTE>
|
|
||||||
|
|
||||||
<LayerInfo>
|
|
||||||
<Layers>
|
|
||||||
<Layer>
|
|
||||||
<LayName>john103C6T6</LayName>
|
|
||||||
<LayPrjMark>1</LayPrjMark>
|
|
||||||
</Layer>
|
|
||||||
</Layers>
|
|
||||||
</LayerInfo>
|
|
||||||
|
|
||||||
</Project>
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
; *************************************************************
|
|
||||||
; *** Scatter-Loading Description File generated by uVision ***
|
|
||||||
; *************************************************************
|
|
||||||
|
|
||||||
LR_IROM1 0x08000000 0x00010000 { ; load region size_region
|
|
||||||
ER_IROM1 0x08000000 0x00010000 { ; load address = execution address
|
|
||||||
*.o (RESET, +First)
|
|
||||||
*(InRoot$$Sections)
|
|
||||||
.ANY (+RO)
|
|
||||||
.ANY (+XO)
|
|
||||||
}
|
|
||||||
RW_IRAM1 0x20000000 0x00005000 { ; RW data
|
|
||||||
.ANY (+RW +ZI)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,71 +0,0 @@
|
|||||||
/**
|
|
||||||
******************************************************************************
|
|
||||||
* @file modbus_config.h
|
|
||||||
* @brief Конфигурационные параметры Modbus устройства
|
|
||||||
******************************************************************************
|
|
||||||
@addtogroup MODBUS_CONFIGS Modbus configs
|
|
||||||
@ingroup MODBUS
|
|
||||||
@brief Конфигурация библиотеки
|
|
||||||
@{
|
|
||||||
******************************************************************************
|
|
||||||
* @details
|
|
||||||
Файл содержит настройки для работы Modbus:
|
|
||||||
- Подключение библиотек контроллера
|
|
||||||
- ID устройства и таймауты
|
|
||||||
- Строковые идентификаторы (Vendor, Product, Revision)
|
|
||||||
- Настройки периферии (UART, TIMER)
|
|
||||||
- Подключение модулей Modbus
|
|
||||||
- Опциональные функции (переключение команд 0x03/0x04)
|
|
||||||
******************************************************************************/
|
|
||||||
#ifndef _MODBUS_CONFIG_H_
|
|
||||||
#define _MODBUS_CONFIG_H_
|
|
||||||
#include "stm32f1xx_hal.h"
|
|
||||||
|
|
||||||
// Общие параметры
|
|
||||||
#define MODBUS_DEVICE_ID 3 ///< Адрес устройства в сети Modbus
|
|
||||||
#define MODBUS_TIMEOUT 5000 ///< Таймаут в тиках таймера
|
|
||||||
|
|
||||||
// Строковые идентификаторы устройства
|
|
||||||
#define MODBUS_VENDOR_NAME "NIO-12"
|
|
||||||
#define MODBUS_PRODUCT_CODE ""
|
|
||||||
#define MODBUS_REVISION ""
|
|
||||||
#define MODBUS_VENDOR_URL ""
|
|
||||||
#define MODBUS_PRODUCT_NAME ""
|
|
||||||
#define MODBUS_MODEL_NAME ""
|
|
||||||
#define MODBUS_USER_APPLICATION_NAME ""
|
|
||||||
|
|
||||||
#define MODBUS_NUMB_OF_USEROBJECTS 0 ///< Количество пользовательских объектов
|
|
||||||
#define MODBUS_USEROBJECT_0_NAME "" ///< Строка пользовательского идентификатора 0. По аналогии можно определить строки до <=128 USEROBJECT
|
|
||||||
|
|
||||||
// Периферия (опционально)
|
|
||||||
#define mb_huart huart1 ///< Удобный дефайн для модбасовского uart
|
|
||||||
#define mb_htim htim2 ///< Удобный дефайн для модбасовского таймера
|
|
||||||
//#define RS_EnableReceive() ///< Функция изменения направления передачи на ПРИЕМ для RS-485
|
|
||||||
//#define RS_EnableTransmit() ///< Функция изменения направления передачи на ПЕРЕДАЧУ для RS-485
|
|
||||||
|
|
||||||
|
|
||||||
// Модули modbus
|
|
||||||
#define MODBUS_ENABLE_SLAVE ///< Включить обработку СЛЕЙВ режима
|
|
||||||
//#define MODBUS_ENABLE_MASTER ///< Включить обработку МАСТЕР режима
|
|
||||||
|
|
||||||
#define MODBUS_ENABLE_COILS ///< Включить обработку коилов
|
|
||||||
#define MODBUS_ENABLE_HOLDINGS ///< Включить обработку регистров хранения
|
|
||||||
#define MODBUS_ENABLE_INPUTS ///< Включить обработку входных регистров
|
|
||||||
#define MODBUS_ENABLE_DEVICE_IDENTIFICATIONS ///< Включить обработку идентификаторы устройства
|
|
||||||
#define MODBUS_ENABLE_DIAGNOSTICS ///< Включить обработку диагностики модбас
|
|
||||||
|
|
||||||
//#define MODBUS_PROTOCOL_TCP ///< Включить TCP-протокол, иначе - RTU
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @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_
|
|
||||||
@@ -1,284 +0,0 @@
|
|||||||
/**
|
|
||||||
**************************************************************************
|
|
||||||
* @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_
|
|
||||||
|
|
||||||
|
|
||||||
// DEFINES FOR INPUT REGISTERS ARRAYS
|
|
||||||
#define R_INPUT_ADDR 0
|
|
||||||
#define R_INPUT_QNT 2000
|
|
||||||
|
|
||||||
// DEFINES FOR HOLDING REGISTERS ARRAYS
|
|
||||||
#define R_HOLDING_ADDR 0
|
|
||||||
#define R_HOLDING_QNT 2000
|
|
||||||
|
|
||||||
// DEFINES FOR COIL ARRAYS
|
|
||||||
#define C_CONTROL_ADDR 0
|
|
||||||
#define C_CONTROL_QNT 1000
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#include "stdint.h"
|
|
||||||
#include "ds18b20_driver.h"
|
|
||||||
#include "PROJ_setup.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 Регистры хранения
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Определить размер структуры в регистрах модбас (16-бит слова)
|
|
||||||
*/
|
|
||||||
#define mb_sizeof(_struct_) (sizeof(_struct_)/sizeof(uint16_t))
|
|
||||||
/**
|
|
||||||
* @brief Определить количество резервных байт для выравнивания
|
|
||||||
* @details Выравнивает так, чтобы количество регистров в _struct_ и reserved равнялось _align_.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#define mb_fill_rsv(_align_, _struct_) ((_align_ > mb_sizeof(_struct_)) ? (_align_ - mb_sizeof(_struct_)) : 0)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef __PACKED_STRUCT//MB_DataInRegsTypeDef
|
|
||||||
{
|
|
||||||
|
|
||||||
uint16_t sens_Temp[MAX_SENSE];
|
|
||||||
uint16_t reserve[mb_fill_rsv(1000, uint16_t[MAX_SENSE])];
|
|
||||||
DS18B20_Drv_t ID;
|
|
||||||
uint16_t reserve1[mb_fill_rsv(200, DS18B20_Drv_t)];
|
|
||||||
uint16_t num_Tsens;
|
|
||||||
|
|
||||||
|
|
||||||
} MB_DataInRegsTypeDef;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Входные регистры
|
|
||||||
*/
|
|
||||||
typedef __PACKED_STRUCT //MB_DataInRegsTypeDef
|
|
||||||
{
|
|
||||||
uint16_t set_Temp[MAX_SENSE];
|
|
||||||
uint16_t reserve[mb_fill_rsv(100, uint16_t[MAX_SENSE])];
|
|
||||||
uint16_t set_hyst[MAX_SENSE];
|
|
||||||
uint16_t reserve1[mb_fill_rsv(100, uint16_t[MAX_SENSE])];
|
|
||||||
} MB_DataHoldRegsTypeDef;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/** 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 union
|
|
||||||
{
|
|
||||||
__PACKED_STRUCT
|
|
||||||
{
|
|
||||||
unsigned state_val_01: 1;
|
|
||||||
unsigned state_val_02: 1;
|
|
||||||
unsigned state_val_03: 1;
|
|
||||||
unsigned state_val_04: 1;
|
|
||||||
unsigned state_val_05: 1;
|
|
||||||
unsigned state_val_06: 1;
|
|
||||||
unsigned state_val_07: 1;
|
|
||||||
unsigned state_val_08: 1;
|
|
||||||
unsigned state_val_09: 1;
|
|
||||||
unsigned state_val_10: 1;
|
|
||||||
unsigned state_val_11: 1;
|
|
||||||
unsigned state_val_12: 1;
|
|
||||||
unsigned state_val_13: 1;
|
|
||||||
unsigned state_val_14: 1;
|
|
||||||
unsigned state_val_15: 1;
|
|
||||||
unsigned state_val_16: 1;
|
|
||||||
} state_val_bit;
|
|
||||||
uint16_t all;
|
|
||||||
|
|
||||||
|
|
||||||
} word;
|
|
||||||
typedef union
|
|
||||||
{
|
|
||||||
__PACKED_STRUCT
|
|
||||||
{
|
|
||||||
unsigned Temp1_relay_isOn : 1;
|
|
||||||
unsigned Temp2_relay_isOn : 1;
|
|
||||||
unsigned Temp3_relay_isOn : 1;
|
|
||||||
unsigned Temp4_relay_isOn : 1;
|
|
||||||
unsigned Temp5_relay_isOn : 1;
|
|
||||||
unsigned Temp6_relay_isOn : 1;
|
|
||||||
unsigned Temp7_relay_isOn : 1;
|
|
||||||
unsigned Temp8_relay_isOn : 1;
|
|
||||||
unsigned Temp9_relay_isOn : 1;
|
|
||||||
unsigned Temp10_relay_isOn : 1;
|
|
||||||
unsigned Temp11_relay_isOn : 1;
|
|
||||||
unsigned Temp12_relay_isOn : 1;
|
|
||||||
unsigned Temp13_relay_isOn : 1;
|
|
||||||
unsigned Temp14_relay_isOn : 1;
|
|
||||||
unsigned Temp15_relay_isOn : 1;
|
|
||||||
unsigned Temp16_relay_isOn : 1;
|
|
||||||
|
|
||||||
|
|
||||||
} state_val_bit;
|
|
||||||
uint16_t all;
|
|
||||||
|
|
||||||
|
|
||||||
} RELAY_Struct;
|
|
||||||
|
|
||||||
typedef union
|
|
||||||
{
|
|
||||||
__PACKED_STRUCT
|
|
||||||
{
|
|
||||||
unsigned Temp1_isConnected : 1;
|
|
||||||
unsigned Temp2_isConnected : 1;
|
|
||||||
unsigned Temp3_isConnected : 1;
|
|
||||||
unsigned Temp4_isConnected : 1;
|
|
||||||
unsigned Temp5_isConnected : 1;
|
|
||||||
unsigned Temp6_isConnected : 1;
|
|
||||||
unsigned Temp7_isConnected : 1;
|
|
||||||
unsigned Temp8_isConnected : 1;
|
|
||||||
unsigned Temp9_isConnected : 1;
|
|
||||||
unsigned Temp10_isConnected : 1;
|
|
||||||
unsigned Temp11_isConnected : 1;
|
|
||||||
unsigned Temp12_isConnected : 1;
|
|
||||||
unsigned Temp13_isConnected : 1;
|
|
||||||
unsigned Temp14_isConnected : 1;
|
|
||||||
unsigned Temp15_isConnected : 1;
|
|
||||||
unsigned Temp16_isConnected : 1;
|
|
||||||
|
|
||||||
} state_val_bit;
|
|
||||||
uint16_t all;
|
|
||||||
|
|
||||||
|
|
||||||
} STATUS_TSENS;
|
|
||||||
|
|
||||||
|
|
||||||
typedef __PACKED_STRUCT
|
|
||||||
{
|
|
||||||
int temp ;
|
|
||||||
unsigned Temp_relay_on : 1;
|
|
||||||
unsigned Temp_relay_off : 1;
|
|
||||||
unsigned is_connect: 1;
|
|
||||||
|
|
||||||
} Temp_sens;
|
|
||||||
extern Temp_sens temp_sens ;
|
|
||||||
|
|
||||||
typedef __PACKED_STRUCT
|
|
||||||
{
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
word coils[3]; //48
|
|
||||||
uint16_t reserve_coils[mb_fill_rsv(128 / 16, word[3])];
|
|
||||||
STATUS_TSENS status_tSens[MAX_SENSE / 16]; //32
|
|
||||||
uint16_t reserve_status_tSens[mb_fill_rsv(128 / 16, STATUS_TSENS[MAX_SENSE / 16])];
|
|
||||||
RELAY_Struct relay_struct_on; //16 ON
|
|
||||||
uint16_t reserve_relay_struct_on[mb_fill_rsv(32 / 16, RELAY_Struct)];
|
|
||||||
RELAY_Struct relay_struct_off; //16 OFF
|
|
||||||
uint16_t reserve_relay_struct_off[mb_fill_rsv(32 / 16, RELAY_Struct)];
|
|
||||||
uint16_t reserve3[mb_fill_rsv(80 / 16, RELAY_Struct)];
|
|
||||||
|
|
||||||
unsigned init_param: 1; //384
|
|
||||||
unsigned init_Tsens: 1; //385
|
|
||||||
unsigned Save_Param_to_Flash: 1; //386
|
|
||||||
unsigned reserved2: 13;
|
|
||||||
|
|
||||||
} MB_DataCoilsTypeDef;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/** 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;
|
|
||||||
|
|
||||||
#endif //_MODBUS_DATA_H_
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////
|
|
||||||
///////////////////////TEMP/OUTDATE/OTHER////////////////////
|
|
||||||
@@ -1,264 +0,0 @@
|
|||||||
#MicroXplorer Configuration settings - do not modify
|
|
||||||
ADC1.Channel-0\#ChannelRegularConversion=ADC_CHANNEL_VREFINT
|
|
||||||
ADC1.ContinuousConvMode=ENABLE
|
|
||||||
ADC1.IPParameters=Rank-0\#ChannelRegularConversion,Channel-0\#ChannelRegularConversion,SamplingTime-0\#ChannelRegularConversion,NbrOfConversionFlag,ContinuousConvMode,master
|
|
||||||
ADC1.NbrOfConversionFlag=1
|
|
||||||
ADC1.Rank-0\#ChannelRegularConversion=1
|
|
||||||
ADC1.SamplingTime-0\#ChannelRegularConversion=ADC_SAMPLETIME_1CYCLE_5
|
|
||||||
ADC1.master=1
|
|
||||||
CAD.formats=
|
|
||||||
CAD.pinconfig=
|
|
||||||
CAD.provider=
|
|
||||||
CAN.CalculateBaudRate=749999
|
|
||||||
CAN.CalculateTimeBit=1333
|
|
||||||
CAN.CalculateTimeQuantum=444.44444444444446
|
|
||||||
CAN.IPParameters=CalculateTimeQuantum,CalculateTimeBit,CalculateBaudRate
|
|
||||||
File.Version=6
|
|
||||||
GPIO.groupedBy=Group By Peripherals
|
|
||||||
KeepUserPlacement=false
|
|
||||||
Mcu.CPN=STM32F103C6T6A
|
|
||||||
Mcu.Family=STM32F1
|
|
||||||
Mcu.IP0=ADC1
|
|
||||||
Mcu.IP1=CAN
|
|
||||||
Mcu.IP10=USART1
|
|
||||||
Mcu.IP2=I2C1
|
|
||||||
Mcu.IP3=NVIC
|
|
||||||
Mcu.IP4=RCC
|
|
||||||
Mcu.IP5=RTC
|
|
||||||
Mcu.IP6=SPI1
|
|
||||||
Mcu.IP7=SYS
|
|
||||||
Mcu.IP8=TIM1
|
|
||||||
Mcu.IP9=TIM2
|
|
||||||
Mcu.IPNb=11
|
|
||||||
Mcu.Name=STM32F103C(4-6)Tx
|
|
||||||
Mcu.Package=LQFP48
|
|
||||||
Mcu.Pin0=PC13-TAMPER-RTC
|
|
||||||
Mcu.Pin1=PD0-OSC_IN
|
|
||||||
Mcu.Pin10=PA7
|
|
||||||
Mcu.Pin11=PB0
|
|
||||||
Mcu.Pin12=PB1
|
|
||||||
Mcu.Pin13=PB2
|
|
||||||
Mcu.Pin14=PB10
|
|
||||||
Mcu.Pin15=PB11
|
|
||||||
Mcu.Pin16=PB12
|
|
||||||
Mcu.Pin17=PB13
|
|
||||||
Mcu.Pin18=PB14
|
|
||||||
Mcu.Pin19=PB15
|
|
||||||
Mcu.Pin2=PD1-OSC_OUT
|
|
||||||
Mcu.Pin20=PA8
|
|
||||||
Mcu.Pin21=PA9
|
|
||||||
Mcu.Pin22=PA10
|
|
||||||
Mcu.Pin23=PA11
|
|
||||||
Mcu.Pin24=PA12
|
|
||||||
Mcu.Pin25=PA13
|
|
||||||
Mcu.Pin26=PA14
|
|
||||||
Mcu.Pin27=PA15
|
|
||||||
Mcu.Pin28=PB3
|
|
||||||
Mcu.Pin29=PB4
|
|
||||||
Mcu.Pin3=PA0-WKUP
|
|
||||||
Mcu.Pin30=PB5
|
|
||||||
Mcu.Pin31=PB6
|
|
||||||
Mcu.Pin32=PB7
|
|
||||||
Mcu.Pin33=PB8
|
|
||||||
Mcu.Pin34=PB9
|
|
||||||
Mcu.Pin35=VP_ADC1_TempSens_Input
|
|
||||||
Mcu.Pin36=VP_ADC1_Vref_Input
|
|
||||||
Mcu.Pin37=VP_RTC_VS_RTC_Activate
|
|
||||||
Mcu.Pin38=VP_RTC_VS_RTC_Calendar
|
|
||||||
Mcu.Pin39=VP_SYS_VS_tim3
|
|
||||||
Mcu.Pin4=PA1
|
|
||||||
Mcu.Pin40=VP_TIM1_VS_ClockSourceINT
|
|
||||||
Mcu.Pin41=VP_TIM2_VS_ClockSourceINT
|
|
||||||
Mcu.Pin5=PA2
|
|
||||||
Mcu.Pin6=PA3
|
|
||||||
Mcu.Pin7=PA4
|
|
||||||
Mcu.Pin8=PA5
|
|
||||||
Mcu.Pin9=PA6
|
|
||||||
Mcu.PinsNb=42
|
|
||||||
Mcu.ThirdPartyNb=0
|
|
||||||
Mcu.UserConstants=
|
|
||||||
Mcu.UserName=STM32F103C6Tx
|
|
||||||
MxCube.Version=6.15.0
|
|
||||||
MxDb.Version=DB.6.0.150
|
|
||||||
NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
|
|
||||||
NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
|
|
||||||
NVIC.ForceEnableDMAVector=true
|
|
||||||
NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
|
|
||||||
NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
|
|
||||||
NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
|
|
||||||
NVIC.PendSV_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
|
|
||||||
NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4
|
|
||||||
NVIC.RTC_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
|
|
||||||
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.TIM1_BRK_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
|
|
||||||
NVIC.TIM1_CC_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
|
|
||||||
NVIC.TIM1_TRG_COM_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
|
|
||||||
NVIC.TIM1_UP_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
|
|
||||||
NVIC.TIM2_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
|
|
||||||
NVIC.TIM3_IRQn=true\:15\:0\:false\:false\:true\:false\:true\:true
|
|
||||||
NVIC.TimeBase=TIM3_IRQn
|
|
||||||
NVIC.TimeBaseIP=TIM3
|
|
||||||
NVIC.USART1_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
|
|
||||||
NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
|
|
||||||
PA0-WKUP.Locked=true
|
|
||||||
PA0-WKUP.Signal=GPIO_Input
|
|
||||||
PA1.Locked=true
|
|
||||||
PA1.Signal=GPIO_Output
|
|
||||||
PA10.GPIOParameters=GPIO_Label
|
|
||||||
PA10.GPIO_Label=Relay_dc5v
|
|
||||||
PA10.Locked=true
|
|
||||||
PA10.Signal=GPIO_Output
|
|
||||||
PA11.Mode=CAN_Activate
|
|
||||||
PA11.Signal=CAN_RX
|
|
||||||
PA12.Mode=CAN_Activate
|
|
||||||
PA12.Signal=CAN_TX
|
|
||||||
PA13.Mode=Serial_Wire
|
|
||||||
PA13.Signal=SYS_JTMS-SWDIO
|
|
||||||
PA14.Mode=Serial_Wire
|
|
||||||
PA14.Signal=SYS_JTCK-SWCLK
|
|
||||||
PA15.GPIOParameters=GPIO_Label
|
|
||||||
PA15.GPIO_Label=One_wire
|
|
||||||
PA15.Locked=true
|
|
||||||
PA15.Signal=GPIO_Output
|
|
||||||
PA2.Locked=true
|
|
||||||
PA2.Signal=GPIO_Output
|
|
||||||
PA3.Locked=true
|
|
||||||
PA3.Signal=GPIO_Output
|
|
||||||
PA4.Locked=true
|
|
||||||
PA4.Signal=GPIO_Output
|
|
||||||
PA5.Locked=true
|
|
||||||
PA5.Signal=GPIO_Output
|
|
||||||
PA6.Locked=true
|
|
||||||
PA6.Signal=GPIO_Output
|
|
||||||
PA7.Locked=true
|
|
||||||
PA7.Signal=GPIO_Output
|
|
||||||
PA8.Locked=true
|
|
||||||
PA8.Signal=GPIO_Output
|
|
||||||
PA9.Locked=true
|
|
||||||
PA9.Signal=GPIO_Output
|
|
||||||
PB0.Locked=true
|
|
||||||
PB0.Signal=GPIO_Output
|
|
||||||
PB1.Locked=true
|
|
||||||
PB1.Signal=GPIO_Output
|
|
||||||
PB10.Locked=true
|
|
||||||
PB10.Signal=GPIO_Output
|
|
||||||
PB11.Locked=true
|
|
||||||
PB11.Signal=GPIO_Output
|
|
||||||
PB12.Locked=true
|
|
||||||
PB12.Signal=GPIO_Output
|
|
||||||
PB13.Locked=true
|
|
||||||
PB13.Signal=GPIO_Output
|
|
||||||
PB14.Locked=true
|
|
||||||
PB14.Signal=GPIO_Output
|
|
||||||
PB15.Locked=true
|
|
||||||
PB15.Signal=GPIO_Output
|
|
||||||
PB2.Locked=true
|
|
||||||
PB2.Signal=GPIO_Output
|
|
||||||
PB3.Mode=Full_Duplex_Master
|
|
||||||
PB3.Signal=SPI1_SCK
|
|
||||||
PB4.Mode=Full_Duplex_Master
|
|
||||||
PB4.Signal=SPI1_MISO
|
|
||||||
PB5.Mode=Full_Duplex_Master
|
|
||||||
PB5.Signal=SPI1_MOSI
|
|
||||||
PB6.Mode=Asynchronous
|
|
||||||
PB6.Signal=USART1_TX
|
|
||||||
PB7.Mode=Asynchronous
|
|
||||||
PB7.Signal=USART1_RX
|
|
||||||
PB8.Mode=I2C
|
|
||||||
PB8.Signal=I2C1_SCL
|
|
||||||
PB9.Mode=I2C
|
|
||||||
PB9.Signal=I2C1_SDA
|
|
||||||
PC13-TAMPER-RTC.Locked=true
|
|
||||||
PC13-TAMPER-RTC.Signal=GPIO_Output
|
|
||||||
PD0-OSC_IN.Mode=HSE-External-Oscillator
|
|
||||||
PD0-OSC_IN.Signal=RCC_OSC_IN
|
|
||||||
PD1-OSC_OUT.Mode=HSE-External-Oscillator
|
|
||||||
PD1-OSC_OUT.Signal=RCC_OSC_OUT
|
|
||||||
PinOutPanel.RotationAngle=0
|
|
||||||
ProjectManager.AskForMigrate=true
|
|
||||||
ProjectManager.BackupPrevious=false
|
|
||||||
ProjectManager.CompilerLinker=GCC
|
|
||||||
ProjectManager.CompilerOptimize=6
|
|
||||||
ProjectManager.ComputerToolchain=false
|
|
||||||
ProjectManager.CoupleFile=true
|
|
||||||
ProjectManager.CustomerFirmwarePackage=
|
|
||||||
ProjectManager.DefaultFWLocation=true
|
|
||||||
ProjectManager.DeletePrevious=true
|
|
||||||
ProjectManager.DeviceId=STM32F103C6Tx
|
|
||||||
ProjectManager.FirmwarePackage=STM32Cube FW_F1 V1.8.6
|
|
||||||
ProjectManager.FreePins=false
|
|
||||||
ProjectManager.HalAssertFull=false
|
|
||||||
ProjectManager.HeapSize=0x400
|
|
||||||
ProjectManager.KeepUserCode=true
|
|
||||||
ProjectManager.LastFirmware=true
|
|
||||||
ProjectManager.LibraryCopy=1
|
|
||||||
ProjectManager.MainLocation=Core/Src
|
|
||||||
ProjectManager.NoMain=false
|
|
||||||
ProjectManager.PreviousToolchain=
|
|
||||||
ProjectManager.ProjectBuild=false
|
|
||||||
ProjectManager.ProjectFileName=john103C6T6.ioc
|
|
||||||
ProjectManager.ProjectName=john103C6T6
|
|
||||||
ProjectManager.ProjectStructure=
|
|
||||||
ProjectManager.RegisterCallBack=
|
|
||||||
ProjectManager.StackSize=0x400
|
|
||||||
ProjectManager.TargetToolchain=MDK-ARM V5.32
|
|
||||||
ProjectManager.ToolChainLocation=
|
|
||||||
ProjectManager.UAScriptAfterPath=
|
|
||||||
ProjectManager.UAScriptBeforePath=
|
|
||||||
ProjectManager.UnderRoot=false
|
|
||||||
ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_TIM1_Init-TIM1-false-HAL-true,4-MX_USART1_UART_Init-USART1-false-HAL-true,5-MX_TIM2_Init-TIM2-false-HAL-true,6-MX_ADC1_Init-ADC1-false-HAL-true,7-MX_CAN_Init-CAN-false-HAL-true,8-MX_I2C1_Init-I2C1-false-HAL-true,9-MX_RTC_Init-RTC-false-HAL-true,10-MX_SPI1_Init-SPI1-false-HAL-true
|
|
||||||
RCC.ADCFreqValue=12000000
|
|
||||||
RCC.ADCPresc=RCC_ADCPCLK2_DIV6
|
|
||||||
RCC.AHBFreq_Value=72000000
|
|
||||||
RCC.APB1CLKDivider=RCC_HCLK_DIV2
|
|
||||||
RCC.APB1Freq_Value=36000000
|
|
||||||
RCC.APB1TimFreq_Value=72000000
|
|
||||||
RCC.APB2Freq_Value=72000000
|
|
||||||
RCC.APB2TimFreq_Value=72000000
|
|
||||||
RCC.FCLKCortexFreq_Value=72000000
|
|
||||||
RCC.FamilyName=M
|
|
||||||
RCC.HCLKFreq_Value=72000000
|
|
||||||
RCC.IPParameters=ADCFreqValue,ADCPresc,AHBFreq_Value,APB1CLKDivider,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,FCLKCortexFreq_Value,FamilyName,HCLKFreq_Value,MCOFreq_Value,PLLCLKFreq_Value,PLLMCOFreq_Value,PLLMUL,PLLSourceVirtual,SYSCLKFreq_VALUE,SYSCLKSource,TimSysFreq_Value,USBFreq_Value,USBPrescaler,VCOOutput2Freq_Value
|
|
||||||
RCC.MCOFreq_Value=72000000
|
|
||||||
RCC.PLLCLKFreq_Value=72000000
|
|
||||||
RCC.PLLMCOFreq_Value=36000000
|
|
||||||
RCC.PLLMUL=RCC_PLL_MUL9
|
|
||||||
RCC.PLLSourceVirtual=RCC_PLLSOURCE_HSE
|
|
||||||
RCC.SYSCLKFreq_VALUE=72000000
|
|
||||||
RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK
|
|
||||||
RCC.TimSysFreq_Value=72000000
|
|
||||||
RCC.USBFreq_Value=48000000
|
|
||||||
RCC.USBPrescaler=RCC_USBCLKSOURCE_PLL_DIV1_5
|
|
||||||
RCC.VCOOutput2Freq_Value=8000000
|
|
||||||
RTC.IPParameters=OutPut
|
|
||||||
RTC.OutPut=RTC_OUTPUTSOURCE_SECOND
|
|
||||||
SPI1.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_4
|
|
||||||
SPI1.CalculateBaudRate=18.0 MBits/s
|
|
||||||
SPI1.Direction=SPI_DIRECTION_2LINES
|
|
||||||
SPI1.IPParameters=VirtualType,Mode,Direction,BaudRatePrescaler,CalculateBaudRate
|
|
||||||
SPI1.Mode=SPI_MODE_MASTER
|
|
||||||
SPI1.VirtualType=VM_MASTER
|
|
||||||
TIM1.IPParameters=Prescaler,Period
|
|
||||||
TIM1.Period=65535
|
|
||||||
TIM1.Prescaler=0
|
|
||||||
TIM2.IPParameters=Prescaler,Period
|
|
||||||
TIM2.Period=65535
|
|
||||||
TIM2.Prescaler=7199
|
|
||||||
USART1.IPParameters=VirtualMode
|
|
||||||
USART1.VirtualMode=VM_ASYNC
|
|
||||||
VP_ADC1_TempSens_Input.Mode=IN-TempSens
|
|
||||||
VP_ADC1_TempSens_Input.Signal=ADC1_TempSens_Input
|
|
||||||
VP_ADC1_Vref_Input.Mode=IN-Vrefint
|
|
||||||
VP_ADC1_Vref_Input.Signal=ADC1_Vref_Input
|
|
||||||
VP_RTC_VS_RTC_Activate.Mode=RTC_Enabled
|
|
||||||
VP_RTC_VS_RTC_Activate.Signal=RTC_VS_RTC_Activate
|
|
||||||
VP_RTC_VS_RTC_Calendar.Mode=RTC_Calendar
|
|
||||||
VP_RTC_VS_RTC_Calendar.Signal=RTC_VS_RTC_Calendar
|
|
||||||
VP_SYS_VS_tim3.Mode=TIM3
|
|
||||||
VP_SYS_VS_tim3.Signal=SYS_VS_tim3
|
|
||||||
VP_TIM1_VS_ClockSourceINT.Mode=Internal
|
|
||||||
VP_TIM1_VS_ClockSourceINT.Signal=TIM1_VS_ClockSourceINT
|
|
||||||
VP_TIM2_VS_ClockSourceINT.Mode=Internal
|
|
||||||
VP_TIM2_VS_ClockSourceINT.Signal=TIM2_VS_ClockSourceINT
|
|
||||||
board=custom
|
|
||||||
File diff suppressed because one or more lines are too long
@@ -1,13 +0,0 @@
|
|||||||
#ifndef __PROJ_SETUP
|
|
||||||
#define __PROJ_SETUP
|
|
||||||
|
|
||||||
//**********BEGIN defines***********
|
|
||||||
//#define OldVer
|
|
||||||
#define MAX_SENSE 32 // НЕ ДЕЛАТЬ МЕНЬШЕ 16
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//**********END defines***********
|
|
||||||
|
|
||||||
#endif
|
|
||||||
@@ -1,52 +0,0 @@
|
|||||||
/* USER CODE BEGIN Header */
|
|
||||||
/**
|
|
||||||
******************************************************************************
|
|
||||||
* @file adc.h
|
|
||||||
* @brief This file contains all the function prototypes for
|
|
||||||
* the adc.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 __ADC_H__
|
|
||||||
#define __ADC_H__
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Includes ------------------------------------------------------------------*/
|
|
||||||
#include "main.h"
|
|
||||||
|
|
||||||
/* USER CODE BEGIN Includes */
|
|
||||||
|
|
||||||
/* USER CODE END Includes */
|
|
||||||
|
|
||||||
extern ADC_HandleTypeDef hadc1;
|
|
||||||
|
|
||||||
/* USER CODE BEGIN Private defines */
|
|
||||||
|
|
||||||
/* USER CODE END Private defines */
|
|
||||||
|
|
||||||
void MX_ADC1_Init(void);
|
|
||||||
|
|
||||||
/* USER CODE BEGIN Prototypes */
|
|
||||||
|
|
||||||
/* USER CODE END Prototypes */
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* __ADC_H__ */
|
|
||||||
|
|
||||||
@@ -1,170 +0,0 @@
|
|||||||
/**
|
|
||||||
******************************************************************************
|
|
||||||
* @file dallas_tools.h
|
|
||||||
* @brief Драйвер датчиков температуры DALLAS
|
|
||||||
******************************************************************************
|
|
||||||
* Этот файл предоставляет объявления и определения для работы с датчиками
|
|
||||||
* температуры DS18B20. Он включает структуры данных, макросы и прототипы
|
|
||||||
* функций для инициализации, чтения температуры
|
|
||||||
* и управления датчиками.
|
|
||||||
*
|
|
||||||
* Работа с датчиками ведётся через протокол OneWire.
|
|
||||||
*****************************************************************************/
|
|
||||||
|
|
||||||
#ifndef DALLAS_TOOLS_H
|
|
||||||
#define DALLAS_TOOLS_H
|
|
||||||
|
|
||||||
/* Includes -----------------------------------------------------------------*/
|
|
||||||
#include "ds18b20_driver.h"
|
|
||||||
#include "onewire.h"
|
|
||||||
|
|
||||||
|
|
||||||
/* Определения пользовательских байтов для записи чтения */
|
|
||||||
#define DALLAS_USER_BYTE_1 (1<<0) ///< Первый пользовательский байт
|
|
||||||
#define DALLAS_USER_BYTE_2 (1<<1) ///< Второй пользовательский байт
|
|
||||||
#define DALLAS_USER_BYTE_3 (1<<2) ///< Третий пользовательский байт
|
|
||||||
#define DALLAS_USER_BYTE_4 (1<<3) ///< Четвёртый пользовательский байт
|
|
||||||
|
|
||||||
#define DALLAS_USER_BYTE_12 (DALLAS_USER_BYTE_1|DALLAS_USER_BYTE_2) ///< Первые два байта
|
|
||||||
#define DALLAS_USER_BYTE_34 (DALLAS_USER_BYTE_3|DALLAS_USER_BYTE_4) ///< Вторые два байта
|
|
||||||
#define DALLAS_USER_BYTE_ALL (DALLAS_USER_BYTE_12|DALLAS_USER_BYTE_34) ///< Все пользовательские байты
|
|
||||||
|
|
||||||
/* Declarations and definitions ---------------------------------------------*/
|
|
||||||
#define DALLAS_ROM_SIZE 8
|
|
||||||
|
|
||||||
#define DALLAS_CONFIG_9_BITS 0x1F
|
|
||||||
#define DALLAS_CONFIG_10_BITS 0x3F
|
|
||||||
#define DALLAS_CONFIG_11_BITS 0x5F
|
|
||||||
#define DALLAS_CONFIG_12_BITS 0x7F
|
|
||||||
|
|
||||||
#define DALLAS_DELAY_MS_9_BITS 94
|
|
||||||
#define DALLAS_DELAY_MS_10_BITS 188
|
|
||||||
#define DALLAS_DELAY_MS_11_BITS 375
|
|
||||||
#define DALLAS_DELAY_MS_12_BITS 750
|
|
||||||
#define DALLAS_DELAY_MS_MAX DALLAS_DELAY_MS_12_BITS
|
|
||||||
|
|
||||||
typedef struct _SensorHandleStruct DALLAS_SensorHandleTypeDef;
|
|
||||||
typedef struct _DallasHandleStruct DALLAS_HandleTypeDef;
|
|
||||||
|
|
||||||
/** @brief Структура Scratchpad датчика DALLAS */
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
uint8_t TemperatureLSB; ///< Младший байт температуры
|
|
||||||
uint8_t TemperatureMSB; ///< Старший байт температуры
|
|
||||||
uint8_t tHighRegister; ///< Верхний температурный порог
|
|
||||||
uint8_t tLowRegister; ///< Нижний температурный порог
|
|
||||||
uint8_t ConfigRegister; ///< Конфигурационный регистр
|
|
||||||
uint8_t reserved; ///< Зарезервировано
|
|
||||||
uint8_t UserByte3; ///< Пользовательский байт 3
|
|
||||||
uint8_t UserByte4; ///< Пользовательский байт 4
|
|
||||||
uint8_t ScratchpadCRC; ///< Контрольная сумма
|
|
||||||
}DALLAS_ScratchpadTypeDef;
|
|
||||||
|
|
||||||
/** @brief Структура флагов ошибок датчиков DALLAS */
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
uint8_t disconnect_cnt; ///< Счетчик отключений датчика
|
|
||||||
uint8_t read_temperature_err_cnt; ///< Счетчик ошибок чтения температуры
|
|
||||||
uint8_t timeout_convertion_cnt; ///< Счетчик ошибок таймаута конвертации
|
|
||||||
uint8_t write_err_cnt; ///< Счетчик других ошибок
|
|
||||||
}DALLAS_FlagsTypeDef;
|
|
||||||
|
|
||||||
|
|
||||||
/** @brief Структура инициализации датчика DALLAS */
|
|
||||||
typedef struct __packed
|
|
||||||
{
|
|
||||||
union
|
|
||||||
{
|
|
||||||
uint64_t Ind; ///< порядковый номер датчика
|
|
||||||
uint64_t ROM; ///< ROM датчика
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
uint8_t UserByte1; ///< Младший байт (бит 0–7)
|
|
||||||
uint8_t UserByte2; ///< Следующий байт (бит 8–15)
|
|
||||||
uint8_t UserByte3; ///< Байт (бит 16–23)
|
|
||||||
uint8_t UserByte4; ///< Байт (бит 24–31)
|
|
||||||
uint8_t Reserved[4]; ///< Остальные байты (бит 32–63, если нужно)
|
|
||||||
} UserBytes; ///< UserBytes датчика
|
|
||||||
}InitParam; ///< Параметр для инициализации: ROM/UserBytes/Индекс
|
|
||||||
uint8_t Resolution; ///< Разрешение датчика
|
|
||||||
HAL_StatusTypeDef (*init_func)(DALLAS_HandleTypeDef *, DALLAS_SensorHandleTypeDef *); ///< Функция инициализации
|
|
||||||
} DALLAS_InitStructTypeDef;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/** @brief Cтруктура обработчика DALLAS для общения с датчиком*/
|
|
||||||
struct _DallasHandleStruct
|
|
||||||
{
|
|
||||||
OneWire_t *onewire;
|
|
||||||
DS18B20_Drv_t *ds_devices;
|
|
||||||
DALLAS_ScratchpadTypeDef scratchpad;
|
|
||||||
};
|
|
||||||
extern DALLAS_HandleTypeDef hdallas;
|
|
||||||
|
|
||||||
/** @brief Основная структура обработчика датчика DALLAS */
|
|
||||||
struct _SensorHandleStruct
|
|
||||||
{
|
|
||||||
unsigned isConnected:1; ///< Флаг соединения
|
|
||||||
unsigned isInitialized:1; ///< Флаг инициализации
|
|
||||||
unsigned isLost:1; ///< Флаг потери связи
|
|
||||||
uint16_t lost_cnt;
|
|
||||||
DALLAS_FlagsTypeDef f; ///< Флаги
|
|
||||||
|
|
||||||
|
|
||||||
float set_temp;
|
|
||||||
uint16_t hyst;
|
|
||||||
|
|
||||||
DALLAS_HandleTypeDef *hdallas;
|
|
||||||
uint64_t sensROM; ///< ROM-код датчика
|
|
||||||
|
|
||||||
float temperature; ///< Текущая температура
|
|
||||||
|
|
||||||
DALLAS_InitStructTypeDef Init; ///< Структура инициализации
|
|
||||||
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/** @brief Варианты ожидания окончания конверсии */
|
|
||||||
typedef enum
|
|
||||||
{
|
|
||||||
DALLAS_WAIT_NONE = 0x00, ///< Без ожидания окончания конверсии
|
|
||||||
DALLAS_WAIT_BUS = 0x01, ///< Ожидание окончания конверсии по шине (опрос датчиков - чтение бита)
|
|
||||||
DALLAS_WAIT_DELAY = 0x02, ///< Без ожидания окончания через задержку (максимальная задержка для заданной разрядности)
|
|
||||||
} DALLAS_WaitConvertionTypeDef;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* Functions ---------------------------------------------------------------*/
|
|
||||||
|
|
||||||
HAL_StatusTypeDef Dallas_BusFirstInit(TIM_HandleTypeDef *htim);
|
|
||||||
/* Функция для иниицализации нового датчика в структуре */
|
|
||||||
HAL_StatusTypeDef Dallas_AddNewSensors(DALLAS_HandleTypeDef *hdallas, DALLAS_SensorHandleTypeDef *sensor);
|
|
||||||
/* Инициализирует структуру датчика по ROM */
|
|
||||||
HAL_StatusTypeDef Dallas_SensorInitByROM(DALLAS_HandleTypeDef *hdallas, DALLAS_SensorHandleTypeDef *sensor);
|
|
||||||
/* Инициализирует структуру датчика по пользовательским байтам */
|
|
||||||
HAL_StatusTypeDef Dallas_SensorInitByUserBytes(DALLAS_HandleTypeDef *hdallas, DALLAS_SensorHandleTypeDef *sensor);
|
|
||||||
/* Инициализирует структуру датчика по порядковому номеру */
|
|
||||||
HAL_StatusTypeDef Dallas_SensorInitByInd(DALLAS_HandleTypeDef *hdallas, DALLAS_SensorHandleTypeDef *sensor);
|
|
||||||
/* Инициализирует датчик для работы */
|
|
||||||
HAL_StatusTypeDef Dallas_SensorInit(DALLAS_HandleTypeDef *hdallas, DALLAS_SensorHandleTypeDef *sensor, uint8_t (*ROM)[DALLAS_ROM_SIZE]);
|
|
||||||
/* Деинициализирует структуру датчика */
|
|
||||||
HAL_StatusTypeDef Dallas_SensorDeInit(DALLAS_SensorHandleTypeDef *sensor);
|
|
||||||
/* Функция для нахождения нового датчика на место потерянного */
|
|
||||||
HAL_StatusTypeDef Dallas_ReplaceLostedSensor(DALLAS_SensorHandleTypeDef *sensor);
|
|
||||||
/* Запускает измерение температуры на всех датчиках */
|
|
||||||
HAL_StatusTypeDef Dallas_StartConvertTAll(DALLAS_HandleTypeDef *hdallas, DALLAS_WaitConvertionTypeDef waitCondition, uint8_t dallas_delay_ms);
|
|
||||||
/* Измеряет температуру на датчике */
|
|
||||||
HAL_StatusTypeDef Dallas_ConvertT(DALLAS_SensorHandleTypeDef *sensor, DALLAS_WaitConvertionTypeDef waitCondition);
|
|
||||||
/* Читает измеренную датчиком температуру */
|
|
||||||
HAL_StatusTypeDef Dallas_ReadTemperature(DALLAS_SensorHandleTypeDef *sensor);
|
|
||||||
/* Проверяет подключен ли датчик (чтение scratchpad) */
|
|
||||||
HAL_StatusTypeDef Dallas_IsConnected(DALLAS_SensorHandleTypeDef *sensor);
|
|
||||||
/* Записывает пользовательские байты */
|
|
||||||
HAL_StatusTypeDef Dallas_WriteUserBytes(DALLAS_SensorHandleTypeDef *sensor, uint16_t UserBytes12, uint16_t UserBytes34, uint8_t UserBytesMask);
|
|
||||||
/* Записывает пользовательские байты */
|
|
||||||
HAL_StatusTypeDef Dallas_ReadScratchpad(DALLAS_SensorHandleTypeDef *sensor);
|
|
||||||
|
|
||||||
|
|
||||||
#endif // #ifndef DALLAS_TOOLS_H
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
#ifndef __DEF_H
|
|
||||||
#define __DEF_H
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define MAX_DEVICES 10
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* __MAIN_H */
|
|
||||||
@@ -1,53 +0,0 @@
|
|||||||
/* USER CODE BEGIN Header */
|
|
||||||
/**
|
|
||||||
******************************************************************************
|
|
||||||
* @file dma.h
|
|
||||||
* @brief This file contains all the function prototypes for
|
|
||||||
* the dma.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 __DMA_H__
|
|
||||||
#define __DMA_H__
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Includes ------------------------------------------------------------------*/
|
|
||||||
#include "main.h"
|
|
||||||
|
|
||||||
/* DMA memory to memory transfer handles -------------------------------------*/
|
|
||||||
extern DMA_HandleTypeDef hdma_memtomem_dma1_channel1;
|
|
||||||
|
|
||||||
/* USER CODE BEGIN Includes */
|
|
||||||
|
|
||||||
/* USER CODE END Includes */
|
|
||||||
|
|
||||||
/* USER CODE BEGIN Private defines */
|
|
||||||
|
|
||||||
/* USER CODE END Private defines */
|
|
||||||
|
|
||||||
void MX_DMA_Init(void);
|
|
||||||
|
|
||||||
/* USER CODE BEGIN Prototypes */
|
|
||||||
|
|
||||||
/* USER CODE END Prototypes */
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* __DMA_H__ */
|
|
||||||
|
|
||||||
@@ -1,104 +0,0 @@
|
|||||||
/**
|
|
||||||
******************************************************************************
|
|
||||||
* @file ds18b20_driver.h
|
|
||||||
* @brief This file contains all the constants parameters for the DS18B20
|
|
||||||
* 1-Wire Digital Thermometer
|
|
||||||
******************************************************************************
|
|
||||||
* @attention
|
|
||||||
* Usage:
|
|
||||||
* Uncomment LL Driver for HAL driver
|
|
||||||
*
|
|
||||||
******************************************************************************
|
|
||||||
*/
|
|
||||||
/* Define to prevent recursive inclusion -------------------------------------*/
|
|
||||||
#ifndef DS18B20_H
|
|
||||||
#define DS18B20_H
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Includes ------------------------------------------------------------------*/
|
|
||||||
#include "onewire.h"
|
|
||||||
#include "PROJ_setup.h"
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* Data Structure ------------------------------------------------------------*/
|
|
||||||
#define DS18B20_DEVICE_AMOUNT MAX_SENSE
|
|
||||||
|
|
||||||
/* Register ------------------------------------------------------------------*/
|
|
||||||
#define DS18B20_CMD_CONVERT 0x44
|
|
||||||
#define DS18B20_CMD_ALARM_SEARCH 0xEC
|
|
||||||
#define DS18B20_CMD_READSCRATCHPAD 0xBE
|
|
||||||
#define DS18B20_CMD_WRITESCRATCHPAD 0x4E
|
|
||||||
#define DS18B20_CMD_COPYSCRATCHPAD 0x48
|
|
||||||
/* Data Structure ------------------------------------------------------------*/
|
|
||||||
#define DS18B20_FAMILY_CODE 0x28
|
|
||||||
|
|
||||||
|
|
||||||
#define DS18B20_SERIAL_NUMBER_LEN_BYTES 6
|
|
||||||
#define DS18B20_SERIAL_NUMBER_OFFSET_BYTES 1
|
|
||||||
|
|
||||||
#define DS18B20_SCRATCHPAD_T_LSB_BYTE_IDX 0
|
|
||||||
#define DS18B20_SCRATCHPAD_T_MSB_BYTE_IDX 1
|
|
||||||
#define DS18B20_SCRATCHPAD_T_LIMIT_H_BYTE_IDX 2
|
|
||||||
#define DS18B20_SCRATCHPAD_T_LIMIT_L_BYTE_IDX 3
|
|
||||||
#define DS18B20_SCRATCHPAD_CONFIG_BYTE_IDX 4
|
|
||||||
#define DS18B20_SCRATCHPAD_USER_BYTE_3_IDX 6
|
|
||||||
#define DS18B20_SCRATCHPAD_USER_BYTE_4_IDX 7
|
|
||||||
#define DS18B20_SCRATCHPAD_CRC_IDX 8
|
|
||||||
|
|
||||||
/* Bits locations for resolution */
|
|
||||||
#define DS18B20_RESOLUTION_R1 6
|
|
||||||
#define DS18B20_RESOLUTION_R0 5
|
|
||||||
|
|
||||||
#define DS18B20_DECIMAL_STEP_12BIT 0.0625
|
|
||||||
#define DS18B20_DECIMAL_STEP_11BIT 0.125
|
|
||||||
#define DS18B20_DECIMAL_STEP_10BIT 0.25
|
|
||||||
#define DS18B20_DECIMAL_STEP_9BIT 0.5
|
|
||||||
|
|
||||||
#define DS18B20_DELAY_MS_9_BITS 94
|
|
||||||
#define DS18B20_DELAY_MS_10_BITS 188
|
|
||||||
#define DS18B20_DELAY_MS_11_BITS 375
|
|
||||||
#define DS18B20_DELAY_MS_12_BITS 750
|
|
||||||
#define DS18B20_DELAY_MS_MAX DS18B20_DELAY_MS_12_BITS
|
|
||||||
|
|
||||||
|
|
||||||
/* DS18B20 Resolutions */
|
|
||||||
typedef enum {
|
|
||||||
DS18B20_RESOLUTION_9BITS = 0x1F,
|
|
||||||
DS18B20_RESOLUTION_10BITS = 0x3F,
|
|
||||||
DS18B20_RESOLUTION_11BITS = 0x5F,
|
|
||||||
DS18B20_RESOLUTION_12BITS = 0x7F
|
|
||||||
} DS18B20_Res_t;
|
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
uint8_t DevAddr[DS18B20_DEVICE_AMOUNT][8];
|
|
||||||
} DS18B20_Drv_t;
|
|
||||||
extern DS18B20_Drv_t DS;
|
|
||||||
extern OneWire_t OW;
|
|
||||||
|
|
||||||
/* External Function ---------------------------------------------------------*/
|
|
||||||
HAL_StatusTypeDef DS18B20_Search(DS18B20_Drv_t *DS, OneWire_t *OW);
|
|
||||||
HAL_StatusTypeDef DS18B20_StartConvT(OneWire_t* OW, uint8_t *ROM);
|
|
||||||
HAL_StatusTypeDef DS18B20_StartConvTAll(OneWire_t* OW);
|
|
||||||
HAL_StatusTypeDef DS18B20_CalcTemperature(OneWire_t* OW, uint8_t *ROM, uint8_t *Scratchpad, float *destination);
|
|
||||||
HAL_StatusTypeDef DS18B20_ReadScratchpad(OneWire_t* OW, uint8_t *ROM, uint8_t *Scratchpad);
|
|
||||||
HAL_StatusTypeDef DS18B20_WaitForEndConvertion(OneWire_t* OW);
|
|
||||||
HAL_StatusTypeDef DS18B20_WaitForEndConvertion_NonBlocking(OneWire_t* OW);
|
|
||||||
HAL_StatusTypeDef DS18B20_SetTempAlarm(OneWire_t* OW, uint8_t *ROM, int8_t Low,
|
|
||||||
int8_t High);
|
|
||||||
HAL_StatusTypeDef DS18B20_WriteUserBytes(OneWire_t* OW, uint8_t *ROM, int16_t UserBytes12,
|
|
||||||
int16_t UserBytes34, uint8_t UserBytesMask);
|
|
||||||
uint8_t DS18B20_AlarmSearch(DS18B20_Drv_t *DS, OneWire_t* OW);
|
|
||||||
|
|
||||||
HAL_StatusTypeDef DS18B20_SetResolution(OneWire_t* OW, uint8_t *ROM,
|
|
||||||
DS18B20_Res_t Resolution);
|
|
||||||
HAL_StatusTypeDef DS18B20_IsValidAddress(uint8_t *ROM);
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* DS18B20_H */
|
|
||||||
@@ -1,49 +0,0 @@
|
|||||||
/* USER CODE BEGIN Header */
|
|
||||||
/**
|
|
||||||
******************************************************************************
|
|
||||||
* @file gpio.h
|
|
||||||
* @brief This file contains all the function prototypes for
|
|
||||||
* the gpio.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 __GPIO_H__
|
|
||||||
#define __GPIO_H__
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Includes ------------------------------------------------------------------*/
|
|
||||||
#include "main.h"
|
|
||||||
|
|
||||||
/* USER CODE BEGIN Includes */
|
|
||||||
|
|
||||||
/* USER CODE END Includes */
|
|
||||||
|
|
||||||
/* USER CODE BEGIN Private defines */
|
|
||||||
|
|
||||||
/* USER CODE END Private defines */
|
|
||||||
|
|
||||||
void MX_GPIO_Init(void);
|
|
||||||
|
|
||||||
/* USER CODE BEGIN Prototypes */
|
|
||||||
|
|
||||||
/* USER CODE END Prototypes */
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#endif /*__ GPIO_H__ */
|
|
||||||
|
|
||||||
@@ -1,52 +0,0 @@
|
|||||||
/* USER CODE BEGIN Header */
|
|
||||||
/**
|
|
||||||
******************************************************************************
|
|
||||||
* @file i2c.h
|
|
||||||
* @brief This file contains all the function prototypes for
|
|
||||||
* the i2c.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 __I2C_H__
|
|
||||||
#define __I2C_H__
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Includes ------------------------------------------------------------------*/
|
|
||||||
#include "main.h"
|
|
||||||
|
|
||||||
/* USER CODE BEGIN Includes */
|
|
||||||
|
|
||||||
/* USER CODE END Includes */
|
|
||||||
|
|
||||||
extern I2C_HandleTypeDef hi2c1;
|
|
||||||
|
|
||||||
/* USER CODE BEGIN Private defines */
|
|
||||||
|
|
||||||
/* USER CODE END Private defines */
|
|
||||||
|
|
||||||
void MX_I2C1_Init(void);
|
|
||||||
|
|
||||||
/* USER CODE BEGIN Prototypes */
|
|
||||||
|
|
||||||
/* USER CODE END Prototypes */
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* __I2C_H__ */
|
|
||||||
|
|
||||||
@@ -1,161 +0,0 @@
|
|||||||
/* USER CODE BEGIN Header */
|
|
||||||
/**
|
|
||||||
***************************************************************
|
|
||||||
* 1 2 3 4 5 6 7 8 *
|
|
||||||
* --- +++ *
|
|
||||||
* *
|
|
||||||
*****************************************************************
|
|
||||||
|
|
||||||
|
|
||||||
******************************************************************************
|
|
||||||
* @file : main.h
|
|
||||||
* @brief : Header for main.c file.
|
|
||||||
* This file contains the common defines of the application.
|
|
||||||
******************************************************************************
|
|
||||||
* @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 __MAIN_H
|
|
||||||
#define __MAIN_H
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Includes ------------------------------------------------------------------*/
|
|
||||||
#include "stm32f1xx_hal.h"
|
|
||||||
|
|
||||||
/* Private includes ----------------------------------------------------------*/
|
|
||||||
/* USER CODE BEGIN Includes */
|
|
||||||
#include "modbus_data.h"
|
|
||||||
#include "PROJ_setup.h"
|
|
||||||
#include "dallas_tools.h"
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#define MODBUS_REG_ORDER_BE 0
|
|
||||||
#define MODBUS_REG_ORDER_LE 1
|
|
||||||
#define USE_USART USART_2
|
|
||||||
#define USART1_PA6_PA7
|
|
||||||
//#define USART1_PA9_PA10
|
|
||||||
|
|
||||||
|
|
||||||
typedef enum
|
|
||||||
{
|
|
||||||
FuncOK=0,
|
|
||||||
FuncERROR=1
|
|
||||||
|
|
||||||
}FuncStat;
|
|
||||||
|
|
||||||
|
|
||||||
typedef enum {
|
|
||||||
CONFIG_DEVICE_ID = 0,
|
|
||||||
CONFIG_BAUDRATE,
|
|
||||||
CONFIG_CALIBRATION,
|
|
||||||
CONFIG_SETTINGS
|
|
||||||
} ConfigParams;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef enum {
|
|
||||||
STATE_OPEN_VALVE = 0, // open
|
|
||||||
STATE_CLOSE_VALVE= 1 // close
|
|
||||||
} ValveState;
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
uint32_t id[2];
|
|
||||||
float temp;
|
|
||||||
uint16_t location;
|
|
||||||
uint8_t t_open;
|
|
||||||
float t_set;
|
|
||||||
uint8_t t_close;
|
|
||||||
uint8_t status_T_sense:1 ;
|
|
||||||
ValveState state;
|
|
||||||
uint16_t count;
|
|
||||||
}TEMP_TypeDef;
|
|
||||||
typedef struct {
|
|
||||||
uint32_t init_tsens : 1; // Update Interrupt Flag (бит 0) — флаг переполнения/обновления
|
|
||||||
|
|
||||||
// ... (другие биты могут быть зарезервированы или использоваться в расширенных таймерах)
|
|
||||||
} Flags_TypeDef;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* USER CODE END Includes */
|
|
||||||
|
|
||||||
/* Exported types ------------------------------------------------------------*/
|
|
||||||
/* USER CODE BEGIN ET */
|
|
||||||
#define reset_blink_delay 50
|
|
||||||
#define rest_iter 10
|
|
||||||
#define GPIOB11_valve MB_DATA.Coils.coils[0].state_val_bit.state_val_01
|
|
||||||
#define ralay_5v_on GPIOA->ODR&(1<<10);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
extern void handle_command(char* cmd);
|
|
||||||
typedef void (*FunctionPointer)(void);
|
|
||||||
|
|
||||||
uint16_t handle_valves(TEMP_TypeDef* temp_sense[MAX_SENSE]);
|
|
||||||
void init_setpoint_all_T_sense(TEMP_TypeDef* temp_sense, int size_array);
|
|
||||||
void iwdg_refresh(void);
|
|
||||||
void led_blink(GPIO_TypeDef *GPIOx,uint16_t GPIO_Pin,uint8_t iter,uint16_t delay);
|
|
||||||
FuncStat Field_modbus(MB_DataStructureTypeDef* MB_DATA, Flags_TypeDef* flag);
|
|
||||||
FuncStat packStruct(MB_DataStructureTypeDef* MB_DATA,int sizeARR);
|
|
||||||
void Check_Tconnect(MB_DataStructureTypeDef* MB_DATA, Flags_TypeDef* flag ,DALLAS_HandleTypeDef* hdallas, int a[50]);
|
|
||||||
FuncStat value_control(void );
|
|
||||||
|
|
||||||
void reinit_t_sens(void);
|
|
||||||
uint16_t* U32_TO_MODBUS (uint32_t value, uint16_t reg_array[2], int order);
|
|
||||||
|
|
||||||
uint32_t get_cycle_count(void);
|
|
||||||
void init_cycle_counter(void);
|
|
||||||
uint32_t measure_execution_time_cycles(void (*func)(void));
|
|
||||||
/* USER CODE END ET */
|
|
||||||
|
|
||||||
/* Exported constants --------------------------------------------------------*/
|
|
||||||
/* USER CODE BEGIN EC */
|
|
||||||
|
|
||||||
/* USER CODE END EC */
|
|
||||||
|
|
||||||
/* Exported macro ------------------------------------------------------------*/
|
|
||||||
/* USER CODE BEGIN EM */
|
|
||||||
|
|
||||||
/* USER CODE END EM */
|
|
||||||
|
|
||||||
/* Exported functions prototypes ---------------------------------------------*/
|
|
||||||
void Error_Handler(void);
|
|
||||||
|
|
||||||
/* USER CODE BEGIN EFP */
|
|
||||||
|
|
||||||
/* USER CODE END EFP */
|
|
||||||
|
|
||||||
/* Private defines -----------------------------------------------------------*/
|
|
||||||
#define One_wire_Pin GPIO_PIN_15
|
|
||||||
#define One_wire_GPIO_Port GPIOA
|
|
||||||
|
|
||||||
/* USER CODE BEGIN Private defines */
|
|
||||||
|
|
||||||
/* USER CODE END Private defines */
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* __MAIN_H */
|
|
||||||
@@ -1,77 +0,0 @@
|
|||||||
/**
|
|
||||||
******************************************************************************
|
|
||||||
* @file onewire.h
|
|
||||||
* @brief This file contains all the constants parameters for the OneWire
|
|
||||||
******************************************************************************
|
|
||||||
*/
|
|
||||||
/* Define to prevent recursive inclusion -------------------------------------*/
|
|
||||||
#ifndef ONEWIRE_H
|
|
||||||
#define ONEWIRE_H
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Includes ------------------------------------------------------------------*/
|
|
||||||
#include "ow_port.h"
|
|
||||||
|
|
||||||
/* Driver Selection ----------------------------------------------------------*/
|
|
||||||
//#define LL_Driver
|
|
||||||
//#define CMSIS_Driver
|
|
||||||
/* OneWire Timings -----------------------------------------------------------*/
|
|
||||||
#define ONEWIRE_RESET_PULSE_US 480 // Длительность импульса сброса
|
|
||||||
#define ONEWIRE_PRESENCE_WAIT_US 70 // Ожидание ответа от датчика
|
|
||||||
#define ONEWIRE_PRESENCE_DURATION_US 410 // Длительность сигнала присутствия
|
|
||||||
|
|
||||||
#define ONEWIRE_WRITE_1_US 8 // Длительность записи "1"
|
|
||||||
#define ONEWIRE_WRITE_0_US 57 // Длительность записи "0"
|
|
||||||
#define ONEWIRE_READ_CMD_US 2 // Время комманды чтения бита
|
|
||||||
#define ONEWIRE_READ_DELAY_US 6 // Задержка перед считыванием бита
|
|
||||||
#define ONEWIRE_COMMAND_SLOT_US 58 // Общее время комманды OneWire
|
|
||||||
#define ONEWIRE_RECOVERY_TIME_US 1 // Восстановление перед следующим слотом
|
|
||||||
/* Common Register -----------------------------------------------------------*/
|
|
||||||
#define ONEWIRE_CMD_SEARCHROM 0xF0
|
|
||||||
#define ONEWIRE_CMD_READROM 0x33
|
|
||||||
#define ONEWIRE_CMD_MATCHROM 0x55
|
|
||||||
#define ONEWIRE_CMD_SKIPROM 0xCC
|
|
||||||
|
|
||||||
/* Data Structure ------------------------------------------------------------*/
|
|
||||||
typedef enum
|
|
||||||
{
|
|
||||||
Input,
|
|
||||||
Output
|
|
||||||
} PinMode;
|
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
uint8_t LastDiscrepancy;
|
|
||||||
uint8_t LastFamilyDiscrepancy;
|
|
||||||
uint8_t LastDeviceFlag;
|
|
||||||
uint8_t RomByte[8];
|
|
||||||
uint8_t RomCnt;
|
|
||||||
uint16_t DataPin;
|
|
||||||
GPIO_TypeDef *DataPort;
|
|
||||||
} OneWire_t;
|
|
||||||
|
|
||||||
/* External Function ---------------------------------------------------------*/
|
|
||||||
void OneWire_Init(OneWire_t* OW);
|
|
||||||
uint8_t OneWire_Search(OneWire_t* OW, uint8_t Cmd);
|
|
||||||
void OneWire_GetDevRom(OneWire_t* OW, uint8_t *dev);
|
|
||||||
uint8_t OneWire_Reset(OneWire_t* OW);
|
|
||||||
uint8_t OneWire_ReadBit(OneWire_t* OW);
|
|
||||||
uint8_t OneWire_ReadByte(OneWire_t* OW);
|
|
||||||
void OneWire_WriteByte(OneWire_t* OW, uint8_t byte);
|
|
||||||
void OneWire_MatchROM(OneWire_t* OW, uint8_t *Rom);
|
|
||||||
void OneWire_Skip(OneWire_t* OW);
|
|
||||||
uint8_t OneWire_CRC8(uint8_t *addr, uint8_t len);
|
|
||||||
|
|
||||||
void OneWire_Pin_Mode(OneWire_t* OW, PinMode Mode);
|
|
||||||
void OneWire_Pin_Level(OneWire_t* OW, uint8_t Level);
|
|
||||||
uint8_t OneWire_Pin_Read(OneWire_t* OW);
|
|
||||||
void OneWire_WriteBit(OneWire_t* OW, uint8_t bit);
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* ONEWIRE_H */
|
|
||||||
@@ -1,60 +0,0 @@
|
|||||||
/**
|
|
||||||
******************************************************************************
|
|
||||||
* @file ow_port.h
|
|
||||||
* @brief This file includes the driver for port for OneWire purposes
|
|
||||||
******************************************************************************
|
|
||||||
*/
|
|
||||||
/* Define to prevent recursive inclusion -------------------------------------*/
|
|
||||||
#ifndef ONEWIRE_PORT_H
|
|
||||||
#define ONEWIRE_PORT_H
|
|
||||||
|
|
||||||
|
|
||||||
/* Includes ------------------------------------------------------------------*/
|
|
||||||
#include "stm32f1xx_hal.h"
|
|
||||||
|
|
||||||
/* I/O Port ------------------------------------------------------------------*/
|
|
||||||
//#define LL_Driver ///< использовать CMSIS для управления ножкой
|
|
||||||
#define CMSIS_Driver ///< использовать CMSIS для управления ножкой
|
|
||||||
// если ничего не выбрано - используется HAL
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @def OW_GPIO_Port
|
|
||||||
* @brief Порт вывода для шины 1-Wire.
|
|
||||||
* @details Указывает порт GPIO, к которому подключена линия данных 1-Wire (например, для DS18B20).
|
|
||||||
*/
|
|
||||||
#define OW_GPIO_Port GPIOA
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @def OW_Pin_Numb
|
|
||||||
* @brief Номер пина в порту OW_GPIO_Port.
|
|
||||||
* @details Используется для формирования маски пина и настройки ввода/вывода.
|
|
||||||
*/
|
|
||||||
#define OW_Pin_Numb 15
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @def OW_Pin
|
|
||||||
* @brief Маска пина, соответствующая номеру OW_Pin_Numb.
|
|
||||||
* @details Используется при доступе к регистрам порта для управления состоянием линии 1-Wire.
|
|
||||||
*/
|
|
||||||
#define OW_Pin (1<<OW_Pin_Numb)
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @def OW_TIM
|
|
||||||
* @brief Аппаратный таймер для формирования временных интервалов протокола 1-Wire.
|
|
||||||
* @details Применяется для создания точных задержек при обмене данными по шине 1-Wire.
|
|
||||||
*/
|
|
||||||
#define OW_TIM TIM1
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @def OW_TIM_1US_PERIOD
|
|
||||||
* @brief Количество тактов таймера OW_TIM, соответствующее 1 микросекунде.
|
|
||||||
* @details Вычисляется на основе частоты таймера. Например, для таймера с частотой 24 МГц значение будет равно 24.
|
|
||||||
*/
|
|
||||||
#define OW_TIM_1US_PERIOD 72
|
|
||||||
|
|
||||||
|
|
||||||
/* OneWire Timings -----------------------------------------------------------*/
|
|
||||||
void OneWire_Delay_us(uint32_t us);
|
|
||||||
/* Common Register -----------------------------------------------------------*/
|
|
||||||
#endif /* ONEWIRE_PORT_H */
|
|
||||||
@@ -1,391 +0,0 @@
|
|||||||
/* USER CODE BEGIN Header */
|
|
||||||
/**
|
|
||||||
******************************************************************************
|
|
||||||
* @file stm32f1xx_hal_conf.h
|
|
||||||
* @brief HAL configuration file.
|
|
||||||
******************************************************************************
|
|
||||||
* @attention
|
|
||||||
*
|
|
||||||
* Copyright (c) 2017 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 __STM32F1xx_HAL_CONF_H
|
|
||||||
#define __STM32F1xx_HAL_CONF_H
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Exported types ------------------------------------------------------------*/
|
|
||||||
/* Exported constants --------------------------------------------------------*/
|
|
||||||
|
|
||||||
/* ########################## Module Selection ############################## */
|
|
||||||
/**
|
|
||||||
* @brief This is the list of modules to be used in the HAL driver
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define HAL_MODULE_ENABLED
|
|
||||||
#define HAL_ADC_MODULE_ENABLED
|
|
||||||
/*#define HAL_CRYP_MODULE_ENABLED */
|
|
||||||
/*#define HAL_CAN_MODULE_ENABLED */
|
|
||||||
/*#define HAL_CAN_LEGACY_MODULE_ENABLED */
|
|
||||||
/*#define HAL_CEC_MODULE_ENABLED */
|
|
||||||
/*#define HAL_CORTEX_MODULE_ENABLED */
|
|
||||||
/*#define HAL_CRC_MODULE_ENABLED */
|
|
||||||
/*#define HAL_DAC_MODULE_ENABLED */
|
|
||||||
/*#define HAL_DMA_MODULE_ENABLED */
|
|
||||||
/*#define HAL_ETH_MODULE_ENABLED */
|
|
||||||
/*#define HAL_FLASH_MODULE_ENABLED */
|
|
||||||
#define HAL_GPIO_MODULE_ENABLED
|
|
||||||
#define HAL_I2C_MODULE_ENABLED
|
|
||||||
/*#define HAL_I2S_MODULE_ENABLED */
|
|
||||||
/*#define HAL_IRDA_MODULE_ENABLED */
|
|
||||||
/*#define HAL_IWDG_MODULE_ENABLED */
|
|
||||||
/*#define HAL_NOR_MODULE_ENABLED */
|
|
||||||
/*#define HAL_NAND_MODULE_ENABLED */
|
|
||||||
/*#define HAL_PCCARD_MODULE_ENABLED */
|
|
||||||
/*#define HAL_PCD_MODULE_ENABLED */
|
|
||||||
/*#define HAL_HCD_MODULE_ENABLED */
|
|
||||||
/*#define HAL_PWR_MODULE_ENABLED */
|
|
||||||
/*#define HAL_RCC_MODULE_ENABLED */
|
|
||||||
/*#define HAL_RTC_MODULE_ENABLED */
|
|
||||||
/*#define HAL_SD_MODULE_ENABLED */
|
|
||||||
/*#define HAL_MMC_MODULE_ENABLED */
|
|
||||||
/*#define HAL_SDRAM_MODULE_ENABLED */
|
|
||||||
/*#define HAL_SMARTCARD_MODULE_ENABLED */
|
|
||||||
/*#define HAL_SPI_MODULE_ENABLED */
|
|
||||||
/*#define HAL_SRAM_MODULE_ENABLED */
|
|
||||||
#define HAL_TIM_MODULE_ENABLED
|
|
||||||
#define HAL_UART_MODULE_ENABLED
|
|
||||||
/*#define HAL_USART_MODULE_ENABLED */
|
|
||||||
/*#define HAL_WWDG_MODULE_ENABLED */
|
|
||||||
|
|
||||||
#define HAL_CORTEX_MODULE_ENABLED
|
|
||||||
#define HAL_DMA_MODULE_ENABLED
|
|
||||||
#define HAL_FLASH_MODULE_ENABLED
|
|
||||||
#define HAL_EXTI_MODULE_ENABLED
|
|
||||||
#define HAL_GPIO_MODULE_ENABLED
|
|
||||||
#define HAL_PWR_MODULE_ENABLED
|
|
||||||
#define HAL_RCC_MODULE_ENABLED
|
|
||||||
|
|
||||||
/* ########################## Oscillator Values adaptation ####################*/
|
|
||||||
/**
|
|
||||||
* @brief Adjust the value of External High Speed oscillator (HSE) used in your application.
|
|
||||||
* This value is used by the RCC HAL module to compute the system frequency
|
|
||||||
* (when HSE is used as system clock source, directly or through the PLL).
|
|
||||||
*/
|
|
||||||
#if !defined (HSE_VALUE)
|
|
||||||
#define HSE_VALUE 8000000U /*!< Value of the External oscillator in Hz */
|
|
||||||
#endif /* HSE_VALUE */
|
|
||||||
|
|
||||||
#if !defined (HSE_STARTUP_TIMEOUT)
|
|
||||||
#define HSE_STARTUP_TIMEOUT 100U /*!< Time out for HSE start up, in ms */
|
|
||||||
#endif /* HSE_STARTUP_TIMEOUT */
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Internal High Speed oscillator (HSI) value.
|
|
||||||
* This value is used by the RCC HAL module to compute the system frequency
|
|
||||||
* (when HSI is used as system clock source, directly or through the PLL).
|
|
||||||
*/
|
|
||||||
#if !defined (HSI_VALUE)
|
|
||||||
#define HSI_VALUE 8000000U /*!< Value of the Internal oscillator in Hz*/
|
|
||||||
#endif /* HSI_VALUE */
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Internal Low Speed oscillator (LSI) value.
|
|
||||||
*/
|
|
||||||
#if !defined (LSI_VALUE)
|
|
||||||
#define LSI_VALUE 40000U /*!< LSI Typical Value in Hz */
|
|
||||||
#endif /* LSI_VALUE */ /*!< Value of the Internal Low Speed oscillator in Hz
|
|
||||||
The real value may vary depending on the variations
|
|
||||||
in voltage and temperature. */
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief External Low Speed oscillator (LSE) value.
|
|
||||||
* This value is used by the UART, RTC HAL module to compute the system frequency
|
|
||||||
*/
|
|
||||||
#if !defined (LSE_VALUE)
|
|
||||||
#define LSE_VALUE 32768U /*!< Value of the External oscillator in Hz*/
|
|
||||||
#endif /* LSE_VALUE */
|
|
||||||
|
|
||||||
#if !defined (LSE_STARTUP_TIMEOUT)
|
|
||||||
#define LSE_STARTUP_TIMEOUT 5000U /*!< Time out for LSE start up, in ms */
|
|
||||||
#endif /* LSE_STARTUP_TIMEOUT */
|
|
||||||
|
|
||||||
/* Tip: To avoid modifying this file each time you need to use different HSE,
|
|
||||||
=== you can define the HSE value in your toolchain compiler preprocessor. */
|
|
||||||
|
|
||||||
/* ########################### System Configuration ######################### */
|
|
||||||
/**
|
|
||||||
* @brief This is the HAL system configuration section
|
|
||||||
*/
|
|
||||||
#define VDD_VALUE 3300U /*!< Value of VDD in mv */
|
|
||||||
#define TICK_INT_PRIORITY 15U /*!< tick interrupt priority (lowest by default) */
|
|
||||||
#define USE_RTOS 0U
|
|
||||||
#define PREFETCH_ENABLE 1U
|
|
||||||
|
|
||||||
#define USE_HAL_ADC_REGISTER_CALLBACKS 0U /* ADC register callback disabled */
|
|
||||||
#define USE_HAL_CAN_REGISTER_CALLBACKS 0U /* CAN register callback disabled */
|
|
||||||
#define USE_HAL_CEC_REGISTER_CALLBACKS 0U /* CEC register callback disabled */
|
|
||||||
#define USE_HAL_DAC_REGISTER_CALLBACKS 0U /* DAC register callback disabled */
|
|
||||||
#define USE_HAL_ETH_REGISTER_CALLBACKS 0U /* ETH register callback disabled */
|
|
||||||
#define USE_HAL_HCD_REGISTER_CALLBACKS 0U /* HCD register callback disabled */
|
|
||||||
#define USE_HAL_I2C_REGISTER_CALLBACKS 0U /* I2C register callback disabled */
|
|
||||||
#define USE_HAL_I2S_REGISTER_CALLBACKS 0U /* I2S register callback disabled */
|
|
||||||
#define USE_HAL_MMC_REGISTER_CALLBACKS 0U /* MMC register callback disabled */
|
|
||||||
#define USE_HAL_NAND_REGISTER_CALLBACKS 0U /* NAND register callback disabled */
|
|
||||||
#define USE_HAL_NOR_REGISTER_CALLBACKS 0U /* NOR register callback disabled */
|
|
||||||
#define USE_HAL_PCCARD_REGISTER_CALLBACKS 0U /* PCCARD register callback disabled */
|
|
||||||
#define USE_HAL_PCD_REGISTER_CALLBACKS 0U /* PCD register callback disabled */
|
|
||||||
#define USE_HAL_RTC_REGISTER_CALLBACKS 0U /* RTC register callback disabled */
|
|
||||||
#define USE_HAL_SD_REGISTER_CALLBACKS 0U /* SD register callback disabled */
|
|
||||||
#define USE_HAL_SMARTCARD_REGISTER_CALLBACKS 0U /* SMARTCARD register callback disabled */
|
|
||||||
#define USE_HAL_IRDA_REGISTER_CALLBACKS 0U /* IRDA register callback disabled */
|
|
||||||
#define USE_HAL_SRAM_REGISTER_CALLBACKS 0U /* SRAM register callback disabled */
|
|
||||||
#define USE_HAL_SPI_REGISTER_CALLBACKS 0U /* SPI register callback disabled */
|
|
||||||
#define USE_HAL_TIM_REGISTER_CALLBACKS 0U /* TIM register callback disabled */
|
|
||||||
#define USE_HAL_UART_REGISTER_CALLBACKS 0U /* UART register callback disabled */
|
|
||||||
#define USE_HAL_USART_REGISTER_CALLBACKS 0U /* USART register callback disabled */
|
|
||||||
#define USE_HAL_WWDG_REGISTER_CALLBACKS 0U /* WWDG register callback disabled */
|
|
||||||
|
|
||||||
/* ########################## Assert Selection ############################## */
|
|
||||||
/**
|
|
||||||
* @brief Uncomment the line below to expanse the "assert_param" macro in the
|
|
||||||
* HAL drivers code
|
|
||||||
*/
|
|
||||||
/* #define USE_FULL_ASSERT 1U */
|
|
||||||
|
|
||||||
/* ################## Ethernet peripheral configuration ##################### */
|
|
||||||
|
|
||||||
/* Section 1 : Ethernet peripheral configuration */
|
|
||||||
|
|
||||||
/* MAC ADDRESS: MAC_ADDR0:MAC_ADDR1:MAC_ADDR2:MAC_ADDR3:MAC_ADDR4:MAC_ADDR5 */
|
|
||||||
#define MAC_ADDR0 2U
|
|
||||||
#define MAC_ADDR1 0U
|
|
||||||
#define MAC_ADDR2 0U
|
|
||||||
#define MAC_ADDR3 0U
|
|
||||||
#define MAC_ADDR4 0U
|
|
||||||
#define MAC_ADDR5 0U
|
|
||||||
|
|
||||||
/* Definition of the Ethernet driver buffers size and count */
|
|
||||||
#define ETH_RX_BUF_SIZE ETH_MAX_PACKET_SIZE /* buffer size for receive */
|
|
||||||
#define ETH_TX_BUF_SIZE ETH_MAX_PACKET_SIZE /* buffer size for transmit */
|
|
||||||
#define ETH_RXBUFNB 8U /* 4 Rx buffers of size ETH_RX_BUF_SIZE */
|
|
||||||
#define ETH_TXBUFNB 4U /* 4 Tx buffers of size ETH_TX_BUF_SIZE */
|
|
||||||
|
|
||||||
/* Section 2: PHY configuration section */
|
|
||||||
|
|
||||||
/* DP83848_PHY_ADDRESS Address*/
|
|
||||||
#define DP83848_PHY_ADDRESS 0x01U
|
|
||||||
/* PHY Reset delay these values are based on a 1 ms Systick interrupt*/
|
|
||||||
#define PHY_RESET_DELAY 0x000000FFU
|
|
||||||
/* PHY Configuration delay */
|
|
||||||
#define PHY_CONFIG_DELAY 0x00000FFFU
|
|
||||||
|
|
||||||
#define PHY_READ_TO 0x0000FFFFU
|
|
||||||
#define PHY_WRITE_TO 0x0000FFFFU
|
|
||||||
|
|
||||||
/* Section 3: Common PHY Registers */
|
|
||||||
|
|
||||||
#define PHY_BCR ((uint16_t)0x00) /*!< Transceiver Basic Control Register */
|
|
||||||
#define PHY_BSR ((uint16_t)0x01) /*!< Transceiver Basic Status Register */
|
|
||||||
|
|
||||||
#define PHY_RESET ((uint16_t)0x8000) /*!< PHY Reset */
|
|
||||||
#define PHY_LOOPBACK ((uint16_t)0x4000) /*!< Select loop-back mode */
|
|
||||||
#define PHY_FULLDUPLEX_100M ((uint16_t)0x2100) /*!< Set the full-duplex mode at 100 Mb/s */
|
|
||||||
#define PHY_HALFDUPLEX_100M ((uint16_t)0x2000) /*!< Set the half-duplex mode at 100 Mb/s */
|
|
||||||
#define PHY_FULLDUPLEX_10M ((uint16_t)0x0100) /*!< Set the full-duplex mode at 10 Mb/s */
|
|
||||||
#define PHY_HALFDUPLEX_10M ((uint16_t)0x0000) /*!< Set the half-duplex mode at 10 Mb/s */
|
|
||||||
#define PHY_AUTONEGOTIATION ((uint16_t)0x1000) /*!< Enable auto-negotiation function */
|
|
||||||
#define PHY_RESTART_AUTONEGOTIATION ((uint16_t)0x0200) /*!< Restart auto-negotiation function */
|
|
||||||
#define PHY_POWERDOWN ((uint16_t)0x0800) /*!< Select the power down mode */
|
|
||||||
#define PHY_ISOLATE ((uint16_t)0x0400) /*!< Isolate PHY from MII */
|
|
||||||
|
|
||||||
#define PHY_AUTONEGO_COMPLETE ((uint16_t)0x0020) /*!< Auto-Negotiation process completed */
|
|
||||||
#define PHY_LINKED_STATUS ((uint16_t)0x0004) /*!< Valid link established */
|
|
||||||
#define PHY_JABBER_DETECTION ((uint16_t)0x0002) /*!< Jabber condition detected */
|
|
||||||
|
|
||||||
/* Section 4: Extended PHY Registers */
|
|
||||||
#define PHY_SR ((uint16_t)0x10U) /*!< PHY status register Offset */
|
|
||||||
|
|
||||||
#define PHY_SPEED_STATUS ((uint16_t)0x0002U) /*!< PHY Speed mask */
|
|
||||||
#define PHY_DUPLEX_STATUS ((uint16_t)0x0004U) /*!< PHY Duplex mask */
|
|
||||||
|
|
||||||
/* ################## SPI peripheral configuration ########################## */
|
|
||||||
|
|
||||||
/* CRC FEATURE: Use to activate CRC feature inside HAL SPI Driver
|
|
||||||
* Activated: CRC code is present inside driver
|
|
||||||
* Deactivated: CRC code cleaned from driver
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define USE_SPI_CRC 0U
|
|
||||||
|
|
||||||
/* Includes ------------------------------------------------------------------*/
|
|
||||||
/**
|
|
||||||
* @brief Include module's header file
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifdef HAL_RCC_MODULE_ENABLED
|
|
||||||
#include "stm32f1xx_hal_rcc.h"
|
|
||||||
#endif /* HAL_RCC_MODULE_ENABLED */
|
|
||||||
|
|
||||||
#ifdef HAL_GPIO_MODULE_ENABLED
|
|
||||||
#include "stm32f1xx_hal_gpio.h"
|
|
||||||
#endif /* HAL_GPIO_MODULE_ENABLED */
|
|
||||||
|
|
||||||
#ifdef HAL_EXTI_MODULE_ENABLED
|
|
||||||
#include "stm32f1xx_hal_exti.h"
|
|
||||||
#endif /* HAL_EXTI_MODULE_ENABLED */
|
|
||||||
|
|
||||||
#ifdef HAL_DMA_MODULE_ENABLED
|
|
||||||
#include "stm32f1xx_hal_dma.h"
|
|
||||||
#endif /* HAL_DMA_MODULE_ENABLED */
|
|
||||||
|
|
||||||
#ifdef HAL_ETH_MODULE_ENABLED
|
|
||||||
#include "stm32f1xx_hal_eth.h"
|
|
||||||
#endif /* HAL_ETH_MODULE_ENABLED */
|
|
||||||
|
|
||||||
#ifdef HAL_CAN_MODULE_ENABLED
|
|
||||||
#include "stm32f1xx_hal_can.h"
|
|
||||||
#endif /* HAL_CAN_MODULE_ENABLED */
|
|
||||||
|
|
||||||
#ifdef HAL_CAN_LEGACY_MODULE_ENABLED
|
|
||||||
#include "Legacy/stm32f1xx_hal_can_legacy.h"
|
|
||||||
#endif /* HAL_CAN_LEGACY_MODULE_ENABLED */
|
|
||||||
|
|
||||||
#ifdef HAL_CEC_MODULE_ENABLED
|
|
||||||
#include "stm32f1xx_hal_cec.h"
|
|
||||||
#endif /* HAL_CEC_MODULE_ENABLED */
|
|
||||||
|
|
||||||
#ifdef HAL_CORTEX_MODULE_ENABLED
|
|
||||||
#include "stm32f1xx_hal_cortex.h"
|
|
||||||
#endif /* HAL_CORTEX_MODULE_ENABLED */
|
|
||||||
|
|
||||||
#ifdef HAL_ADC_MODULE_ENABLED
|
|
||||||
#include "stm32f1xx_hal_adc.h"
|
|
||||||
#endif /* HAL_ADC_MODULE_ENABLED */
|
|
||||||
|
|
||||||
#ifdef HAL_CRC_MODULE_ENABLED
|
|
||||||
#include "stm32f1xx_hal_crc.h"
|
|
||||||
#endif /* HAL_CRC_MODULE_ENABLED */
|
|
||||||
|
|
||||||
#ifdef HAL_DAC_MODULE_ENABLED
|
|
||||||
#include "stm32f1xx_hal_dac.h"
|
|
||||||
#endif /* HAL_DAC_MODULE_ENABLED */
|
|
||||||
|
|
||||||
#ifdef HAL_FLASH_MODULE_ENABLED
|
|
||||||
#include "stm32f1xx_hal_flash.h"
|
|
||||||
#endif /* HAL_FLASH_MODULE_ENABLED */
|
|
||||||
|
|
||||||
#ifdef HAL_SRAM_MODULE_ENABLED
|
|
||||||
#include "stm32f1xx_hal_sram.h"
|
|
||||||
#endif /* HAL_SRAM_MODULE_ENABLED */
|
|
||||||
|
|
||||||
#ifdef HAL_NOR_MODULE_ENABLED
|
|
||||||
#include "stm32f1xx_hal_nor.h"
|
|
||||||
#endif /* HAL_NOR_MODULE_ENABLED */
|
|
||||||
|
|
||||||
#ifdef HAL_I2C_MODULE_ENABLED
|
|
||||||
#include "stm32f1xx_hal_i2c.h"
|
|
||||||
#endif /* HAL_I2C_MODULE_ENABLED */
|
|
||||||
|
|
||||||
#ifdef HAL_I2S_MODULE_ENABLED
|
|
||||||
#include "stm32f1xx_hal_i2s.h"
|
|
||||||
#endif /* HAL_I2S_MODULE_ENABLED */
|
|
||||||
|
|
||||||
#ifdef HAL_IWDG_MODULE_ENABLED
|
|
||||||
#include "stm32f1xx_hal_iwdg.h"
|
|
||||||
#endif /* HAL_IWDG_MODULE_ENABLED */
|
|
||||||
|
|
||||||
#ifdef HAL_PWR_MODULE_ENABLED
|
|
||||||
#include "stm32f1xx_hal_pwr.h"
|
|
||||||
#endif /* HAL_PWR_MODULE_ENABLED */
|
|
||||||
|
|
||||||
#ifdef HAL_RTC_MODULE_ENABLED
|
|
||||||
#include "stm32f1xx_hal_rtc.h"
|
|
||||||
#endif /* HAL_RTC_MODULE_ENABLED */
|
|
||||||
|
|
||||||
#ifdef HAL_PCCARD_MODULE_ENABLED
|
|
||||||
#include "stm32f1xx_hal_pccard.h"
|
|
||||||
#endif /* HAL_PCCARD_MODULE_ENABLED */
|
|
||||||
|
|
||||||
#ifdef HAL_SD_MODULE_ENABLED
|
|
||||||
#include "stm32f1xx_hal_sd.h"
|
|
||||||
#endif /* HAL_SD_MODULE_ENABLED */
|
|
||||||
|
|
||||||
#ifdef HAL_NAND_MODULE_ENABLED
|
|
||||||
#include "stm32f1xx_hal_nand.h"
|
|
||||||
#endif /* HAL_NAND_MODULE_ENABLED */
|
|
||||||
|
|
||||||
#ifdef HAL_SPI_MODULE_ENABLED
|
|
||||||
#include "stm32f1xx_hal_spi.h"
|
|
||||||
#endif /* HAL_SPI_MODULE_ENABLED */
|
|
||||||
|
|
||||||
#ifdef HAL_TIM_MODULE_ENABLED
|
|
||||||
#include "stm32f1xx_hal_tim.h"
|
|
||||||
#endif /* HAL_TIM_MODULE_ENABLED */
|
|
||||||
|
|
||||||
#ifdef HAL_UART_MODULE_ENABLED
|
|
||||||
#include "stm32f1xx_hal_uart.h"
|
|
||||||
#endif /* HAL_UART_MODULE_ENABLED */
|
|
||||||
|
|
||||||
#ifdef HAL_USART_MODULE_ENABLED
|
|
||||||
#include "stm32f1xx_hal_usart.h"
|
|
||||||
#endif /* HAL_USART_MODULE_ENABLED */
|
|
||||||
|
|
||||||
#ifdef HAL_IRDA_MODULE_ENABLED
|
|
||||||
#include "stm32f1xx_hal_irda.h"
|
|
||||||
#endif /* HAL_IRDA_MODULE_ENABLED */
|
|
||||||
|
|
||||||
#ifdef HAL_SMARTCARD_MODULE_ENABLED
|
|
||||||
#include "stm32f1xx_hal_smartcard.h"
|
|
||||||
#endif /* HAL_SMARTCARD_MODULE_ENABLED */
|
|
||||||
|
|
||||||
#ifdef HAL_WWDG_MODULE_ENABLED
|
|
||||||
#include "stm32f1xx_hal_wwdg.h"
|
|
||||||
#endif /* HAL_WWDG_MODULE_ENABLED */
|
|
||||||
|
|
||||||
#ifdef HAL_PCD_MODULE_ENABLED
|
|
||||||
#include "stm32f1xx_hal_pcd.h"
|
|
||||||
#endif /* HAL_PCD_MODULE_ENABLED */
|
|
||||||
|
|
||||||
#ifdef HAL_HCD_MODULE_ENABLED
|
|
||||||
#include "stm32f1xx_hal_hcd.h"
|
|
||||||
#endif /* HAL_HCD_MODULE_ENABLED */
|
|
||||||
|
|
||||||
#ifdef HAL_MMC_MODULE_ENABLED
|
|
||||||
#include "stm32f1xx_hal_mmc.h"
|
|
||||||
#endif /* HAL_MMC_MODULE_ENABLED */
|
|
||||||
|
|
||||||
/* Exported macro ------------------------------------------------------------*/
|
|
||||||
#ifdef USE_FULL_ASSERT
|
|
||||||
/**
|
|
||||||
* @brief The assert_param macro is used for function's parameters check.
|
|
||||||
* @param expr If expr is false, it calls assert_failed function
|
|
||||||
* which reports the name of the source file and the source
|
|
||||||
* line number of the call that failed.
|
|
||||||
* If expr is true, it returns no value.
|
|
||||||
* @retval None
|
|
||||||
*/
|
|
||||||
#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__))
|
|
||||||
/* Exported functions ------------------------------------------------------- */
|
|
||||||
void assert_failed(uint8_t* file, uint32_t line);
|
|
||||||
#else
|
|
||||||
#define assert_param(expr) ((void)0U)
|
|
||||||
#endif /* USE_FULL_ASSERT */
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* __STM32F1xx_HAL_CONF_H */
|
|
||||||
|
|
||||||
@@ -1,74 +0,0 @@
|
|||||||
/* USER CODE BEGIN Header */
|
|
||||||
/**
|
|
||||||
******************************************************************************
|
|
||||||
* @file stm32f1xx_it.h
|
|
||||||
* @brief This file contains the headers of the interrupt handlers.
|
|
||||||
******************************************************************************
|
|
||||||
* @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 __STM32F1xx_IT_H
|
|
||||||
#define __STM32F1xx_IT_H
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Private includes ----------------------------------------------------------*/
|
|
||||||
/* USER CODE BEGIN Includes */
|
|
||||||
|
|
||||||
/* USER CODE END Includes */
|
|
||||||
|
|
||||||
/* Exported types ------------------------------------------------------------*/
|
|
||||||
/* USER CODE BEGIN ET */
|
|
||||||
|
|
||||||
/* USER CODE END ET */
|
|
||||||
|
|
||||||
/* Exported constants --------------------------------------------------------*/
|
|
||||||
/* USER CODE BEGIN EC */
|
|
||||||
|
|
||||||
/* USER CODE END EC */
|
|
||||||
|
|
||||||
/* Exported macro ------------------------------------------------------------*/
|
|
||||||
/* USER CODE BEGIN EM */
|
|
||||||
|
|
||||||
/* USER CODE END EM */
|
|
||||||
|
|
||||||
/* Exported functions prototypes ---------------------------------------------*/
|
|
||||||
void NMI_Handler(void);
|
|
||||||
void HardFault_Handler(void);
|
|
||||||
void MemManage_Handler(void);
|
|
||||||
void BusFault_Handler(void);
|
|
||||||
void UsageFault_Handler(void);
|
|
||||||
void SVC_Handler(void);
|
|
||||||
void DebugMon_Handler(void);
|
|
||||||
void PendSV_Handler(void);
|
|
||||||
void SysTick_Handler(void);
|
|
||||||
void TIM1_BRK_IRQHandler(void);
|
|
||||||
void TIM1_UP_IRQHandler(void);
|
|
||||||
void TIM1_TRG_COM_IRQHandler(void);
|
|
||||||
void TIM1_CC_IRQHandler(void);
|
|
||||||
void TIM2_IRQHandler(void);
|
|
||||||
void TIM3_IRQHandler(void);
|
|
||||||
void USART1_IRQHandler(void);
|
|
||||||
void USART2_IRQHandler(void);
|
|
||||||
/* USER CODE BEGIN EFP */
|
|
||||||
|
|
||||||
/* USER CODE END EFP */
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* __STM32F1xx_IT_H */
|
|
||||||
@@ -1,55 +0,0 @@
|
|||||||
/* USER CODE BEGIN Header */
|
|
||||||
/**
|
|
||||||
******************************************************************************
|
|
||||||
* @file tim.h
|
|
||||||
* @brief This file contains all the function prototypes for
|
|
||||||
* the tim.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 __TIM_H__
|
|
||||||
#define __TIM_H__
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Includes ------------------------------------------------------------------*/
|
|
||||||
#include "main.h"
|
|
||||||
|
|
||||||
/* USER CODE BEGIN Includes */
|
|
||||||
|
|
||||||
/* USER CODE END Includes */
|
|
||||||
|
|
||||||
extern TIM_HandleTypeDef htim1;
|
|
||||||
|
|
||||||
extern TIM_HandleTypeDef htim2;
|
|
||||||
|
|
||||||
/* USER CODE BEGIN Private defines */
|
|
||||||
|
|
||||||
/* USER CODE END Private defines */
|
|
||||||
|
|
||||||
void MX_TIM1_Init(void);
|
|
||||||
void MX_TIM2_Init(void);
|
|
||||||
|
|
||||||
/* USER CODE BEGIN Prototypes */
|
|
||||||
|
|
||||||
/* USER CODE END Prototypes */
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* __TIM_H__ */
|
|
||||||
|
|
||||||
@@ -1,55 +0,0 @@
|
|||||||
/* 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;
|
|
||||||
|
|
||||||
extern UART_HandleTypeDef huart2;
|
|
||||||
|
|
||||||
/* USER CODE BEGIN Private defines */
|
|
||||||
|
|
||||||
/* USER CODE END Private defines */
|
|
||||||
|
|
||||||
void MX_USART1_UART_Init(void);
|
|
||||||
void MX_USART2_UART_Init(void);
|
|
||||||
|
|
||||||
/* USER CODE BEGIN Prototypes */
|
|
||||||
|
|
||||||
/* USER CODE END Prototypes */
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* __USART_H__ */
|
|
||||||
|
|
||||||
@@ -1,129 +0,0 @@
|
|||||||
#include <string.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
|
|
||||||
#include "main.h"
|
|
||||||
#include "def.h"
|
|
||||||
//extern uint8_t devices_found ;
|
|
||||||
extern uint8_t roms[MAX_DEVICES][8];
|
|
||||||
extern char rx_buffer[64];
|
|
||||||
extern TEMP_TypeDef temp_sense[30];
|
|
||||||
extern uint8_t init;
|
|
||||||
int test_var=0;
|
|
||||||
//void handle_command(char* cmd)
|
|
||||||
//
|
|
||||||
//{
|
|
||||||
// if (strncmp(cmd, "list", 4) == 0)
|
|
||||||
// {
|
|
||||||
// printf("find %d devices:\r\n", devices_found);
|
|
||||||
// for (int i = 0; i < devices_found; i++)
|
|
||||||
// {
|
|
||||||
// printf("Device #%d: ", i);
|
|
||||||
// for (int j = 0; j < 8; j++)
|
|
||||||
// printf("%02X ", roms[i][j]);
|
|
||||||
// printf("\r\n");
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// else if (strncmp(cmd, "temp all", 8) == 0)
|
|
||||||
// {
|
|
||||||
// for (int i = 0; i < devices_found; i++)
|
|
||||||
// {
|
|
||||||
// ds_reset();
|
|
||||||
// ds_write_byte(0x55);
|
|
||||||
// for (int j = 0; j < 8; j++)
|
|
||||||
// ds_write_byte(roms[i][j]);
|
|
||||||
// ds_write_byte(0x44);
|
|
||||||
// }
|
|
||||||
|
|
||||||
// HAL_Delay(750);
|
|
||||||
|
|
||||||
// for (int i = 0; i < devices_found; i++)
|
|
||||||
// {
|
|
||||||
// ds_reset();
|
|
||||||
// ds_write_byte(0x55);
|
|
||||||
// for (int j = 0; j < 8; j++)
|
|
||||||
// ds_write_byte(roms[i][j]);
|
|
||||||
// ds_write_byte(0xBE);
|
|
||||||
// uint8_t tl = ds_read_byte();
|
|
||||||
// uint8_t th = ds_read_byte();
|
|
||||||
// int16_t t = (th << 8) | tl;
|
|
||||||
// float temp = t / 16.0;
|
|
||||||
// printf("T[%d] = %.2f C\r\n", i, temp);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// else if (strncmp(cmd, "temp ", 5) == 0)
|
|
||||||
// {
|
|
||||||
// int id = atoi(&cmd[5]);
|
|
||||||
// if (id < 0 || id >= devices_found)
|
|
||||||
// {
|
|
||||||
// printf("unknown ID\r\n");
|
|
||||||
// return;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// ds_reset();
|
|
||||||
// ds_write_byte(0x55);
|
|
||||||
// for (int j = 0; j < 8; j++)
|
|
||||||
// ds_write_byte(roms[id][j]);
|
|
||||||
// ds_write_byte(0x44);
|
|
||||||
// HAL_Delay(750);
|
|
||||||
|
|
||||||
// ds_reset();
|
|
||||||
// ds_write_byte(0x55);
|
|
||||||
// for (int j = 0; j < 8; j++)
|
|
||||||
// ds_write_byte(roms[id][j]);
|
|
||||||
// ds_write_byte(0xBE);
|
|
||||||
// uint8_t tl = ds_read_byte();
|
|
||||||
// uint8_t th = ds_read_byte();
|
|
||||||
// int16_t t = (th << 8) | tl;
|
|
||||||
// float temp = t / 16.0;
|
|
||||||
// printf("T[%d] = %.2f C\r\n", id, temp);
|
|
||||||
// }
|
|
||||||
// else if (strncmp(cmd, "ts_1_open_minus",15 ) == 0)
|
|
||||||
// {
|
|
||||||
// temp_sense[0].t_open-=1;
|
|
||||||
//
|
|
||||||
// }
|
|
||||||
// else if (strncmp(cmd, "ts_1_open_plus",14 ) == 0)
|
|
||||||
// {
|
|
||||||
// temp_sense[0].t_open+=1;
|
|
||||||
//
|
|
||||||
// }
|
|
||||||
// else if (strncmp(cmd, "ts_1_close_minus",16 ) == 0)
|
|
||||||
// {
|
|
||||||
// temp_sense[0].t_close-=1;
|
|
||||||
//
|
|
||||||
// }
|
|
||||||
// else if (strncmp(cmd, "ts_1_close_plus",15 ) == 0)
|
|
||||||
// {
|
|
||||||
//
|
|
||||||
// temp_sense[0].t_close+=1;
|
|
||||||
// }
|
|
||||||
// else if (strncmp(cmd, "init",4 ) == 0)
|
|
||||||
// {
|
|
||||||
// init=1;
|
|
||||||
// printf("init %s\r\n", "OK");
|
|
||||||
// }
|
|
||||||
// else if
|
|
||||||
// (strncmp(cmd, "set_temp ", 9) == 0)
|
|
||||||
// {
|
|
||||||
// uint8_t sense_num = (atoi(&cmd[9])&0x7c0)>>10;
|
|
||||||
// int parse_uart=atoi(&cmd[10]);
|
|
||||||
//
|
|
||||||
// temp_sense[sense_num].t_set=(float)parse_uart/10.;
|
|
||||||
// printf("temp_sense %i %s\r\n",sense_num, "OK");
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// }
|
|
||||||
// else if (strncmp(cmd, "temp ", 5) == 0)
|
|
||||||
// {
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// }
|
|
||||||
// else
|
|
||||||
// {
|
|
||||||
// printf("unknown CMD: %s\r\n", cmd);
|
|
||||||
// for (int i=0;i<63;i++)
|
|
||||||
// rx_buffer[i]=0;
|
|
||||||
//
|
|
||||||
// }
|
|
||||||
//}
|
|
||||||
@@ -1,106 +0,0 @@
|
|||||||
/* USER CODE BEGIN Header */
|
|
||||||
/**
|
|
||||||
******************************************************************************
|
|
||||||
* @file adc.c
|
|
||||||
* @brief This file provides code for the configuration
|
|
||||||
* of the ADC 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 "adc.h"
|
|
||||||
|
|
||||||
/* USER CODE BEGIN 0 */
|
|
||||||
|
|
||||||
/* USER CODE END 0 */
|
|
||||||
|
|
||||||
ADC_HandleTypeDef hadc1;
|
|
||||||
|
|
||||||
/* ADC1 init function */
|
|
||||||
void MX_ADC1_Init(void)
|
|
||||||
{
|
|
||||||
|
|
||||||
/* USER CODE BEGIN ADC1_Init 0 */
|
|
||||||
|
|
||||||
/* USER CODE END ADC1_Init 0 */
|
|
||||||
|
|
||||||
ADC_ChannelConfTypeDef sConfig = {0};
|
|
||||||
|
|
||||||
/* USER CODE BEGIN ADC1_Init 1 */
|
|
||||||
|
|
||||||
/* USER CODE END ADC1_Init 1 */
|
|
||||||
|
|
||||||
/** Common config
|
|
||||||
*/
|
|
||||||
hadc1.Instance = ADC1;
|
|
||||||
hadc1.Init.ScanConvMode = ADC_SCAN_DISABLE;
|
|
||||||
hadc1.Init.ContinuousConvMode = ENABLE;
|
|
||||||
hadc1.Init.DiscontinuousConvMode = DISABLE;
|
|
||||||
hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START;
|
|
||||||
hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;
|
|
||||||
hadc1.Init.NbrOfConversion = 1;
|
|
||||||
if (HAL_ADC_Init(&hadc1) != HAL_OK)
|
|
||||||
{
|
|
||||||
Error_Handler();
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Configure Regular Channel
|
|
||||||
*/
|
|
||||||
sConfig.Channel = ADC_CHANNEL_VREFINT;
|
|
||||||
sConfig.Rank = ADC_REGULAR_RANK_1;
|
|
||||||
sConfig.SamplingTime = ADC_SAMPLETIME_1CYCLE_5;
|
|
||||||
if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
|
|
||||||
{
|
|
||||||
Error_Handler();
|
|
||||||
}
|
|
||||||
/* USER CODE BEGIN ADC1_Init 2 */
|
|
||||||
|
|
||||||
/* USER CODE END ADC1_Init 2 */
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void HAL_ADC_MspInit(ADC_HandleTypeDef* adcHandle)
|
|
||||||
{
|
|
||||||
|
|
||||||
if(adcHandle->Instance==ADC1)
|
|
||||||
{
|
|
||||||
/* USER CODE BEGIN ADC1_MspInit 0 */
|
|
||||||
|
|
||||||
/* USER CODE END ADC1_MspInit 0 */
|
|
||||||
/* ADC1 clock enable */
|
|
||||||
__HAL_RCC_ADC1_CLK_ENABLE();
|
|
||||||
/* USER CODE BEGIN ADC1_MspInit 1 */
|
|
||||||
|
|
||||||
/* USER CODE END ADC1_MspInit 1 */
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void HAL_ADC_MspDeInit(ADC_HandleTypeDef* adcHandle)
|
|
||||||
{
|
|
||||||
|
|
||||||
if(adcHandle->Instance==ADC1)
|
|
||||||
{
|
|
||||||
/* USER CODE BEGIN ADC1_MspDeInit 0 */
|
|
||||||
|
|
||||||
/* USER CODE END ADC1_MspDeInit 0 */
|
|
||||||
/* Peripheral clock disable */
|
|
||||||
__HAL_RCC_ADC1_CLK_DISABLE();
|
|
||||||
/* USER CODE BEGIN ADC1_MspDeInit 1 */
|
|
||||||
|
|
||||||
/* USER CODE END ADC1_MspDeInit 1 */
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* USER CODE BEGIN 1 */
|
|
||||||
|
|
||||||
/* USER CODE END 1 */
|
|
||||||
@@ -1,656 +0,0 @@
|
|||||||
/**
|
|
||||||
******************************************************************************
|
|
||||||
* @file dallas_tools.c
|
|
||||||
* @brief Драйвер для работы с датчиками температуры DS18B20
|
|
||||||
******************************************************************************
|
|
||||||
@details
|
|
||||||
Библиотека предназначена для работы с цифровыми датчиками температуры DS18B20
|
|
||||||
по однопроводному интерфейсу 1-Wire. Реализована поддержка инициализации, поиска,
|
|
||||||
добавления и работы с несколькими датчиками.
|
|
||||||
|
|
||||||
@verbatim
|
|
||||||
==============================================================================
|
|
||||||
## Основные задачи библиотеки ##
|
|
||||||
==============================================================================
|
|
||||||
Эта библиотека предоставляет следующие основные функции:
|
|
||||||
(+) Инициализация шины 1-Wire и обнаружение подключённых датчиков
|
|
||||||
(+) Инициализация структуры датчика по:
|
|
||||||
- ROM-адресу
|
|
||||||
- пользовательским байтам (TH, TL, UserByte3, UserByte4)
|
|
||||||
- порядковому номеру в списке найденных устройств
|
|
||||||
(+) Конфигурация разрешения измерения
|
|
||||||
(+) Чтение температуры
|
|
||||||
(+) Замена «потерянного» датчика
|
|
||||||
(+) Деинициализация структуры датчика
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
## Быстрый старт ##
|
|
||||||
==============================================================================
|
|
||||||
Пример последовательности инициализации и использования:
|
|
||||||
|
|
||||||
1. Определение пина и таймера для OneWire в ow_port.h:
|
|
||||||
#define OW_GPIO_Port GPIOB
|
|
||||||
#define OW_Pin_Numb 0
|
|
||||||
#define OW_Pin (1<<OW_Pin_Numb)
|
|
||||||
#define OW_TIM TIM3
|
|
||||||
#define OW_TIM_1US_PERIOD 24
|
|
||||||
|
|
||||||
2. Подключение библиотеки и настройка таймеров:
|
|
||||||
#include "dallas_tools.h"
|
|
||||||
MX_TIM_Init();
|
|
||||||
|
|
||||||
3. Инициализация шины и поиск датчиков:
|
|
||||||
Dallas_BusFirstInit(&htim);
|
|
||||||
|
|
||||||
4. Инициализация датчика Dallas_SensorHandleTypeDef по одному из методов:
|
|
||||||
sens1.Init.init_func = &Dallas_SensorInitByInd; // по индексу
|
|
||||||
sens1.Init.InitParam.Ind = 0; // порядковый номер найденного датика для инициализации
|
|
||||||
|
|
||||||
sens2.Init.init_func = &Dallas_SensorInitByROM; // по ROM-адресу
|
|
||||||
sens2.Init.InitParam.ROM = 0; // ROM датика для инициализации
|
|
||||||
|
|
||||||
sens3.Init.init_func = &Dallas_SensorInitByUserBytes; // по пользовательским байтам
|
|
||||||
sens3.Init.InitParam.UserBytes.UserByte1 = 1; // UseBytes датика для инициализации
|
|
||||||
sens3.Init.InitParam.UserBytes.UserByte2 = 2; // UseBytes датика для инициализации
|
|
||||||
sens3.Init.InitParam.UserBytes.UserByte3 = 3; // UseBytes датика для инициализации
|
|
||||||
sens3.Init.InitParam.UserBytes.UserByte4 = 4; // UseBytes датика для инициализации
|
|
||||||
|
|
||||||
5. Инициализация структуруы датчика:
|
|
||||||
Dallas_AddNewSensors(&hdallas, &sens);
|
|
||||||
|
|
||||||
6. Работа с датчиком:
|
|
||||||
Dallas_StartConvertTAll(hdallas, DALLAS_WAIT_BUS, 0);
|
|
||||||
Dallas_ReadTemperature(&sens);
|
|
||||||
|
|
||||||
==============================================================================
|
|
||||||
## Требуемые зависимости ##
|
|
||||||
==============================================================================
|
|
||||||
Для работы библиотеки требуется:
|
|
||||||
- Драйвер OneWire (файлы onewire.c/h и ow_port.c/.h)
|
|
||||||
- Драйвер DS18B20 (файлы ds18b20.c/h)
|
|
||||||
|
|
||||||
@endverbatim
|
|
||||||
==============================================================================
|
|
||||||
*****************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
/* Includes ----------------------------------------------------------------*/
|
|
||||||
|
|
||||||
#include "dallas_tools.h"
|
|
||||||
#include "string.h"
|
|
||||||
|
|
||||||
|
|
||||||
/* Declarations and definitions --------------------------------------------*/
|
|
||||||
DALLAS_HandleTypeDef hdallas;
|
|
||||||
|
|
||||||
/* Functions ---------------------------------------------------------------*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Функция для иниицализации шины OW для датчиков
|
|
||||||
* @retval HAL Status
|
|
||||||
*/
|
|
||||||
HAL_StatusTypeDef Dallas_BusFirstInit(TIM_HandleTypeDef *htim)
|
|
||||||
{
|
|
||||||
if(htim == NULL)
|
|
||||||
return HAL_ERROR;
|
|
||||||
|
|
||||||
HAL_StatusTypeDef result;
|
|
||||||
|
|
||||||
|
|
||||||
HAL_TIM_Base_Start(htim);
|
|
||||||
|
|
||||||
hdallas.onewire = &OW;
|
|
||||||
hdallas.ds_devices = &DS;
|
|
||||||
OW.DataPin = OW_Pin;
|
|
||||||
OW.DataPort = OW_GPIO_Port;
|
|
||||||
/* Инициализация onewire и поиск датчиков*/
|
|
||||||
OneWire_Init(&OW);
|
|
||||||
|
|
||||||
|
|
||||||
return DS18B20_Search(&DS, &OW) != HAL_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Функция для иниицализации нового датчика в структуре
|
|
||||||
* @param hdallas Указатель на хендл для общения с датчиками
|
|
||||||
* @param sensor Указатель на структуру датчика
|
|
||||||
* @retval HAL Status
|
|
||||||
*/
|
|
||||||
HAL_StatusTypeDef Dallas_AddNewSensors(DALLAS_HandleTypeDef *hdallas, DALLAS_SensorHandleTypeDef *sensor)
|
|
||||||
{
|
|
||||||
HAL_StatusTypeDef result;
|
|
||||||
|
|
||||||
if(hdallas == NULL)
|
|
||||||
return HAL_ERROR;
|
|
||||||
if(sensor == NULL)
|
|
||||||
return HAL_ERROR;
|
|
||||||
|
|
||||||
sensor->hdallas = hdallas;
|
|
||||||
|
|
||||||
result = sensor->Init.init_func(hdallas, sensor);
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Функция для нахождения нового датчика на место потерянного
|
|
||||||
* @param sensor Указатель на структуру датчика
|
|
||||||
* @retval HAL Status
|
|
||||||
*/
|
|
||||||
HAL_StatusTypeDef Dallas_ReplaceLostedSensor(DALLAS_SensorHandleTypeDef *sensor)
|
|
||||||
{
|
|
||||||
HAL_StatusTypeDef result;
|
|
||||||
|
|
||||||
|
|
||||||
if(sensor == NULL)
|
|
||||||
return HAL_ERROR;
|
|
||||||
|
|
||||||
result = Dallas_IsConnected(sensor);
|
|
||||||
|
|
||||||
if(sensor->isLost)
|
|
||||||
{
|
|
||||||
if(DS18B20_Search(sensor->hdallas->ds_devices, sensor->hdallas->onewire) != HAL_OK)
|
|
||||||
return HAL_ERROR;
|
|
||||||
|
|
||||||
if(sensor->Init.init_func(sensor->hdallas, sensor) != HAL_OK)
|
|
||||||
return HAL_ERROR;
|
|
||||||
|
|
||||||
return HAL_OK;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return HAL_BUSY; // датчик не потерян
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Запускает измерение температуры на всех датчиках
|
|
||||||
* @param hdallas Указатель на хендл для общения с датчиками
|
|
||||||
* @param waitCondition Условие ожидания завершения преобразования
|
|
||||||
* @param dallas_delay_ms Время ожидания окончания конверсии
|
|
||||||
* @retval HAL Status
|
|
||||||
*/
|
|
||||||
HAL_StatusTypeDef Dallas_StartConvertTAll(DALLAS_HandleTypeDef *hdallas, DALLAS_WaitConvertionTypeDef waitCondition, uint8_t dallas_delay_ms)
|
|
||||||
{
|
|
||||||
HAL_StatusTypeDef result;
|
|
||||||
uint8_t rxDummyData;
|
|
||||||
|
|
||||||
if(hdallas == NULL)
|
|
||||||
return HAL_ERROR;
|
|
||||||
|
|
||||||
// Отправка команды начала преобразования температуры
|
|
||||||
result = DS18B20_StartConvTAll(hdallas->onewire);
|
|
||||||
if(result != HAL_OK)
|
|
||||||
{
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
// // Проверка что преобразование началось
|
|
||||||
// if(OneWire_ReadBit(onewire) == 1)
|
|
||||||
// return HAL_ERROR;
|
|
||||||
|
|
||||||
// Ожидание завершения преобразования, путем проверки шины
|
|
||||||
if (waitCondition == DALLAS_WAIT_BUS)
|
|
||||||
{
|
|
||||||
result = DS18B20_WaitForEndConvertion(hdallas->onewire);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Ожидание завершения преобразования, путем задержки
|
|
||||||
if (waitCondition == DALLAS_WAIT_DELAY)
|
|
||||||
{
|
|
||||||
uint32_t delayValueMs = 0;
|
|
||||||
|
|
||||||
if(!dallas_delay_ms)
|
|
||||||
{
|
|
||||||
switch (hdallas->scratchpad.ConfigRegister)
|
|
||||||
{
|
|
||||||
case DALLAS_CONFIG_9_BITS:
|
|
||||||
delayValueMs = DALLAS_DELAY_MS_9_BITS;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case DALLAS_CONFIG_10_BITS:
|
|
||||||
delayValueMs = DALLAS_DELAY_MS_10_BITS;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case DALLAS_CONFIG_11_BITS:
|
|
||||||
delayValueMs = DALLAS_DELAY_MS_11_BITS;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case DALLAS_CONFIG_12_BITS:
|
|
||||||
delayValueMs = DALLAS_DELAY_MS_12_BITS;
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
delayValueMs = dallas_delay_ms;
|
|
||||||
}
|
|
||||||
|
|
||||||
HAL_Delay(delayValueMs);
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Измеряет температуру на датчике
|
|
||||||
* @param sensor Указатель на структуру датчика
|
|
||||||
* @param waitCondition Условие ожидания завершения преобразования
|
|
||||||
* @retval HAL Status
|
|
||||||
*/
|
|
||||||
HAL_StatusTypeDef Dallas_ConvertT(DALLAS_SensorHandleTypeDef *sensor, DALLAS_WaitConvertionTypeDef waitCondition)
|
|
||||||
{
|
|
||||||
HAL_StatusTypeDef result;
|
|
||||||
uint8_t rxDummyData;
|
|
||||||
|
|
||||||
if(sensor == NULL)
|
|
||||||
return HAL_ERROR;
|
|
||||||
if(sensor->isInitialized == 0)
|
|
||||||
return HAL_ERROR;
|
|
||||||
|
|
||||||
/* Проверка присутствует ли выбранный датчик на линии */
|
|
||||||
result = Dallas_IsConnected(sensor);
|
|
||||||
if (result != HAL_OK)
|
|
||||||
return result;
|
|
||||||
|
|
||||||
// Отправка команды начала преобразования температуры
|
|
||||||
result = DS18B20_StartConvT(sensor->hdallas->onewire, (uint8_t *)&sensor->sensROM);
|
|
||||||
if(result != HAL_OK)
|
|
||||||
{
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Ожидание завершения преобразования, путем проверки шины
|
|
||||||
if (waitCondition == DALLAS_WAIT_BUS)
|
|
||||||
{
|
|
||||||
result = DS18B20_WaitForEndConvertion(sensor->hdallas->onewire);
|
|
||||||
if(result == HAL_TIMEOUT)
|
|
||||||
{
|
|
||||||
sensor->f.timeout_convertion_cnt++;
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Ожидание завершения преобразования, путем задержки
|
|
||||||
if (waitCondition == DALLAS_WAIT_DELAY)
|
|
||||||
{
|
|
||||||
uint32_t delayValueMs = 0;
|
|
||||||
|
|
||||||
switch (sensor->hdallas->scratchpad.ConfigRegister)
|
|
||||||
{
|
|
||||||
case DALLAS_CONFIG_9_BITS:
|
|
||||||
delayValueMs = DALLAS_DELAY_MS_9_BITS;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case DALLAS_CONFIG_10_BITS:
|
|
||||||
delayValueMs = DALLAS_DELAY_MS_10_BITS;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case DALLAS_CONFIG_11_BITS:
|
|
||||||
delayValueMs = DALLAS_DELAY_MS_11_BITS;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case DALLAS_CONFIG_12_BITS:
|
|
||||||
delayValueMs = DALLAS_DELAY_MS_12_BITS;
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
HAL_Delay(delayValueMs);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Не считываем температуру, если не выбрано ожидание окончания преобразования */
|
|
||||||
if(waitCondition != DALLAS_WAIT_NONE)
|
|
||||||
{
|
|
||||||
result = Dallas_ReadTemperature(sensor);
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Читает измеренную датчиком температуру
|
|
||||||
* @param sensor Указатель на структуру датчика
|
|
||||||
* @retval HAL Status
|
|
||||||
*/
|
|
||||||
HAL_StatusTypeDef Dallas_ReadTemperature(DALLAS_SensorHandleTypeDef *sensor)
|
|
||||||
{
|
|
||||||
HAL_StatusTypeDef result;
|
|
||||||
|
|
||||||
if(sensor == NULL)
|
|
||||||
return HAL_ERROR;
|
|
||||||
if(sensor->isInitialized == 0)
|
|
||||||
return HAL_ERROR;
|
|
||||||
|
|
||||||
/* Проверка присутствует ли выбранный датчик на линии */
|
|
||||||
result = Dallas_IsConnected(sensor);
|
|
||||||
if (result != HAL_OK)
|
|
||||||
{
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
result = DS18B20_CalcTemperature(sensor->hdallas->onewire, (uint8_t *)&sensor->sensROM, (uint8_t *)&sensor->hdallas->scratchpad, &sensor->temperature);
|
|
||||||
|
|
||||||
if (result != HAL_OK)
|
|
||||||
{
|
|
||||||
sensor->f.read_temperature_err_cnt++;
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
return HAL_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Проверяет подключен ли датчик (чтение scratchpad)
|
|
||||||
* @param sensor Указатель на структуру датчика
|
|
||||||
* @retval HAL Status
|
|
||||||
*/
|
|
||||||
HAL_StatusTypeDef Dallas_IsConnected(DALLAS_SensorHandleTypeDef *sensor)
|
|
||||||
{
|
|
||||||
HAL_StatusTypeDef result;
|
|
||||||
if(sensor == NULL)
|
|
||||||
return HAL_ERROR;
|
|
||||||
|
|
||||||
result = Dallas_ReadScratchpad(sensor);
|
|
||||||
|
|
||||||
if (result == HAL_OK)
|
|
||||||
{
|
|
||||||
sensor->isConnected = 1;
|
|
||||||
sensor->isLost = 0;
|
|
||||||
return HAL_OK;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
//sensor->temperature = 0;
|
|
||||||
if(sensor->isConnected == 1)
|
|
||||||
{
|
|
||||||
sensor->f.disconnect_cnt++;
|
|
||||||
}
|
|
||||||
|
|
||||||
sensor->isLost = 1;
|
|
||||||
if (sensor->f.disconnect_cnt>8)
|
|
||||||
sensor->isConnected = 0;//13.02 сделал паузу чтоб не стробил типа фильтр
|
|
||||||
|
|
||||||
|
|
||||||
// Dallas_ReplaceLostedSensor(sensor);
|
|
||||||
return HAL_BUSY; // использую busy, чтобы отличать ситуацию от HAL_ERROR
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Записывает пользовательские байты
|
|
||||||
* @param sensor Указатель на структуру датчика
|
|
||||||
* @param UserBytes12 Пользовательские байты 1 и 2
|
|
||||||
* @param UserBytes34 Пользовательские байты 3 и 4
|
|
||||||
* @param UserBytesMask Маска, какие байты записывать, а какие нет
|
|
||||||
* @retval HAL Status
|
|
||||||
* @details старший байт - UserByte4/UserByte2, младший - UserByte3/UserByte1.
|
|
||||||
*/
|
|
||||||
HAL_StatusTypeDef Dallas_WriteUserBytes(DALLAS_SensorHandleTypeDef *sensor, uint16_t UserBytes12, uint16_t UserBytes34, uint8_t UserBytesMask)
|
|
||||||
{
|
|
||||||
HAL_StatusTypeDef result;
|
|
||||||
if(sensor == NULL)
|
|
||||||
return HAL_ERROR;
|
|
||||||
|
|
||||||
if(sensor->isInitialized == 0)
|
|
||||||
return HAL_ERROR;
|
|
||||||
|
|
||||||
/* Проверка присутствует ли выбранный датчик на линии */
|
|
||||||
result = Dallas_IsConnected(sensor);
|
|
||||||
if (result != HAL_OK)
|
|
||||||
return result;
|
|
||||||
|
|
||||||
result = DS18B20_WriteUserBytes(sensor->hdallas->onewire, (uint8_t *)&sensor->sensROM, UserBytes12, UserBytes34, UserBytesMask);
|
|
||||||
if (result != HAL_OK)
|
|
||||||
{
|
|
||||||
sensor->f.write_err_cnt++;
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
result = Dallas_ReadScratchpad(sensor);
|
|
||||||
if (result != HAL_OK)
|
|
||||||
{
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
HAL_StatusTypeDef Dallas_ReadScratchpad(DALLAS_SensorHandleTypeDef *sensor)
|
|
||||||
{
|
|
||||||
if(sensor == NULL)
|
|
||||||
return HAL_ERROR;
|
|
||||||
return DS18B20_ReadScratchpad(sensor->hdallas->onewire, (uint8_t *)&sensor->sensROM, (uint8_t *)&sensor->hdallas->scratchpad);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Инициализирует структуру датчика по ROM
|
|
||||||
* @param hdallas Указатель на хендл для общения с датчиками
|
|
||||||
* @param sensor Указатель на структуру датчика
|
|
||||||
* @retval HAL Status
|
|
||||||
*/
|
|
||||||
HAL_StatusTypeDef Dallas_SensorInitByROM(DALLAS_HandleTypeDef *hdallas, DALLAS_SensorHandleTypeDef *sensor)
|
|
||||||
{
|
|
||||||
HAL_StatusTypeDef result;
|
|
||||||
|
|
||||||
if(hdallas == NULL)
|
|
||||||
return HAL_ERROR;
|
|
||||||
if(sensor == NULL)
|
|
||||||
return HAL_ERROR;
|
|
||||||
|
|
||||||
uint8_t ROM[8] = {0};
|
|
||||||
ROM[0] = (sensor->Init.InitParam.ROM >> (7*8)) & 0xFF;
|
|
||||||
ROM[1] = (sensor->Init.InitParam.ROM >> (6*8)) & 0xFF;
|
|
||||||
ROM[2] = (sensor->Init.InitParam.ROM >> (5*8)) & 0xFF;
|
|
||||||
ROM[3] = (sensor->Init.InitParam.ROM >> (4*8)) & 0xFF;
|
|
||||||
ROM[4] = (sensor->Init.InitParam.ROM >> (3*8)) & 0xFF;
|
|
||||||
ROM[5] = (sensor->Init.InitParam.ROM >> (2*8)) & 0xFF;
|
|
||||||
ROM[6] = (sensor->Init.InitParam.ROM >> (1*8)) & 0xFF;
|
|
||||||
ROM[7] = (sensor->Init.InitParam.ROM >> (0*8)) & 0xFF;
|
|
||||||
|
|
||||||
if(DS18B20_IsValidAddress(ROM) != HAL_OK)
|
|
||||||
return HAL_ERROR;
|
|
||||||
|
|
||||||
uint8_t comparebytes = DALLAS_ROM_SIZE;
|
|
||||||
int ROM_ind = 0;
|
|
||||||
for(int i = 0; i < hdallas->onewire->RomCnt; i++)
|
|
||||||
{
|
|
||||||
comparebytes = DALLAS_ROM_SIZE;
|
|
||||||
for(int rom_byte = 0; rom_byte < DALLAS_ROM_SIZE; rom_byte++)
|
|
||||||
{
|
|
||||||
if(hdallas->ds_devices->DevAddr[i][rom_byte] == ROM[rom_byte])
|
|
||||||
comparebytes--;
|
|
||||||
}
|
|
||||||
if(comparebytes == 0)
|
|
||||||
{
|
|
||||||
ROM_ind = i;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Проверка присутствует ли выбранный датчик на линии */
|
|
||||||
if(comparebytes == 0)
|
|
||||||
{
|
|
||||||
|
|
||||||
result = Dallas_SensorInit(hdallas, sensor, &hdallas->ds_devices->DevAddr[ROM_ind]);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return HAL_ERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Инициализирует структуру датчика по пользовательским байтам
|
|
||||||
* @param hdallas Указатель на хендл для общения с датчиками
|
|
||||||
* @param sensor Указатель на структуру датчика
|
|
||||||
* @retval HAL Status
|
|
||||||
*/
|
|
||||||
HAL_StatusTypeDef Dallas_SensorInitByUserBytes(DALLAS_HandleTypeDef *hdallas, DALLAS_SensorHandleTypeDef *sensor)
|
|
||||||
{
|
|
||||||
HAL_StatusTypeDef result;
|
|
||||||
|
|
||||||
if(hdallas == NULL)
|
|
||||||
return HAL_ERROR;
|
|
||||||
if(sensor == NULL)
|
|
||||||
return HAL_ERROR;
|
|
||||||
|
|
||||||
uint8_t UserByte1 = sensor->Init.InitParam.UserBytes.UserByte1;
|
|
||||||
uint8_t UserByte2 = sensor->Init.InitParam.UserBytes.UserByte2;
|
|
||||||
uint8_t UserByte3 = sensor->Init.InitParam.UserBytes.UserByte3;
|
|
||||||
uint8_t UserByte4 = sensor->Init.InitParam.UserBytes.UserByte4;
|
|
||||||
uint8_t UserByte12Cmp = 0;
|
|
||||||
uint8_t UserByte34Cmp = 0;
|
|
||||||
|
|
||||||
for(int i = 0; i < hdallas->onewire->RomCnt; i++)
|
|
||||||
{
|
|
||||||
/* Проверка присутствует ли выбранный датчик на линии */
|
|
||||||
result = DS18B20_ReadScratchpad(hdallas->onewire, (uint8_t *)&hdallas->ds_devices->DevAddr[i], (uint8_t *)&hdallas->scratchpad);
|
|
||||||
if (result != HAL_OK)
|
|
||||||
return result;
|
|
||||||
|
|
||||||
/* Сравнение UserByte1 и UserByte2, если они не равны нулю */
|
|
||||||
if(UserByte1 | UserByte2)
|
|
||||||
{
|
|
||||||
if( (hdallas->scratchpad.tHighRegister == UserByte1) &&
|
|
||||||
(hdallas->scratchpad.tLowRegister == UserByte2))
|
|
||||||
{
|
|
||||||
UserByte12Cmp = 1;
|
|
||||||
}
|
|
||||||
}/* Если сравнение UserByte1 и UserByte2 не выбрано, то считаем что они совпадают */
|
|
||||||
else
|
|
||||||
{
|
|
||||||
UserByte12Cmp = 1;
|
|
||||||
}
|
|
||||||
/* Сравнение UserByte3 и UserByte4, если они не равны нулю */
|
|
||||||
if(UserByte3 | UserByte4)
|
|
||||||
{
|
|
||||||
if( (hdallas->scratchpad.UserByte3 == UserByte3) &&
|
|
||||||
(hdallas->scratchpad.UserByte4 == UserByte4))
|
|
||||||
{
|
|
||||||
UserByte34Cmp = 1;
|
|
||||||
}
|
|
||||||
}/* Если сравнение UserByte3 и UserByte4 не выбрано, то считаем что они одинаковые */
|
|
||||||
else
|
|
||||||
{
|
|
||||||
UserByte34Cmp = 1;
|
|
||||||
}
|
|
||||||
/* Если нашли нужный датчик - завершаем поиск */
|
|
||||||
if(UserByte12Cmp && UserByte34Cmp)
|
|
||||||
{
|
|
||||||
// sensor->isInitialized = 1;
|
|
||||||
// sensor->Init.init_func = (HAL_StatusTypeDef (*)())Dallas_SensorInitByUserBytes;
|
|
||||||
result = Dallas_SensorInit(hdallas, sensor, &hdallas->ds_devices->DevAddr[i]);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
sensor->sensROM = 0;
|
|
||||||
/* Возвращаем ошибку если не нашли */
|
|
||||||
return HAL_ERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Инициализирует структуру датчика по порядковому номеру
|
|
||||||
* @param hdallas Указатель на хендл для общения с датчиками
|
|
||||||
* @param sensor Указатель на структуру датчика
|
|
||||||
* @retval HAL Status
|
|
||||||
* @details Порядковый номер датчика в списке найденных.
|
|
||||||
* Т.е. каким по счету этот датчик был найден
|
|
||||||
*/
|
|
||||||
HAL_StatusTypeDef Dallas_SensorInitByInd(DALLAS_HandleTypeDef *hdallas, DALLAS_SensorHandleTypeDef *sensor)
|
|
||||||
{
|
|
||||||
HAL_StatusTypeDef result;
|
|
||||||
|
|
||||||
if(hdallas == NULL)
|
|
||||||
return HAL_ERROR;
|
|
||||||
if(sensor == NULL)
|
|
||||||
return HAL_ERROR;
|
|
||||||
|
|
||||||
result = Dallas_SensorInit(hdallas, sensor, &hdallas->ds_devices->DevAddr[sensor->Init.InitParam.Ind]);
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Инициализирует датчик для работы
|
|
||||||
* @param hdallas Указатель на хендл для общения с датчиками
|
|
||||||
* @param sensor Указатель на структуру датчика
|
|
||||||
* @param ROM ROM датчика, который надо инициализировать
|
|
||||||
* @retval HAL Status
|
|
||||||
*/
|
|
||||||
HAL_StatusTypeDef Dallas_SensorInit(DALLAS_HandleTypeDef *hdallas, DALLAS_SensorHandleTypeDef *sensor, uint8_t (*ROM)[DALLAS_ROM_SIZE])
|
|
||||||
{
|
|
||||||
HAL_StatusTypeDef result;
|
|
||||||
|
|
||||||
if(sensor == NULL)
|
|
||||||
return HAL_ERROR;
|
|
||||||
if(hdallas == 0)
|
|
||||||
return HAL_ERROR;
|
|
||||||
|
|
||||||
sensor->hdallas = hdallas;
|
|
||||||
sensor->sensROM = 0;
|
|
||||||
sensor->sensROM = *(uint64_t *)(ROM);
|
|
||||||
// for(int i = 0; i < DALLAS_ROM_SIZE; i++)
|
|
||||||
// sensor->sensROM |= ((uint64_t)(*ROM)[i] << (56 - 8*i));
|
|
||||||
|
|
||||||
/* Проверка присутствует ли выбранный датчик на линии */
|
|
||||||
result = Dallas_ReadScratchpad(sensor);
|
|
||||||
if (result == HAL_OK)
|
|
||||||
{
|
|
||||||
/* Установка разрешения */
|
|
||||||
result = DS18B20_SetResolution(hdallas->onewire, (uint8_t *)ROM, sensor->Init.Resolution);
|
|
||||||
if (result == HAL_OK)
|
|
||||||
{
|
|
||||||
sensor->isInitialized = 1;
|
|
||||||
return HAL_OK;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
sensor->isInitialized = 0;
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
sensor->isInitialized = 0;
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Деинициализирует структуру датчика
|
|
||||||
* @param sensor Указатель на структуру датчика
|
|
||||||
* @retval HAL Status
|
|
||||||
*/
|
|
||||||
HAL_StatusTypeDef Dallas_SensorDeInit(DALLAS_SensorHandleTypeDef *sensor)
|
|
||||||
{
|
|
||||||
if(sensor == NULL)
|
|
||||||
return HAL_ERROR;
|
|
||||||
|
|
||||||
memset(&sensor->f, 0, sizeof(sensor->f));
|
|
||||||
sensor->isConnected = 0;
|
|
||||||
sensor->isInitialized = 0;
|
|
||||||
sensor->isLost = 0;
|
|
||||||
sensor->temperature = 0;
|
|
||||||
sensor->sensROM = 0;
|
|
||||||
|
|
||||||
return HAL_OK;
|
|
||||||
}
|
|
||||||
@@ -1,67 +0,0 @@
|
|||||||
/* USER CODE BEGIN Header */
|
|
||||||
/**
|
|
||||||
******************************************************************************
|
|
||||||
* @file dma.c
|
|
||||||
* @brief This file provides code for the configuration
|
|
||||||
* of all the requested memory to memory DMA transfers.
|
|
||||||
******************************************************************************
|
|
||||||
* @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 "dma.h"
|
|
||||||
|
|
||||||
/* USER CODE BEGIN 0 */
|
|
||||||
|
|
||||||
/* USER CODE END 0 */
|
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------*/
|
|
||||||
/* Configure DMA */
|
|
||||||
/*----------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
/* USER CODE BEGIN 1 */
|
|
||||||
|
|
||||||
/* USER CODE END 1 */
|
|
||||||
DMA_HandleTypeDef hdma_memtomem_dma1_channel1;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Enable DMA controller clock
|
|
||||||
* Configure DMA for memory to memory transfers
|
|
||||||
* hdma_memtomem_dma1_channel1
|
|
||||||
*/
|
|
||||||
void MX_DMA_Init(void)
|
|
||||||
{
|
|
||||||
|
|
||||||
/* DMA controller clock enable */
|
|
||||||
__HAL_RCC_DMA1_CLK_ENABLE();
|
|
||||||
|
|
||||||
/* Configure DMA request hdma_memtomem_dma1_channel1 on DMA1_Channel1 */
|
|
||||||
hdma_memtomem_dma1_channel1.Instance = DMA1_Channel1;
|
|
||||||
hdma_memtomem_dma1_channel1.Init.Direction = DMA_MEMORY_TO_MEMORY;
|
|
||||||
hdma_memtomem_dma1_channel1.Init.PeriphInc = DMA_PINC_ENABLE;
|
|
||||||
hdma_memtomem_dma1_channel1.Init.MemInc = DMA_MINC_ENABLE;
|
|
||||||
hdma_memtomem_dma1_channel1.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
|
|
||||||
hdma_memtomem_dma1_channel1.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
|
|
||||||
hdma_memtomem_dma1_channel1.Init.Mode = DMA_NORMAL;
|
|
||||||
hdma_memtomem_dma1_channel1.Init.Priority = DMA_PRIORITY_LOW;
|
|
||||||
if (HAL_DMA_Init(&hdma_memtomem_dma1_channel1) != HAL_OK)
|
|
||||||
{
|
|
||||||
Error_Handler();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/* USER CODE BEGIN 2 */
|
|
||||||
|
|
||||||
/* USER CODE END 2 */
|
|
||||||
|
|
||||||
@@ -1,607 +0,0 @@
|
|||||||
/**
|
|
||||||
******************************************************************************
|
|
||||||
* @file ds18b20_driver.c
|
|
||||||
* @brief This file includes the HAL/LL driver for DS18B20 1-Wire Digital
|
|
||||||
* Thermometer
|
|
||||||
******************************************************************************
|
|
||||||
*/
|
|
||||||
#include "ds18b20_driver.h"
|
|
||||||
|
|
||||||
DS18B20_Drv_t DS;
|
|
||||||
OneWire_t OW;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief The function is used to check valid DS18B20 ROM
|
|
||||||
* @retval Return in OK = 1, Failed = 0
|
|
||||||
* @param ROM Pointer to ROM number
|
|
||||||
*/
|
|
||||||
HAL_StatusTypeDef DS18B20_IsValidAddress(uint8_t *ROM)
|
|
||||||
{
|
|
||||||
if(ROM == NULL)
|
|
||||||
return HAL_ERROR;
|
|
||||||
|
|
||||||
uint8_t check_family = (*ROM == DS18B20_FAMILY_CODE);
|
|
||||||
/* Calculate CRC */
|
|
||||||
uint8_t crc = OneWire_CRC8(ROM, 7);
|
|
||||||
uint8_t check_crc = (crc == ROM[7]);
|
|
||||||
/* Checks if first byte is equal to DS18B20's family code */
|
|
||||||
if(check_family && check_crc)
|
|
||||||
return HAL_OK;
|
|
||||||
else
|
|
||||||
return HAL_ERROR;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* @brief The function is used to check valid DS18B20 ROM
|
|
||||||
* @retval Return in OK = 1, Failed = 0
|
|
||||||
* @param ROM Pointer to ROM number
|
|
||||||
*/
|
|
||||||
HAL_StatusTypeDef DS18B20_IsValid(uint8_t *ROM)
|
|
||||||
{
|
|
||||||
if(ROM == NULL)
|
|
||||||
return HAL_ERROR;
|
|
||||||
|
|
||||||
if(*ROM == DS18B20_FAMILY_CODE)
|
|
||||||
return HAL_OK;
|
|
||||||
else
|
|
||||||
return HAL_ERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief The function is used to get resolution
|
|
||||||
* @retval Return value in 9 - 12
|
|
||||||
* @param OW OneWire HandleTypedef
|
|
||||||
* @param ROM Pointer to ROM number
|
|
||||||
*/
|
|
||||||
uint8_t DS18B20_GetResolution(OneWire_t* OW, uint8_t *ROM) {
|
|
||||||
uint8_t conf;
|
|
||||||
|
|
||||||
if(OW == NULL)
|
|
||||||
return HAL_ERROR;
|
|
||||||
if(ROM == NULL)
|
|
||||||
return HAL_ERROR;
|
|
||||||
|
|
||||||
/* Check valid ROM */
|
|
||||||
if (DS18B20_IsValid(ROM) != HAL_OK)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
/* Reset line */
|
|
||||||
OneWire_Reset(OW);
|
|
||||||
|
|
||||||
/* Select ROM number */
|
|
||||||
OneWire_MatchROM(OW, ROM);
|
|
||||||
|
|
||||||
/* Read scratchpad command by onewire protocol */
|
|
||||||
OneWire_WriteByte(OW, DS18B20_CMD_READSCRATCHPAD);
|
|
||||||
|
|
||||||
/* Ignore first 4 bytes */
|
|
||||||
OneWire_ReadByte(OW);
|
|
||||||
OneWire_ReadByte(OW);
|
|
||||||
OneWire_ReadByte(OW);
|
|
||||||
OneWire_ReadByte(OW);
|
|
||||||
|
|
||||||
/* 5th byte of scratchpad is configuration register */
|
|
||||||
conf = OneWire_ReadByte(OW);
|
|
||||||
|
|
||||||
/* Return 9 - 12 value according to number of bits */
|
|
||||||
return ((conf & 0x60) >> 5) + 9;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief The function is used as set resolution
|
|
||||||
* @retval status in OK = 1, Failed = 0
|
|
||||||
* @param OW OneWire HandleTypedef
|
|
||||||
* @param ROM Pointer to ROM number
|
|
||||||
* @param Resolution Resolution in 9 - 12
|
|
||||||
*/
|
|
||||||
HAL_StatusTypeDef DS18B20_SetResolution(OneWire_t* OW, uint8_t *ROM,
|
|
||||||
DS18B20_Res_t Resolution)
|
|
||||||
{
|
|
||||||
if(OW == NULL)
|
|
||||||
return HAL_ERROR;
|
|
||||||
if(ROM == NULL)
|
|
||||||
return HAL_ERROR;
|
|
||||||
|
|
||||||
uint8_t th, tl, conf;
|
|
||||||
|
|
||||||
/* Check valid ROM */
|
|
||||||
if (DS18B20_IsValid(ROM) != HAL_OK)
|
|
||||||
return HAL_ERROR;
|
|
||||||
|
|
||||||
/* Reset line */
|
|
||||||
OneWire_Reset(OW);
|
|
||||||
|
|
||||||
/* Select ROM number */
|
|
||||||
OneWire_MatchROM(OW, ROM);
|
|
||||||
|
|
||||||
/* Read scratchpad command by onewire protocol */
|
|
||||||
OneWire_WriteByte(OW, DS18B20_CMD_READSCRATCHPAD);
|
|
||||||
|
|
||||||
/* Ignore first 2 bytes */
|
|
||||||
OneWire_ReadByte(OW);
|
|
||||||
OneWire_ReadByte(OW);
|
|
||||||
|
|
||||||
th = OneWire_ReadByte(OW);
|
|
||||||
tl = OneWire_ReadByte(OW);
|
|
||||||
conf = OneWire_ReadByte(OW);
|
|
||||||
|
|
||||||
/* Set choosed resolution */
|
|
||||||
conf = Resolution;
|
|
||||||
|
|
||||||
/* Reset line */
|
|
||||||
OneWire_Reset(OW);
|
|
||||||
|
|
||||||
/* Select ROM number */
|
|
||||||
OneWire_MatchROM(OW, ROM);
|
|
||||||
|
|
||||||
/* Write scratchpad command by onewire protocol, only th, tl and conf
|
|
||||||
* register can be written */
|
|
||||||
OneWire_WriteByte(OW, DS18B20_CMD_WRITESCRATCHPAD);
|
|
||||||
|
|
||||||
/* Write bytes */
|
|
||||||
OneWire_WriteByte(OW, th);
|
|
||||||
OneWire_WriteByte(OW, tl);
|
|
||||||
OneWire_WriteByte(OW, conf);
|
|
||||||
|
|
||||||
/* Reset line */
|
|
||||||
OneWire_Reset(OW);
|
|
||||||
|
|
||||||
/* Select ROM number */
|
|
||||||
OneWire_MatchROM(OW, ROM);
|
|
||||||
|
|
||||||
/* Copy scratchpad to EEPROM of DS18B20 */
|
|
||||||
OneWire_WriteByte(OW, DS18B20_CMD_COPYSCRATCHPAD);
|
|
||||||
|
|
||||||
return HAL_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief The function is used as start selected ROM device
|
|
||||||
* @retval status in OK = 1, Failed = 0
|
|
||||||
* @param OW OneWire HandleTypedef
|
|
||||||
* @param ROM Pointer to ROM number
|
|
||||||
*/
|
|
||||||
HAL_StatusTypeDef DS18B20_StartConvT(OneWire_t* OW, uint8_t *ROM)
|
|
||||||
{
|
|
||||||
if(OW == NULL)
|
|
||||||
return HAL_ERROR;
|
|
||||||
if(ROM == NULL)
|
|
||||||
return HAL_ERROR;
|
|
||||||
|
|
||||||
/* Check if device is DS18B20 */
|
|
||||||
if(DS18B20_IsValid(ROM) != HAL_OK)
|
|
||||||
return HAL_ERROR;
|
|
||||||
|
|
||||||
/* Reset line */
|
|
||||||
OneWire_Reset(OW);
|
|
||||||
|
|
||||||
/* Select ROM number */
|
|
||||||
OneWire_MatchROM(OW, ROM);
|
|
||||||
|
|
||||||
/* Start temperature conversion */
|
|
||||||
OneWire_WriteByte(OW, DS18B20_CMD_CONVERT);
|
|
||||||
|
|
||||||
return HAL_OK;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* @brief The function is used as start all ROM device
|
|
||||||
* @param OW OneWire HandleTypedef
|
|
||||||
*/
|
|
||||||
HAL_StatusTypeDef DS18B20_StartConvTAll(OneWire_t* OW)
|
|
||||||
{
|
|
||||||
if(OW == NULL)
|
|
||||||
return HAL_ERROR;
|
|
||||||
|
|
||||||
/* Reset pulse */
|
|
||||||
OneWire_Reset(OW);
|
|
||||||
|
|
||||||
/* Skip rom */
|
|
||||||
OneWire_WriteByte(OW, ONEWIRE_CMD_SKIPROM);
|
|
||||||
|
|
||||||
/* Start conversion on all connected devices */
|
|
||||||
OneWire_WriteByte(OW, DS18B20_CMD_CONVERT);
|
|
||||||
|
|
||||||
return HAL_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief The function is used as read temreature from device and store in selected
|
|
||||||
* destination
|
|
||||||
* @retval status in OK = 1, Failed = 0
|
|
||||||
* @param OW OneWire HandleTypedef
|
|
||||||
* @param ROM Pointer to ROM number
|
|
||||||
* @param Destination Pointer to return value
|
|
||||||
*/
|
|
||||||
HAL_StatusTypeDef DS18B20_CalcTemperature(OneWire_t* OW, uint8_t *ROM, uint8_t *Scratchpad, float *Destination)
|
|
||||||
{
|
|
||||||
if(OW == NULL)
|
|
||||||
return HAL_ERROR;
|
|
||||||
if(ROM == NULL)
|
|
||||||
return HAL_ERROR;
|
|
||||||
if(Scratchpad == NULL)
|
|
||||||
return HAL_ERROR;
|
|
||||||
if(Destination == NULL)
|
|
||||||
return HAL_ERROR;
|
|
||||||
|
|
||||||
uint16_t temperature;
|
|
||||||
uint8_t resolution;
|
|
||||||
int8_t digit, minus = 0;
|
|
||||||
float decimal;
|
|
||||||
|
|
||||||
/* Check if device is DS18B20 */
|
|
||||||
if (DS18B20_IsValid(ROM) != HAL_OK)
|
|
||||||
return HAL_ERROR;
|
|
||||||
|
|
||||||
/* First two bytes of scratchpad are temperature values */
|
|
||||||
temperature = Scratchpad[0] | (Scratchpad[1] << 8);
|
|
||||||
|
|
||||||
/* Reset line */
|
|
||||||
OneWire_Reset(OW);
|
|
||||||
|
|
||||||
/* Check if temperature is negative */
|
|
||||||
if (temperature & 0x8000) {
|
|
||||||
/* Two's complement, temperature is negative */
|
|
||||||
temperature = ~temperature + 1;
|
|
||||||
minus = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Get sensor resolution */
|
|
||||||
resolution = Scratchpad[4];
|
|
||||||
|
|
||||||
/* Store temperature integer digits and decimal digits */
|
|
||||||
digit = temperature >> 4;
|
|
||||||
digit |= ((temperature >> 8) & 0x7) << 4;
|
|
||||||
|
|
||||||
/* Store decimal digits */
|
|
||||||
switch (resolution) {
|
|
||||||
case DS18B20_RESOLUTION_9BITS: {
|
|
||||||
decimal = (temperature >> 3) & 0x01;
|
|
||||||
decimal *= (float)DS18B20_DECIMAL_STEP_9BIT;
|
|
||||||
} break;
|
|
||||||
case DS18B20_RESOLUTION_10BITS: {
|
|
||||||
decimal = (temperature >> 2) & 0x03;
|
|
||||||
decimal *= (float)DS18B20_DECIMAL_STEP_10BIT;
|
|
||||||
} break;
|
|
||||||
case DS18B20_RESOLUTION_11BITS: {
|
|
||||||
decimal = (temperature >> 1) & 0x07;
|
|
||||||
decimal *= (float)DS18B20_DECIMAL_STEP_11BIT;
|
|
||||||
} break;
|
|
||||||
case DS18B20_RESOLUTION_12BITS: {
|
|
||||||
decimal = temperature & 0x0F;
|
|
||||||
decimal *= (float)DS18B20_DECIMAL_STEP_12BIT;
|
|
||||||
} break;
|
|
||||||
default: {
|
|
||||||
*Destination = 0;
|
|
||||||
return HAL_ERROR;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Check for negative part */
|
|
||||||
decimal = digit + decimal;
|
|
||||||
if (minus) {
|
|
||||||
decimal = 0 - decimal;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Set to pointer */
|
|
||||||
*Destination = decimal;
|
|
||||||
|
|
||||||
/* Return HAL_OK, temperature valid */
|
|
||||||
return HAL_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief The function is used as read scratchpad from device
|
|
||||||
* @retval status in OK = 1, Failed = 0
|
|
||||||
* @param OW OneWire HandleTypedef
|
|
||||||
* @param ROM Pointer to ROM number
|
|
||||||
* @param Destination Pointer to Scratchpad array
|
|
||||||
*/
|
|
||||||
HAL_StatusTypeDef DS18B20_ReadScratchpad(OneWire_t* OW, uint8_t *ROM, uint8_t *Scratchpad)
|
|
||||||
{
|
|
||||||
if(OW == NULL)
|
|
||||||
return HAL_ERROR;
|
|
||||||
if(ROM == NULL)
|
|
||||||
return HAL_ERROR;
|
|
||||||
if(Scratchpad == NULL)
|
|
||||||
return HAL_ERROR;
|
|
||||||
|
|
||||||
/* Reset line */
|
|
||||||
OneWire_Reset(OW);
|
|
||||||
|
|
||||||
/* Select ROM number */
|
|
||||||
OneWire_MatchROM(OW, ROM);
|
|
||||||
|
|
||||||
/* Read scratchpad command by onewire protocol */
|
|
||||||
OneWire_WriteByte(OW, DS18B20_CMD_READSCRATCHPAD);
|
|
||||||
|
|
||||||
/* Get data */
|
|
||||||
for (int i = 0; i < 9; i++) {
|
|
||||||
/* Read byte by byte */
|
|
||||||
Scratchpad[i] = OneWire_ReadByte(OW);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Calculate CRC */
|
|
||||||
uint8_t crc = OneWire_CRC8(Scratchpad, 8);
|
|
||||||
|
|
||||||
/* Check if CRC is ok */
|
|
||||||
if (crc != Scratchpad[8]) {
|
|
||||||
/* CRC invalid */
|
|
||||||
return HAL_ERROR;
|
|
||||||
}
|
|
||||||
return HAL_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief The function is used to wait for end of convertion
|
|
||||||
* @param OW OneWire HandleTypedef
|
|
||||||
*/
|
|
||||||
HAL_StatusTypeDef DS18B20_WaitForEndConvertion(OneWire_t* OW)
|
|
||||||
{
|
|
||||||
if(OW == NULL)
|
|
||||||
return HAL_ERROR;
|
|
||||||
uint32_t tickstart = HAL_GetTick();
|
|
||||||
|
|
||||||
/* Wait until line is released, then coversion is completed */
|
|
||||||
while(OneWire_ReadBit(OW) == 0)
|
|
||||||
{
|
|
||||||
if(HAL_GetTick() - tickstart > DS18B20_DELAY_MS_MAX)
|
|
||||||
return HAL_TIMEOUT; // end of convertion has not come
|
|
||||||
}
|
|
||||||
return HAL_OK; // convertion done
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief The function is used to wait for end of convertion without blocking
|
|
||||||
* @param OW OneWire HandleTypedef
|
|
||||||
*/
|
|
||||||
HAL_StatusTypeDef DS18B20_WaitForEndConvertion_NonBlocking(OneWire_t* OW)
|
|
||||||
{
|
|
||||||
if(OW == NULL)
|
|
||||||
return HAL_ERROR;
|
|
||||||
|
|
||||||
/* If line is pull down - conversion is ongoing */
|
|
||||||
if(OneWire_ReadBit(OW) == 0)
|
|
||||||
return HAL_BUSY;
|
|
||||||
else
|
|
||||||
return HAL_OK; // convertion done
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief The function is used as set temperature alarm range on
|
|
||||||
* selected device
|
|
||||||
* @retval status in OK = 1, Failed = 0
|
|
||||||
* @param OW OneWire HandleTypedef
|
|
||||||
* @param ROM Pointer to ROM number
|
|
||||||
* @param Low Low temperature alarm, value > -55, 0 = reset
|
|
||||||
* @param High High temperature alarm,, value < 125, 0 = reset
|
|
||||||
*/
|
|
||||||
HAL_StatusTypeDef DS18B20_SetTempAlarm(OneWire_t* OW, uint8_t *ROM, int8_t Low,
|
|
||||||
int8_t High)
|
|
||||||
{
|
|
||||||
if(OW == NULL)
|
|
||||||
return HAL_ERROR;
|
|
||||||
if(ROM == NULL)
|
|
||||||
return HAL_ERROR;
|
|
||||||
|
|
||||||
uint8_t tl, th, conf;
|
|
||||||
|
|
||||||
/* Check if device is DS18B20 */
|
|
||||||
if (DS18B20_IsValid(ROM) != HAL_OK)
|
|
||||||
return HAL_ERROR;
|
|
||||||
|
|
||||||
Low = ((Low < -55) || (Low == 0)) ? -55 : Low;
|
|
||||||
High = ((High > 125) || (High == 0)) ? 125 : High;
|
|
||||||
|
|
||||||
/* Reset line */
|
|
||||||
OneWire_Reset(OW);
|
|
||||||
|
|
||||||
/* Select ROM number */
|
|
||||||
OneWire_MatchROM(OW, ROM);
|
|
||||||
|
|
||||||
/* Read scratchpad command by onewire protocol */
|
|
||||||
OneWire_WriteByte(OW, DS18B20_CMD_READSCRATCHPAD);
|
|
||||||
|
|
||||||
/* Ignore first 2 bytes */
|
|
||||||
OneWire_ReadByte(OW);
|
|
||||||
OneWire_ReadByte(OW);
|
|
||||||
|
|
||||||
th = OneWire_ReadByte(OW);
|
|
||||||
tl = OneWire_ReadByte(OW);
|
|
||||||
conf = OneWire_ReadByte(OW);
|
|
||||||
|
|
||||||
th = (uint8_t)High;
|
|
||||||
tl = (uint8_t)Low;
|
|
||||||
|
|
||||||
/* Reset line */
|
|
||||||
OneWire_Reset(OW);
|
|
||||||
|
|
||||||
/* Select ROM number */
|
|
||||||
OneWire_MatchROM(OW, ROM);
|
|
||||||
|
|
||||||
/* Write scratchpad command by onewire protocol, only th, tl and conf
|
|
||||||
* register can be written */
|
|
||||||
OneWire_WriteByte(OW, DS18B20_CMD_WRITESCRATCHPAD);
|
|
||||||
|
|
||||||
/* Write bytes */
|
|
||||||
OneWire_WriteByte(OW, th);
|
|
||||||
OneWire_WriteByte(OW, tl);
|
|
||||||
OneWire_WriteByte(OW, conf);
|
|
||||||
|
|
||||||
/* Reset line */
|
|
||||||
OneWire_Reset(OW);
|
|
||||||
|
|
||||||
/* Select ROM number */
|
|
||||||
OneWire_MatchROM(OW, ROM);
|
|
||||||
|
|
||||||
/* Copy scratchpad to EEPROM of DS18B20 */
|
|
||||||
OneWire_WriteByte(OW, DS18B20_CMD_COPYSCRATCHPAD);
|
|
||||||
|
|
||||||
return HAL_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief The function is used as set user bytes with mask
|
|
||||||
* @retval status in OK = 1, Failed = 0
|
|
||||||
* @param OW OneWire HandleTypedef
|
|
||||||
* @param ROM Pointer to ROM number
|
|
||||||
* @param UserBytes12 First 2 User Bytes (tHigh and tLow)
|
|
||||||
* @param UserBytes34 Second 2 User Bytes
|
|
||||||
* @param UserBytesMask Which User Bytes write, and which ignore
|
|
||||||
*/
|
|
||||||
HAL_StatusTypeDef DS18B20_WriteUserBytes(OneWire_t* OW, uint8_t *ROM, int16_t UserBytes12,
|
|
||||||
int16_t UserBytes34, uint8_t UserBytesMask)
|
|
||||||
{
|
|
||||||
if(OW == NULL)
|
|
||||||
return HAL_ERROR;
|
|
||||||
if(ROM == NULL)
|
|
||||||
return HAL_ERROR;
|
|
||||||
|
|
||||||
uint8_t ub1, ub2, conf, ub3, ub4;
|
|
||||||
uint8_t UserByte1 = UserBytes12 & 0xFF;
|
|
||||||
uint8_t UserByte2 = UserBytes12 >> 8;
|
|
||||||
uint8_t UserByte3 = UserBytes34 & 0xFF;
|
|
||||||
uint8_t UserByte4 = UserBytes34 >> 8;
|
|
||||||
|
|
||||||
/* Check if device is DS18B20 */
|
|
||||||
if (DS18B20_IsValid(ROM) != HAL_OK)
|
|
||||||
return HAL_ERROR;
|
|
||||||
|
|
||||||
/* Reset line */
|
|
||||||
OneWire_Reset(OW);
|
|
||||||
|
|
||||||
/* Select ROM number */
|
|
||||||
OneWire_MatchROM(OW, ROM);
|
|
||||||
|
|
||||||
/* Read scratchpad command by onewire protocol */
|
|
||||||
OneWire_WriteByte(OW, DS18B20_CMD_READSCRATCHPAD);
|
|
||||||
|
|
||||||
/* Ignore first 2 bytes */
|
|
||||||
OneWire_ReadByte(OW);
|
|
||||||
OneWire_ReadByte(OW);
|
|
||||||
|
|
||||||
ub1 = OneWire_ReadByte(OW);
|
|
||||||
ub2 = OneWire_ReadByte(OW);
|
|
||||||
conf = OneWire_ReadByte(OW);
|
|
||||||
OneWire_ReadByte(OW);
|
|
||||||
ub3 = OneWire_ReadByte(OW);
|
|
||||||
ub4 = OneWire_ReadByte(OW);
|
|
||||||
|
|
||||||
/* If user bytes in mask */
|
|
||||||
if(UserBytesMask & (1<<0))
|
|
||||||
{
|
|
||||||
ub1 = UserByte1;
|
|
||||||
}
|
|
||||||
if(UserBytesMask & (1<<1))
|
|
||||||
{
|
|
||||||
ub2 = UserByte2;
|
|
||||||
}
|
|
||||||
if(UserBytesMask & (1<<2))
|
|
||||||
{
|
|
||||||
ub3 = UserByte3;
|
|
||||||
}
|
|
||||||
if(UserBytesMask & (1<<3))
|
|
||||||
{
|
|
||||||
ub4 = UserByte4;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* Reset line */
|
|
||||||
OneWire_Reset(OW);
|
|
||||||
|
|
||||||
/* Select ROM number */
|
|
||||||
OneWire_MatchROM(OW, ROM);
|
|
||||||
|
|
||||||
/* Write scratchpad command by onewire protocol, only th, tl and conf
|
|
||||||
* register can be written */
|
|
||||||
OneWire_WriteByte(OW, DS18B20_CMD_WRITESCRATCHPAD);
|
|
||||||
|
|
||||||
/* Write bytes */
|
|
||||||
OneWire_WriteByte(OW, ub1);
|
|
||||||
OneWire_WriteByte(OW, ub2);
|
|
||||||
OneWire_WriteByte(OW, conf);
|
|
||||||
OneWire_WriteByte(OW, ub3);
|
|
||||||
OneWire_WriteByte(OW, ub4);
|
|
||||||
|
|
||||||
/* Reset line */
|
|
||||||
OneWire_Reset(OW);
|
|
||||||
|
|
||||||
/* Select ROM number */
|
|
||||||
OneWire_MatchROM(OW, ROM);
|
|
||||||
|
|
||||||
/* Copy scratchpad to EEPROM of DS18B20 */
|
|
||||||
OneWire_WriteByte(OW, DS18B20_CMD_COPYSCRATCHPAD);
|
|
||||||
|
|
||||||
return HAL_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
///**
|
|
||||||
// * @brief The function is used as search device that had temperature alarm
|
|
||||||
// * triggered and store it in DS18B20 alarm data structure
|
|
||||||
// * @retval status of search, OK = 1, Failed = 0
|
|
||||||
// * @param DS DS18B20 HandleTypedef
|
|
||||||
// * @param OW OneWire HandleTypedef
|
|
||||||
// */
|
|
||||||
//uint8_t DS18B20_AlarmSearch(DS18B20_Drv_t *DS, OneWire_t* OW)
|
|
||||||
//{
|
|
||||||
// uint8_t t = 0;
|
|
||||||
|
|
||||||
// /* Reset Alarm in DS */
|
|
||||||
// for(uint8_t i = 0; i < OW->RomCnt; i++)
|
|
||||||
// {
|
|
||||||
// for(uint8_t j = 0; j < 8; j++)
|
|
||||||
// {
|
|
||||||
// DS->AlmAddr[i][j] = 0;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
// /* Start alarm search */
|
|
||||||
// while (OneWire_Search(OW, DS18B20_CMD_ALARM_SEARCH))
|
|
||||||
// {
|
|
||||||
// /* Store ROM of device which has alarm flag set */
|
|
||||||
// OneWire_GetDevRom(OW, DS->AlmAddr[t]);
|
|
||||||
// t++;
|
|
||||||
// }
|
|
||||||
// return (t > 0) ? 1 : 0;
|
|
||||||
//}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief The function is used to initialize the DS18B20 sensor, and search
|
|
||||||
* for all ROM along the line. Store in DS18B20 data structure
|
|
||||||
* @retval Rom detect status, OK = 1, No Rom detected = 0
|
|
||||||
* @param DS DS18B20 HandleTypedef
|
|
||||||
* @param OW OneWire HandleTypedef
|
|
||||||
*/
|
|
||||||
HAL_StatusTypeDef DS18B20_Search(DS18B20_Drv_t *DS, OneWire_t *OW)
|
|
||||||
{
|
|
||||||
if(OW == NULL)
|
|
||||||
return HAL_ERROR;
|
|
||||||
|
|
||||||
|
|
||||||
OW->RomCnt = 0;
|
|
||||||
/* Search all OneWire devices ROM */
|
|
||||||
while(1)
|
|
||||||
{
|
|
||||||
/* Start searching for OneWire devices along the line */
|
|
||||||
if(OneWire_Search(OW, ONEWIRE_CMD_SEARCHROM) != 1) break;
|
|
||||||
|
|
||||||
/* Get device ROM */
|
|
||||||
OneWire_GetDevRom(OW, DS->DevAddr[OW->RomCnt]);
|
|
||||||
|
|
||||||
OW->RomCnt++;
|
|
||||||
}
|
|
||||||
for(int i = OW->RomCnt; i < DS18B20_DEVICE_AMOUNT; i++)
|
|
||||||
{
|
|
||||||
for(int j = 0; j < 8; j++)
|
|
||||||
DS->DevAddr[i][j] = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if(OW->RomCnt > 0)
|
|
||||||
return HAL_OK;
|
|
||||||
else
|
|
||||||
return HAL_BUSY;
|
|
||||||
}
|
|
||||||
@@ -1,99 +0,0 @@
|
|||||||
/* USER CODE BEGIN Header */
|
|
||||||
/**
|
|
||||||
******************************************************************************
|
|
||||||
* @file gpio.c
|
|
||||||
* @brief This file provides code for the configuration
|
|
||||||
* of all used GPIO pins.
|
|
||||||
******************************************************************************
|
|
||||||
* @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 "gpio.h"
|
|
||||||
|
|
||||||
/* USER CODE BEGIN 0 */
|
|
||||||
|
|
||||||
/* USER CODE END 0 */
|
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------*/
|
|
||||||
/* Configure GPIO */
|
|
||||||
/*----------------------------------------------------------------------------*/
|
|
||||||
/* USER CODE BEGIN 1 */
|
|
||||||
|
|
||||||
/* USER CODE END 1 */
|
|
||||||
|
|
||||||
/** Configure pins as
|
|
||||||
* Analog
|
|
||||||
* Input
|
|
||||||
* Output
|
|
||||||
* EVENT_OUT
|
|
||||||
* EXTI
|
|
||||||
*/
|
|
||||||
void MX_GPIO_Init(void)
|
|
||||||
{
|
|
||||||
|
|
||||||
GPIO_InitTypeDef GPIO_InitStruct = {0};
|
|
||||||
|
|
||||||
/* GPIO Ports Clock Enable */
|
|
||||||
__HAL_RCC_GPIOC_CLK_ENABLE();
|
|
||||||
__HAL_RCC_GPIOD_CLK_ENABLE();
|
|
||||||
__HAL_RCC_GPIOA_CLK_ENABLE();
|
|
||||||
__HAL_RCC_GPIOB_CLK_ENABLE();
|
|
||||||
|
|
||||||
/*Configure GPIO pin Output Level */
|
|
||||||
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET);
|
|
||||||
|
|
||||||
/*Configure GPIO pin Output Level */
|
|
||||||
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7
|
|
||||||
|One_wire_Pin, GPIO_PIN_RESET);
|
|
||||||
|
|
||||||
/*Configure GPIO pin Output Level */
|
|
||||||
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_10
|
|
||||||
|GPIO_PIN_11, GPIO_PIN_RESET);
|
|
||||||
|
|
||||||
/*Configure GPIO pin : PC13 */
|
|
||||||
GPIO_InitStruct.Pin = GPIO_PIN_13;
|
|
||||||
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
|
|
||||||
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
|
||||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
|
||||||
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
|
|
||||||
|
|
||||||
/*Configure GPIO pin : PA0 */
|
|
||||||
GPIO_InitStruct.Pin = GPIO_PIN_0;
|
|
||||||
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
|
|
||||||
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
|
||||||
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
|
|
||||||
|
|
||||||
/*Configure GPIO pins : PA1 PA5 PA6 PA7
|
|
||||||
One_wire_Pin */
|
|
||||||
GPIO_InitStruct.Pin = GPIO_PIN_1|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7
|
|
||||||
|One_wire_Pin;
|
|
||||||
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
|
|
||||||
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
|
||||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
|
||||||
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
|
|
||||||
|
|
||||||
/*Configure GPIO pins : PB0 PB1 PB2 PB10
|
|
||||||
PB11 */
|
|
||||||
GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_10
|
|
||||||
|GPIO_PIN_11;
|
|
||||||
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
|
|
||||||
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
|
||||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
|
||||||
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/* USER CODE BEGIN 2 */
|
|
||||||
|
|
||||||
/* USER CODE END 2 */
|
|
||||||
@@ -1,117 +0,0 @@
|
|||||||
/* USER CODE BEGIN Header */
|
|
||||||
/**
|
|
||||||
******************************************************************************
|
|
||||||
* @file i2c.c
|
|
||||||
* @brief This file provides code for the configuration
|
|
||||||
* of the I2C 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 "i2c.h"
|
|
||||||
|
|
||||||
/* USER CODE BEGIN 0 */
|
|
||||||
|
|
||||||
/* USER CODE END 0 */
|
|
||||||
|
|
||||||
I2C_HandleTypeDef hi2c1;
|
|
||||||
|
|
||||||
/* I2C1 init function */
|
|
||||||
void MX_I2C1_Init(void)
|
|
||||||
{
|
|
||||||
|
|
||||||
/* USER CODE BEGIN I2C1_Init 0 */
|
|
||||||
|
|
||||||
/* USER CODE END I2C1_Init 0 */
|
|
||||||
|
|
||||||
/* USER CODE BEGIN I2C1_Init 1 */
|
|
||||||
|
|
||||||
/* USER CODE END I2C1_Init 1 */
|
|
||||||
hi2c1.Instance = I2C1;
|
|
||||||
hi2c1.Init.ClockSpeed = 100000;
|
|
||||||
hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2;
|
|
||||||
hi2c1.Init.OwnAddress1 = 0;
|
|
||||||
hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
|
|
||||||
hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
|
|
||||||
hi2c1.Init.OwnAddress2 = 0;
|
|
||||||
hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
|
|
||||||
hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
|
|
||||||
if (HAL_I2C_Init(&hi2c1) != HAL_OK)
|
|
||||||
{
|
|
||||||
Error_Handler();
|
|
||||||
}
|
|
||||||
/* USER CODE BEGIN I2C1_Init 2 */
|
|
||||||
|
|
||||||
/* USER CODE END I2C1_Init 2 */
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void HAL_I2C_MspInit(I2C_HandleTypeDef* i2cHandle)
|
|
||||||
{
|
|
||||||
|
|
||||||
GPIO_InitTypeDef GPIO_InitStruct = {0};
|
|
||||||
if(i2cHandle->Instance==I2C1)
|
|
||||||
{
|
|
||||||
/* USER CODE BEGIN I2C1_MspInit 0 */
|
|
||||||
|
|
||||||
/* USER CODE END I2C1_MspInit 0 */
|
|
||||||
|
|
||||||
__HAL_RCC_GPIOB_CLK_ENABLE();
|
|
||||||
/**I2C1 GPIO Configuration
|
|
||||||
PB8 ------> I2C1_SCL
|
|
||||||
PB9 ------> I2C1_SDA
|
|
||||||
*/
|
|
||||||
GPIO_InitStruct.Pin = GPIO_PIN_8|GPIO_PIN_9;
|
|
||||||
GPIO_InitStruct.Mode = GPIO_MODE_AF_OD;
|
|
||||||
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
|
||||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
|
|
||||||
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
|
|
||||||
|
|
||||||
__HAL_AFIO_REMAP_I2C1_ENABLE();
|
|
||||||
|
|
||||||
/* I2C1 clock enable */
|
|
||||||
__HAL_RCC_I2C1_CLK_ENABLE();
|
|
||||||
/* USER CODE BEGIN I2C1_MspInit 1 */
|
|
||||||
|
|
||||||
/* USER CODE END I2C1_MspInit 1 */
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void HAL_I2C_MspDeInit(I2C_HandleTypeDef* i2cHandle)
|
|
||||||
{
|
|
||||||
|
|
||||||
if(i2cHandle->Instance==I2C1)
|
|
||||||
{
|
|
||||||
/* USER CODE BEGIN I2C1_MspDeInit 0 */
|
|
||||||
|
|
||||||
/* USER CODE END I2C1_MspDeInit 0 */
|
|
||||||
/* Peripheral clock disable */
|
|
||||||
__HAL_RCC_I2C1_CLK_DISABLE();
|
|
||||||
|
|
||||||
/**I2C1 GPIO Configuration
|
|
||||||
PB8 ------> I2C1_SCL
|
|
||||||
PB9 ------> I2C1_SDA
|
|
||||||
*/
|
|
||||||
HAL_GPIO_DeInit(GPIOB, GPIO_PIN_8);
|
|
||||||
|
|
||||||
HAL_GPIO_DeInit(GPIOB, GPIO_PIN_9);
|
|
||||||
|
|
||||||
/* USER CODE BEGIN I2C1_MspDeInit 1 */
|
|
||||||
|
|
||||||
/* USER CODE END I2C1_MspDeInit 1 */
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* USER CODE BEGIN 1 */
|
|
||||||
|
|
||||||
/* USER CODE END 1 */
|
|
||||||
@@ -1,684 +0,0 @@
|
|||||||
/* USER CODE BEGIN Header */
|
|
||||||
/**
|
|
||||||
******************************************************************************
|
|
||||||
* @file : main.c
|
|
||||||
* @brief : Main program body
|
|
||||||
******************************************************************************
|
|
||||||
* @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 "main.h"
|
|
||||||
#include "adc.h"
|
|
||||||
#include "i2c.h"
|
|
||||||
#include "tim.h"
|
|
||||||
#include "usart.h"
|
|
||||||
#include "gpio.h"
|
|
||||||
|
|
||||||
/* Private includes ----------------------------------------------------------*/
|
|
||||||
/* USER CODE BEGIN Includes */
|
|
||||||
#include "dallas_tools.h"
|
|
||||||
|
|
||||||
#include "def.h"
|
|
||||||
#include <stdio.h>
|
|
||||||
#include "modbus.h"
|
|
||||||
#include "eeprom_emul.h"
|
|
||||||
#include "stdio.h"
|
|
||||||
#include "flash_ring.h"
|
|
||||||
#include "string.h"
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* USER CODE END Includes */
|
|
||||||
|
|
||||||
/* Private typedef -----------------------------------------------------------*/
|
|
||||||
/* USER CODE BEGIN PTD */
|
|
||||||
|
|
||||||
#include "linkBlink.h"
|
|
||||||
/* USER CODE END PTD */
|
|
||||||
|
|
||||||
/* Private define ------------------------------------------------------------*/
|
|
||||||
/* USER CODE BEGIN PD */
|
|
||||||
uint16_t iter, cnt = 5;
|
|
||||||
uint8_t init_retries = 5;
|
|
||||||
uint8_t ralay_5v_on_var = 0;
|
|
||||||
|
|
||||||
|
|
||||||
/* USER CODE END PD */
|
|
||||||
|
|
||||||
/* Private macro -------------------------------------------------------------*/
|
|
||||||
/* USER CODE BEGIN PM */
|
|
||||||
float temperature;
|
|
||||||
uint8_t roms[MAX_DEVICES][8];
|
|
||||||
Flags_TypeDef flag;
|
|
||||||
//extern uint8_t devices_found ;
|
|
||||||
uint8_t _debug_init = 0;
|
|
||||||
TEMP_TypeDef temp_sense[30];
|
|
||||||
float set_temp_old[30];
|
|
||||||
char rx_buffer[64];
|
|
||||||
uint8_t rx_index = 0;
|
|
||||||
char command_ready = 0;
|
|
||||||
uint8_t uart_byte = 0;
|
|
||||||
uint8_t first_in = 1;
|
|
||||||
DALLAS_SensorHandleTypeDef sens[30];
|
|
||||||
int init_sens = 0;
|
|
||||||
FlashRecord_t* record;
|
|
||||||
uint8_t flash_buff[RECORD_SIZE - 4];
|
|
||||||
RS_HandleTypeDef hmodbus_master;
|
|
||||||
RS_HandleTypeDef hmodbus_slave;
|
|
||||||
RS_MsgTypeDef master_msg;
|
|
||||||
RS_MsgTypeDef slave_msg;
|
|
||||||
uint8_t master_modbus_uart_buff[MSG_SIZE_MAX];
|
|
||||||
uint8_t slave_modbus_uart_buff[MSG_SIZE_MAX];
|
|
||||||
uint32_t last_modbus_request_tick = 0;
|
|
||||||
|
|
||||||
|
|
||||||
/* USER CODE END PM */
|
|
||||||
|
|
||||||
/* Private variables ---------------------------------------------------------*/
|
|
||||||
|
|
||||||
/* USER CODE BEGIN PV */
|
|
||||||
int last_page_addr = LAST_PAGE_ADDR;
|
|
||||||
|
|
||||||
/* USER CODE END PV */
|
|
||||||
|
|
||||||
/* Private function prototypes -----------------------------------------------*/
|
|
||||||
void SystemClock_Config(void);
|
|
||||||
/* USER CODE BEGIN PFP */
|
|
||||||
BufferState_t buffer_state = {0};
|
|
||||||
/* USER CODE END PFP */
|
|
||||||
|
|
||||||
/* Private user code ---------------------------------------------------------*/
|
|
||||||
/* USER CODE BEGIN 0 */
|
|
||||||
|
|
||||||
/* USER CODE END 0 */
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief The application entry point.
|
|
||||||
* @retval int
|
|
||||||
*/
|
|
||||||
int main(void)
|
|
||||||
{
|
|
||||||
|
|
||||||
/* USER CODE BEGIN 1 */
|
|
||||||
|
|
||||||
/* USER CODE END 1 */
|
|
||||||
|
|
||||||
/* MCU Configuration--------------------------------------------------------*/
|
|
||||||
|
|
||||||
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
|
|
||||||
HAL_Init();
|
|
||||||
|
|
||||||
/* USER CODE BEGIN Init */
|
|
||||||
|
|
||||||
/* USER CODE END Init */
|
|
||||||
|
|
||||||
/* Configure the system clock */
|
|
||||||
SystemClock_Config();
|
|
||||||
|
|
||||||
/* USER CODE BEGIN SysInit */
|
|
||||||
|
|
||||||
|
|
||||||
/* USER CODE END SysInit */
|
|
||||||
|
|
||||||
/* Initialize all configured peripherals */
|
|
||||||
MX_GPIO_Init();
|
|
||||||
MX_TIM1_Init();
|
|
||||||
MX_USART1_UART_Init();
|
|
||||||
MX_TIM2_Init();
|
|
||||||
MX_ADC1_Init();
|
|
||||||
MX_I2C1_Init();
|
|
||||||
MX_USART2_UART_Init();
|
|
||||||
/* USER CODE BEGIN 2 */
|
|
||||||
// #ifdef USART1_PA6_PA7
|
|
||||||
// HAL_UART_DeInit(&huart1);
|
|
||||||
// GPIO_InitTypeDef GPIO_InitStruct = {0};
|
|
||||||
//
|
|
||||||
// /* USER CODE BEGIN USART1_MspInit 0 */
|
|
||||||
|
|
||||||
// /* USER CODE END USART1_MspInit 0 */
|
|
||||||
// /* USART1 clock enable */
|
|
||||||
// __HAL_RCC_USART1_CLK_ENABLE();
|
|
||||||
|
|
||||||
// __HAL_RCC_GPIOB_CLK_ENABLE();
|
|
||||||
// /**USART1 GPIO Configuration
|
|
||||||
// PA9 ------> USART1_TX
|
|
||||||
// PA10 ------> USART1_RX
|
|
||||||
// */
|
|
||||||
// GPIO_InitStruct.Pin = GPIO_PIN_6;
|
|
||||||
// GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
|
|
||||||
// GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
|
|
||||||
// HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
|
|
||||||
|
|
||||||
// GPIO_InitStruct.Pin = GPIO_PIN_7;
|
|
||||||
// GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
|
|
||||||
// GPIO_InitStruct.Pull = GPIO_NOPULL;
|
|
||||||
// HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
|
|
||||||
|
|
||||||
// /* USART1 interrupt Init */
|
|
||||||
// HAL_NVIC_SetPriority(USART1_IRQn, 0, 0);
|
|
||||||
// HAL_NVIC_EnableIRQ(USART1_IRQn);
|
|
||||||
//
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// if (HAL_UART_Init(&huart1) != HAL_OK)
|
|
||||||
// {
|
|
||||||
// Error_Handler();
|
|
||||||
// }
|
|
||||||
// #endif
|
|
||||||
LED_BlinkRx_Config_t led_rx =
|
|
||||||
{
|
|
||||||
.port = GPIOC,
|
|
||||||
.pin = GPIO_PIN_13,
|
|
||||||
.blink_period = 10, // 100 РјСЃ
|
|
||||||
.blink_count = 2 // 3 мигания
|
|
||||||
};
|
|
||||||
LED_BlinkRx_Init(&led_rx);
|
|
||||||
BufferState_t buffer_init();
|
|
||||||
|
|
||||||
led_blink(GPIOC, 13, rest_iter, reset_blink_delay);
|
|
||||||
MODBUS_FirstInit(&hmodbus_master, &huart2, &htim2);
|
|
||||||
hmodbus_master.pBufferPtr = master_modbus_uart_buff;
|
|
||||||
MODBUS_Config(&hmodbus_master, MODBUS_DEVICE_ID, MODBUS_TIMEOUT, MODBUS_MODE_MASTER);
|
|
||||||
|
|
||||||
MODBUS_FirstInit(&hmodbus_slave, &huart1, NULL);
|
|
||||||
hmodbus_slave.pBufferPtr = slave_modbus_uart_buff;
|
|
||||||
MODBUS_Config(&hmodbus_slave, MODBUS_DEVICE_ID, MODBUS_TIMEOUT, MODBUS_MODE_SLAVE);
|
|
||||||
MODBUS_SlaveStart(&hmodbus_slave, &slave_msg);
|
|
||||||
// Запуск приема Modbus
|
|
||||||
master_msg = MB_REQUEST_READ_HOLDING_REGS(1, 0, 1);
|
|
||||||
uint8_t uart_byte = 0;
|
|
||||||
Dallas_BusFirstInit(&htim1);
|
|
||||||
// пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
|
|
||||||
// пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ (пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ)
|
|
||||||
reinit_t_sens();
|
|
||||||
init_setpoint_all_T_sense(temp_sense, hdallas.onewire->RomCnt);
|
|
||||||
|
|
||||||
MB_DATA.InRegs.num_Tsens = hdallas.onewire->RomCnt;
|
|
||||||
// BufferState_t buffer_state = buffer_init();
|
|
||||||
for(int i=0;i<RECORD_SIZE;i++)
|
|
||||||
{
|
|
||||||
flash_buff[i]=i;
|
|
||||||
|
|
||||||
}
|
|
||||||
/* USER CODE END 2 */
|
|
||||||
|
|
||||||
/* Infinite loop */
|
|
||||||
/* USER CODE BEGIN WHILE */
|
|
||||||
while (1)
|
|
||||||
{
|
|
||||||
if ((HAL_GetTick() - last_modbus_request_tick) >= 1000U)
|
|
||||||
{
|
|
||||||
if (MODBUS_MasterRequest(&hmodbus_master, &master_msg, NULL) == HAL_OK)
|
|
||||||
{
|
|
||||||
last_modbus_request_tick = HAL_GetTick();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (MB_DATA.Coils.reserve3[3]==1)
|
|
||||||
{
|
|
||||||
MB_DATA.Coils.reserve3[3]=0;
|
|
||||||
LED_BlinkRx_Init(&led_rx);
|
|
||||||
}
|
|
||||||
//////блинкер по приему RS
|
|
||||||
if ((hmodbus_master.f.blink == 1) || (hmodbus_slave.f.blink == 1))
|
|
||||||
{
|
|
||||||
hmodbus_master.f.blink = 0;
|
|
||||||
hmodbus_slave.f.blink = 0;
|
|
||||||
LED_BlinkRx_OnRx();
|
|
||||||
}
|
|
||||||
LED_BlinkRx_Process();
|
|
||||||
//////
|
|
||||||
////// запись во флэш
|
|
||||||
if (MB_DATA.Coils.reserve3[0]==1)
|
|
||||||
{
|
|
||||||
MB_DATA.Coils.reserve3[0] = 0;
|
|
||||||
BufferState_t state = buffer_init();
|
|
||||||
uint32_t idx = (state.write_index ) % RECORDS_PER_PAGE;
|
|
||||||
FlashRecord_t* record = buffer_read_record(idx);
|
|
||||||
|
|
||||||
}
|
|
||||||
if (MB_DATA.Coils.reserve3[1]==1)
|
|
||||||
{
|
|
||||||
MB_DATA.Coils.reserve3[1] = 0;
|
|
||||||
FlashRecord_t new_record;
|
|
||||||
new_record.timestamp = HAL_GetTick();
|
|
||||||
memcpy(new_record.data, flash_buff, sizeof(new_record.data));
|
|
||||||
|
|
||||||
HAL_StatusTypeDef status = buffer_write_record(&new_record, &buffer_state);
|
|
||||||
|
|
||||||
if (status == HAL_OK)
|
|
||||||
{
|
|
||||||
// printf("Record written successfully\n");
|
|
||||||
GPIOC->ODR |= 1 << 13;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
temp_sense[0].t_close = 1;
|
|
||||||
Field_modbus(&MB_DATA, &flag);
|
|
||||||
Check_Tconnect(&MB_DATA, &flag, &hdallas, 0);
|
|
||||||
value_control();
|
|
||||||
init_setpoint_all_T_sense(temp_sense, hdallas.onewire->RomCnt);
|
|
||||||
// handle_valves(temp_sense[]);
|
|
||||||
init_cycle_counter();
|
|
||||||
static uint16_t dataBE[2];
|
|
||||||
static uint16_t dataLE[2];
|
|
||||||
uint32_t start_dwt = get_cycle_count();
|
|
||||||
uint32_t start = HAL_GetTick();
|
|
||||||
Dallas_StartConvertTAll(&hdallas, DALLAS_WAIT_DELAY, 200);
|
|
||||||
uint32_t end_dwt = get_cycle_count();
|
|
||||||
uint32_t end = HAL_GetTick();
|
|
||||||
uint32_t time_DWT=end_dwt-start_dwt;
|
|
||||||
uint32_t time_hal=end-start;
|
|
||||||
U32_TO_MODBUS(time_DWT, dataBE, MODBUS_REG_ORDER_BE);
|
|
||||||
U32_TO_MODBUS(time_DWT, dataLE, MODBUS_REG_ORDER_LE);
|
|
||||||
|
|
||||||
|
|
||||||
for(int i = 0; i < hdallas.onewire->RomCnt; i++)
|
|
||||||
{
|
|
||||||
if(sens[i].isLost)
|
|
||||||
{
|
|
||||||
sens[i].lost_cnt ++;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
Dallas_ReadTemperature(&sens[i]);
|
|
||||||
MB_DATA.InRegs.sens_Temp[i] = sens[i].temperature * 10;
|
|
||||||
|
|
||||||
ralay_5v_on_var = MB_DATA.Coils.coils[1].state_val_bit.state_val_05;
|
|
||||||
if (ralay_5v_on_var)
|
|
||||||
{
|
|
||||||
GPIOA->ODR |= 1 << 10;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
GPIOA->ODR &= ~(1 << 10);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* USER CODE END WHILE */
|
|
||||||
|
|
||||||
/* USER CODE BEGIN 3 */
|
|
||||||
//iwdg_refresh();
|
|
||||||
|
|
||||||
//HAL_Delay(200);
|
|
||||||
}
|
|
||||||
/* USER CODE END 3 */
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief System Clock Configuration
|
|
||||||
* @retval None
|
|
||||||
*/
|
|
||||||
void SystemClock_Config(void)
|
|
||||||
{
|
|
||||||
RCC_OscInitTypeDef RCC_OscInitStruct = {0};
|
|
||||||
RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
|
|
||||||
RCC_PeriphCLKInitTypeDef PeriphClkInit = {0};
|
|
||||||
|
|
||||||
/** Initializes the RCC Oscillators according to the specified parameters
|
|
||||||
* in the RCC_OscInitTypeDef structure.
|
|
||||||
*/
|
|
||||||
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
|
|
||||||
RCC_OscInitStruct.HSEState = RCC_HSE_ON;
|
|
||||||
RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1;
|
|
||||||
RCC_OscInitStruct.HSIState = RCC_HSI_ON;
|
|
||||||
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
|
|
||||||
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
|
|
||||||
RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9;
|
|
||||||
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
|
|
||||||
{
|
|
||||||
Error_Handler();
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Initializes the CPU, AHB and APB buses clocks
|
|
||||||
*/
|
|
||||||
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
|
|
||||||
|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
|
|
||||||
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
|
|
||||||
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
|
|
||||||
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
|
|
||||||
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
|
|
||||||
|
|
||||||
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)
|
|
||||||
{
|
|
||||||
Error_Handler();
|
|
||||||
}
|
|
||||||
PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC;
|
|
||||||
PeriphClkInit.AdcClockSelection = RCC_ADCPCLK2_DIV6;
|
|
||||||
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
|
|
||||||
{
|
|
||||||
Error_Handler();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* USER CODE BEGIN 4 */
|
|
||||||
uint32_t get_cycle_count(void) {
|
|
||||||
return DWT->CYCCNT;
|
|
||||||
}
|
|
||||||
|
|
||||||
void init_cycle_counter(void) {
|
|
||||||
CoreDebug->DEMCR |= CoreDebug_DEMCR_TRCENA_Msk;
|
|
||||||
DWT->CYCCNT = 0;
|
|
||||||
DWT->CTRL |= DWT_CTRL_CYCCNTENA_Msk;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Замер времени в тактах процессора
|
|
||||||
uint32_t measure_execution_time_cycles(void (*func)(void)) {
|
|
||||||
uint32_t start = get_cycle_count();
|
|
||||||
func();
|
|
||||||
uint32_t end = get_cycle_count();
|
|
||||||
return end - start;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
uint16_t* U32_TO_MODBUS (uint32_t value, uint16_t reg_array[2], int order)
|
|
||||||
{
|
|
||||||
|
|
||||||
if (order == MODBUS_REG_ORDER_BE)
|
|
||||||
{
|
|
||||||
(reg_array)[0] = (uint16_t)((value) >> 16);
|
|
||||||
(reg_array)[1] = (uint16_t)(value);
|
|
||||||
} else
|
|
||||||
{
|
|
||||||
(reg_array)[0] = (uint16_t)(value);
|
|
||||||
(reg_array)[1] = (uint16_t)((value) >> 16);
|
|
||||||
}
|
|
||||||
return reg_array;
|
|
||||||
}
|
|
||||||
|
|
||||||
void iwdg_refresh(void)
|
|
||||||
{
|
|
||||||
IWDG->KR = 0xAAAA; // пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ
|
|
||||||
}
|
|
||||||
void led_blink(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, uint8_t iter, uint16_t delay)
|
|
||||||
{
|
|
||||||
for(int i = 0; i < iter; i++)
|
|
||||||
{
|
|
||||||
GPIOx->ODR ^= (1 << GPIO_Pin);
|
|
||||||
HAL_Delay(delay);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void Check_Tconnect(MB_DataStructureTypeDef* MB_DATA, Flags_TypeDef* flag, DALLAS_HandleTypeDef* hdallas, int a[0])
|
|
||||||
{
|
|
||||||
for(int i = 0; i < hdallas->onewire->RomCnt; i++)
|
|
||||||
{
|
|
||||||
if(sens[i].isLost)
|
|
||||||
{
|
|
||||||
//init_sens=1;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
if (init_sens || flag->init_tsens)
|
|
||||||
{
|
|
||||||
init_sens = 0;
|
|
||||||
flag->init_tsens = 0;
|
|
||||||
//Dallas_BusFirstInit(&htim1);
|
|
||||||
DS18B20_Search(&DS, &OW) ;
|
|
||||||
reinit_t_sens();
|
|
||||||
MB_DATA->InRegs.num_Tsens = hdallas->onewire->RomCnt;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void reinit_t_sens(void)
|
|
||||||
{
|
|
||||||
for ( int i = 0; i < hdallas.onewire->RomCnt; i++)
|
|
||||||
{
|
|
||||||
// пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅ ROM-пїЅпїЅпїЅпїЅпїЅпїЅ
|
|
||||||
//sens[i].Init.init_func = &Dallas_SensorInitByROM;
|
|
||||||
// sens[i].Init.InitParam.ROM = rom_address;
|
|
||||||
sens[i].Init.InitParam.Ind = i;
|
|
||||||
sens[i].Init.init_func = &Dallas_SensorInitByInd;
|
|
||||||
sens[i].Init.Resolution = DALLAS_CONFIG_9_BITS;
|
|
||||||
MB_DATA.HoldRegs.set_Temp[i] = sens[i].set_temp = 20.;
|
|
||||||
MB_DATA.HoldRegs.set_hyst[i] = sens[i].hyst = 1;
|
|
||||||
Dallas_AddNewSensors(&hdallas, &sens[i]);
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
FuncStat packStruct(MB_DataStructureTypeDef* MB_DATA, int sizeARR)
|
|
||||||
{
|
|
||||||
for(int i = 0; i < sizeARR; i++)
|
|
||||||
{
|
|
||||||
for(int sens_num = 0; sens_num < hdallas.onewire->RomCnt; sens_num++)
|
|
||||||
{
|
|
||||||
switch(sens_num)
|
|
||||||
{
|
|
||||||
case 0:
|
|
||||||
MB_DATA->Coils.status_tSens[i].state_val_bit.Temp1_isConnected = sens[i * 16 + sens_num ].isConnected;
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
MB_DATA->Coils.status_tSens[i].state_val_bit.Temp2_isConnected = sens[i * 16 + sens_num ].isConnected;
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
MB_DATA->Coils.status_tSens[i].state_val_bit.Temp3_isConnected = sens[i * 16 + sens_num ].isConnected;
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
MB_DATA->Coils.status_tSens[i].state_val_bit.Temp4_isConnected = sens[i * 16 + sens_num ].isConnected;
|
|
||||||
break;
|
|
||||||
case 4:
|
|
||||||
MB_DATA->Coils.status_tSens[i].state_val_bit.Temp5_isConnected = sens[i * 16 + sens_num ].isConnected;
|
|
||||||
break;
|
|
||||||
case 5:
|
|
||||||
MB_DATA->Coils.status_tSens[i].state_val_bit.Temp6_isConnected = sens[i * 16 + sens_num ].isConnected;
|
|
||||||
break;
|
|
||||||
case 6:
|
|
||||||
MB_DATA->Coils.status_tSens[i].state_val_bit.Temp7_isConnected = sens[i * 16 + sens_num ].isConnected;
|
|
||||||
break;
|
|
||||||
case 7:
|
|
||||||
MB_DATA->Coils.status_tSens[i].state_val_bit.Temp8_isConnected = sens[i * 16 + sens_num ].isConnected;
|
|
||||||
break;
|
|
||||||
case 8:
|
|
||||||
MB_DATA->Coils.status_tSens[i].state_val_bit.Temp9_isConnected = sens[i * 16 + sens_num ].isConnected;
|
|
||||||
break;
|
|
||||||
case 9:
|
|
||||||
MB_DATA->Coils.status_tSens[i].state_val_bit.Temp10_isConnected = sens[i * 16 + sens_num ].isConnected;
|
|
||||||
break;
|
|
||||||
case 10:
|
|
||||||
MB_DATA->Coils.status_tSens[i].state_val_bit.Temp11_isConnected = sens[i * 16 + sens_num ].isConnected;
|
|
||||||
break;
|
|
||||||
case 11:
|
|
||||||
MB_DATA->Coils.status_tSens[i].state_val_bit.Temp12_isConnected = sens[i * 16 + sens_num ].isConnected;
|
|
||||||
break;
|
|
||||||
case 12:
|
|
||||||
MB_DATA->Coils.status_tSens[i].state_val_bit.Temp13_isConnected = sens[i * 16 + sens_num ].isConnected;
|
|
||||||
break;
|
|
||||||
case 13:
|
|
||||||
MB_DATA->Coils.status_tSens[i].state_val_bit.Temp14_isConnected = sens[i * 16 + sens_num ].isConnected;
|
|
||||||
break;
|
|
||||||
case 14:
|
|
||||||
MB_DATA->Coils.status_tSens[i].state_val_bit.Temp15_isConnected = sens[i * 16 + sens_num ].isConnected;
|
|
||||||
break;
|
|
||||||
case 15:
|
|
||||||
MB_DATA->Coils.status_tSens[i].state_val_bit.Temp16_isConnected = sens[i * 16 + sens_num ].isConnected;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return FuncOK;
|
|
||||||
|
|
||||||
}
|
|
||||||
FuncStat Field_modbus(MB_DataStructureTypeDef* MB_DATA, Flags_TypeDef* flag)
|
|
||||||
{
|
|
||||||
|
|
||||||
|
|
||||||
//MB_DATA->InRegs.reserve1 sin_table_phase_a
|
|
||||||
MB_DATA->InRegs.ID = *hdallas.ds_devices;
|
|
||||||
flag->init_tsens = MB_DATA->Coils.init_Tsens;
|
|
||||||
packStruct(MB_DATA, MAX_SENSE / 16);
|
|
||||||
if (_debug_init || MB_DATA->Coils.init_param)
|
|
||||||
{
|
|
||||||
_debug_init = 0;
|
|
||||||
|
|
||||||
MB_DATA->Coils.init_param = 0;
|
|
||||||
for(int i = 0; i < hdallas.onewire->RomCnt; i++)
|
|
||||||
{
|
|
||||||
sens[i].set_temp = MB_DATA->HoldRegs.set_Temp[i];
|
|
||||||
sens[i].hyst = MB_DATA->HoldRegs.set_hyst[i];
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
return FuncOK;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
FuncStat value_control(void )
|
|
||||||
{
|
|
||||||
|
|
||||||
for(int i = 0; i < hdallas.onewire->RomCnt; i++)
|
|
||||||
{
|
|
||||||
if (sens[i].isLost==0)
|
|
||||||
{
|
|
||||||
sens[i].lost_cnt=0;
|
|
||||||
if (sens[i].temperature < sens[i].set_temp - sens[i].hyst)
|
|
||||||
|
|
||||||
{
|
|
||||||
|
|
||||||
MB_DATA.Coils.relay_struct_off.all |= 1 << i;
|
|
||||||
MB_DATA.Coils.relay_struct_on.all &= ~(1 << i);
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
else
|
|
||||||
|
|
||||||
if (sens[i].temperature > sens[i].set_temp + sens[i].hyst)
|
|
||||||
{
|
|
||||||
|
|
||||||
MB_DATA.Coils.relay_struct_off.all &= ~(1 << i);
|
|
||||||
MB_DATA.Coils.relay_struct_on.all |= 1 << i;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
else
|
|
||||||
|
|
||||||
if (sens[i].temperature == sens[i].set_temp )
|
|
||||||
{
|
|
||||||
MB_DATA.Coils.relay_struct_on.all &= ~(1 << i);
|
|
||||||
MB_DATA.Coils.relay_struct_off.all &= ~(1 << i);
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if(sens[i].lost_cnt>10)
|
|
||||||
{
|
|
||||||
MB_DATA.Coils.relay_struct_on.all &= ~(1 << i);
|
|
||||||
MB_DATA.Coils.relay_struct_off.all &= ~(1 << i);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
return FuncOK;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
uint16_t handle_valves(TEMP_TypeDef* temp_sense[MAX_SENSE] )
|
|
||||||
{
|
|
||||||
|
|
||||||
if (temp_sense[0]->state == STATE_OPEN_VALVE)
|
|
||||||
{
|
|
||||||
GPIOC->ODR |= 1 << 14;
|
|
||||||
}
|
|
||||||
else if (temp_sense[0]->state == STATE_CLOSE_VALVE)
|
|
||||||
{
|
|
||||||
GPIOC->ODR &= ~(1 << 14);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 1;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void init_setpoint_all_T_sense(TEMP_TypeDef* temp_sense, int size_array)
|
|
||||||
{
|
|
||||||
//ds_search_devices();
|
|
||||||
for(int i = 0; i < size_array ; i++)
|
|
||||||
{
|
|
||||||
temp_sense[i].id[0] = roms[i][0] << 0 | roms[i][1] << 8 | roms[i][2] << 16 | roms[i][3] << 24;
|
|
||||||
temp_sense[i].id[1] = roms[i][4] << 0 | roms[i][5] << 8 | roms[i][6] << 16 | roms[i][7] << 24;
|
|
||||||
temp_sense[i].count = i + 1;
|
|
||||||
temp_sense[i].location = 1;
|
|
||||||
temp_sense[i].t_open = 22;
|
|
||||||
temp_sense[i].t_close = 18;
|
|
||||||
temp_sense[i].status_T_sense = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/* USER CODE END 4 */
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Period elapsed callback in non blocking mode
|
|
||||||
* @note This function is called when TIM3 interrupt took place, inside
|
|
||||||
* HAL_TIM_IRQHandler(). It makes a direct call to HAL_IncTick() to increment
|
|
||||||
* a global variable "uwTick" used as application time base.
|
|
||||||
* @param htim : TIM handle
|
|
||||||
* @retval None
|
|
||||||
*/
|
|
||||||
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
|
|
||||||
{
|
|
||||||
/* USER CODE BEGIN Callback 0 */
|
|
||||||
|
|
||||||
/* USER CODE END Callback 0 */
|
|
||||||
if (htim->Instance == TIM3)
|
|
||||||
{
|
|
||||||
HAL_IncTick();
|
|
||||||
}
|
|
||||||
/* USER CODE BEGIN Callback 1 */
|
|
||||||
|
|
||||||
/* USER CODE END Callback 1 */
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief This function is executed in case of error occurrence.
|
|
||||||
* @retval None
|
|
||||||
*/
|
|
||||||
void Error_Handler(void)
|
|
||||||
{
|
|
||||||
/* USER CODE BEGIN Error_Handler_Debug */
|
|
||||||
/* User can add his own implementation to report the HAL error return state */
|
|
||||||
__disable_irq();
|
|
||||||
while (1)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
/* USER CODE END Error_Handler_Debug */
|
|
||||||
}
|
|
||||||
#ifdef USE_FULL_ASSERT
|
|
||||||
/**
|
|
||||||
* @brief Reports the name of the source file and the source line number
|
|
||||||
* where the assert_param error has occurred.
|
|
||||||
* @param file: pointer to the source file name
|
|
||||||
* @param line: assert_param error line source number
|
|
||||||
* @retval None
|
|
||||||
*/
|
|
||||||
void assert_failed(uint8_t *file, uint32_t line)
|
|
||||||
{
|
|
||||||
/* USER CODE BEGIN 6 */
|
|
||||||
/* User can add his own implementation to report the file name and line number,
|
|
||||||
ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
|
|
||||||
/* USER CODE END 6 */
|
|
||||||
}
|
|
||||||
#endif /* USE_FULL_ASSERT */
|
|
||||||
|
|
||||||
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user