Прога ужата до 20 кб флеш: удален HAL_TIM и HAL_GPIO
удалена ненужна по сути MyLibs библиотека
This commit is contained in:
@@ -1,13 +1,6 @@
|
|||||||
#include "crc_algs.h"
|
#include "crc_algs.h"
|
||||||
|
|
||||||
|
|
||||||
uint32_t CRC_calc;
|
|
||||||
uint32_t CRC_ref;
|
|
||||||
|
|
||||||
//uint16_t CRC_calc;
|
|
||||||
//uint16_t CRC_ref;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*Table of CRC values for high order byte*/
|
/*Table of CRC values for high order byte*/
|
||||||
const unsigned char auchCRCHi[]=
|
const unsigned char auchCRCHi[]=
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
#include "mylibs_include.h"
|
#include "main.h"
|
||||||
|
|
||||||
// extern here to use in bootloader.c
|
// extern here to use in bootloader.c
|
||||||
extern uint32_t CRC_calc;
|
extern uint32_t CRC_calc;
|
||||||
|
|||||||
@@ -88,7 +88,7 @@ UART_SettingsTypeDef modbus1_suart;
|
|||||||
TIM_SettingsTypeDef modbus1_stim;
|
TIM_SettingsTypeDef modbus1_stim;
|
||||||
#else
|
#else
|
||||||
extern UART_HandleTypeDef rs_huart;
|
extern UART_HandleTypeDef rs_huart;
|
||||||
extern TIM_HandleTypeDef rs_htim;
|
//extern TIM_HandleTypeDef rs_htim;
|
||||||
#endif
|
#endif
|
||||||
RS_HandleTypeDef hmodbus1;
|
RS_HandleTypeDef hmodbus1;
|
||||||
|
|
||||||
@@ -136,7 +136,7 @@ void MODBUS_FirstInit(void)
|
|||||||
#ifdef INCLUDE_GENERAL_PERIPH_LIBS
|
#ifdef INCLUDE_GENERAL_PERIPH_LIBS
|
||||||
hmodbus1.RS_STATUS = RS_Init(&hmodbus1, &modbus1_suart, &modbus1_stim, 0);
|
hmodbus1.RS_STATUS = RS_Init(&hmodbus1, &modbus1_suart, &modbus1_stim, 0);
|
||||||
#else
|
#else
|
||||||
hmodbus1.RS_STATUS = RS_Init(&hmodbus1, &rs_huart, &rs_htim, 0);
|
hmodbus1.RS_STATUS = RS_Init(&hmodbus1, &rs_huart, NULL, 0);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
RS_EnableReceive();
|
RS_EnableReceive();
|
||||||
@@ -738,12 +738,12 @@ RS_StatusTypeDef RS_Response(RS_HandleTypeDef *hmodbus, RS_MsgTypeDef *modbus_ms
|
|||||||
|
|
||||||
if(hmodbus->f.MessageHandled == 0)
|
if(hmodbus->f.MessageHandled == 0)
|
||||||
{
|
{
|
||||||
TrackerCnt_Err(hmodbus->rs_err);
|
|
||||||
modbus_msg->Func_Code += ERR_VALUES_START;
|
modbus_msg->Func_Code += ERR_VALUES_START;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
TrackerCnt_Ok(hmodbus->rs_err);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -798,7 +798,7 @@ RS_StatusTypeDef RS_Collect_Message(RS_HandleTypeDef *hmodbus, RS_MsgTypeDef *mo
|
|||||||
|
|
||||||
if (modbus_msg->ByteCnt > DATA_SIZE*2) // if ByteCnt less than DATA_SIZE
|
if (modbus_msg->ByteCnt > DATA_SIZE*2) // if ByteCnt less than DATA_SIZE
|
||||||
{
|
{
|
||||||
TrackerCnt_Err(hmodbus->rs_err);
|
|
||||||
return RS_COLLECT_MSG_ERR;
|
return RS_COLLECT_MSG_ERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -820,7 +820,7 @@ RS_StatusTypeDef RS_Collect_Message(RS_HandleTypeDef *hmodbus, RS_MsgTypeDef *mo
|
|||||||
modbus_uart_buff[ind++] = modbus_msg->ByteCnt;
|
modbus_uart_buff[ind++] = modbus_msg->ByteCnt;
|
||||||
else // otherwise return data_size err
|
else // otherwise return data_size err
|
||||||
{
|
{
|
||||||
TrackerCnt_Err(hmodbus->rs_err);
|
|
||||||
return RS_COLLECT_MSG_ERR;
|
return RS_COLLECT_MSG_ERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -908,7 +908,7 @@ RS_StatusTypeDef RS_Parse_Message(RS_HandleTypeDef *hmodbus, RS_MsgTypeDef *modb
|
|||||||
//check that data size is correct
|
//check that data size is correct
|
||||||
if (modbus_msg->ByteCnt > DATA_SIZE*2)
|
if (modbus_msg->ByteCnt > DATA_SIZE*2)
|
||||||
{
|
{
|
||||||
TrackerCnt_Err(hmodbus->rs_err);
|
|
||||||
modbus_msg->Func_Code += ERR_VALUES_START;
|
modbus_msg->Func_Code += ERR_VALUES_START;
|
||||||
return RS_PARSE_MSG_ERR;
|
return RS_PARSE_MSG_ERR;
|
||||||
}
|
}
|
||||||
@@ -935,7 +935,7 @@ RS_StatusTypeDef RS_Parse_Message(RS_HandleTypeDef *hmodbus, RS_MsgTypeDef *modb
|
|||||||
// compare crc
|
// compare crc
|
||||||
if (modbus_msg->MB_CRC != CRC_VALUE)
|
if (modbus_msg->MB_CRC != CRC_VALUE)
|
||||||
{
|
{
|
||||||
TrackerCnt_Err(hmodbus->rs_err);
|
|
||||||
modbus_msg->Func_Code += ERR_VALUES_START;
|
modbus_msg->Func_Code += ERR_VALUES_START;
|
||||||
}
|
}
|
||||||
// hmodbus->MB_RESPONSE = MB_CRC_ERR; // set func code - error about wrong crc
|
// hmodbus->MB_RESPONSE = MB_CRC_ERR; // set func code - error about wrong crc
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
#ifndef __MODBUS_H_
|
#ifndef __MODBUS_H_
|
||||||
#define __MODBUS_H_
|
#define __MODBUS_H_
|
||||||
|
|
||||||
#include "mylibs_include.h"
|
#include "main.h"
|
||||||
#include "modbus_data.h"
|
#include "modbus_data.h"
|
||||||
//#include "settings.h" // for modbus settings
|
//#include "settings.h" // for modbus settings
|
||||||
|
|
||||||
@@ -330,7 +330,44 @@ uint8_t MB_Write_Miltuple_Regs(RS_MsgTypeDef *modbus_msg);
|
|||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
/////////////////////////---FUNCTIONS---/////////////////////////////
|
/////////////////////////---FUNCTIONS---/////////////////////////////
|
||||||
|
/***************************************************************************
|
||||||
|
*******************************MATH_DEFINES********************************/
|
||||||
|
/**
|
||||||
|
* @addtogroup MATH_DEFINES Math defines
|
||||||
|
* @ingroup MYLIBS_DEFINES
|
||||||
|
* @brief Дефайны для различных математических функций
|
||||||
|
@{
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Calc dividing including remainder
|
||||||
|
* @param _val_ - делимое.
|
||||||
|
* @param _div_ - делитель.
|
||||||
|
* @details Если результат деления без остатка: он возвращается как есть
|
||||||
|
Если с остатком - округляется вверх
|
||||||
|
*/
|
||||||
|
//#define Divide_Up(_val_, _div_) (((_val_)%(_div_))? (_val_)/(_div_)+1 : (_val_)/_div_) /* через тернарный оператор */
|
||||||
|
#define Divide_Up(_val_, _div_) ((_val_ - 1) / _div_) + 1 /* через мат выражение */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Swap between Little Endian and Big Endian
|
||||||
|
* @param v - Переменная для свапа.
|
||||||
|
* @return v (new) - Свапнутая переменная.
|
||||||
|
* @details Переключения между двумя типами хранения слова: HI-LO байты и LO-HI байты.
|
||||||
|
*/
|
||||||
|
#define ByteSwap16(v) (((v&0xFF00) >> (8)) | ((v&0x00FF) << (8)))
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Absolute
|
||||||
|
* @param x - Переменная для модудя.
|
||||||
|
* @return x (new) - Число по модулю.
|
||||||
|
* @details Берет число по модулю. Хз как работает библиотечный abs в stdlib.h, мб это быстрее, но вряд ли конечно.
|
||||||
|
*/
|
||||||
|
#define ABS(x) ( ((x) > 0)? (x) : -(x))?
|
||||||
|
|
||||||
|
/** MATH_DEFINES
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////
|
||||||
|
|||||||
@@ -82,13 +82,13 @@ RS_StatusTypeDef RS_Receive_IT(RS_HandleTypeDef *hRS, RS_MsgTypeDef *RS_msg)
|
|||||||
{
|
{
|
||||||
RS_RES = RS_Abort(hRS, ABORT_RS);
|
RS_RES = RS_Abort(hRS, ABORT_RS);
|
||||||
printf_rs_err("\n%d: Error RS: Failed to start RS receiving...", uwTick);
|
printf_rs_err("\n%d: Error RS: Failed to start RS receiving...", uwTick);
|
||||||
TrackerCnt_Err(hRS->rs_err);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
RS_RES = RS_OK;
|
RS_RES = RS_OK;
|
||||||
printf_rs("\n%d: RS: Start Receiving...", uwTick);
|
printf_rs("\n%d: RS: Start Receiving...", uwTick);
|
||||||
TrackerCnt_Ok(hRS->rs_err);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
hRS->RS_STATUS = RS_RES;
|
hRS->RS_STATUS = RS_RES;
|
||||||
@@ -138,13 +138,13 @@ RS_StatusTypeDef RS_Transmit_IT(RS_HandleTypeDef *hRS, RS_MsgTypeDef *RS_msg)
|
|||||||
{
|
{
|
||||||
RS_RES = RS_Abort(hRS, ABORT_RS);
|
RS_RES = RS_Abort(hRS, ABORT_RS);
|
||||||
printf_rs_err("\n%d: Error RS: Failed to start RS transmitting...", uwTick);
|
printf_rs_err("\n%d: Error RS: Failed to start RS transmitting...", uwTick);
|
||||||
TrackerCnt_Err(hRS->rs_err);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
RS_RES = RS_OK;
|
RS_RES = RS_OK;
|
||||||
printf_rs("\n%d: RS: Start Transmitting...", uwTick);
|
printf_rs("\n%d: RS: Start Transmitting...", uwTick);
|
||||||
TrackerCnt_Ok(hRS->rs_err);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -345,7 +345,7 @@ RS_StatusTypeDef RS_Handle_Receive_Start(RS_HandleTypeDef *hRS, RS_MsgTypeDef *R
|
|||||||
|
|
||||||
if(RS_RES != RS_OK)
|
if(RS_RES != RS_OK)
|
||||||
{
|
{
|
||||||
TrackerCnt_Err(hRS->rs_err);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return RS_RES;
|
return RS_RES;
|
||||||
@@ -369,7 +369,7 @@ RS_StatusTypeDef RS_Handle_Transmit_Start(RS_HandleTypeDef *hRS, RS_MsgTypeDef *
|
|||||||
}
|
}
|
||||||
if(RS_RES != RS_OK)
|
if(RS_RES != RS_OK)
|
||||||
{
|
{
|
||||||
TrackerCnt_Err(hRS->rs_err);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return RS_RES;
|
return RS_RES;
|
||||||
@@ -398,7 +398,7 @@ RS_StatusTypeDef RS_UART_RxCpltCallback(RS_HandleTypeDef *hRS)
|
|||||||
// if we need to skip this message - restart receive
|
// if we need to skip this message - restart receive
|
||||||
if(RS_RES == RS_SKIP || NuRS_of_Rest_Bytes == 0xFFFF)
|
if(RS_RES == RS_SKIP || NuRS_of_Rest_Bytes == 0xFFFF)
|
||||||
{
|
{
|
||||||
TrackerCnt_Err(hRS->rs_err);
|
|
||||||
RS_Abort(hRS, ABORT_RX);
|
RS_Abort(hRS, ABORT_RX);
|
||||||
RS_RES = RS_Handle_Receive_Start(hRS, hRS->pMessagePtr);
|
RS_RES = RS_Handle_Receive_Start(hRS, hRS->pMessagePtr);
|
||||||
return RS_RES;
|
return RS_RES;
|
||||||
@@ -433,7 +433,6 @@ RS_StatusTypeDef RS_UART_RxCpltCallback(RS_HandleTypeDef *hRS)
|
|||||||
|
|
||||||
if(uart_res != HAL_OK)
|
if(uart_res != HAL_OK)
|
||||||
{// need uart status, so doesnt write abort to RS_RES
|
{// need uart status, so doesnt write abort to RS_RES
|
||||||
TrackerCnt_Err(hRS->rs_err);
|
|
||||||
RS_RES = RS_Abort(hRS, ABORT_RS);
|
RS_RES = RS_Abort(hRS, ABORT_RS);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -523,7 +522,7 @@ void RS_UART_Handler(RS_HandleTypeDef *hRS)
|
|||||||
//----------------ERRORS HANDLER----------------
|
//----------------ERRORS HANDLER----------------
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
TrackerCnt_Err(hRS->rs_err);
|
|
||||||
/* de-init uart transfer */
|
/* de-init uart transfer */
|
||||||
RS_Abort(hRS, ABORT_RS);
|
RS_Abort(hRS, ABORT_RS);
|
||||||
RS_Handle_Receive_Start(hRS, hRS->pMessagePtr);
|
RS_Handle_Receive_Start(hRS, hRS->pMessagePtr);
|
||||||
|
|||||||
@@ -27,7 +27,6 @@
|
|||||||
|
|
||||||
#include "modbus.h"
|
#include "modbus.h"
|
||||||
|
|
||||||
#include "mylibs_include.h"
|
|
||||||
#include "crc_algs.h"
|
#include "crc_algs.h"
|
||||||
|
|
||||||
|
|
||||||
@@ -187,7 +186,6 @@ typedef struct // RS_HandleTypeDef
|
|||||||
|
|
||||||
/* RS STATUS */
|
/* RS STATUS */
|
||||||
RS_StatusTypeDef RS_STATUS; ///< RS status
|
RS_StatusTypeDef RS_STATUS; ///< RS status
|
||||||
RS_TrackerTypeDef rs_err;
|
|
||||||
}RS_HandleTypeDef;
|
}RS_HandleTypeDef;
|
||||||
extern RS_HandleTypeDef hmodbus1;
|
extern RS_HandleTypeDef hmodbus1;
|
||||||
|
|
||||||
|
|||||||
@@ -1,249 +0,0 @@
|
|||||||
/**
|
|
||||||
**************************************************************************
|
|
||||||
* @file mylibs_defs.h
|
|
||||||
* @brief Заголочный файл для дефайнов библиотеки MyLibsGeneral.
|
|
||||||
**************************************************************************
|
|
||||||
* @defgroup BIT_ACCESS_DEFINES Bit access defines
|
|
||||||
* @ingroup MYLIBS_DEFINES
|
|
||||||
* @brief Всякое для доступа к битам в unsigned
|
|
||||||
*************************************************************************/
|
|
||||||
#ifndef __BIT_ACCESS_H_
|
|
||||||
#define __BIT_ACCESS_H_
|
|
||||||
#include "mylibs_defs.h"
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @addtogroup BIT_ACCESS_TYPEDEF Byte access typedefs
|
|
||||||
* @ingroup BIT_ACCESS_DEFINES
|
|
||||||
* @brief Дефайны юнионов для обращения к битам.
|
|
||||||
@{
|
|
||||||
*/
|
|
||||||
typedef union
|
|
||||||
{
|
|
||||||
uint8_t all;
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
unsigned bit0:1;
|
|
||||||
unsigned bit1:1;
|
|
||||||
unsigned bit2:1;
|
|
||||||
unsigned bit3:1;
|
|
||||||
unsigned reserved:4;
|
|
||||||
}bit;
|
|
||||||
}uint4_BitTypeDef;
|
|
||||||
|
|
||||||
typedef union
|
|
||||||
{
|
|
||||||
uint8_t all;
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
unsigned bit0:1;
|
|
||||||
unsigned bit1:1;
|
|
||||||
unsigned bit2:1;
|
|
||||||
unsigned bit3:1;
|
|
||||||
unsigned bit4:1;
|
|
||||||
unsigned reserved:3;
|
|
||||||
}bit;
|
|
||||||
}uint5_BitTypeDef;
|
|
||||||
|
|
||||||
typedef union
|
|
||||||
{
|
|
||||||
uint8_t all;
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
unsigned bit0:1;
|
|
||||||
unsigned bit1:1;
|
|
||||||
unsigned bit2:1;
|
|
||||||
unsigned bit3:1;
|
|
||||||
unsigned bit4:1;
|
|
||||||
unsigned bit5:1;
|
|
||||||
unsigned reserved:2;
|
|
||||||
}bit;
|
|
||||||
}uint6_BitTypeDef;
|
|
||||||
|
|
||||||
typedef union
|
|
||||||
{
|
|
||||||
uint8_t all;
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
unsigned bit0:1;
|
|
||||||
unsigned bit1:1;
|
|
||||||
unsigned bit2:1;
|
|
||||||
unsigned bit3:1;
|
|
||||||
unsigned bit4:1;
|
|
||||||
unsigned bit5:1;
|
|
||||||
unsigned bit6:1;
|
|
||||||
unsigned reserved:1;
|
|
||||||
}bit;
|
|
||||||
}uint7_BitTypeDef;
|
|
||||||
|
|
||||||
typedef union
|
|
||||||
{
|
|
||||||
uint8_t all;
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
unsigned bit0:1;
|
|
||||||
unsigned bit1:1;
|
|
||||||
unsigned bit2:1;
|
|
||||||
unsigned bit3:1;
|
|
||||||
unsigned bit4:1;
|
|
||||||
unsigned bit5:1;
|
|
||||||
unsigned bit6:1;
|
|
||||||
unsigned bit7:1;
|
|
||||||
}bit;
|
|
||||||
}uint8_BitTypeDef;
|
|
||||||
|
|
||||||
typedef union
|
|
||||||
{
|
|
||||||
uint16_t all;
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
unsigned bit0:1;
|
|
||||||
unsigned bit1:1;
|
|
||||||
unsigned bit2:1;
|
|
||||||
unsigned bit3:1;
|
|
||||||
unsigned bit4:1;
|
|
||||||
unsigned bit5:1;
|
|
||||||
unsigned bit6:1;
|
|
||||||
unsigned bit7:1;
|
|
||||||
unsigned bit8:1;
|
|
||||||
unsigned bit9:1;
|
|
||||||
unsigned bit10:1;
|
|
||||||
unsigned bit11:1;
|
|
||||||
unsigned bit12:1;
|
|
||||||
unsigned bit13:1;
|
|
||||||
unsigned bit14:1;
|
|
||||||
unsigned bit15:1;
|
|
||||||
}bit;
|
|
||||||
}uint16_BitTypeDef;
|
|
||||||
|
|
||||||
|
|
||||||
typedef union
|
|
||||||
{
|
|
||||||
uint32_t all;
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
unsigned bit0:1;
|
|
||||||
unsigned bit1:1;
|
|
||||||
unsigned bit2:1;
|
|
||||||
unsigned bit3:1;
|
|
||||||
unsigned bit4:1;
|
|
||||||
unsigned bit5:1;
|
|
||||||
unsigned bit6:1;
|
|
||||||
unsigned bit7:1;
|
|
||||||
unsigned bit8:1;
|
|
||||||
unsigned bit9:1;
|
|
||||||
unsigned bit10:1;
|
|
||||||
unsigned bit11:1;
|
|
||||||
unsigned bit12:1;
|
|
||||||
unsigned bit13:1;
|
|
||||||
unsigned bit14:1;
|
|
||||||
unsigned bit15:1;
|
|
||||||
unsigned bit16:1;
|
|
||||||
unsigned bit17:1;
|
|
||||||
unsigned bit18:1;
|
|
||||||
unsigned bit19:1;
|
|
||||||
unsigned bit20:1;
|
|
||||||
unsigned bit21:1;
|
|
||||||
unsigned bit22:1;
|
|
||||||
unsigned bit23:1;
|
|
||||||
unsigned bit24:1;
|
|
||||||
unsigned bit25:1;
|
|
||||||
unsigned bit26:1;
|
|
||||||
unsigned bit27:1;
|
|
||||||
unsigned bit28:1;
|
|
||||||
unsigned bit29:1;
|
|
||||||
unsigned bit30:1;
|
|
||||||
unsigned bit31:1;
|
|
||||||
}bit;
|
|
||||||
}uint32_BitTypeDef;
|
|
||||||
|
|
||||||
|
|
||||||
typedef union
|
|
||||||
{
|
|
||||||
uint64_t all;
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
unsigned bit0:1;
|
|
||||||
unsigned bit1:1;
|
|
||||||
unsigned bit2:1;
|
|
||||||
unsigned bit3:1;
|
|
||||||
unsigned bit4:1;
|
|
||||||
unsigned bit5:1;
|
|
||||||
unsigned bit6:1;
|
|
||||||
unsigned bit7:1;
|
|
||||||
unsigned bit8:1;
|
|
||||||
unsigned bit9:1;
|
|
||||||
unsigned bit10:1;
|
|
||||||
unsigned bit11:1;
|
|
||||||
unsigned bit12:1;
|
|
||||||
unsigned bit13:1;
|
|
||||||
unsigned bit14:1;
|
|
||||||
unsigned bit15:1;
|
|
||||||
unsigned bit16:1;
|
|
||||||
unsigned bit17:1;
|
|
||||||
unsigned bit18:1;
|
|
||||||
unsigned bit19:1;
|
|
||||||
unsigned bit20:1;
|
|
||||||
unsigned bit21:1;
|
|
||||||
unsigned bit22:1;
|
|
||||||
unsigned bit23:1;
|
|
||||||
unsigned bit24:1;
|
|
||||||
unsigned bit25:1;
|
|
||||||
unsigned bit26:1;
|
|
||||||
unsigned bit27:1;
|
|
||||||
unsigned bit28:1;
|
|
||||||
unsigned bit29:1;
|
|
||||||
unsigned bit30:1;
|
|
||||||
unsigned bit31:1;
|
|
||||||
unsigned bit32:1;
|
|
||||||
unsigned bit33:1;
|
|
||||||
unsigned bit34:1;
|
|
||||||
unsigned bit35:1;
|
|
||||||
unsigned bit36:1;
|
|
||||||
unsigned bit37:1;
|
|
||||||
unsigned bit38:1;
|
|
||||||
unsigned bit39:1;
|
|
||||||
unsigned bit40:1;
|
|
||||||
unsigned bit41:1;
|
|
||||||
unsigned bit42:1;
|
|
||||||
unsigned bit43:1;
|
|
||||||
unsigned bit44:1;
|
|
||||||
unsigned bit45:1;
|
|
||||||
unsigned bit46:1;
|
|
||||||
unsigned bit47:1;
|
|
||||||
unsigned bit48:1;
|
|
||||||
unsigned bit49:1;
|
|
||||||
unsigned bit50:1;
|
|
||||||
unsigned bit51:1;
|
|
||||||
unsigned bit52:1;
|
|
||||||
unsigned bit53:1;
|
|
||||||
unsigned bit54:1;
|
|
||||||
unsigned bit55:1;
|
|
||||||
unsigned bit56:1;
|
|
||||||
unsigned bit57:1;
|
|
||||||
unsigned bit58:1;
|
|
||||||
unsigned bit59:1;
|
|
||||||
unsigned bit60:1;
|
|
||||||
unsigned bit61:1;
|
|
||||||
unsigned bit62:1;
|
|
||||||
unsigned bit63:1;
|
|
||||||
}bit;
|
|
||||||
}uint64_BitTypeDef;
|
|
||||||
/** BIT_ACCESS_TYPEDEF
|
|
||||||
* @}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @addtogroup BIT_ACCESS_FUNCTIONS Byte access functions
|
|
||||||
* @ingroup BIT_ACCESS_DEFINES
|
|
||||||
* @brief Дефайны для обращения к битам в unsigned.
|
|
||||||
@{
|
|
||||||
*/
|
|
||||||
#define uint8_bit(_uint8_, _bit_) (*(uint8_BitTypeDef *)(&(_uint8_))).bit.bit##_bit_
|
|
||||||
#define uint16_bit(_uint8_, _bit_) (*(uint16_BitTypeDef *)(&(_uint8_))).bit.bit##_bit_
|
|
||||||
#define uint32_bit(_uint8_, _bit_) (*(uint32_BitTypeDef *)(&(_uint8_))).bit.bit##_bit_
|
|
||||||
#define uint64_bit(_uint8_, _bit_) (*(uint64_BitTypeDef *)(&(_uint8_))).bit.bit##_bit_
|
|
||||||
|
|
||||||
/** BIT_ACCESS_FUNCTIONS
|
|
||||||
* @}
|
|
||||||
*/
|
|
||||||
#endif //__BIT_ACCESS_H_
|
|
||||||
@@ -1,128 +0,0 @@
|
|||||||
/**
|
|
||||||
**************************************************************************
|
|
||||||
* @file general_gpio.c
|
|
||||||
* @brief Модуль для инициализации портов.
|
|
||||||
**************************************************************************
|
|
||||||
@verbatim
|
|
||||||
//-------------------Функции-------------------//
|
|
||||||
Functions: users
|
|
||||||
- GPIO_Clock_Enable Инициализация тактирования порта
|
|
||||||
@endverbatim
|
|
||||||
***************************************************************************/
|
|
||||||
#include "general_gpio.h"
|
|
||||||
|
|
||||||
//-------------------------------------------------------------------
|
|
||||||
//------------------------GPIO INIT FUNCTIONS------------------------
|
|
||||||
|
|
||||||
HAL_StatusTypeDef GPIO_Clock_Enable(GPIO_TypeDef *GPIOx)
|
|
||||||
{
|
|
||||||
HAL_StatusTypeDef status = HAL_OK;
|
|
||||||
// choose port for enable clock
|
|
||||||
if (GPIOx==GPIOA)
|
|
||||||
__HAL_RCC_GPIOA_CLK_ENABLE();
|
|
||||||
else if (GPIOx==GPIOB)
|
|
||||||
__HAL_RCC_GPIOB_CLK_ENABLE();
|
|
||||||
else if (GPIOx==GPIOC)
|
|
||||||
__HAL_RCC_GPIOC_CLK_ENABLE();
|
|
||||||
#ifdef GPIOD
|
|
||||||
else if (GPIOx==GPIOD)
|
|
||||||
__HAL_RCC_GPIOD_CLK_ENABLE();
|
|
||||||
#endif
|
|
||||||
#ifdef GPIOE
|
|
||||||
else if (GPIOx==GPIOE)
|
|
||||||
__HAL_RCC_GPIOE_CLK_ENABLE();
|
|
||||||
#endif
|
|
||||||
else
|
|
||||||
status = HAL_ERROR;
|
|
||||||
|
|
||||||
return status;
|
|
||||||
}
|
|
||||||
|
|
||||||
//------------------------GPIO INIT FUNCTIONS------------------------
|
|
||||||
//-------------------------------------------------------------------
|
|
||||||
|
|
||||||
|
|
||||||
//-------------------------------------------------------------------
|
|
||||||
//------------------------GPIO LED FUNCTIONS-------------------------
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Включить светодиод
|
|
||||||
*/
|
|
||||||
void GPIO_LED_On(GPIO_LEDTypeDef *led)
|
|
||||||
{
|
|
||||||
led->state = LED_IS_ON;
|
|
||||||
HAL_GPIO_WritePin(led->LED_Port, led->LED_Pin, LED_ON);
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* @brief Выключить светодиод
|
|
||||||
*/
|
|
||||||
void GPIO_LED_Off(GPIO_LEDTypeDef *led)
|
|
||||||
{
|
|
||||||
led->state = LED_IS_OFF;
|
|
||||||
HAL_GPIO_WritePin(led->LED_Port, led->LED_Pin, LED_OFF);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Активировать моргание светодиодом
|
|
||||||
*/
|
|
||||||
void GPIO_LED_Blink_Start(GPIO_LEDTypeDef *led, uint32_t period)
|
|
||||||
{
|
|
||||||
led->state = LED_IS_BLINKING;
|
|
||||||
led->LED_Period = period;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Моргание светодиодом
|
|
||||||
*/
|
|
||||||
void GPIO_LED_Blink_Handle(GPIO_LEDTypeDef *led)
|
|
||||||
{
|
|
||||||
if(led->state == LED_IS_BLINKING)
|
|
||||||
{
|
|
||||||
uint32_t tickcurrent = HAL_GetTick();
|
|
||||||
if((tickcurrent - led->tickprev) > led->LED_Period)
|
|
||||||
{
|
|
||||||
HAL_GPIO_TogglePin(led->LED_Port, led->LED_Pin);
|
|
||||||
led->tickprev = tickcurrent;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//------------------------GPIO LED FUNCTIONS-------------------------
|
|
||||||
//-------------------------------------------------------------------
|
|
||||||
|
|
||||||
//-------------------------------------------------------------------
|
|
||||||
//------------------------GPIO SW FUNCTIONS-------------------------
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Считать состоянии кнопки запуска
|
|
||||||
*/
|
|
||||||
uint8_t GPIO_Read_Swich(GPIO_SwitchTypeDef *sw)
|
|
||||||
{
|
|
||||||
|
|
||||||
if(HAL_GPIO_ReadPin(sw->Sw_Port, sw->Sw_Pin) == SW_ON)
|
|
||||||
{
|
|
||||||
sw->Sw_PrevState = 1;
|
|
||||||
|
|
||||||
if(sw->tickprev == 0)
|
|
||||||
sw->tickprev = HAL_GetTick();
|
|
||||||
|
|
||||||
if((HAL_GetTick() - sw->tickprev) > sw->Sw_FilterDelay)
|
|
||||||
{
|
|
||||||
if(HAL_GPIO_ReadPin(sw->Sw_Port, sw->Sw_Pin) == SW_ON)
|
|
||||||
{
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
sw->tickprev = 0;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
sw->Sw_PrevState = 0;
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
//------------------------GPIO SW FUNCTIONS-------------------------
|
|
||||||
//-------------------------------------------------------------------
|
|
||||||
@@ -1,88 +0,0 @@
|
|||||||
/**
|
|
||||||
**************************************************************************
|
|
||||||
* @file general_gpio.h
|
|
||||||
* @brief Заголовочный файл для модуля инициализации портов.
|
|
||||||
*************************************************************************/
|
|
||||||
#ifndef __GPIO_GENERAL_H_
|
|
||||||
#define __GPIO_GENERAL_H_
|
|
||||||
|
|
||||||
#include "mylibs_defs.h"
|
|
||||||
|
|
||||||
|
|
||||||
#define SPI_Alternate_Mapping(INSTANCE) ((((INSTANCE) == TIM1) || ((INSTANCE) == TIM2))? GPIO_AF1_TIM1: \
|
|
||||||
(((INSTANCE) == TIM3) || ((INSTANCE) == TIM4) || ((INSTANCE) == TIM5))? GPIO_AF2_TIM3: \
|
|
||||||
(((INSTANCE) == TIM8) || ((INSTANCE) == TIM9) || ((INSTANCE) == TIM10) || ((INSTANCE) == TIM11))? GPIO_AF3_TIM8: \
|
|
||||||
(((INSTANCE) == TIM12) || ((INSTANCE) == TIM13) || ((INSTANCE) == TIM14))? GPIO_AF9_TIM12: \
|
|
||||||
(0))
|
|
||||||
|
|
||||||
|
|
||||||
#define TIM_Alternate_Mapping(INSTANCE) ((((INSTANCE) == TIM1) || ((INSTANCE) == TIM2))? GPIO_AF1_TIM1: \
|
|
||||||
(((INSTANCE) == TIM3) || ((INSTANCE) == TIM4) || ((INSTANCE) == TIM5))? GPIO_AF2_TIM3: \
|
|
||||||
(((INSTANCE) == TIM8) || ((INSTANCE) == TIM9) || ((INSTANCE) == TIM10) || ((INSTANCE) == TIM11))? GPIO_AF3_TIM8: \
|
|
||||||
(((INSTANCE) == TIM12) || ((INSTANCE) == TIM13) || ((INSTANCE) == TIM14))? GPIO_AF9_TIM12: \
|
|
||||||
(0))
|
|
||||||
|
|
||||||
|
|
||||||
typedef enum
|
|
||||||
{
|
|
||||||
LED_IS_OFF = 0,
|
|
||||||
LED_IS_ON = 1,
|
|
||||||
LED_IS_BLINKING = 2,
|
|
||||||
LED_IS_FADING = 3,
|
|
||||||
}GPIO_LEDStateTypeDef;
|
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
GPIO_LEDStateTypeDef state;
|
|
||||||
|
|
||||||
GPIO_TypeDef *LED_Port;
|
|
||||||
uint32_t LED_Pin;
|
|
||||||
|
|
||||||
uint32_t LED_Period;
|
|
||||||
uint32_t tickprev;
|
|
||||||
}GPIO_LEDTypeDef;
|
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
GPIO_TypeDef *Sw_Port;
|
|
||||||
uint32_t Sw_Pin;
|
|
||||||
|
|
||||||
uint32_t Sw_PrevState;
|
|
||||||
uint32_t Sw_FilterDelay;
|
|
||||||
uint32_t tickprev;
|
|
||||||
}GPIO_SwitchTypeDef;
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////
|
|
||||||
///////////////////////////---FUNCTIONS---///////////////////////////
|
|
||||||
HAL_StatusTypeDef GPIO_Clock_Enable(GPIO_TypeDef *GPIOx);
|
|
||||||
|
|
||||||
/* Считать состоянии кнопки запуска */
|
|
||||||
uint8_t GPIO_Read_Swich(GPIO_SwitchTypeDef *swstart);
|
|
||||||
/* Включить светодиод */
|
|
||||||
void GPIO_LED_On(GPIO_LEDTypeDef *led);
|
|
||||||
/* Выключить светодиод */
|
|
||||||
void GPIO_LED_Off(GPIO_LEDTypeDef *led);
|
|
||||||
/* Активировать моргание светодиодом */
|
|
||||||
void GPIO_LED_Blink_Start(GPIO_LEDTypeDef *led, uint32_t period);
|
|
||||||
/* Моргание светодиодом */
|
|
||||||
void GPIO_LED_Blink_Handle(GPIO_LEDTypeDef *led);
|
|
||||||
///////////////////////////---FUNCTIONS---///////////////////////////
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef LED_ON
|
|
||||||
#define LED_ON 0
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef LED_0FF
|
|
||||||
#define LED_OFF 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef SW_ON
|
|
||||||
#define SW_ON 0
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef SW_0FF
|
|
||||||
#define SW_OFF 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif // __GPIO_GENERAL_H_
|
|
||||||
@@ -1,35 +0,0 @@
|
|||||||
/**
|
|
||||||
**************************************************************************
|
|
||||||
* @file mylibs_config.h
|
|
||||||
* @brief Конфигурации для библиотек MyLibs
|
|
||||||
**************************************************************************
|
|
||||||
* @defgroup MYLIBS_CONFIG Configs My Libs
|
|
||||||
* @ingroup MYLIBS_ALL
|
|
||||||
* @brief Конфигурации для библиотек MyLibs
|
|
||||||
@{
|
|
||||||
*************************************************************************/
|
|
||||||
#ifndef __MYLIBS_CONFIG_H_
|
|
||||||
#define __MYLIBS_CONFIG_H_
|
|
||||||
|
|
||||||
#include "py32f0xx_hal.h"
|
|
||||||
|
|
||||||
// user includes
|
|
||||||
#include "interface_config.h"
|
|
||||||
|
|
||||||
|
|
||||||
#define RS_USER_VARS_NUMB 0
|
|
||||||
#define ADC_USER_VARS_NUMB 0
|
|
||||||
#define ADC_CH_USER_VARS_NUMB 0
|
|
||||||
|
|
||||||
|
|
||||||
#define INCLUDE_BIT_ACCESS_LIB
|
|
||||||
#define INCLUDE_TRACKERS_LIB
|
|
||||||
#define INCLUDE_TRACE_LIB
|
|
||||||
//#define INCLUDE_GENERAL_PERIPH_LIBS
|
|
||||||
//#define FREERTOS_DELAY
|
|
||||||
|
|
||||||
|
|
||||||
/** MYLIBS_CONFIG
|
|
||||||
* @}
|
|
||||||
*/
|
|
||||||
#endif //__MYLIBS_CONFIG_H_
|
|
||||||
@@ -1,105 +0,0 @@
|
|||||||
/**
|
|
||||||
**************************************************************************
|
|
||||||
* @file mylibs_defs.h
|
|
||||||
* @brief Заголочный файл для дефайнов библиотеки MyLibsGeneral.
|
|
||||||
**************************************************************************
|
|
||||||
* @defgroup MYLIBS_DEFINES My Libs defines
|
|
||||||
* @brief Базовые дефайны для всего проекта
|
|
||||||
*
|
|
||||||
*************************************************************************/
|
|
||||||
#ifndef __MYLIBS_DEFINES_H_
|
|
||||||
#define __MYLIBS_DEFINES_H_
|
|
||||||
|
|
||||||
#include "mylibs_config.h"
|
|
||||||
|
|
||||||
/***************************************************************************
|
|
||||||
******************************ERROR_HANDLER********************************/
|
|
||||||
/**
|
|
||||||
* @addtogroup ERROR_HANDLER_DEFINES Error Handler defines
|
|
||||||
* @ingroup MYLIBS_DEFINES
|
|
||||||
* @brief Дефайны для определения функции обработки ошибок
|
|
||||||
@{
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* extern Error_Handler from main.h */
|
|
||||||
extern void Error_Handler(void);
|
|
||||||
|
|
||||||
/* Define error handler for MyLibs */
|
|
||||||
#define MyLibs_Error_Handler(_params_) Error_Handler(_params_)
|
|
||||||
/* If error handler not defined - set void */
|
|
||||||
#ifndef MyLibs_Error_Handler
|
|
||||||
#define ((void)0U)
|
|
||||||
#endif // MyLibs_Error_Handler
|
|
||||||
|
|
||||||
/** ERROR_HANDLER_DEFINES
|
|
||||||
* @}
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
/***************************************************************************
|
|
||||||
********************************ACCESS_DEFINES*****************************/
|
|
||||||
|
|
||||||
#define ClearStruct(_struct_) memset(&(_struct_), 0, sizeof(_struct_))
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/***************************************************************************
|
|
||||||
******************************DELAYS_DEFINES*******************************/
|
|
||||||
/**
|
|
||||||
* @addtogroup DELAYS_DEFINES Delays defines
|
|
||||||
* @ingroup MYLIBS_DEFINES
|
|
||||||
* @brief Дефайны для реализации задержек
|
|
||||||
@{
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifdef FREERTOS_DELAY
|
|
||||||
#define msDelay(_ms_) osDelay(_ms_)
|
|
||||||
#else
|
|
||||||
#define msDelay(_ms_) if(_ms_ != 0) HAL_Delay(_ms_-1)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/** DELAYS_DEFINES
|
|
||||||
* @}
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
/***************************************************************************
|
|
||||||
*******************************MATH_DEFINES********************************/
|
|
||||||
/**
|
|
||||||
* @addtogroup MATH_DEFINES Math defines
|
|
||||||
* @ingroup MYLIBS_DEFINES
|
|
||||||
* @brief Дефайны для различных математических функций
|
|
||||||
@{
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Calc dividing including remainder
|
|
||||||
* @param _val_ - делимое.
|
|
||||||
* @param _div_ - делитель.
|
|
||||||
* @details Если результат деления без остатка: он возвращается как есть
|
|
||||||
Если с остатком - округляется вверх
|
|
||||||
*/
|
|
||||||
//#define Divide_Up(_val_, _div_) (((_val_)%(_div_))? (_val_)/(_div_)+1 : (_val_)/_div_) /* через тернарный оператор */
|
|
||||||
#define Divide_Up(_val_, _div_) ((_val_ - 1) / _div_) + 1 /* через мат выражение */
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Swap between Little Endian and Big Endian
|
|
||||||
* @param v - Переменная для свапа.
|
|
||||||
* @return v (new) - Свапнутая переменная.
|
|
||||||
* @details Переключения между двумя типами хранения слова: HI-LO байты и LO-HI байты.
|
|
||||||
*/
|
|
||||||
#define ByteSwap16(v) (((v&0xFF00) >> (8)) | ((v&0x00FF) << (8)))
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Absolute
|
|
||||||
* @param x - Переменная для модудя.
|
|
||||||
* @return x (new) - Число по модулю.
|
|
||||||
* @details Берет число по модулю. Хз как работает библиотечный abs в stdlib.h, мб это быстрее, но вряд ли конечно.
|
|
||||||
*/
|
|
||||||
#define ABS(x) ( ((x) > 0)? (x) : -(x))?
|
|
||||||
|
|
||||||
/** MATH_DEFINES
|
|
||||||
* @}
|
|
||||||
*/
|
|
||||||
|
|
||||||
#endif //__MYLIBS_DEFINES_H_
|
|
||||||
@@ -1,80 +0,0 @@
|
|||||||
/**
|
|
||||||
**************************************************************************
|
|
||||||
* @file mylibs_include.h
|
|
||||||
* @brief Заголочный файл для всех библиотек
|
|
||||||
**************************************************************************
|
|
||||||
@details
|
|
||||||
Здесь нужно собрать библиотеки и дефайны, которые должны быть видны во всем проекте,
|
|
||||||
чтобы не подключать 100 инклюдов в каждом ".c" файле
|
|
||||||
**************************************************************************
|
|
||||||
* @defgroup MYLIBS_ALL My Libs
|
|
||||||
* @brief Все используемые MyLibs библиотеки
|
|
||||||
*
|
|
||||||
*************************************************************************/
|
|
||||||
#ifndef __MYLIBS_INCLUDE_H_
|
|
||||||
#define __MYLIBS_INCLUDE_H_
|
|
||||||
|
|
||||||
#include "mylibs_defs.h"
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef ARM_MATH_CM4
|
|
||||||
#include "arm_math.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef INCLUDE_BIT_ACCESS_LIB
|
|
||||||
#include "bit_access.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef INCLUDE_TRACKERS_LIB
|
|
||||||
#include "trackers.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef INCLUDE_TRACE_LIB
|
|
||||||
#include "trace.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef INCLUDE_GENERAL_PERIPH_LIBS
|
|
||||||
|
|
||||||
#include "general_flash.h"
|
|
||||||
#include "general_gpio.h"
|
|
||||||
#ifdef HAL_SPI_MODULE_ENABLED
|
|
||||||
#include "general_spi.h"
|
|
||||||
#endif
|
|
||||||
#ifdef HAL_UART_MODULE_ENABLED
|
|
||||||
#include "general_uart.h"
|
|
||||||
#endif
|
|
||||||
#ifdef HAL_TIM_MODULE_ENABLED
|
|
||||||
#include "general_tim.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif //INCLUDE_GENERAL_PERIPH_LIBS
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////---USER SETTINGS---/////////////////////////
|
|
||||||
// user includes
|
|
||||||
#include "stdlib.h"
|
|
||||||
#include "string.h"
|
|
||||||
#include "stdio.h"
|
|
||||||
#include "math.h"
|
|
||||||
|
|
||||||
#include "main.h"
|
|
||||||
#include "modbus_data.h"
|
|
||||||
#include "general_gpio.h"
|
|
||||||
|
|
||||||
/** @brief Struct for trackers for Measure */
|
|
||||||
/** @brief Struct for trackers for RS */
|
|
||||||
typedef TrackerTypeDef(RS_USER_VARS_NUMB) RS_TrackerTypeDef;
|
|
||||||
/** @brief Struct for trackers for ADC */
|
|
||||||
typedef TrackerTypeDef(ADC_USER_VARS_NUMB) ADC_TrackerTypeDef;
|
|
||||||
/** @brief Struct for trackers for ADC Channel */
|
|
||||||
typedef TrackerTypeDef(ADC_CH_USER_VARS_NUMB) ADCChannel_TrackerTypeDef;
|
|
||||||
/////////////////////////---USER SETTINGS---/////////////////////////
|
|
||||||
|
|
||||||
|
|
||||||
#endif // __MYLIBS_INCLUDE_H_
|
|
||||||
|
|
||||||
@@ -1,80 +0,0 @@
|
|||||||
/**
|
|
||||||
**************************************************************************
|
|
||||||
* @file trace.h
|
|
||||||
* @brief Заголочный файл для работы с трассировкой.
|
|
||||||
**************************************************************************
|
|
||||||
* @addtogroup TRACE Trace defines
|
|
||||||
* @ingroup MYLIBS_DEFINES
|
|
||||||
* @brief Дефайны для работы с трассировкой
|
|
||||||
*************************************************************************/
|
|
||||||
#ifndef __TRACE_H_
|
|
||||||
#define __TRACE_H_
|
|
||||||
#include "mylibs_defs.h"
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @addtogroup TRACE_SERIAL Serial trace defines
|
|
||||||
* @ingroup TRACE
|
|
||||||
* @brief Дефайны для работы с serial трассировкой
|
|
||||||
* @details Определяется дефайн my_printf() для работы с serial трассировкой:
|
|
||||||
- для RTT это будет вызов функции SEGGER_RTT_printf(), с подключением библиотеки SEGGER_RTT.h
|
|
||||||
- для SWO это будет просто printf(), но библиотеку STDOUT надо подключить самостоятельно:
|
|
||||||
|
|
||||||
@verbatim
|
|
||||||
Manage Run-Time Environment -> Compiler -> I/O -> STDOUT
|
|
||||||
@endverbatim
|
|
||||||
|
|
||||||
- Если трассировка отключена, то все дефайны определяются как 'ничего' и на производительность кода не влияют
|
|
||||||
@{
|
|
||||||
*/
|
|
||||||
/* Выбор какой serial trace использовать */
|
|
||||||
#ifdef SERIAL_TRACE_ENABLE
|
|
||||||
|
|
||||||
#if defined(RTT_TRACE_ENABLE)
|
|
||||||
#undef SWO_TRACE_ENABLE
|
|
||||||
#include "SEGGER_RTT.h"
|
|
||||||
#define my_printf(...) SEGGER_RTT_printf(0, __VA_ARGS__)
|
|
||||||
#elif defined(SWO_TRACE_ENABLE)
|
|
||||||
#undef RTT_TRACE_ENABLE
|
|
||||||
#define my_printf(...) printf(__VA_ARGS__)
|
|
||||||
#else // NO_TRACE
|
|
||||||
#define my_printf(...)
|
|
||||||
#warning No trace is selected. Serial debug wont work.
|
|
||||||
#endif // RTT_TRACE_ENABLE/SWO_TRACE_ENABLE/NO_TRACE
|
|
||||||
#else //SERIAL_TRACE_ENABLE
|
|
||||||
#define my_printf(...)
|
|
||||||
#undef RTT_TRACE_ENABLE
|
|
||||||
#undef SWO_TRACE_ENABLE
|
|
||||||
|
|
||||||
#endif //SERIAL_TRACE_ENABLE
|
|
||||||
|
|
||||||
/** TRACE_SERIAL
|
|
||||||
* @}
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @addtogroup TRACE_GPIO GPIO trace defines
|
|
||||||
* @ingroup TRACE
|
|
||||||
* @brief Дефайны для работы с GPIO трассировкой
|
|
||||||
* @details Определяется дефайны для работы с GPIO трассировкой:
|
|
||||||
- TRACE_GPIO_RESET() - для сброса ножки GPIO (через BSRR)
|
|
||||||
- TRACE_GPIO_SET() - для выставления ножки GPIO (через BSRR)
|
|
||||||
|
|
||||||
- Если трассировка отключена, то все дефайны определяются как 'ничего' и на производительность кода не влияют
|
|
||||||
@{
|
|
||||||
*/
|
|
||||||
#ifndef GPIO_TRACE_ENABLE
|
|
||||||
#define TRACE_GPIO_RESET(_gpio_,_pin_)
|
|
||||||
#define TRACE_GPIO_SET(_gpio_,_pin_)
|
|
||||||
#else
|
|
||||||
#define TRACE_GPIO_RESET(_gpio_,_pin_) (_gpio_)->BSRR = ((_pin_)<<16)
|
|
||||||
#define TRACE_GPIO_SET(_gpio_,_pin_) (_gpio_)->BSRR = (((_pin_)))
|
|
||||||
#endif //GPIO_TRACE_ENABLE
|
|
||||||
|
|
||||||
|
|
||||||
/** TRACE_GPIO
|
|
||||||
* @}
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#endif //__TRACE_H_
|
|
||||||
@@ -1,141 +0,0 @@
|
|||||||
/**
|
|
||||||
**************************************************************************
|
|
||||||
* @file mylibs_defs.h
|
|
||||||
* @brief Заголочный файл для дефайнов библиотеки MyLibsGeneral.
|
|
||||||
**************************************************************************
|
|
||||||
* @defgroup MYLIBS_DEFINES My Libs defines
|
|
||||||
* @brief Базовые дефайны для всего проекта
|
|
||||||
*
|
|
||||||
*************************************************************************/
|
|
||||||
#ifndef __TRACKERS_H_
|
|
||||||
#define __TRACKERS_H_
|
|
||||||
#include "mylibs_defs.h"
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @addtogroup TRACKERS Trackers defines
|
|
||||||
* @ingroup MYLIBS_DEFINES
|
|
||||||
* @brief Дефайны для работы с трекерами
|
|
||||||
* @details Есть дефайн для объявления структуры трекера: TrackerTypeDef(num_user_vars).
|
|
||||||
Структура состоит из следующих элементов:
|
|
||||||
- cnt_ok
|
|
||||||
- cnt_err
|
|
||||||
- cnt_warn
|
|
||||||
- user[num_user_vars]
|
|
||||||
Также есть ряд функций (дефайнов) для обращения к элементам этой структуры.
|
|
||||||
|
|
||||||
|
|
||||||
Если трассировка отключена, то все дефайны определяются как ничего и на производительность кода не влияют
|
|
||||||
|
|
||||||
@par Пример:
|
|
||||||
Определяем typedef трекера измерений @ref Measure_TrackerTypeDef
|
|
||||||
|
|
||||||
@verbatim
|
|
||||||
typedef TrackerTypeDef(MEASURE_USER_VARS_NUMB) Measure_TrackerTypeDef;
|
|
||||||
@endverbatim
|
|
||||||
|
|
||||||
И через @ref Measure_TrackerTypeDef структура подключается в @ref TESTER_MeasureHandleTypeDef, а также
|
|
||||||
если необхожимо в другие структуру, например в структуру всех ошибок через указатель @ref TESTER_TrackerTypeDef
|
|
||||||
|
|
||||||
@{
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifdef TRACKERS_ENABLE
|
|
||||||
/**
|
|
||||||
* @brief Структура для счетчиков отладки
|
|
||||||
* @param num_user_vars - количество пользовательских счетчиков
|
|
||||||
* @details Содержит счетчик для успешных событый (cnt_ok),
|
|
||||||
* счетчик для ошибок (cnt_err), счетчик для предупреждений (cnt_warn).
|
|
||||||
*
|
|
||||||
* Также есть возможность объявить пользовательские счетчики в
|
|
||||||
* количестве <num_user_vars> штук.
|
|
||||||
*
|
|
||||||
* Для работы с структурой можно использовать функции:
|
|
||||||
* - TrackerCnt_Ok()
|
|
||||||
* - TrackerCnt_Err()
|
|
||||||
* - TrackerCnt_Warn()
|
|
||||||
* - TrackerCnt_User()
|
|
||||||
* - TrackerWrite_User()
|
|
||||||
* - TrackerClear_All()
|
|
||||||
* - TrackerClear_Ok()
|
|
||||||
* - TrackerClear_Err()
|
|
||||||
* - TrackerClear_Warn()
|
|
||||||
* - TrackerClear_User()
|
|
||||||
* - TrackerClear_UserAll()
|
|
||||||
*/
|
|
||||||
#define TrackerTypeDef(num_user_vars) \
|
|
||||||
struct \
|
|
||||||
{ \
|
|
||||||
uint32_t cnt_ok; \
|
|
||||||
uint32_t cnt_err; \
|
|
||||||
uint32_t cnt_warn; \
|
|
||||||
uint32_t user[num_user_vars]; \
|
|
||||||
}
|
|
||||||
|
|
||||||
/** @brief Получить количетство пользовательских переменных */
|
|
||||||
#define num_of_usercnts(_user_) (sizeof(_user_) / sizeof(_user_[0]))
|
|
||||||
/** @brief Проверка существует ли указанная пользовательская переменная */
|
|
||||||
#define assert_usertracker(_cntstruct_, _uservarnumb_) ((_uservarnumb_) < num_of_usercnts((_cntstruct_).user))
|
|
||||||
/** @brief Условие для проверки существует ли указанная пользовательская переменная */
|
|
||||||
#define if_assert_usertracker(_cntstruct_, _uservarnumb_) if(assert_usertracker(_cntstruct_, _uservarnumb_))
|
|
||||||
/** @brief Тернарный оператор для проверки существует ли указанная пользовательская переменная */
|
|
||||||
#define tern_assert_usertracker(_cntstruct_, _uservarnumb_) (assert_usertracker(_cntstruct_, _uservarnumb_)) ? _uservarnumb_ : 0
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Запись числа в пользовательскую переменную
|
|
||||||
* @note Здесь нет проверки - существует ли пользовательская переменная!
|
|
||||||
* Есть возможность выйти за границы структуры!!!
|
|
||||||
* Чтобы этого избежать используете дефайн #ref assert_usertracker()
|
|
||||||
*/
|
|
||||||
#define TrackerGet_User(_cntstruct_, _uservarnumb_) (_cntstruct_).user[tern_assert_usertracker(_cntstruct_, _uservarnumb_)]
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/** @brief Инкрементирование счетчика успешных событий */
|
|
||||||
#define TrackerCnt_Ok(_cntstruct_) (_cntstruct_).cnt_ok++
|
|
||||||
/** @brief Инкрементирование счетчика ошибок */
|
|
||||||
#define TrackerCnt_Err(_cntstruct_) (_cntstruct_).cnt_err++
|
|
||||||
/** @brief Инкрементирование счетчика предупреждений */
|
|
||||||
#define TrackerCnt_Warn(_cntstruct_) (_cntstruct_).cnt_warn++
|
|
||||||
/** @brief Инкрементирование пользовательской переменной */
|
|
||||||
#define TrackerCnt_User(_cntstruct_, _uservarnumb_) if_assert_usertracker(_cntstruct_, _uservarnumb_) (_cntstruct_).user[_uservarnumb_]++;
|
|
||||||
/** @brief Запись числа в пользовательскую переменную */
|
|
||||||
#define TrackerWrite_User(_cntstruct_, _uservarnumb_, _val_) if_assert_usertracker(_cntstruct_, _uservarnumb_) (_cntstruct_).user[_uservarnumb_] = (_val_)
|
|
||||||
|
|
||||||
/** @brief Очистка всей структуры */
|
|
||||||
#define TrackerClear_All(_cntstruct_) memset(&(_cntstruct_), 0, sizeof(_cntstruct_))
|
|
||||||
/** @brief Очистка счетчика успешных событий */
|
|
||||||
#define TrackerClear_Ok(_cntstruct_) (_cntstruct_).cnt_ok = 0
|
|
||||||
/** @brief Очистка счетчика ошибок */
|
|
||||||
#define TrackerClear_Err(_cntstruct_) (_cntstruct_).cnt_err = 0
|
|
||||||
/** @brief Очистка счетчика предупреждений */
|
|
||||||
#define TrackerClear_Warn(_cntstruct_) (_cntstruct_).cnt_warn = 0
|
|
||||||
/** @brief Очистка пользовательской переменной */
|
|
||||||
#define TrackerClear_User(_cntstruct_, _uservarnumb_) if_assert_usertracker(_cntstruct_, _uservarnumb_) (_cntstruct_).user[_uservarnumb_] = 0;
|
|
||||||
/** @brief Очистка всех пользовательских переменных */
|
|
||||||
#define TrackerClear_UserAll(_cntstruct_) memset(&(_cntstruct_).user, 0, sizeof((_cntstruct_).user))
|
|
||||||
|
|
||||||
#else //TRACKERS_ENABLE
|
|
||||||
#define TrackerTypeDef(num_user_vars) void *
|
|
||||||
|
|
||||||
#define num_of_usercnts(_user_)
|
|
||||||
#define assert_tracecnt(_cntstruct_, _uservarnumb_)
|
|
||||||
|
|
||||||
#define TrackerCnt_Ok(_cntstruct_)
|
|
||||||
#define TrackerCnt_Err(_cntstruct_)
|
|
||||||
#define TrackerCnt_Warn(_cntstruct_)
|
|
||||||
#define TrackerCnt_User(_cntstruct_, _uservarnumb_)
|
|
||||||
#define TrackerWrite_User(_cntstruct_, _uservarnumb_, _val_)
|
|
||||||
|
|
||||||
/** @brief Очистка всей структуры */
|
|
||||||
#define TrackerClear_All(_cntstruct_)
|
|
||||||
#define TrackerClear_Ok(_cntstruct_)
|
|
||||||
#define TrackerClear_Err(_cntstruct_)
|
|
||||||
#define TrackerClear_Warn(_cntstruct_)
|
|
||||||
#define TrackerClear_User(_cntstruct_)
|
|
||||||
#define TrackerClear_UserAll(_cntstruct_)
|
|
||||||
|
|
||||||
#endif //TRACKERS_ENABLE
|
|
||||||
|
|
||||||
#endif //__TRACKERS_H_
|
|
||||||
@@ -46,19 +46,28 @@ void MX_GPIO_Init(void)
|
|||||||
__HAL_RCC_GPIOC_CLK_ENABLE();
|
__HAL_RCC_GPIOC_CLK_ENABLE();
|
||||||
|
|
||||||
|
|
||||||
/*Configure LED GPIO pin : PB0 (OneWire) */
|
/* Íàñòðîéêà ïèíà PB0 (OneWire) */
|
||||||
GPIO_InitStruct.Pin = DS_Pin;
|
DS_GPIO_Port->MODER &= ~(GPIO_MODER_MODE0);
|
||||||
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
|
DS_GPIO_Port->MODER |= (GPIO_MODE_OUTPUT_PP << GPIO_MODER_MODE0_Pos);
|
||||||
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
DS_GPIO_Port->PUPDR &= ~(GPIO_PUPDR_PUPD0);
|
||||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
|
DS_GPIO_Port->PUPDR |= (GPIO_NOPULL << GPIO_PUPDR_PUPD0_Pos);
|
||||||
HAL_GPIO_Init(DS_GPIO_Port, &GPIO_InitStruct);
|
DS_GPIO_Port->OSPEEDR |= (GPIO_SPEED_FREQ_VERY_HIGH << GPIO_OSPEEDR_OSPEED0_Pos);
|
||||||
|
|
||||||
|
/* Óñòàíîâêà PA1, PA4, PA5 â âûñîêèé óðîâåíü */
|
||||||
|
GPIOA->BSRR = GPIO_PIN_1 | GPIO_PIN_4 | GPIO_PIN_5;
|
||||||
|
|
||||||
/*Configure LED GPIO pin : PA1 PA4 PA5 */
|
/*Configure LED GPIO pin : PA1 PA4 PA5 */
|
||||||
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1|GPIO_PIN_4|GPIO_PIN_5, GPIO_PIN_SET);
|
/* Íàñòðîéêà ïèíîâ PA1, PA4, PA5 */
|
||||||
GPIO_InitStruct.Pin = GPIO_PIN_1|GPIO_PIN_4|GPIO_PIN_5;
|
GPIOA->MODER &= ~(GPIO_MODER_MODE1 | GPIO_MODER_MODE4 | GPIO_MODER_MODE5);
|
||||||
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
|
GPIOA->MODER |= (GPIO_MODE_OUTPUT_PP << GPIO_MODER_MODE1_Pos) |
|
||||||
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
(GPIO_MODE_OUTPUT_PP << GPIO_MODER_MODE4_Pos) |
|
||||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
(GPIO_MODE_OUTPUT_PP << GPIO_MODER_MODE5_Pos);
|
||||||
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
|
GPIOA->PUPDR &= ~(GPIO_PUPDR_PUPD1 | GPIO_PUPDR_PUPD4 | GPIO_PUPDR_PUPD5);
|
||||||
|
GPIOA->PUPDR |= (GPIO_NOPULL << GPIO_PUPDR_PUPD1_Pos) |
|
||||||
|
(GPIO_NOPULL << GPIO_PUPDR_PUPD4_Pos) |
|
||||||
|
(GPIO_NOPULL << GPIO_PUPDR_PUPD5_Pos);
|
||||||
|
GPIOA->OSPEEDR |= (GPIO_SPEED_FREQ_LOW << GPIO_OSPEEDR_OSPEED1_Pos) |
|
||||||
|
(GPIO_SPEED_FREQ_LOW << GPIO_OSPEEDR_OSPEED4_Pos) |
|
||||||
|
(GPIO_SPEED_FREQ_LOW << GPIO_OSPEEDR_OSPEED5_Pos);
|
||||||
}
|
}
|
||||||
/************************ (C) COPYRIGHT Puya *****END OF FILE******************/
|
/************************ (C) COPYRIGHT Puya *****END OF FILE******************/
|
||||||
|
|||||||
@@ -73,35 +73,72 @@ int main(void)
|
|||||||
*/
|
*/
|
||||||
static void APP_SystemClockConfig(void)
|
static void APP_SystemClockConfig(void)
|
||||||
{
|
{
|
||||||
RCC_OscInitTypeDef RCC_OscInitStruct = {0};
|
// RCC_OscInitTypeDef RCC_OscInitStruct = {0};
|
||||||
RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
|
// RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
|
||||||
|
|
||||||
/* Oscillator configuration */
|
// /* Oscillator configuration */
|
||||||
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE | RCC_OSCILLATORTYPE_HSI | RCC_OSCILLATORTYPE_LSI | RCC_OSCILLATORTYPE_LSE; /* Select oscillator HSE, HSI, LSI, LSE */
|
// RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE | RCC_OSCILLATORTYPE_HSI | RCC_OSCILLATORTYPE_LSI | RCC_OSCILLATORTYPE_LSE; /* Select oscillator HSE, HSI, LSI, LSE */
|
||||||
RCC_OscInitStruct.HSIState = RCC_HSI_ON; /* Enable HSI */
|
// RCC_OscInitStruct.HSIState = RCC_HSI_ON; /* Enable HSI */
|
||||||
RCC_OscInitStruct.HSIDiv = RCC_HSI_DIV1; /* HSI 1 frequency division */
|
// RCC_OscInitStruct.HSIDiv = RCC_HSI_DIV1; /* HSI 1 frequency division */
|
||||||
RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_24MHz; /* Configure HSI clock 24MHz */
|
// RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_24MHz; /* Configure HSI clock 24MHz */
|
||||||
RCC_OscInitStruct.HSEState = RCC_HSE_BYPASS_DISABLE; /* Close HSE bypass */
|
// RCC_OscInitStruct.HSEState = RCC_HSE_BYPASS_DISABLE; /* Close HSE bypass */
|
||||||
RCC_OscInitStruct.LSIState = RCC_LSI_OFF; /* Close LSI */
|
// RCC_OscInitStruct.LSIState = RCC_LSI_OFF; /* Close LSI */
|
||||||
/*RCC_OscInitStruct.LSICalibrationValue = RCC_LSICALIBRATION_32768Hz;*/
|
// /*RCC_OscInitStruct.LSICalibrationValue = RCC_LSICALIBRATION_32768Hz;*/
|
||||||
RCC_OscInitStruct.LSEState = RCC_LSE_OFF; /* Close LSE */
|
// RCC_OscInitStruct.LSEState = RCC_LSE_OFF; /* Close LSE */
|
||||||
/*RCC_OscInitStruct.LSEDriver = RCC_LSEDRIVE_MEDIUM;*/
|
// /*RCC_OscInitStruct.LSEDriver = RCC_LSEDRIVE_MEDIUM;*/
|
||||||
/* Configure oscillator */
|
// /* Configure oscillator */
|
||||||
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
|
// if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
|
||||||
{
|
// {
|
||||||
Error_Handler();
|
// Error_Handler();
|
||||||
}
|
// }
|
||||||
|
|
||||||
/* Clock source configuration */
|
// /* Clock source configuration */
|
||||||
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_PCLK1; /* Choose to configure clock HCLK, SYSCLK, PCLK1 */
|
// RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_PCLK1; /* Choose to configure clock HCLK, SYSCLK, PCLK1 */
|
||||||
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSISYS; /* Select HSISYS as the system clock */
|
// RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSISYS; /* Select HSISYS as the system clock */
|
||||||
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; /* AHB clock 1 division */
|
// RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; /* AHB clock 1 division */
|
||||||
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; /* APB clock 1 division */
|
// RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; /* APB clock 1 division */
|
||||||
/* Configure clock source */
|
// /* Configure clock source */
|
||||||
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
|
// if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
|
||||||
{
|
// {
|
||||||
Error_Handler();
|
// Error_Handler();
|
||||||
}
|
// }
|
||||||
|
/* Âêëþ÷åíèå HSI */
|
||||||
|
RCC->CR |= RCC_CR_HSION;
|
||||||
|
while (!(RCC->CR & RCC_CR_HSIRDY));
|
||||||
|
|
||||||
|
/* Íàñòðîéêà äåëèòåëÿ HSI */
|
||||||
|
RCC->CR &= ~RCC_CR_HSIDIV;
|
||||||
|
RCC->CR |= RCC_HSI_DIV1;
|
||||||
|
|
||||||
|
/* Êàëèáðîâêà HSI */
|
||||||
|
RCC->ICSCR &= ~RCC_ICSCR_HSI_TRIM;
|
||||||
|
RCC->ICSCR |= (RCC_HSICALIBRATION_24MHz << RCC_ICSCR_HSI_TRIM_Pos);
|
||||||
|
|
||||||
|
/* Îòêëþ÷åíèå LSI è LSE */
|
||||||
|
RCC->CSR &= ~RCC_CSR_LSION;
|
||||||
|
RCC->BDCR &= ~RCC_BDCR_LSEON;
|
||||||
|
|
||||||
|
/* Îòêëþ÷åíèå áàéïàñà HSE */
|
||||||
|
RCC->CR &= ~RCC_HSE_BYPASS_DISABLE;
|
||||||
|
|
||||||
|
/* Óñòàíîâêà èñòî÷íèêà ñèñòåìíîé òàêòîâîé ÷àñòîòû */
|
||||||
|
RCC->CFGR &= ~RCC_CFGR_SW;
|
||||||
|
RCC->CFGR |= RCC_SYSCLKSOURCE_HSISYS;
|
||||||
|
while ((RCC->CFGR & RCC_CFGR_SWS) != RCC_SYSCLKSOURCE_HSISYS);
|
||||||
|
|
||||||
|
/* Óñòàíîâêà äåëèòåëåé */
|
||||||
|
RCC->CFGR &= ~(RCC_CFGR_HPRE | RCC_CFGR_PPRE_1);
|
||||||
|
RCC->CFGR |= RCC_SYSCLK_DIV1 | RCC_HCLK_DIV1;
|
||||||
|
|
||||||
|
/* Íàñòðîéêà çàäåðæêè ôëåø-ïàìÿòè */
|
||||||
|
FLASH->ACR &= ~FLASH_ACR_LATENCY;
|
||||||
|
FLASH->ACR |= FLASH_LATENCY_0;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t HAL_RCC_GetPCLK1Freq(void)
|
||||||
|
{
|
||||||
|
/* Get HCLK source and Compute PCLK1 frequency ---------------------------*/
|
||||||
|
return (uint32_t)((SystemCoreClock) >> (APBPrescTable[(RCC->CFGR & RCC_CFGR_PPRE) >> RCC_CFGR_PPRE_Pos] & 0x1FU));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -25,7 +25,7 @@
|
|||||||
/* USER CODE END 0 */
|
/* USER CODE END 0 */
|
||||||
|
|
||||||
//TIM_HandleTypeDef htim1;
|
//TIM_HandleTypeDef htim1;
|
||||||
TIM_HandleTypeDef htim14;
|
//TIM_HandleTypeDef htim14;
|
||||||
|
|
||||||
/* TIM3 init function */
|
/* TIM3 init function */
|
||||||
void MX_TIM1_Init(void)
|
void MX_TIM1_Init(void)
|
||||||
@@ -33,13 +33,13 @@ void MX_TIM1_Init(void)
|
|||||||
// Включение тактирования TIM1
|
// Включение тактирования TIM1
|
||||||
__HAL_RCC_TIM1_CLK_ENABLE();
|
__HAL_RCC_TIM1_CLK_ENABLE();
|
||||||
|
|
||||||
// Установка предделителя (Prescaler)
|
// Установка предделителя (Prescaler) на 1/24 МГц
|
||||||
TIM1->PSC = 0;
|
TIM1->PSC = 0;
|
||||||
|
|
||||||
// Установка режима счета вверх
|
// Установка режима счета вверх
|
||||||
TIM1->CR1 &= ~TIM_CR1_DIR;
|
TIM1->CR1 &= ~TIM_CR1_DIR;
|
||||||
|
|
||||||
// Установка периода (ARR - Auto-reload register)
|
// Установка периода (ARR - Auto-reload register) на максимальное число
|
||||||
TIM1->ARR = 0xFFFFFFFF;
|
TIM1->ARR = 0xFFFFFFFF;
|
||||||
|
|
||||||
// Установка делителя частоты (Clock Division)
|
// Установка делителя частоты (Clock Division)
|
||||||
@@ -100,41 +100,68 @@ void MX_TIM1_Init(void)
|
|||||||
/* TIM2 init function */
|
/* TIM2 init function */
|
||||||
void MX_TIM14_Init(void)
|
void MX_TIM14_Init(void)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
// Включение тактирования TIM1
|
||||||
|
__HAL_RCC_TIM14_CLK_ENABLE();
|
||||||
|
|
||||||
|
// Установка предделителя (Prescaler)
|
||||||
|
TIM14->PSC = 24-1;
|
||||||
|
|
||||||
|
// Установка режима счета вверх
|
||||||
|
TIM14->CR1 &= ~TIM_CR1_DIR;
|
||||||
|
|
||||||
|
// Установка периода (ARR - Auto-reload register) на 50 миллисекунд
|
||||||
|
TIM14->ARR = 50000;
|
||||||
|
|
||||||
|
// Установка делителя частоты (Clock Division)
|
||||||
|
TIM14->CR1 &= ~TIM_CR1_CKD;
|
||||||
|
|
||||||
|
// Отключение режима предзагрузки
|
||||||
|
TIM14->CR1 &= ~TIM_CR1_ARPE;
|
||||||
|
|
||||||
|
// Выбор внутреннего источника тактирования
|
||||||
|
TIM14->SMCR &= ~TIM_SMCR_SMS;
|
||||||
|
|
||||||
|
// Настройка триггерного выхода (TRGO)
|
||||||
|
TIM14->CR2 &= ~TIM_CR2_MMS;
|
||||||
|
|
||||||
|
// Отключение режима Master/Slave
|
||||||
|
TIM14->SMCR &= ~TIM_SMCR_MSM;
|
||||||
|
|
||||||
/* USER CODE BEGIN TIM2_Init 0 */
|
// /* USER CODE BEGIN TIM2_Init 0 */
|
||||||
|
|
||||||
/* USER CODE END TIM2_Init 0 */
|
// /* USER CODE END TIM2_Init 0 */
|
||||||
|
|
||||||
TIM_ClockConfigTypeDef sClockSourceConfig = {0};
|
// TIM_ClockConfigTypeDef sClockSourceConfig = {0};
|
||||||
TIM_MasterConfigTypeDef sMasterConfig = {0};
|
// TIM_MasterConfigTypeDef sMasterConfig = {0};
|
||||||
|
|
||||||
/* USER CODE BEGIN TIM2_Init 1 */
|
// /* USER CODE BEGIN TIM2_Init 1 */
|
||||||
|
|
||||||
/* USER CODE END TIM2_Init 1 */
|
// /* USER CODE END TIM2_Init 1 */
|
||||||
htim14.Instance = TIM14;
|
// htim14.Instance = TIM14;
|
||||||
htim14.Init.Prescaler = (HAL_RCC_GetPCLK1Freq()/1000000) - 1;
|
// htim14.Init.Prescaler = (24) - 1;
|
||||||
htim14.Init.CounterMode = TIM_COUNTERMODE_UP;
|
// htim14.Init.CounterMode = TIM_COUNTERMODE_UP;
|
||||||
htim14.Init.Period = 50000;
|
// htim14.Init.Period = 50000;
|
||||||
htim14.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
|
// htim14.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
|
||||||
htim14.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
|
// htim14.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
|
||||||
if (HAL_TIM_Base_Init(&htim14) != HAL_OK)
|
// if (HAL_TIM_Base_Init(&htim14) != HAL_OK)
|
||||||
{
|
// {
|
||||||
Error_Handler();
|
// Error_Handler();
|
||||||
}
|
// }
|
||||||
sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
|
// sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
|
||||||
if (HAL_TIM_ConfigClockSource(&htim14, &sClockSourceConfig) != HAL_OK)
|
// if (HAL_TIM_ConfigClockSource(&htim14, &sClockSourceConfig) != HAL_OK)
|
||||||
{
|
// {
|
||||||
Error_Handler();
|
// Error_Handler();
|
||||||
}
|
// }
|
||||||
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
|
// sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
|
||||||
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
|
// sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
|
||||||
if (HAL_TIMEx_MasterConfigSynchronization(&htim14, &sMasterConfig) != HAL_OK)
|
// if (HAL_TIMEx_MasterConfigSynchronization(&htim14, &sMasterConfig) != HAL_OK)
|
||||||
{
|
// {
|
||||||
Error_Handler();
|
// Error_Handler();
|
||||||
}
|
// }
|
||||||
/* USER CODE BEGIN TIM2_Init 2 */
|
// /* USER CODE BEGIN TIM2_Init 2 */
|
||||||
|
|
||||||
/* USER CODE END TIM2_Init 2 */
|
// /* USER CODE END TIM2_Init 2 */
|
||||||
|
|
||||||
}
|
}
|
||||||
void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle)
|
void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle)
|
||||||
|
|||||||
@@ -72,16 +72,23 @@ void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle)
|
|||||||
PB04:TX,
|
PB04:TX,
|
||||||
PB05:RX
|
PB05:RX
|
||||||
*/
|
*/
|
||||||
GPIO_InitStruct.Pin = GPIO_PIN_4;
|
/* Íàñòðîéêà ïèíà GPIO_PIN_4 */
|
||||||
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
|
GPIOB->MODER &= ~(GPIO_MODER_MODE4);
|
||||||
GPIO_InitStruct.Pull = GPIO_PULLUP;
|
GPIOB->MODER |= (GPIO_MODE_AF_PP << GPIO_MODER_MODE4_Pos);
|
||||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
|
GPIOB->PUPDR &= ~(GPIO_PUPDR_PUPD4);
|
||||||
GPIO_InitStruct.Alternate = GPIO_AF1_USART1;
|
GPIOB->PUPDR |= (GPIO_PULLUP << GPIO_PUPDR_PUPD4_Pos);
|
||||||
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
|
GPIOB->OSPEEDR |= (GPIO_SPEED_FREQ_HIGH << GPIO_OSPEEDR_OSPEED4_Pos);
|
||||||
|
GPIOB->AFR[0] &= ~(0xF << GPIO_AFRL_AFSEL4_Pos);
|
||||||
GPIO_InitStruct.Pin = GPIO_PIN_5;
|
GPIOB->AFR[0] |= (GPIO_AF1_USART1 << GPIO_AFRL_AFSEL4_Pos);
|
||||||
GPIO_InitStruct.Alternate = GPIO_AF1_USART1;
|
|
||||||
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
|
/* Íàñòðîéêà ïèíà GPIO_PIN_5 */
|
||||||
|
GPIOB->MODER &= ~(GPIO_MODER_MODE5);
|
||||||
|
GPIOB->MODER |= (GPIO_MODE_AF_PP << GPIO_MODER_MODE5_Pos);
|
||||||
|
GPIOB->PUPDR &= ~(GPIO_PUPDR_PUPD5);
|
||||||
|
GPIOB->PUPDR |= (GPIO_PULLUP << GPIO_PUPDR_PUPD5_Pos);
|
||||||
|
GPIOB->OSPEEDR |= (GPIO_SPEED_FREQ_HIGH << GPIO_OSPEEDR_OSPEED5_Pos);
|
||||||
|
GPIOB->AFR[0] &= ~(0xF << GPIO_AFRL_AFSEL5_Pos);
|
||||||
|
GPIOB->AFR[0] |= (GPIO_AF1_USART1 << GPIO_AFRL_AFSEL5_Pos);
|
||||||
|
|
||||||
/* USART1 interrupt Init */
|
/* USART1 interrupt Init */
|
||||||
HAL_NVIC_SetPriority(USART1_IRQn, 0, 0);
|
HAL_NVIC_SetPriority(USART1_IRQn, 0, 0);
|
||||||
|
|||||||
@@ -709,113 +709,17 @@
|
|||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
<cbSel>0</cbSel>
|
<cbSel>0</cbSel>
|
||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
<File>
|
|
||||||
<GroupNumber>6</GroupNumber>
|
|
||||||
<FileNumber>31</FileNumber>
|
|
||||||
<FileType>5</FileType>
|
|
||||||
<tvExp>0</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<bDave2>0</bDave2>
|
|
||||||
<PathWithFileName>..\Core\MyLibs\bit_access.h</PathWithFileName>
|
|
||||||
<FilenameWithoutPath>bit_access.h</FilenameWithoutPath>
|
|
||||||
<RteFlg>0</RteFlg>
|
|
||||||
<bShared>0</bShared>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<GroupNumber>6</GroupNumber>
|
|
||||||
<FileNumber>32</FileNumber>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<tvExp>0</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<bDave2>0</bDave2>
|
|
||||||
<PathWithFileName>..\Core\MyLibs\general_gpio.c</PathWithFileName>
|
|
||||||
<FilenameWithoutPath>general_gpio.c</FilenameWithoutPath>
|
|
||||||
<RteFlg>0</RteFlg>
|
|
||||||
<bShared>0</bShared>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<GroupNumber>6</GroupNumber>
|
|
||||||
<FileNumber>33</FileNumber>
|
|
||||||
<FileType>5</FileType>
|
|
||||||
<tvExp>0</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<bDave2>0</bDave2>
|
|
||||||
<PathWithFileName>..\Core\MyLibs\general_gpio.h</PathWithFileName>
|
|
||||||
<FilenameWithoutPath>general_gpio.h</FilenameWithoutPath>
|
|
||||||
<RteFlg>0</RteFlg>
|
|
||||||
<bShared>0</bShared>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<GroupNumber>6</GroupNumber>
|
|
||||||
<FileNumber>34</FileNumber>
|
|
||||||
<FileType>5</FileType>
|
|
||||||
<tvExp>0</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<bDave2>0</bDave2>
|
|
||||||
<PathWithFileName>..\Core\MyLibs\mylibs_config.h</PathWithFileName>
|
|
||||||
<FilenameWithoutPath>mylibs_config.h</FilenameWithoutPath>
|
|
||||||
<RteFlg>0</RteFlg>
|
|
||||||
<bShared>0</bShared>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<GroupNumber>6</GroupNumber>
|
|
||||||
<FileNumber>35</FileNumber>
|
|
||||||
<FileType>5</FileType>
|
|
||||||
<tvExp>0</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<bDave2>0</bDave2>
|
|
||||||
<PathWithFileName>..\Core\MyLibs\mylibs_defs.h</PathWithFileName>
|
|
||||||
<FilenameWithoutPath>mylibs_defs.h</FilenameWithoutPath>
|
|
||||||
<RteFlg>0</RteFlg>
|
|
||||||
<bShared>0</bShared>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<GroupNumber>6</GroupNumber>
|
|
||||||
<FileNumber>36</FileNumber>
|
|
||||||
<FileType>5</FileType>
|
|
||||||
<tvExp>0</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<bDave2>0</bDave2>
|
|
||||||
<PathWithFileName>..\Core\MyLibs\mylibs_include.h</PathWithFileName>
|
|
||||||
<FilenameWithoutPath>mylibs_include.h</FilenameWithoutPath>
|
|
||||||
<RteFlg>0</RteFlg>
|
|
||||||
<bShared>0</bShared>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<GroupNumber>6</GroupNumber>
|
|
||||||
<FileNumber>37</FileNumber>
|
|
||||||
<FileType>5</FileType>
|
|
||||||
<tvExp>0</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<bDave2>0</bDave2>
|
|
||||||
<PathWithFileName>..\Core\MyLibs\trace.h</PathWithFileName>
|
|
||||||
<FilenameWithoutPath>trace.h</FilenameWithoutPath>
|
|
||||||
<RteFlg>0</RteFlg>
|
|
||||||
<bShared>0</bShared>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<GroupNumber>6</GroupNumber>
|
|
||||||
<FileNumber>38</FileNumber>
|
|
||||||
<FileType>5</FileType>
|
|
||||||
<tvExp>0</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<bDave2>0</bDave2>
|
|
||||||
<PathWithFileName>..\Core\MyLibs\trackers.h</PathWithFileName>
|
|
||||||
<FilenameWithoutPath>trackers.h</FilenameWithoutPath>
|
|
||||||
<RteFlg>0</RteFlg>
|
|
||||||
<bShared>0</bShared>
|
|
||||||
</File>
|
|
||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
<Group>
|
<Group>
|
||||||
<GroupName>Drivers/PY32F002B_HAL_Driver</GroupName>
|
<GroupName>Drivers/PY32F002B_HAL_Driver</GroupName>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>1</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
<cbSel>0</cbSel>
|
<cbSel>0</cbSel>
|
||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>7</GroupNumber>
|
<GroupNumber>7</GroupNumber>
|
||||||
<FileNumber>39</FileNumber>
|
<FileNumber>31</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
@@ -827,7 +731,7 @@
|
|||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>7</GroupNumber>
|
<GroupNumber>7</GroupNumber>
|
||||||
<FileNumber>40</FileNumber>
|
<FileNumber>32</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
@@ -839,7 +743,7 @@
|
|||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>7</GroupNumber>
|
<GroupNumber>7</GroupNumber>
|
||||||
<FileNumber>41</FileNumber>
|
<FileNumber>33</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
@@ -851,7 +755,7 @@
|
|||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>7</GroupNumber>
|
<GroupNumber>7</GroupNumber>
|
||||||
<FileNumber>42</FileNumber>
|
<FileNumber>34</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
@@ -863,7 +767,7 @@
|
|||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>7</GroupNumber>
|
<GroupNumber>7</GroupNumber>
|
||||||
<FileNumber>43</FileNumber>
|
<FileNumber>35</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
@@ -875,7 +779,7 @@
|
|||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>7</GroupNumber>
|
<GroupNumber>7</GroupNumber>
|
||||||
<FileNumber>44</FileNumber>
|
<FileNumber>36</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
@@ -887,7 +791,7 @@
|
|||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>7</GroupNumber>
|
<GroupNumber>7</GroupNumber>
|
||||||
<FileNumber>45</FileNumber>
|
<FileNumber>37</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
@@ -899,7 +803,7 @@
|
|||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>7</GroupNumber>
|
<GroupNumber>7</GroupNumber>
|
||||||
<FileNumber>46</FileNumber>
|
<FileNumber>38</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
@@ -911,7 +815,7 @@
|
|||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>7</GroupNumber>
|
<GroupNumber>7</GroupNumber>
|
||||||
<FileNumber>47</FileNumber>
|
<FileNumber>39</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
@@ -923,7 +827,7 @@
|
|||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>7</GroupNumber>
|
<GroupNumber>7</GroupNumber>
|
||||||
<FileNumber>48</FileNumber>
|
<FileNumber>40</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
@@ -935,7 +839,7 @@
|
|||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>7</GroupNumber>
|
<GroupNumber>7</GroupNumber>
|
||||||
<FileNumber>49</FileNumber>
|
<FileNumber>41</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
|
|||||||
@@ -559,48 +559,6 @@
|
|||||||
</Group>
|
</Group>
|
||||||
<Group>
|
<Group>
|
||||||
<GroupName>MyLibs</GroupName>
|
<GroupName>MyLibs</GroupName>
|
||||||
<Files>
|
|
||||||
<File>
|
|
||||||
<FileName>bit_access.h</FileName>
|
|
||||||
<FileType>5</FileType>
|
|
||||||
<FilePath>..\Core\MyLibs\bit_access.h</FilePath>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<FileName>general_gpio.c</FileName>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<FilePath>..\Core\MyLibs\general_gpio.c</FilePath>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<FileName>general_gpio.h</FileName>
|
|
||||||
<FileType>5</FileType>
|
|
||||||
<FilePath>..\Core\MyLibs\general_gpio.h</FilePath>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<FileName>mylibs_config.h</FileName>
|
|
||||||
<FileType>5</FileType>
|
|
||||||
<FilePath>..\Core\MyLibs\mylibs_config.h</FilePath>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<FileName>mylibs_defs.h</FileName>
|
|
||||||
<FileType>5</FileType>
|
|
||||||
<FilePath>..\Core\MyLibs\mylibs_defs.h</FilePath>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<FileName>mylibs_include.h</FileName>
|
|
||||||
<FileType>5</FileType>
|
|
||||||
<FilePath>..\Core\MyLibs\mylibs_include.h</FilePath>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<FileName>trace.h</FileName>
|
|
||||||
<FileType>5</FileType>
|
|
||||||
<FilePath>..\Core\MyLibs\trace.h</FilePath>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<FileName>trackers.h</FileName>
|
|
||||||
<FileType>5</FileType>
|
|
||||||
<FilePath>..\Core\MyLibs\trackers.h</FilePath>
|
|
||||||
</File>
|
|
||||||
</Files>
|
|
||||||
</Group>
|
</Group>
|
||||||
<Group>
|
<Group>
|
||||||
<GroupName>Drivers/PY32F002B_HAL_Driver</GroupName>
|
<GroupName>Drivers/PY32F002B_HAL_Driver</GroupName>
|
||||||
@@ -614,11 +572,113 @@
|
|||||||
<FileName>py32f002b_hal_rcc.c</FileName>
|
<FileName>py32f002b_hal_rcc.c</FileName>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<FilePath>..\Drivers\PY32F002B_HAL_Driver\Src\py32f002b_hal_rcc.c</FilePath>
|
<FilePath>..\Drivers\PY32F002B_HAL_Driver\Src\py32f002b_hal_rcc.c</FilePath>
|
||||||
|
<FileOption>
|
||||||
|
<CommonProperty>
|
||||||
|
<UseCPPCompiler>2</UseCPPCompiler>
|
||||||
|
<RVCTCodeConst>0</RVCTCodeConst>
|
||||||
|
<RVCTZI>0</RVCTZI>
|
||||||
|
<RVCTOtherData>0</RVCTOtherData>
|
||||||
|
<ModuleSelection>0</ModuleSelection>
|
||||||
|
<IncludeInBuild>0</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>
|
||||||
<File>
|
<File>
|
||||||
<FileName>py32f002b_hal_rcc_ex.c</FileName>
|
<FileName>py32f002b_hal_rcc_ex.c</FileName>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<FilePath>..\Drivers\PY32F002B_HAL_Driver\Src\py32f002b_hal_rcc_ex.c</FilePath>
|
<FilePath>..\Drivers\PY32F002B_HAL_Driver\Src\py32f002b_hal_rcc_ex.c</FilePath>
|
||||||
|
<FileOption>
|
||||||
|
<CommonProperty>
|
||||||
|
<UseCPPCompiler>2</UseCPPCompiler>
|
||||||
|
<RVCTCodeConst>0</RVCTCodeConst>
|
||||||
|
<RVCTZI>0</RVCTZI>
|
||||||
|
<RVCTOtherData>0</RVCTOtherData>
|
||||||
|
<ModuleSelection>0</ModuleSelection>
|
||||||
|
<IncludeInBuild>0</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>
|
||||||
<File>
|
<File>
|
||||||
<FileName>py32f002b_hal_cortex.c</FileName>
|
<FileName>py32f002b_hal_cortex.c</FileName>
|
||||||
@@ -629,6 +689,57 @@
|
|||||||
<FileName>py32f002b_hal_gpio.c</FileName>
|
<FileName>py32f002b_hal_gpio.c</FileName>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<FilePath>..\Drivers\PY32F002B_HAL_Driver\Src\py32f002b_hal_gpio.c</FilePath>
|
<FilePath>..\Drivers\PY32F002B_HAL_Driver\Src\py32f002b_hal_gpio.c</FilePath>
|
||||||
|
<FileOption>
|
||||||
|
<CommonProperty>
|
||||||
|
<UseCPPCompiler>2</UseCPPCompiler>
|
||||||
|
<RVCTCodeConst>0</RVCTCodeConst>
|
||||||
|
<RVCTZI>0</RVCTZI>
|
||||||
|
<RVCTOtherData>0</RVCTOtherData>
|
||||||
|
<ModuleSelection>0</ModuleSelection>
|
||||||
|
<IncludeInBuild>0</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>
|
||||||
<File>
|
<File>
|
||||||
<FileName>py32f002b_hal_pwr.c</FileName>
|
<FileName>py32f002b_hal_pwr.c</FileName>
|
||||||
@@ -644,11 +755,113 @@
|
|||||||
<FileName>py32f002b_hal_tim.c</FileName>
|
<FileName>py32f002b_hal_tim.c</FileName>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<FilePath>..\Drivers\PY32F002B_HAL_Driver\Src\py32f002b_hal_tim.c</FilePath>
|
<FilePath>..\Drivers\PY32F002B_HAL_Driver\Src\py32f002b_hal_tim.c</FilePath>
|
||||||
|
<FileOption>
|
||||||
|
<CommonProperty>
|
||||||
|
<UseCPPCompiler>2</UseCPPCompiler>
|
||||||
|
<RVCTCodeConst>0</RVCTCodeConst>
|
||||||
|
<RVCTZI>0</RVCTZI>
|
||||||
|
<RVCTOtherData>0</RVCTOtherData>
|
||||||
|
<ModuleSelection>0</ModuleSelection>
|
||||||
|
<IncludeInBuild>0</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>
|
||||||
<File>
|
<File>
|
||||||
<FileName>py32f002b_hal_tim_ex.c</FileName>
|
<FileName>py32f002b_hal_tim_ex.c</FileName>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<FilePath>..\Drivers\PY32F002B_HAL_Driver\Src\py32f002b_hal_tim_ex.c</FilePath>
|
<FilePath>..\Drivers\PY32F002B_HAL_Driver\Src\py32f002b_hal_tim_ex.c</FilePath>
|
||||||
|
<FileOption>
|
||||||
|
<CommonProperty>
|
||||||
|
<UseCPPCompiler>2</UseCPPCompiler>
|
||||||
|
<RVCTCodeConst>0</RVCTCodeConst>
|
||||||
|
<RVCTZI>0</RVCTZI>
|
||||||
|
<RVCTOtherData>0</RVCTOtherData>
|
||||||
|
<ModuleSelection>0</ModuleSelection>
|
||||||
|
<IncludeInBuild>0</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>
|
||||||
<File>
|
<File>
|
||||||
<FileName>py32f002b_hal_uart.c</FileName>
|
<FileName>py32f002b_hal_uart.c</FileName>
|
||||||
|
|||||||
Reference in New Issue
Block a user