Compare commits
No commits in common. "d9756cf7866ba21ec3bd809bb7f760dfe14722e2" and "2ac0af3fead14c0c3819bdfd2ced2889cba24a60" have entirely different histories.
d9756cf786
...
2ac0af3fea
|
@ -4,7 +4,7 @@
|
||||||
<extension point="org.eclipse.cdt.core.LanguageSettingsProvider">
|
<extension point="org.eclipse.cdt.core.LanguageSettingsProvider">
|
||||||
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
|
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
|
||||||
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
|
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
|
||||||
<provider class="com.atollic.truestudio.mbs.GCCSpecsDetectorAtollicArm" console="false" env-hash="1166531618330183916" id="com.atollic.truestudio.mbs.provider" keep-relative-paths="false" name="Atollic ARM Tools Language Settings" parameter="${COMMAND} -E -P -v -dD "${INPUTS}"" prefer-non-shared="true">
|
<provider class="com.atollic.truestudio.mbs.GCCSpecsDetectorAtollicArm" console="false" env-hash="1761414022695062209" id="com.atollic.truestudio.mbs.provider" keep-relative-paths="false" name="Atollic ARM Tools Language Settings" parameter="${COMMAND} -E -P -v -dD "${INPUTS}"" prefer-non-shared="true">
|
||||||
<language-scope id="org.eclipse.cdt.core.gcc"/>
|
<language-scope id="org.eclipse.cdt.core.gcc"/>
|
||||||
<language-scope id="org.eclipse.cdt.core.g++"/>
|
<language-scope id="org.eclipse.cdt.core.g++"/>
|
||||||
</provider>
|
</provider>
|
||||||
|
@ -14,7 +14,7 @@
|
||||||
<extension point="org.eclipse.cdt.core.LanguageSettingsProvider">
|
<extension point="org.eclipse.cdt.core.LanguageSettingsProvider">
|
||||||
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
|
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
|
||||||
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
|
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
|
||||||
<provider class="com.atollic.truestudio.mbs.GCCSpecsDetectorAtollicArm" console="false" env-hash="1166531618330183916" id="com.atollic.truestudio.mbs.provider" keep-relative-paths="false" name="Atollic ARM Tools Language Settings" parameter="${COMMAND} -E -P -v -dD "${INPUTS}"" prefer-non-shared="true">
|
<provider class="com.atollic.truestudio.mbs.GCCSpecsDetectorAtollicArm" console="false" env-hash="1761414022695062209" id="com.atollic.truestudio.mbs.provider" keep-relative-paths="false" name="Atollic ARM Tools Language Settings" parameter="${COMMAND} -E -P -v -dD "${INPUTS}"" prefer-non-shared="true">
|
||||||
<language-scope id="org.eclipse.cdt.core.gcc"/>
|
<language-scope id="org.eclipse.cdt.core.gcc"/>
|
||||||
<language-scope id="org.eclipse.cdt.core.g++"/>
|
<language-scope id="org.eclipse.cdt.core.g++"/>
|
||||||
</provider>
|
</provider>
|
||||||
|
|
|
@ -20,6 +20,5 @@
|
||||||
|
|
||||||
|
|
||||||
void MX_FLASH_Init(void);
|
void MX_FLASH_Init(void);
|
||||||
void rdPar(void);
|
|
||||||
|
|
||||||
#endif /* INC_FLASH_H_ */
|
#endif /* INC_FLASH_H_ */
|
||||||
|
|
|
@ -1,6 +0,0 @@
|
||||||
|
|
||||||
#include "my.h"
|
|
||||||
#include "screen.h"
|
|
||||||
|
|
||||||
|
|
||||||
void keysHandler(void);
|
|
|
@ -58,25 +58,25 @@ void Error_Handler(void);
|
||||||
/* USER CODE END EFP */
|
/* USER CODE END EFP */
|
||||||
|
|
||||||
/* Private defines -----------------------------------------------------------*/
|
/* Private defines -----------------------------------------------------------*/
|
||||||
#define FL_Pin GPIO_PIN_0 // ÔË íà ÖÀÏ
|
#define FL_Pin GPIO_PIN_0
|
||||||
#define FL_GPIO_Port GPIOC // ÔË íà ÖÀÏ
|
#define FL_GPIO_Port GPIOC
|
||||||
#define STD_Pin GPIO_PIN_1 //
|
#define STD_Pin GPIO_PIN_1
|
||||||
#define STD_GPIO_Port GPIOC //
|
#define STD_GPIO_Port GPIOC
|
||||||
#define SCK_Pin GPIO_PIN_2 //STB íà ÖÀÏ
|
#define SCK_Pin GPIO_PIN_2
|
||||||
#define SCK_GPIO_Port GPIOC
|
#define SCK_GPIO_Port GPIOC
|
||||||
#define ON_Pin GPIO_PIN_4 //Áûë3
|
#define ON_Pin GPIO_PIN_4 //Áûë3
|
||||||
#define ON_GPIO_Port GPIOC
|
#define ON_GPIO_Port GPIOC
|
||||||
#define OFF_Pin GPIO_PIN_2 //!!!! Íå ñîîòâåòñâóåò ñõåìå!!! PA3 - OFF
|
#define OFF_Pin GPIO_PIN_2
|
||||||
#define OFF_GPIO_Port GPIOA //!!!
|
#define OFF_GPIO_Port GPIOA
|
||||||
#define A0_Pin GPIO_PIN_0 //ÊÏÐ 1 10 0,1
|
#define A0_Pin GPIO_PIN_0
|
||||||
#define A0_GPIO_Port GPIOB
|
#define A0_GPIO_Port GPIOB
|
||||||
#define A1_Pin GPIO_PIN_1 //ÊÏÐ 1 10 0,1
|
#define A1_Pin GPIO_PIN_1
|
||||||
#define A1_GPIO_Port GPIOB
|
#define A1_GPIO_Port GPIOB
|
||||||
#define A2_Pin GPIO_PIN_2 //ÔÂ×
|
#define A2_Pin GPIO_PIN_2
|
||||||
#define A2_GPIO_Port GPIOB
|
#define A2_GPIO_Port GPIOB
|
||||||
#define K10_Pin GPIO_PIN_10 //ÊÓÑ10
|
#define K10_Pin GPIO_PIN_10
|
||||||
#define K10_GPIO_Port GPIOB
|
#define K10_GPIO_Port GPIOB
|
||||||
#define OK_BTN_Pin GPIO_PIN_12 //
|
#define OK_BTN_Pin GPIO_PIN_12
|
||||||
#define OK_BTN_GPIO_Port GPIOB
|
#define OK_BTN_GPIO_Port GPIOB
|
||||||
#define DN_BTN_Pin GPIO_PIN_13
|
#define DN_BTN_Pin GPIO_PIN_13
|
||||||
#define DN_BTN_GPIO_Port GPIOB
|
#define DN_BTN_GPIO_Port GPIOB
|
||||||
|
@ -88,25 +88,20 @@ void Error_Handler(void);
|
||||||
#define USART1_RE_GPIO_Port GPIOA
|
#define USART1_RE_GPIO_Port GPIOA
|
||||||
#define RESET_Pin GPIO_PIN_12
|
#define RESET_Pin GPIO_PIN_12
|
||||||
#define RESET_GPIO_Port GPIOA
|
#define RESET_GPIO_Port GPIOA
|
||||||
#define A3_Pin GPIO_PIN_3 //ÔÂ×
|
#define A3_Pin GPIO_PIN_3
|
||||||
#define A3_GPIO_Port GPIOB
|
#define A3_GPIO_Port GPIOB
|
||||||
#define A4_Pin GPIO_PIN_4 //ÊÓÑ 1,2,5,10
|
#define A4_Pin GPIO_PIN_4
|
||||||
#define A4_GPIO_Port GPIOB
|
#define A4_GPIO_Port GPIOB
|
||||||
#define A5_Pin GPIO_PIN_5 //ÊÓÑ 1,2,5,10
|
#define A5_Pin GPIO_PIN_5
|
||||||
#define A5_GPIO_Port GPIOB
|
#define A5_GPIO_Port GPIOB
|
||||||
#define A6_Pin GPIO_PIN_6 //ÔÍ×
|
#define A7_Pin GPIO_PIN_6
|
||||||
#define A6_GPIO_Port GPIOB
|
|
||||||
#define A7_Pin GPIO_PIN_7 //ÔÍ×
|
|
||||||
#define A7_GPIO_Port GPIOB
|
#define A7_GPIO_Port GPIOB
|
||||||
#define A8_Pin GPIO_PIN_8 //ÔÂ×
|
#define A7B7_Pin GPIO_PIN_7
|
||||||
#define A8_GPIO_Port GPIOB
|
#define A7B7_GPIO_Port GPIOB
|
||||||
#define PZ_Pin GPIO_PIN_9 //Ïëàâàþùàÿ çåìëÿ
|
#define A7B8_Pin GPIO_PIN_8
|
||||||
|
#define A7B8_GPIO_Port GPIOB
|
||||||
|
#define PZ_Pin GPIO_PIN_9
|
||||||
#define PZ_GPIO_Port GPIOB
|
#define PZ_GPIO_Port GPIOB
|
||||||
|
|
||||||
#define DMA_BUFFSIZE 4096
|
|
||||||
#define ADC_BUFFSIZE 8192
|
|
||||||
|
|
||||||
|
|
||||||
/* USER CODE BEGIN Private defines */
|
/* USER CODE BEGIN Private defines */
|
||||||
|
|
||||||
/* USER CODE END Private defines */
|
/* USER CODE END Private defines */
|
||||||
|
|
|
@ -20,20 +20,15 @@
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include "flash.h"
|
#include "flash.h"
|
||||||
#include "string.h"
|
#include "string.h"
|
||||||
#include "ssd1306.h"
|
|
||||||
#include <stdlib.h>
|
|
||||||
|
|
||||||
#define LOGO_TIME_MS (500u)
|
#define LOGO_TIME_MS (500u)
|
||||||
#define lo(x) ((uint8_t) ((x) & 0xFF))
|
#define lo(x) ((uint8_t) ((x) & 0xFF))
|
||||||
#define hi(x) ((uint8_t) (((x) >> 8) & 0xFF))
|
#define hi(x) ((uint8_t) (((x) >> 8) & 0xFF))
|
||||||
|
|
||||||
#define ABS(x) (((x) < 0)?-(x) :(x))
|
#define ABS(x) (((x) < 0)?-(x) :(x))
|
||||||
|
|
||||||
|
|
||||||
typedef enum
|
|
||||||
{
|
|
||||||
CURSOR = Black,
|
|
||||||
TEXT = White
|
|
||||||
}typeTEXT;
|
|
||||||
|
|
||||||
static const uint16_t Crc16Table[256] =
|
static const uint16_t Crc16Table[256] =
|
||||||
{
|
{
|
||||||
|
@ -74,35 +69,14 @@ static const uint16_t Crc16Table[256] =
|
||||||
static const uint16_t sendtime[]={ 2400, 1600, 1200, 800, 600, 308, 200, 108, 94, 54 };
|
static const uint16_t sendtime[]={ 2400, 1600, 1200, 800, 600, 308, 200, 108, 94, 54 };
|
||||||
static const uint16_t time35[] = { 8, 6, 6, 6, 4, 4, 4, 1, 4, 4 };
|
static const uint16_t time35[] = { 8, 6, 6, 6, 4, 4, 4, 1, 4, 4 };
|
||||||
|
|
||||||
void DrawSome(int16_t some, uint8_t x, uint8_t y, uint8_t mode);
|
|
||||||
typedef enum { CHARGE = 0} typeIIN;
|
typedef enum { CHARGE = 0} typeIIN;
|
||||||
typedef enum { Ku0_1 = 0, Ku0_2, Ku0_5, Ku1, Ku2, Ku5, Ku10, Ku20, Ku50, Ku100, Ku200, Ku500 } typeIKU;
|
typedef enum { Ku0_1 = 0, Ku0_2, Ku0_5, Ku1, Ku2, Ku5, Ku10, Ku20, Ku50, Ku100, Ku200, Ku500 } typeIKU;
|
||||||
typedef enum { Hp0_1 = 0, Hp1, Hp2, Hp10 } typeIFV;
|
typedef enum { Hp0_1 = 0, Hp1, Hp2, Hp10 } typeIFV;
|
||||||
typedef enum { Lp100 = 0, Lp300, Lp1000, Lp3000, Lp10000, Lp30000, Lp100000 } typeIFN;
|
typedef enum { Lp100 = 0, Lp300, Lp1000, Lp3000, Lp10000, Lp30000, Lp100000 } typeIFN;
|
||||||
|
|
||||||
|
|
||||||
typedef enum
|
|
||||||
{
|
|
||||||
WORK = 0,
|
|
||||||
KPR0 ,
|
|
||||||
KPR1 ,
|
|
||||||
KPR2 ,
|
|
||||||
KPR3 ,
|
|
||||||
KPR4 ,
|
|
||||||
KPRSAVING,
|
|
||||||
OUT ,
|
|
||||||
FVCH ,
|
|
||||||
FNCH,
|
|
||||||
GROUND,
|
|
||||||
SAVING
|
|
||||||
}mainMenuState;
|
|
||||||
|
|
||||||
int asciiToFloat4(uint16_t str[]);
|
|
||||||
void sh_SetFnch(uint16_t IFN);
|
|
||||||
void sh_SetPlavZeml(uint16_t IPZ);
|
|
||||||
void WRDAC(uint16_t DVD);
|
|
||||||
void sh_SetFvch(uint16_t IFV);
|
|
||||||
void sh_SetOutGain(uint16_t IKU);
|
|
||||||
void sh_applysetting(UserData_TypeDef * currentData, uint16_t DVD);
|
|
||||||
|
|
||||||
#endif /* INC_MY_H_ */
|
#endif /* INC_MY_H_ */
|
||||||
|
|
|
@ -1,9 +0,0 @@
|
||||||
|
|
||||||
#include "my.h"
|
|
||||||
#include "ssd1306.h"
|
|
||||||
#include "OLED_Fonts.h"
|
|
||||||
|
|
||||||
|
|
||||||
void screenDraw(void);
|
|
||||||
|
|
||||||
|
|
|
@ -64,28 +64,26 @@ typedef union
|
||||||
//*********************************************************************************************************************************
|
//*********************************************************************************************************************************
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{ //колличкство байт должно делится на 4 иначе не пишет!
|
{
|
||||||
uint16_t OWN; // 0,1 4001 // Адрес устройства
|
uint16_t OWN; // 0,1 4001
|
||||||
uint16_t BAUD; // 2,3 4002 // скорость передачи
|
uint16_t BAUD; // 2,3 4002
|
||||||
uint16_t INFB; // 4,5 4003 //бит четности
|
uint16_t INFB; // 4,5 4003
|
||||||
|
|
||||||
uint16_t IIN; // 6,7 5001 //тип заряда ACP=
|
uint16_t IIN; // 6,7 5001
|
||||||
uint16_t IFV; // 8,9 5002 //фильтр верхних частот
|
uint16_t IFV; // 8,9 5002
|
||||||
uint16_t IFN; // 10,11 5003 //нижних
|
uint16_t IFN; // 10,11 5003
|
||||||
uint16_t IKU; // 12,13 5004 //Коэф усиления
|
uint16_t IKU; // 12,13 5004
|
||||||
uint16_t IK0; // 14,15 5005 // знакоместо 0
|
uint16_t IKE; // 14,15 5005
|
||||||
uint16_t IK1; // 16,17 5006 // знакоместо 1
|
uint16_t IKD; // 16,17 5006
|
||||||
uint16_t IK2; // 18,19 5007 // знакоместо 2
|
uint16_t IKS; // 18,19 5007
|
||||||
uint16_t IK3; // 20,21 // знакоместо 3
|
uint16_t IPZ; // 20,21 5008
|
||||||
uint16_t IK4; // 22,23 // знакоместо 4
|
uint16_t OPZ; // 22,23 5009
|
||||||
|
|
||||||
|
float KCOND; // 24,25,26,27 7501
|
||||||
|
float SENS; // 28,29,30,31 7502
|
||||||
|
float ACCEL; // 32,33,34,35 7503
|
||||||
|
|
||||||
uint16_t IPZ; // 24,25 5008 // плавающая земля
|
} UserData_TypeDef; // ********LENGTH = 28 bytes***********
|
||||||
|
|
||||||
float KCOND; // 28,29,30,31 7501 //
|
|
||||||
float SENS; // 32,33,34,35 7502 //дублирование (коэфициэнт преобразования)
|
|
||||||
|
|
||||||
} UserData_TypeDef; // ********LENGTH = 39 bytes***********
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -19,8 +19,7 @@
|
||||||
|
|
||||||
/* Includes ------------------------------------------------------------------*/
|
/* Includes ------------------------------------------------------------------*/
|
||||||
#include "adc.h"
|
#include "adc.h"
|
||||||
#include "tim.h"
|
|
||||||
#include "string.h"
|
|
||||||
/* USER CODE BEGIN 0 */
|
/* USER CODE BEGIN 0 */
|
||||||
|
|
||||||
/* USER CODE END 0 */
|
/* USER CODE END 0 */
|
||||||
|
@ -28,11 +27,6 @@
|
||||||
ADC_HandleTypeDef hadc1;
|
ADC_HandleTypeDef hadc1;
|
||||||
DMA_HandleTypeDef hdma_adc1;
|
DMA_HandleTypeDef hdma_adc1;
|
||||||
|
|
||||||
uint16_t DMA_Buff[DMA_BUFFSIZE];
|
|
||||||
uint16_t ADC_Buff[ADC_BUFFSIZE];
|
|
||||||
uint32_t ind_buff=0; //äëÿ ñäâèãà áóôåðà
|
|
||||||
uint32_t current_buff=0; //òåêóøèé
|
|
||||||
|
|
||||||
/* ADC1 init function */
|
/* ADC1 init function */
|
||||||
void MX_ADC1_Init(void)
|
void MX_ADC1_Init(void)
|
||||||
{
|
{
|
||||||
|
@ -50,12 +44,12 @@ void MX_ADC1_Init(void)
|
||||||
*/
|
*/
|
||||||
hadc1.Instance = ADC1;
|
hadc1.Instance = ADC1;
|
||||||
hadc1.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV2;
|
hadc1.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV2;
|
||||||
hadc1.Init.Resolution = ADC_RESOLUTION_12B; //ðàçðåøåíèå àöï
|
hadc1.Init.Resolution = ADC_RESOLUTION_12B;
|
||||||
hadc1.Init.ScanConvMode = DISABLE;
|
hadc1.Init.ScanConvMode = DISABLE;
|
||||||
hadc1.Init.ContinuousConvMode = DISABLE;
|
hadc1.Init.ContinuousConvMode = DISABLE;
|
||||||
hadc1.Init.DiscontinuousConvMode = DISABLE;
|
hadc1.Init.DiscontinuousConvMode = DISABLE;
|
||||||
hadc1.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_RISING;
|
hadc1.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_RISING;
|
||||||
hadc1.Init.ExternalTrigConv = ADC_EXTERNALTRIGCONV_T3_TRGO; //âíåøíèé òðèãåð äëÿ çàïóñêà êîíâåðñèè
|
hadc1.Init.ExternalTrigConv = ADC_EXTERNALTRIGCONV_T3_TRGO;
|
||||||
hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;
|
hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;
|
||||||
hadc1.Init.NbrOfConversion = 1;
|
hadc1.Init.NbrOfConversion = 1;
|
||||||
hadc1.Init.DMAContinuousRequests = ENABLE;
|
hadc1.Init.DMAContinuousRequests = ENABLE;
|
||||||
|
@ -75,9 +69,6 @@ void MX_ADC1_Init(void)
|
||||||
}
|
}
|
||||||
/* USER CODE BEGIN ADC1_Init 2 */
|
/* USER CODE BEGIN ADC1_Init 2 */
|
||||||
|
|
||||||
HAL_ADC_Start_DMA(&hadc1, (uint32_t *) &DMA_Buff[0], DMA_BUFFSIZE); // ÄÌÀ êîïèðóåò ðåçóëüòàòû ñ ÀÖÏ â ýòîò ìàññèâ ///halfword??? êàê òîëüêî 1024, òî ïðåðûâàíèå
|
|
||||||
HAL_TIM_Base_Start(&htim3); //ñòàðòóåì òàéìåð
|
|
||||||
HAL_TIM_GenerateEvent(&htim3, TIM_EVENTSOURCE_UPDATE); // Ðàçðåøàåì ãåíåðèòü? íàâåðíîå íóæíî äåëàòü â öèêëå? //ïîïðîáîâàòü ïî ñîåìó
|
|
||||||
/* USER CODE END ADC1_Init 2 */
|
/* USER CODE END ADC1_Init 2 */
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -156,14 +147,6 @@ void HAL_ADC_MspDeInit(ADC_HandleTypeDef* adcHandle)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* USER CODE BEGIN 1 */
|
/* USER CODE BEGIN 1 */
|
||||||
void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc)
|
|
||||||
{
|
|
||||||
memcpy((void *) &ADC_Buff[ind_buff], (void *) DMA_Buff, DMA_BUFFSIZE<<1); //íàçíà÷åíèå, èñòî÷íèê, ðàçìåð //<< Çíà÷èò óìíîæèòü íà 2
|
|
||||||
current_buff=ind_buff;
|
|
||||||
if(ind_buff==0) ind_buff=DMA_BUFFSIZE;
|
|
||||||
else ind_buff=0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* USER CODE END 1 */
|
/* USER CODE END 1 */
|
||||||
|
|
||||||
|
|
|
@ -43,7 +43,7 @@ void MX_DMA_Init(void)
|
||||||
|
|
||||||
/* DMA interrupt init */
|
/* DMA interrupt init */
|
||||||
/* DMA2_Stream0_IRQn interrupt configuration */
|
/* DMA2_Stream0_IRQn interrupt configuration */
|
||||||
HAL_NVIC_SetPriority(DMA2_Stream0_IRQn, 2, 0);
|
HAL_NVIC_SetPriority(DMA2_Stream0_IRQn, 0, 0);
|
||||||
HAL_NVIC_EnableIRQ(DMA2_Stream0_IRQn);
|
HAL_NVIC_EnableIRQ(DMA2_Stream0_IRQn);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
|
|
||||||
|
|
||||||
static FLASH_EraseInitTypeDef FlashEraseInit;
|
static FLASH_EraseInitTypeDef FlashEraseInit;
|
||||||
__IO extern UserData_TypeDef currentData;
|
__IO UserData_TypeDef pardata;
|
||||||
|
|
||||||
__IO uint16_t COUNT_EXT = 0;
|
__IO uint16_t COUNT_EXT = 0;
|
||||||
|
|
||||||
|
@ -50,7 +50,7 @@ uint32_t SECTORError = 0;
|
||||||
if(HAL_FLASHEx_Erase(&FlashEraseInit, &SECTORError) == HAL_OK)
|
if(HAL_FLASHEx_Erase(&FlashEraseInit, &SECTORError) == HAL_OK)
|
||||||
{
|
{
|
||||||
Address = USERPAGE;
|
Address = USERPAGE;
|
||||||
pData = (uint32_t *) ¤tData;
|
pData = (uint32_t *) &pardata;
|
||||||
for(i = 0; i < lenpar; i++)
|
for(i = 0; i < lenpar; i++)
|
||||||
{
|
{
|
||||||
HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, Address, *pData++);
|
HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, Address, *pData++);
|
||||||
|
@ -69,29 +69,28 @@ uint32_t lenpar;
|
||||||
volatile bool rewrite = false;
|
volatile bool rewrite = false;
|
||||||
|
|
||||||
lenpar = sizeof(UserData_TypeDef);
|
lenpar = sizeof(UserData_TypeDef);
|
||||||
memcpy((void *) ¤tData, (void *) USERPAGE, lenpar);
|
memcpy((void *) &pardata, (void *) USERPAGE, lenpar);
|
||||||
|
|
||||||
//pardata.OWN = 0xffff;//todo
|
//pardata.OWN = 0xffff;//todo
|
||||||
if(currentData.OWN == 0xffff)
|
if(pardata.OWN == 0xffff)
|
||||||
{
|
{
|
||||||
currentData.OWN = 1; //àäðåññ íîäáàñ
|
pardata.OWN = 1; //àäðåññ íîäáàñ
|
||||||
currentData.BAUD = 5;
|
pardata.BAUD = 5;
|
||||||
currentData.INFB = 1;
|
pardata.INFB = 1;
|
||||||
|
|
||||||
currentData.IIN = CHARGE;
|
pardata.IIN = CHARGE;
|
||||||
currentData.IFV = Hp0_1;
|
pardata.IFV = Hp0_1;
|
||||||
currentData.IFN = Lp100000;
|
pardata.IFN = Lp100000;
|
||||||
currentData.IKU = Ku1;
|
pardata.IKU = Ku1;
|
||||||
currentData.IK0 = 1;
|
pardata.IKE = 1;
|
||||||
currentData.IK1 = 0;
|
pardata.IKD = 0;
|
||||||
currentData.IK2 = 0;
|
pardata.IKS = 0;
|
||||||
currentData.IK3 = 0;
|
pardata.IPZ = 0;
|
||||||
currentData.IK4 = 0;
|
pardata.OPZ = 0;
|
||||||
|
|
||||||
currentData.IPZ =0;
|
pardata.KCOND = 1.0f;
|
||||||
|
pardata.SENS = 1.0f;
|
||||||
currentData.KCOND = 1.0f;
|
pardata.ACCEL = 100.0f;
|
||||||
currentData.SENS = 1.0f;
|
|
||||||
|
|
||||||
rewrite = true;
|
rewrite = true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -53,8 +53,8 @@ void MX_GPIO_Init(void)
|
||||||
|
|
||||||
/*Configure GPIO pin Output Level */
|
/*Configure GPIO pin Output Level */
|
||||||
HAL_GPIO_WritePin(GPIOB, A0_Pin|A1_Pin|A2_Pin|K10_Pin
|
HAL_GPIO_WritePin(GPIOB, A0_Pin|A1_Pin|A2_Pin|K10_Pin
|
||||||
|A3_Pin|A4_Pin|A5_Pin|A6_Pin
|
|A3_Pin|A4_Pin|A5_Pin|A7_Pin
|
||||||
|A7_Pin|A8_Pin, GPIO_PIN_RESET);
|
|A7B7_Pin|A7B8_Pin, GPIO_PIN_RESET);
|
||||||
|
|
||||||
/*Configure GPIO pin Output Level */
|
/*Configure GPIO pin Output Level */
|
||||||
HAL_GPIO_WritePin(GPIOA, SPI1_CS_Pin|RESET_Pin, GPIO_PIN_SET);
|
HAL_GPIO_WritePin(GPIOA, SPI1_CS_Pin|RESET_Pin, GPIO_PIN_SET);
|
||||||
|
@ -82,8 +82,8 @@ void MX_GPIO_Init(void)
|
||||||
PBPin PBPin PBPin PBPin
|
PBPin PBPin PBPin PBPin
|
||||||
PBPin PBPin PBPin */
|
PBPin PBPin PBPin */
|
||||||
GPIO_InitStruct.Pin = A0_Pin|A1_Pin|A2_Pin|K10_Pin
|
GPIO_InitStruct.Pin = A0_Pin|A1_Pin|A2_Pin|K10_Pin
|
||||||
|A3_Pin|A4_Pin|A5_Pin|A6_Pin
|
|A3_Pin|A4_Pin|A5_Pin|A7_Pin
|
||||||
|A7_Pin|A8_Pin|PZ_Pin;
|
|A7B7_Pin|A7B8_Pin|PZ_Pin;
|
||||||
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
|
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
|
||||||
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
||||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
|
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
|
||||||
|
|
153
Core/Src/keys.c
153
Core/Src/keys.c
|
@ -1,153 +0,0 @@
|
||||||
|
|
||||||
#include "keys.h"
|
|
||||||
#include "screen.h"
|
|
||||||
#include "struct.h"
|
|
||||||
#include "my.h"
|
|
||||||
|
|
||||||
extern UserData_TypeDef currentData;
|
|
||||||
extern int menuPointer;
|
|
||||||
extern uint16_t dvd;
|
|
||||||
extern int ignoreOff_flag;
|
|
||||||
uint16_t kpr_temp[5];
|
|
||||||
|
|
||||||
__IO uint16_t KEY_STATE = 0;
|
|
||||||
|
|
||||||
|
|
||||||
void keysHandler(void){
|
|
||||||
uint16_t key = KEY_STATE;
|
|
||||||
KEY_STATE = 0;
|
|
||||||
|
|
||||||
if(HAL_GPIO_ReadPin(OFF_GPIO_Port, OFF_Pin) == GPIO_PIN_RESET) ignoreOff_flag=0; //êàê òîëüêî êíîïêó âêëþ÷åíèÿ îòïóñòèëè, ïåðåñòà¸ì å¸ èãíîðèðîâàòü
|
|
||||||
if((HAL_GPIO_ReadPin(OFF_GPIO_Port, OFF_Pin) == GPIO_PIN_SET)&&(ignoreOff_flag==0))
|
|
||||||
{HAL_GPIO_WritePin(ON_GPIO_Port, ON_Pin , GPIO_PIN_SET);} //
|
|
||||||
|
|
||||||
if(key==OK_BTN_Pin){ //Ïî íàæàòèþ ÎÊ
|
|
||||||
//if(menuPointer==GROUND){menuPointer=WORK;} //todo ñäåëàé ñîõðàíåíèå //Åñëè êðàéíèé ïóíêò ìåíþ òî âîçâðàùàåìñÿ ê ðàáîòå
|
|
||||||
menuPointer++; //èíà÷å ñëåäóþùèé ïóíêò
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (menuPointer){
|
|
||||||
|
|
||||||
case KPR0:
|
|
||||||
if(key==UP_BTN_Pin) {
|
|
||||||
if((currentData.IK0<9)&&(currentData.IK0>=0)) currentData.IK0++;
|
|
||||||
else if(currentData.IK0=='~') currentData.IK0=0;
|
|
||||||
else if(currentData.IK0==9) currentData.IK0='~';
|
|
||||||
};
|
|
||||||
if((key==DN_BTN_Pin)) {
|
|
||||||
if(currentData.IK0==0) currentData.IK0='~';
|
|
||||||
else if ((currentData.IK0<=9)&&(currentData.IK0>0)) currentData.IK0--;
|
|
||||||
else if(currentData.IK0='~') currentData.IK0=9;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case KPR1:
|
|
||||||
if((key==UP_BTN_Pin)) {
|
|
||||||
if((currentData.IK1<9)&&(currentData.IK1>=0)) currentData.IK1++;
|
|
||||||
else if(currentData.IK1=='~') currentData.IK1=0;
|
|
||||||
else if(currentData.IK1==9) currentData.IK1='~';
|
|
||||||
}
|
|
||||||
|
|
||||||
if((key==DN_BTN_Pin)) {
|
|
||||||
if(currentData.IK1==0) currentData.IK1='~';
|
|
||||||
else if ((currentData.IK1<=9)&&(currentData.IK1>0)) currentData.IK1--;
|
|
||||||
else if(currentData.IK1='~') currentData.IK1=9;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case KPR2:
|
|
||||||
if((key==UP_BTN_Pin)) {
|
|
||||||
if((currentData.IK2<9)&&(currentData.IK2>=0)) currentData.IK2++;
|
|
||||||
else if(currentData.IK2=='~') currentData.IK2=0;
|
|
||||||
else if(currentData.IK2==9) currentData.IK2='~';
|
|
||||||
}
|
|
||||||
|
|
||||||
if((key==DN_BTN_Pin)) {
|
|
||||||
if(currentData.IK2==0) currentData.IK2='~';
|
|
||||||
else if ((currentData.IK2<=9)&&(currentData.IK2>0)) currentData.IK2--;
|
|
||||||
else if(currentData.IK2='~') currentData.IK2=9;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case KPR3:
|
|
||||||
if((key==UP_BTN_Pin)) {
|
|
||||||
if((currentData.IK3<9)&&(currentData.IK3>=0)) currentData.IK3++;
|
|
||||||
else if(currentData.IK3=='~') currentData.IK3=0;
|
|
||||||
else if(currentData.IK3==9) currentData.IK3='~';
|
|
||||||
}
|
|
||||||
|
|
||||||
if((key==DN_BTN_Pin)) {
|
|
||||||
if(currentData.IK3==0) currentData.IK3='~';
|
|
||||||
else if ((currentData.IK3<=9)&&(currentData.IK3>0)) currentData.IK3--;
|
|
||||||
else if(currentData.IK3='~') currentData.IK3=9;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
if((key==UP_BTN_Pin)) {
|
|
||||||
if((currentData.IK4<9)&&(currentData.IK4>=0)) currentData.IK4++;
|
|
||||||
else if(currentData.IK4=='~') currentData.IK4=0;
|
|
||||||
else if(currentData.IK4==9) currentData.IK4='~';
|
|
||||||
}
|
|
||||||
|
|
||||||
case KPR4:
|
|
||||||
if((key==DN_BTN_Pin)) {
|
|
||||||
if(currentData.IK4==0) currentData.IK4='~';
|
|
||||||
else if ((currentData.IK4<=9)&&(currentData.IK4>0)) currentData.IK4--;
|
|
||||||
else if(currentData.IK4='~') currentData.IK4=9;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case KPRSAVING:
|
|
||||||
kpr_temp[0]=currentData.IK0;
|
|
||||||
kpr_temp[1]=currentData.IK1;
|
|
||||||
kpr_temp[2]=currentData.IK2;
|
|
||||||
kpr_temp[3]=currentData.IK3;
|
|
||||||
kpr_temp[4]=currentData.IK4;
|
|
||||||
asciiToFloat4(kpr_temp);
|
|
||||||
if (asciiToFloat4(kpr_temp)||currentData.SENS<0.001||currentData.SENS>1000){
|
|
||||||
currentData.IK0=kpr_temp[0];
|
|
||||||
currentData.IK1=kpr_temp[1];
|
|
||||||
currentData.IK2=kpr_temp[2];
|
|
||||||
currentData.IK3=kpr_temp[3];
|
|
||||||
currentData.IK4=kpr_temp[4];
|
|
||||||
menuPointer=WORK; // ÏÅÐÅÑÊÎ×ÈÒ ÑÀÌ
|
|
||||||
//ïèøåì ÷òî çíà÷åíèÿ íå âåðíû
|
|
||||||
//ðèñóåì íóëè
|
|
||||||
};
|
|
||||||
menuPointer++;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case OUT:
|
|
||||||
if((key==UP_BTN_Pin)&&(currentData.IKU<Ku500)) {currentData.IKU++; sh_applysetting(¤tData, dvd);}
|
|
||||||
if((key==DN_BTN_Pin)&&(currentData.IKU>Ku0_1)) {currentData.IKU--; sh_applysetting(¤tData, dvd);}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case FVCH:
|
|
||||||
if((key==UP_BTN_Pin)&&(currentData.IFV<Hp10)) {currentData.IFV++; sh_applysetting(¤tData, dvd);}
|
|
||||||
if((key==DN_BTN_Pin)&&(currentData.IFV>Hp0_1)) {currentData.IFV--; sh_applysetting(¤tData, dvd);}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case FNCH:
|
|
||||||
if((key==UP_BTN_Pin)&&(currentData.IFN<Lp100000)) {currentData.IFN++; sh_applysetting(¤tData, dvd);}
|
|
||||||
if((key==DN_BTN_Pin)&&(currentData.IFN>Lp100)) {currentData.IFN--; sh_applysetting(¤tData, dvd);}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case GROUND:
|
|
||||||
if((key==UP_BTN_Pin)) {currentData.IPZ=1; sh_applysetting(¤tData, dvd);}
|
|
||||||
if((key==DN_BTN_Pin)) {currentData.IPZ=0; sh_applysetting(¤tData, dvd);}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case SAVING:
|
|
||||||
wrPar();
|
|
||||||
menuPointer=WORK;
|
|
||||||
sh_applysetting(¤tData, dvd);//todo Ñäåëàòü ïî íîðìàëüíîìó.
|
|
||||||
break;
|
|
||||||
|
|
||||||
|
|
||||||
} //close switch
|
|
||||||
|
|
||||||
|
|
||||||
}; //close keysHandler
|
|
||||||
|
|
||||||
|
|
||||||
|
|
413
Core/Src/main.c
413
Core/Src/main.c
|
@ -31,72 +31,289 @@
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include "my.h"
|
#include "my.h"
|
||||||
|
|
||||||
#include "ssd1306.h"
|
#include "ssd1306.h"
|
||||||
#include "screen.h"
|
|
||||||
#include "keys.h"
|
|
||||||
#include "struct.h"
|
|
||||||
//#include "arm_math.h"
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
__IO uint16_t repeat = 0;
|
||||||
volatile int needRefresh; ///
|
volatile int needRefresh; ///
|
||||||
|
|
||||||
char pString[16];
|
typedef enum
|
||||||
char* FloatToASCII(float Val, int32_t RoundTo); //ïîêà îáúÿâëþ å¸ òóò
|
{
|
||||||
|
CURSOR = Black,
|
||||||
|
TEXT = White
|
||||||
|
}typeTEXT;
|
||||||
|
|
||||||
void SystemClock_Config(void);
|
void SystemClock_Config(void);
|
||||||
|
/* USER CODE BEGIN PFP */
|
||||||
|
|
||||||
int menuPointer = 0; ///Óêàçàòåëü ìåíþ 0 - íè÷åãî 1-4 öèôðû Êïð. 5 òî÷êà ÊÏÐ 6-÷óâñòâ âûõîäà 7-ôâ÷ 8 ôí÷ 9 ÏÇ;
|
/* USER CODE END PFP */
|
||||||
extern int RefreshScreen;
|
|
||||||
extern uint32_t ind_buff; //ñäâèã áóôåðà!!!!
|
|
||||||
extern uint32_t current_buff; //òåêóùèé ýëåìåíò áóôåðà
|
|
||||||
|
|
||||||
extern uint16_t ADC_Buff[ADC_BUFFSIZE];
|
/* Private user code ---------------------------------------------------------*/
|
||||||
uint16_t meashBuff[DMA_BUFFSIZE];
|
/* USER CODE BEGIN 0 */
|
||||||
|
|
||||||
|
/* USER CODE END 0 */
|
||||||
|
|
||||||
int sourceDac=0;
|
/**
|
||||||
int reload_flag=0;
|
* @brief The application entry point.
|
||||||
int ignoreOff_flag=1;
|
* @retval int
|
||||||
uint16_t dvd=0xfff;
|
*/
|
||||||
|
|
||||||
__I uint16_t AVG_ADC = 2100; //ñðåäíåå àöï //__I - input - òî åñòü êîíñòàíòíûé
|
|
||||||
__I uint16_t HIGH_GATE_ADC = 4030;
|
|
||||||
__I uint16_t LOW_GATE_ADC = 179;
|
|
||||||
|
|
||||||
|
|
||||||
void check_reload(void);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//0,2; 1; 2; 10 ôâ÷
|
||||||
|
//0,1; 0,3; 1; 3; 10; 30; 100 ôí÷
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
int kPr;
|
||||||
|
int kExit;
|
||||||
|
int FVCH;
|
||||||
|
int FNCH;
|
||||||
|
} set_type;
|
||||||
|
|
||||||
|
|
||||||
|
char pString[16] = {0};
|
||||||
|
|
||||||
|
char* FloatToASCII(float Val, int32_t RoundTo)
|
||||||
|
{
|
||||||
|
uint8_t idx = 0;
|
||||||
|
int32_t i;
|
||||||
|
float value, F, I;
|
||||||
|
uint32_t rnd = 0;
|
||||||
|
|
||||||
|
uint32_t Tmp32 = 0;
|
||||||
|
uint32_t Int32 = 0;
|
||||||
|
uint32_t Frac32 = 0;
|
||||||
|
uint32_t _I32 = 0;
|
||||||
|
uint32_t _F32 = 0;
|
||||||
|
uint32_t d = 0, dd = 0;
|
||||||
|
char tmparray[32];
|
||||||
|
volatile bool minus = false;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
UserData_TypeDef currentData;
|
memset(tmparray, 0, 32);
|
||||||
|
memset(pString, 0, 16);
|
||||||
|
|
||||||
|
value = Val;
|
||||||
|
if(value < 0)
|
||||||
|
minus = true;
|
||||||
|
|
||||||
|
if((Val >= 10000.00000f)/* || (Val <= 0)*/)
|
||||||
|
{
|
||||||
|
if(Val <= 0)
|
||||||
|
{
|
||||||
|
pString[0] = '0';
|
||||||
|
pString[1] = '~';
|
||||||
|
pString[2] = '0';
|
||||||
|
pString[3] = '\0';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
pString[0] = '1';
|
||||||
|
pString[1] = '0';
|
||||||
|
pString[2] = '0';
|
||||||
|
pString[3] = '0';
|
||||||
|
pString[4] = '0';
|
||||||
|
pString[5] = '\0';
|
||||||
|
}
|
||||||
|
|
||||||
|
return pString;
|
||||||
|
}
|
||||||
|
|
||||||
|
value = ABS(Val);
|
||||||
|
rnd = ABS(RoundTo);
|
||||||
|
if(RoundTo < 0)
|
||||||
|
{
|
||||||
|
F = modff(value, &I);
|
||||||
|
while(rnd)
|
||||||
|
{
|
||||||
|
F *= 10.0f;
|
||||||
|
rnd--;
|
||||||
|
d++;
|
||||||
|
}
|
||||||
|
F = roundf(F);
|
||||||
|
|
||||||
|
dd = 1;
|
||||||
|
for(i = 0; i < d; i++)
|
||||||
|
dd *= 10;
|
||||||
|
|
||||||
|
if((uint32_t) F == dd)
|
||||||
|
{
|
||||||
|
F = 0;
|
||||||
|
I += 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
I = roundf(value);
|
||||||
|
F = 0.0f;
|
||||||
|
}
|
||||||
|
|
||||||
|
Int32 = (uint32_t) I;
|
||||||
|
Frac32 = (uint32_t) F;
|
||||||
|
_I32 = Int32;
|
||||||
|
_F32 = Frac32;
|
||||||
|
|
||||||
|
|
||||||
|
idx = 0;
|
||||||
|
tmparray[idx++] = '\0';
|
||||||
|
if((Int32 == 0) && (Frac32 == 0))
|
||||||
|
{
|
||||||
|
if(RoundTo < 0)
|
||||||
|
{
|
||||||
|
for(i = 0; i < abs(RoundTo); i++)
|
||||||
|
tmparray[idx++] = '0';
|
||||||
|
tmparray[idx++] = '~';
|
||||||
|
}
|
||||||
|
tmparray[idx++] = '0';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(RoundTo < 0)
|
||||||
|
{
|
||||||
|
for(i = 0; i < abs(RoundTo); i++)
|
||||||
|
{
|
||||||
|
Tmp32 = Frac32;
|
||||||
|
Frac32 /= 10;
|
||||||
|
Tmp32 = Tmp32 - Frac32 * 10;
|
||||||
|
tmparray[idx++] = '0' + Tmp32;
|
||||||
|
}
|
||||||
|
tmparray[idx++] = '~';
|
||||||
|
}
|
||||||
|
|
||||||
|
if(Int32 != 0)
|
||||||
|
{
|
||||||
|
while(Int32)
|
||||||
|
{
|
||||||
|
Tmp32 = Int32;
|
||||||
|
Int32 /= 10;
|
||||||
|
Tmp32 = Tmp32 - Int32 * 10;
|
||||||
|
tmparray[idx++] = '0' + Tmp32;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
tmparray[idx++] = '0';
|
||||||
|
|
||||||
|
if(minus)
|
||||||
|
{
|
||||||
|
if((_I32 != 0) || (_F32 != 0))
|
||||||
|
tmparray[idx++] = '-';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for(i = 0; i < idx; i++)
|
||||||
|
pString[i] = tmparray[idx - i - 1];
|
||||||
|
|
||||||
|
return pString;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
uint16_t readkey(void)
|
||||||
|
{
|
||||||
|
uint16_t key = 0;
|
||||||
|
|
||||||
|
if(HAL_GPIO_ReadPin(OK_BTN_GPIO_Port, OK_BTN_Pin) == GPIO_PIN_RESET)
|
||||||
|
key |= OK_BTN_Pin;
|
||||||
|
if(HAL_GPIO_ReadPin(UP_BTN_GPIO_Port, UP_BTN_Pin) == GPIO_PIN_RESET)
|
||||||
|
key |= UP_BTN_Pin;
|
||||||
|
if(HAL_GPIO_ReadPin(DN_BTN_GPIO_Port, DN_BTN_Pin) == GPIO_PIN_RESET)
|
||||||
|
key |= DN_BTN_Pin;
|
||||||
|
if(HAL_GPIO_ReadPin(ON_GPIO_Port, ON_Pin) == GPIO_PIN_RESET)
|
||||||
|
key |= ON_Pin;
|
||||||
|
|
||||||
|
return key;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
uint16_t kbhit(void)
|
||||||
|
{
|
||||||
|
volatile uint16_t key;
|
||||||
|
static uint32_t dreb = 0; //äðåáåçã
|
||||||
|
static uint8_t first = 1; //ïðèçíàê ïåðâîãî ìîìåíòà íàæàòèÿ êíîïêè
|
||||||
|
static uint16_t rep = 50;
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
key = readkey();
|
||||||
|
|
||||||
|
if(!key)
|
||||||
|
{
|
||||||
|
if(dreb)
|
||||||
|
dreb--;
|
||||||
|
else first = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(dreb < 3)
|
||||||
|
dreb++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
while((dreb > 0) && (dreb < 3));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if(!key) //åñëè êíîïêè îòïóùåíû
|
||||||
|
{
|
||||||
|
first = 1; //äîñòîâåðíî êíîïêè îòïóùåíû
|
||||||
|
return 0; //âåðíóòü 0
|
||||||
|
}
|
||||||
|
else //èíà÷å
|
||||||
|
{
|
||||||
|
if(first) //îïðåäåëèòü êíîïêó
|
||||||
|
{ //òîëüêî îäèí ðàç
|
||||||
|
first = 0; //çà íàæàòèå
|
||||||
|
repeat = rep = 32;
|
||||||
|
return key; //âåðíóòü â ãëàâíóþ ôóíêöèþ ñîñòîÿíèå êëàâèàòóðû
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(repeat)
|
||||||
|
return 0; //èìèòàöèÿ ñâîáîäíîé êëàâèàòóðû
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(rep > 0)
|
||||||
|
rep >>= 1;
|
||||||
|
else rep = 32;
|
||||||
|
|
||||||
|
repeat = rep;
|
||||||
|
// if(key == KEY_RESET_Pin)
|
||||||
|
// return 0;
|
||||||
|
|
||||||
|
|
||||||
|
return key;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const float exitVar[] = {0.1, 0,2, 0,5, 1, 2, 5, 10, 20, 50, 100, 200, 500};
|
||||||
|
const float fvchVar[] = {0.2, 1, 2, 10};
|
||||||
|
const float fnchVar[] = {0.1, 0.3, 1, 3, 10, 30, 100};
|
||||||
|
|
||||||
|
const char string11[] = "Rgh";
|
||||||
|
const char string12[] = "gRk/vc2";
|
||||||
|
|
||||||
|
const char string21[] = "Ds[jl";
|
||||||
|
const char string22[] = "vD/vc2";
|
||||||
|
|
||||||
|
const char string31[] = "ADX";
|
||||||
|
const char string32[] = "Uw";
|
||||||
|
|
||||||
|
const char string41[] = "AYX";
|
||||||
|
const char string42[] = "rUw";
|
||||||
|
|
||||||
|
const char string51[] = "Gthtuheprf!!!";
|
||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
|
set_type set;
|
||||||
|
set.kPr = 22222;
|
||||||
|
set.kExit =22222;
|
||||||
|
set.FVCH=22222;
|
||||||
/* currentData.OWN; // 0,1 4001 // Àäðåñ óñòðîéñòâà
|
set.FNCH=22222;
|
||||||
currentData.BAUD; // 2,3 4002 // ñêîðîñòü ïåðåäà÷è
|
|
||||||
currentData.INFB; // 4,5 4003 //áèò ÷åòíîñòè
|
|
||||||
currentData.IIN; // 6,7 5001 //òèï çàðÿäà ACP=
|
|
||||||
currentData.IFV =Hp0_1; // 8,9 5002 //ôèëüòð âåðõíèõ ÷àñòîò
|
|
||||||
currentData.IFN=Lp100; // 10,11 5003 //íèæíèõ
|
|
||||||
currentData.IKU=Ku0_1; // 12,13 5004 //Êîýô óñèëåíèÿ
|
|
||||||
currentData.IK0=1; // 14,15 5005 // çíàêîìåñòî 0
|
|
||||||
currentData.IK1='~'; // 16,17 5006 // çíàêîìåñòî 1
|
|
||||||
currentData.IK2=5; // 18,19 5007 // çíàêîìåñòî 2
|
|
||||||
currentData.IK3=4; // çíàêîìåñòî 3
|
|
||||||
currentData.IK4=4; // çíàêîìåñòî 4
|
|
||||||
currentData.IPZ; // 20,21 5008 // ïëàâàþùàÿ çåìëÿ
|
|
||||||
currentData.KCOND; // 24,25,26,27 7501 //
|
|
||||||
currentData.SENS; // 28,29,30,31 7502 //äóáëèðîâàíèå (êîýôèöèýíò ïðåîáðàçîâàíèÿ)
|
|
||||||
currentData.ACCEL; // 32,33,34,35 7503 //
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
HAL_Init();
|
HAL_Init();
|
||||||
|
@ -104,77 +321,69 @@ int main(void)
|
||||||
MX_FLASH_Init();
|
MX_FLASH_Init();
|
||||||
MX_GPIO_Init();
|
MX_GPIO_Init();
|
||||||
MX_DMA_Init();
|
MX_DMA_Init();
|
||||||
MX_TIM3_Init();
|
|
||||||
MX_ADC1_Init();
|
MX_ADC1_Init();
|
||||||
|
MX_TIM3_Init();
|
||||||
MX_SPI1_Init();
|
MX_SPI1_Init();
|
||||||
MX_TIM7_Init();
|
MX_TIM7_Init();
|
||||||
MX_USART1_UART_Init();
|
MX_USART1_UART_Init();
|
||||||
|
|
||||||
|
|
||||||
/////Äåëåì ñòàðò ýêðàíó
|
/////Ìîé êîä çäåñü
|
||||||
|
|
||||||
|
|
||||||
ssd1306_Init();
|
ssd1306_Init();
|
||||||
HAL_GPIO_WritePin(ON_GPIO_Port, ON_Pin , GPIO_PIN_RESET); //ôèêñèðóåì ïèòàíèå ïðèáîðà
|
|
||||||
DrawLogo();
|
DrawLogo();
|
||||||
|
HAL_Delay(100);
|
||||||
ssd1306_Fill(Black);
|
ssd1306_Fill(Black);
|
||||||
ssd1306_UpdateScreen();
|
ssd1306_UpdateScreen();
|
||||||
sh_applysetting(¤tData, dvd); // ïðèìåíÿåì íàñòðîéêè èç ñòóêòóðû ñ ÖÀÏ íà âñþ
|
ssd1306_SetCursor(0, 7);
|
||||||
|
|
||||||
|
while (1)
|
||||||
|
{
|
||||||
|
FontSet(Segoe_UI_Rus_8);
|
||||||
|
OLED_DrawStr(string11, 1, 10, TEXT);
|
||||||
|
OLED_DrawStr(FloatToASCII(2.45f, -3), 40, 10, TEXT);
|
||||||
|
// OLED_DrawStr(FloatToASCII(2.45f, 0), 40, 10, TEXT);
|
||||||
|
// OLED_DrawNum(set.kPr, 40, 10, TEXT);
|
||||||
|
OLED_DrawStr(string12, 80, 10, TEXT);
|
||||||
|
////////////////////////////
|
||||||
|
OLED_DrawStr(string21, 1, 20, TEXT);
|
||||||
|
OLED_DrawNum(set.kExit, 40, 20, CURSOR);
|
||||||
|
OLED_DrawStr(string22, 80, 20, TEXT);
|
||||||
|
////////////////////////////
|
||||||
|
OLED_DrawStr(string31, 2, 30, TEXT);
|
||||||
|
OLED_DrawNum(set.FVCH, 40, 30, TEXT);
|
||||||
|
OLED_DrawStr(string32, 80, 30, TEXT);
|
||||||
|
//////////////
|
||||||
|
OLED_DrawStr(string41, 2, 40, TEXT);
|
||||||
|
OLED_DrawNum(set.FNCH, 40, 40, TEXT);
|
||||||
|
OLED_DrawStr(string42, 80, 40, TEXT);
|
||||||
|
//////////////
|
||||||
|
OLED_DrawStr(string51, 30, 50, TEXT);
|
||||||
|
|
||||||
|
|
||||||
|
//OLED_DrawChar("n", 4, 4, TEXT);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//if(readkey()==OK_BTN_Pin) OLED_DrawStr("jr", 255, 8, White);
|
||||||
|
//if(readkey()==DN_BTN_Pin) OLED_DrawStr("dybp", 255, 20, White);
|
||||||
|
//if(readkey()==UP_BTN_Pin) OLED_DrawStr("ddth[", 255, 32, White);
|
||||||
while (1){
|
//if(readkey()==ON_Pin) OLED_DrawStr("drk", 255, 44, White);
|
||||||
check_reload();
|
//HAL_Delay(300);
|
||||||
|
// ssd1306_Fill(Black);
|
||||||
keysHandler();
|
//; //
|
||||||
if(RefreshScreen){
|
//OLED_DrawStr("Ds[jl", 255, 20, White); //
|
||||||
screenDraw();
|
//OLED_DrawStr("adx", 255, 32, White); // Modbus
|
||||||
ssd1306_UpdateScreen();
|
//OLED_DrawStr("ayx", 255, 44, White);
|
||||||
ssd1306_Fill(0x00);
|
needRefresh=1;
|
||||||
RefreshScreen=0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief System Clock Configuration
|
* @brief System Clock Configuration
|
||||||
* @retval None
|
* @retval None
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void check_reload(void){
|
|
||||||
static __IO uint32_t reloadOffTime=0;
|
|
||||||
uint32_t isReloaded=0;
|
|
||||||
/*__IO uint32_t tick=HAL_GetTick(); //äëÿ çàìåðîâ âðåìåíè */
|
|
||||||
memcpy((void *) &meashBuff[0], (void *) &ADC_Buff[current_buff], DMA_BUFFSIZE<<1);
|
|
||||||
for(uint16_t i=0; i<DMA_BUFFSIZE; i++ ){
|
|
||||||
if (meashBuff[i]>HIGH_GATE_ADC||meashBuff[i]<LOW_GATE_ADC){ //åñëè íàõîäèì ïîðîãîâîå çíà÷åíèå
|
|
||||||
isReloaded=1; //âûñòàâëÿåì ôëàã ïåðåãóçêè
|
|
||||||
break; //âûâàëèâàåìñÿ
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(isReloaded==1){ //åñëè íàøëè ïîðîãîâîå çíà÷åíèå
|
|
||||||
reload_flag=1; //âçâîäèì ãëîáàëüíûé ôëàã ïåðåãðóçêè
|
|
||||||
reloadOffTime=HAL_GetTick()+2000; //óñòàíàâëèâàåì òàéìåð ñáðîñà ïåðåãðóçêè +2 ñåê
|
|
||||||
}
|
|
||||||
uint32_t tick = HAL_GetTick();
|
|
||||||
if(reloadOffTime<tick){reload_flag=0;} // åñëè ïðîøëî 2 ñåêóíäû îò ïåðåãðóçêè ñáðàñûâàåì ãëîáàëüíûé ôëàã
|
|
||||||
|
|
||||||
/*tick=HAL_GetTick()-tick;
|
|
||||||
tick=0; //äëÿ çàìåðà âðåìåíè*/
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void SystemClock_Config(void)
|
void SystemClock_Config(void)
|
||||||
{
|
{
|
||||||
RCC_OscInitTypeDef RCC_OscInitStruct = {0};
|
RCC_OscInitTypeDef RCC_OscInitStruct = {0};
|
||||||
|
@ -193,10 +402,10 @@ void SystemClock_Config(void)
|
||||||
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
|
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
|
||||||
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI;
|
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI;
|
||||||
RCC_OscInitStruct.PLL.PLLM = 8;
|
RCC_OscInitStruct.PLL.PLLM = 8;
|
||||||
RCC_OscInitStruct.PLL.PLLN = 96;
|
RCC_OscInitStruct.PLL.PLLN = 60;
|
||||||
RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
|
RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
|
||||||
RCC_OscInitStruct.PLL.PLLQ = 2;
|
RCC_OscInitStruct.PLL.PLLQ = 2;
|
||||||
RCC_OscInitStruct.PLL.PLLR = 2;
|
RCC_OscInitStruct.PLL.PLLR = 5;
|
||||||
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
|
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
|
||||||
{
|
{
|
||||||
Error_Handler();
|
Error_Handler();
|
||||||
|
@ -207,10 +416,10 @@ void SystemClock_Config(void)
|
||||||
|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
|
|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
|
||||||
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLRCLK;
|
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLRCLK;
|
||||||
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
|
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
|
||||||
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4;
|
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
|
||||||
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2;
|
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
|
||||||
|
|
||||||
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_3) != HAL_OK)
|
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
|
||||||
{
|
{
|
||||||
Error_Handler();
|
Error_Handler();
|
||||||
}
|
}
|
||||||
|
|
513
Core/Src/my.c
513
Core/Src/my.c
|
@ -1,513 +0,0 @@
|
||||||
#include "my.h"
|
|
||||||
#include "main.h"
|
|
||||||
#include "stm32f4xx_hal.h"
|
|
||||||
#include "struct.h"
|
|
||||||
#include "ssd1306.h"
|
|
||||||
|
|
||||||
|
|
||||||
extern UserData_TypeDef currentData;
|
|
||||||
char pString[16] = {0}; //Íóæíà äëÿ FloatToASCII
|
|
||||||
|
|
||||||
|
|
||||||
void sh_applysetting(UserData_TypeDef * currentData, uint16_t DVD){
|
|
||||||
|
|
||||||
|
|
||||||
sh_SetOutGain(currentData->IKU);
|
|
||||||
sh_SetFvch(currentData->IFV);
|
|
||||||
sh_SetFnch(currentData->IFN);
|
|
||||||
sh_SetPlavZeml(currentData->IPZ);
|
|
||||||
WRDAC(DVD);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void sh_SetOutGain(uint16_t IKU){
|
|
||||||
switch (IKU){
|
|
||||||
case Ku0_1:
|
|
||||||
HAL_GPIO_WritePin(A0_GPIO_Port, A0_Pin, GPIO_PIN_RESET);
|
|
||||||
HAL_GPIO_WritePin(A1_GPIO_Port, A1_Pin, GPIO_PIN_SET);
|
|
||||||
HAL_GPIO_WritePin(A4_GPIO_Port, A4_Pin, GPIO_PIN_RESET);
|
|
||||||
HAL_GPIO_WritePin(A5_GPIO_Port, A5_Pin, GPIO_PIN_RESET);
|
|
||||||
HAL_GPIO_WritePin(K10_GPIO_Port, K10_Pin, GPIO_PIN_RESET);
|
|
||||||
break;
|
|
||||||
case Ku0_2:
|
|
||||||
HAL_GPIO_WritePin(A0_GPIO_Port, A0_Pin, GPIO_PIN_RESET);
|
|
||||||
HAL_GPIO_WritePin(A1_GPIO_Port, A1_Pin, GPIO_PIN_SET);
|
|
||||||
HAL_GPIO_WritePin(A4_GPIO_Port, A4_Pin, GPIO_PIN_SET);
|
|
||||||
HAL_GPIO_WritePin(A5_GPIO_Port, A5_Pin, GPIO_PIN_RESET);
|
|
||||||
HAL_GPIO_WritePin(K10_GPIO_Port, K10_Pin, GPIO_PIN_RESET);
|
|
||||||
break;
|
|
||||||
case Ku0_5:
|
|
||||||
HAL_GPIO_WritePin(A0_GPIO_Port, A0_Pin, GPIO_PIN_RESET);
|
|
||||||
HAL_GPIO_WritePin(A1_GPIO_Port, A1_Pin,GPIO_PIN_SET);
|
|
||||||
HAL_GPIO_WritePin(A4_GPIO_Port, A4_Pin, GPIO_PIN_RESET);
|
|
||||||
HAL_GPIO_WritePin(A5_GPIO_Port, A5_Pin, GPIO_PIN_SET);
|
|
||||||
HAL_GPIO_WritePin(K10_GPIO_Port, K10_Pin, GPIO_PIN_RESET);
|
|
||||||
break;
|
|
||||||
case Ku1:
|
|
||||||
HAL_GPIO_WritePin(A0_GPIO_Port, A0_Pin, GPIO_PIN_RESET);
|
|
||||||
HAL_GPIO_WritePin(A1_GPIO_Port, A1_Pin,GPIO_PIN_RESET);
|
|
||||||
HAL_GPIO_WritePin(A4_GPIO_Port, A4_Pin, GPIO_PIN_RESET);
|
|
||||||
HAL_GPIO_WritePin(A5_GPIO_Port, A5_Pin, GPIO_PIN_RESET);
|
|
||||||
HAL_GPIO_WritePin(K10_GPIO_Port, K10_Pin, GPIO_PIN_RESET);
|
|
||||||
break;
|
|
||||||
/*HAL_GPIO_WritePin(A0_GPIO_Port, A0_Pin, GPIO_PIN_RESET);//âàðèê äëÿ ïðîâåðêè
|
|
||||||
HAL_GPIO_WritePin(A1_GPIO_Port, A1_Pin, GPIO_PIN_RESET);
|
|
||||||
HAL_GPIO_WritePin(A4_GPIO_Port, A4_Pin, GPIO_PIN_RESET);
|
|
||||||
HAL_GPIO_WritePin(A5_GPIO_Port, A5_Pin, GPIO_PIN_RESET);
|
|
||||||
HAL_GPIO_WritePin(K10_GPIO_Port, K10_Pin, GPIO_PIN_RESET);*/
|
|
||||||
case Ku2:
|
|
||||||
HAL_GPIO_WritePin(A0_GPIO_Port, A0_Pin, GPIO_PIN_RESET);
|
|
||||||
HAL_GPIO_WritePin(A1_GPIO_Port, A1_Pin, GPIO_PIN_RESET);
|
|
||||||
HAL_GPIO_WritePin(A4_GPIO_Port, A4_Pin, GPIO_PIN_SET);
|
|
||||||
HAL_GPIO_WritePin(A5_GPIO_Port, A5_Pin, GPIO_PIN_RESET);
|
|
||||||
HAL_GPIO_WritePin(K10_GPIO_Port, K10_Pin, GPIO_PIN_RESET);
|
|
||||||
break;
|
|
||||||
case Ku5:
|
|
||||||
HAL_GPIO_WritePin(A0_GPIO_Port, A0_Pin, GPIO_PIN_RESET);
|
|
||||||
HAL_GPIO_WritePin(A1_GPIO_Port, A1_Pin, GPIO_PIN_RESET);
|
|
||||||
HAL_GPIO_WritePin(A4_GPIO_Port, A4_Pin, GPIO_PIN_RESET);
|
|
||||||
HAL_GPIO_WritePin(A5_GPIO_Port, A5_Pin, GPIO_PIN_SET);
|
|
||||||
HAL_GPIO_WritePin(K10_GPIO_Port, K10_Pin, GPIO_PIN_RESET);
|
|
||||||
break;
|
|
||||||
case Ku10:
|
|
||||||
HAL_GPIO_WritePin(A0_GPIO_Port, A0_Pin, GPIO_PIN_RESET);
|
|
||||||
HAL_GPIO_WritePin(A1_GPIO_Port, A1_Pin, GPIO_PIN_RESET);
|
|
||||||
HAL_GPIO_WritePin(A4_GPIO_Port, A4_Pin, GPIO_PIN_RESET);
|
|
||||||
HAL_GPIO_WritePin(A5_GPIO_Port, A5_Pin, GPIO_PIN_RESET);
|
|
||||||
HAL_GPIO_WritePin(K10_GPIO_Port, K10_Pin, GPIO_PIN_SET);
|
|
||||||
/*HAL_GPIO_WritePin(A0_GPIO_Port, A0_Pin, GPIO_PIN_RESET);
|
|
||||||
HAL_GPIO_WritePin(A1_GPIO_Port, A1_Pin, GPIO_PIN_RESET);
|
|
||||||
HAL_GPIO_WritePin(A4_GPIO_Port, A4_Pin, GPIO_PIN_RESET);
|
|
||||||
HAL_GPIO_WritePin(A5_GPIO_Port, A5_Pin, GPIO_PIN_RESET);
|
|
||||||
HAL_GPIO_WritePin(K10_GPIO_Port, K10_Pin, GPIO_PIN_SET);*/
|
|
||||||
break;
|
|
||||||
case Ku20:
|
|
||||||
HAL_GPIO_WritePin(A0_GPIO_Port, A0_Pin, GPIO_PIN_RESET);
|
|
||||||
HAL_GPIO_WritePin(A1_GPIO_Port, A1_Pin, GPIO_PIN_RESET);
|
|
||||||
HAL_GPIO_WritePin(A4_GPIO_Port, A4_Pin, GPIO_PIN_SET);
|
|
||||||
HAL_GPIO_WritePin(A5_GPIO_Port, A5_Pin, GPIO_PIN_RESET);
|
|
||||||
HAL_GPIO_WritePin(K10_GPIO_Port, K10_Pin, GPIO_PIN_SET);
|
|
||||||
break;
|
|
||||||
case Ku50:
|
|
||||||
HAL_GPIO_WritePin(A0_GPIO_Port, A0_Pin, GPIO_PIN_RESET);
|
|
||||||
HAL_GPIO_WritePin(A1_GPIO_Port, A1_Pin, GPIO_PIN_RESET);
|
|
||||||
HAL_GPIO_WritePin(A4_GPIO_Port, A4_Pin, GPIO_PIN_RESET);
|
|
||||||
HAL_GPIO_WritePin(A5_GPIO_Port, A5_Pin, GPIO_PIN_SET);
|
|
||||||
HAL_GPIO_WritePin(K10_GPIO_Port, K10_Pin, GPIO_PIN_SET);
|
|
||||||
break;
|
|
||||||
case Ku100:
|
|
||||||
HAL_GPIO_WritePin(A0_GPIO_Port, A0_Pin, GPIO_PIN_RESET);
|
|
||||||
HAL_GPIO_WritePin(A1_GPIO_Port, A1_Pin, GPIO_PIN_RESET);
|
|
||||||
HAL_GPIO_WritePin(A4_GPIO_Port, A4_Pin,GPIO_PIN_SET);
|
|
||||||
HAL_GPIO_WritePin(A5_GPIO_Port, A5_Pin,GPIO_PIN_SET);
|
|
||||||
HAL_GPIO_WritePin(K10_GPIO_Port, K10_Pin, GPIO_PIN_SET);
|
|
||||||
/* HAL_GPIO_WritePin(A0_GPIO_Port, A0_Pin, GPIO_PIN_SET);
|
|
||||||
HAL_GPIO_WritePin(A1_GPIO_Port, A1_Pin, GPIO_PIN_RESET);
|
|
||||||
HAL_GPIO_WritePin(A4_GPIO_Port, A4_Pin,GPIO_PIN_RESET);
|
|
||||||
HAL_GPIO_WritePin(A5_GPIO_Port, A5_Pin,GPIO_PIN_RESET);
|
|
||||||
HAL_GPIO_WritePin(K10_GPIO_Port, K10_Pin, GPIO_PIN_SET); */
|
|
||||||
break;
|
|
||||||
case Ku200:
|
|
||||||
HAL_GPIO_WritePin(A0_GPIO_Port, A0_Pin, GPIO_PIN_SET);
|
|
||||||
HAL_GPIO_WritePin(A1_GPIO_Port, A1_Pin, GPIO_PIN_RESET);
|
|
||||||
HAL_GPIO_WritePin(A4_GPIO_Port, A4_Pin, GPIO_PIN_SET);
|
|
||||||
HAL_GPIO_WritePin(A5_GPIO_Port, A5_Pin, GPIO_PIN_RESET);
|
|
||||||
HAL_GPIO_WritePin(K10_GPIO_Port, K10_Pin, GPIO_PIN_SET);
|
|
||||||
break;
|
|
||||||
case Ku500:
|
|
||||||
HAL_GPIO_WritePin(A0_GPIO_Port, A0_Pin, GPIO_PIN_SET);
|
|
||||||
HAL_GPIO_WritePin(A1_GPIO_Port, A1_Pin, GPIO_PIN_RESET);
|
|
||||||
HAL_GPIO_WritePin(A4_GPIO_Port, A4_Pin, GPIO_PIN_RESET);
|
|
||||||
HAL_GPIO_WritePin(A5_GPIO_Port, A5_Pin, GPIO_PIN_SET);
|
|
||||||
HAL_GPIO_WritePin(K10_GPIO_Port, K10_Pin, GPIO_PIN_SET);
|
|
||||||
break;
|
|
||||||
/* case Ku1000:
|
|
||||||
HAL_GPIO_WritePin(A0_GPIO_Port, A0_Pin, GPIO_PIN_SET);
|
|
||||||
HAL_GPIO_WritePin(A1_GPIO_Port, A1_Pin, GPIO_PIN_RESET);
|
|
||||||
HAL_GPIO_WritePin(A4_GPIO_Port, A4_Pin, GPIO_PIN_SET);
|
|
||||||
HAL_GPIO_WritePin(A5_GPIO_Port, A5_Pin, GPIO_PIN_SET);
|
|
||||||
HAL_GPIO_WritePin(K10_GPIO_Port, K10_Pin, GPIO_PIN_SET);
|
|
||||||
break; */
|
|
||||||
}
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
void sh_SetFvch(uint16_t IFV){ //DA9 IA2 IA3
|
|
||||||
switch (IFV){
|
|
||||||
case Hp0_1:
|
|
||||||
HAL_GPIO_WritePin(A2_GPIO_Port, A2_Pin, GPIO_PIN_RESET);
|
|
||||||
HAL_GPIO_WritePin(A3_GPIO_Port, A3_Pin, GPIO_PIN_RESET);
|
|
||||||
break;
|
|
||||||
case Hp1:
|
|
||||||
HAL_GPIO_WritePin(A2_GPIO_Port, A2_Pin, GPIO_PIN_SET);
|
|
||||||
HAL_GPIO_WritePin(A3_GPIO_Port, A3_Pin, GPIO_PIN_RESET);
|
|
||||||
break;
|
|
||||||
case Hp2:
|
|
||||||
HAL_GPIO_WritePin(A2_GPIO_Port, A2_Pin, GPIO_PIN_RESET);
|
|
||||||
HAL_GPIO_WritePin(A3_GPIO_Port, A3_Pin, GPIO_PIN_SET);
|
|
||||||
break;
|
|
||||||
case Hp10:
|
|
||||||
HAL_GPIO_WritePin(A2_GPIO_Port, A2_Pin, GPIO_PIN_SET);
|
|
||||||
HAL_GPIO_WritePin(A3_GPIO_Port, A3_Pin, GPIO_PIN_SET);
|
|
||||||
break;
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void sh_SetFnch(uint16_t IFN){
|
|
||||||
// IA6 IA7 IA8
|
|
||||||
//{0.1, 0.3, 1, 3, 10, 30, 100};
|
|
||||||
//Lp100, Lp300, Lp1000, Lp3000, Lp10000, Lp30000, Lp100000
|
|
||||||
switch (IFN){
|
|
||||||
case Lp100:
|
|
||||||
HAL_GPIO_WritePin(A6_GPIO_Port, A6_Pin, GPIO_PIN_RESET);
|
|
||||||
HAL_GPIO_WritePin(A7_GPIO_Port, A7_Pin, GPIO_PIN_RESET);
|
|
||||||
HAL_GPIO_WritePin(A8_GPIO_Port, A8_Pin, GPIO_PIN_RESET);
|
|
||||||
break;
|
|
||||||
case Lp300:
|
|
||||||
HAL_GPIO_WritePin(A6_GPIO_Port, A6_Pin, GPIO_PIN_SET);
|
|
||||||
HAL_GPIO_WritePin(A7_GPIO_Port, A7_Pin, GPIO_PIN_RESET);
|
|
||||||
HAL_GPIO_WritePin(A8_GPIO_Port, A8_Pin, GPIO_PIN_RESET);
|
|
||||||
break;
|
|
||||||
case Lp1000:
|
|
||||||
HAL_GPIO_WritePin(A6_GPIO_Port, A6_Pin, GPIO_PIN_RESET);
|
|
||||||
HAL_GPIO_WritePin(A7_GPIO_Port, A7_Pin, GPIO_PIN_SET);
|
|
||||||
HAL_GPIO_WritePin(A8_GPIO_Port, A8_Pin, GPIO_PIN_RESET);
|
|
||||||
break;
|
|
||||||
case Lp3000:
|
|
||||||
HAL_GPIO_WritePin(A6_GPIO_Port, A6_Pin, GPIO_PIN_SET);
|
|
||||||
HAL_GPIO_WritePin(A7_GPIO_Port, A7_Pin, GPIO_PIN_SET);
|
|
||||||
HAL_GPIO_WritePin(A8_GPIO_Port, A8_Pin, GPIO_PIN_RESET);
|
|
||||||
break;
|
|
||||||
case Lp10000:
|
|
||||||
HAL_GPIO_WritePin(A6_GPIO_Port, A6_Pin, GPIO_PIN_RESET);
|
|
||||||
HAL_GPIO_WritePin(A7_GPIO_Port, A7_Pin, GPIO_PIN_RESET);
|
|
||||||
HAL_GPIO_WritePin(A8_GPIO_Port, A8_Pin, GPIO_PIN_SET);
|
|
||||||
break;
|
|
||||||
case Lp30000:
|
|
||||||
HAL_GPIO_WritePin(A6_GPIO_Port, A6_Pin, GPIO_PIN_SET);
|
|
||||||
HAL_GPIO_WritePin(A7_GPIO_Port, A7_Pin, GPIO_PIN_RESET);
|
|
||||||
HAL_GPIO_WritePin(A8_GPIO_Port, A8_Pin, GPIO_PIN_SET);
|
|
||||||
break;
|
|
||||||
case Lp100000:
|
|
||||||
HAL_GPIO_WritePin(A6_GPIO_Port, A6_Pin, GPIO_PIN_RESET);
|
|
||||||
HAL_GPIO_WritePin(A7_GPIO_Port, A7_Pin, GPIO_PIN_SET);
|
|
||||||
HAL_GPIO_WritePin(A8_GPIO_Port, A8_Pin, GPIO_PIN_SET);
|
|
||||||
break;
|
|
||||||
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
void sh_SetPlavZeml(uint16_t IPZ){
|
|
||||||
if(IPZ==1){
|
|
||||||
HAL_GPIO_WritePin(PZ_GPIO_Port, PZ_Pin, GPIO_PIN_RESET);}
|
|
||||||
else
|
|
||||||
if(IPZ==0){
|
|
||||||
HAL_GPIO_WritePin(PZ_GPIO_Port, PZ_Pin, GPIO_PIN_SET);}
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
void WRDAC(uint16_t DVD)
|
|
||||||
{
|
|
||||||
uint8_t i;
|
|
||||||
uint16_t dvd = DVD;
|
|
||||||
|
|
||||||
dvd <<= 4;
|
|
||||||
for(i = 0; i < 12; i++)
|
|
||||||
{
|
|
||||||
if(dvd & 0x8000)
|
|
||||||
HAL_GPIO_WritePin(STD_GPIO_Port, STD_Pin, GPIO_PIN_SET);
|
|
||||||
else HAL_GPIO_WritePin(STD_GPIO_Port, STD_Pin, GPIO_PIN_RESET);
|
|
||||||
|
|
||||||
HAL_GPIO_WritePin(SCK_GPIO_Port, SCK_Pin, GPIO_PIN_RESET);
|
|
||||||
HAL_GPIO_WritePin(SCK_GPIO_Port, SCK_Pin, GPIO_PIN_SET);
|
|
||||||
dvd <<= 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
HAL_GPIO_WritePin(FL_GPIO_Port, FL_Pin, GPIO_PIN_RESET);
|
|
||||||
HAL_GPIO_WritePin(FL_GPIO_Port, FL_Pin, GPIO_PIN_SET);
|
|
||||||
HAL_GPIO_WritePin(STD_GPIO_Port, STD_Pin, GPIO_PIN_SET);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void DrawSome(int16_t some, uint8_t x, uint8_t y, uint8_t mode){
|
|
||||||
if (some<10) OLED_DrawNum(some, x, y, mode);
|
|
||||||
else OLED_DrawChar(some, x, y, mode);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
int asciiToFloat4(uint16_t str[]){
|
|
||||||
/////îïðåäåëÿåì ãäå òî÷êà
|
|
||||||
float res=0;
|
|
||||||
int dotFounded=0;
|
|
||||||
int dotPos=0;
|
|
||||||
for (int i=0; i<=4; i++){
|
|
||||||
if (str[i]=='~'){ ///todo ñäåëàòü ïðîâåðêó íà íåñêîëüêî òî÷åê
|
|
||||||
if(dotFounded==0){dotFounded=1; dotPos=i;} //ñòàâèì ôëàã íàéäåííîé òî÷êè ïðèñâàèâàåì ïîçèöèþ
|
|
||||||
else return 1; //èíà÷å âîçâðàùàåì îøèáêó 1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
float symbol[5];
|
|
||||||
symbol[0]=str[0];
|
|
||||||
symbol[1]=str[1];
|
|
||||||
symbol[2]=str[2];
|
|
||||||
symbol[3]=str[3];
|
|
||||||
symbol[4]=str[4];
|
|
||||||
|
|
||||||
if(dotFounded==0){
|
|
||||||
res=(float)symbol[0]*10000+(float)symbol[1]*1000+(float)symbol[2]*100+(float)symbol[3]*10+(float)symbol[4];
|
|
||||||
memcpy(¤tData.SENS, &res, sizeof(float)); ///äåëàåì ïðÿìîå êîïèðîâàíèå èíà÷å âîçâðàùàåò íåïîíÿòíî ÷òî
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
switch(dotPos){
|
|
||||||
case 0:
|
|
||||||
res=(float)symbol[1]/(float)10+symbol[2]/(float)100+symbol[3]/(float)1000+symbol[4]/(float)10000;
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
res=symbol[0]+(float)symbol[2]/10+(float)symbol[3]/100+(float)symbol[4]/1000;
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
res=symbol[0]*10+(float)symbol[1]+(float)symbol[3]/10+(float)symbol[4]/100;
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
res=symbol[0]*(float)100+symbol[1]*(float)10+symbol[2]+(float)symbol[4]/10;
|
|
||||||
break;
|
|
||||||
case 4:
|
|
||||||
res=symbol[0]*1000+(float)symbol[1]*100+(float)symbol[2]*10+(float)symbol[3];
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
memcpy(¤tData.SENS, &res, sizeof(float));
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
uint16_t readkey(void)
|
|
||||||
{
|
|
||||||
uint16_t key = 0;
|
|
||||||
|
|
||||||
if(HAL_GPIO_ReadPin(OK_BTN_GPIO_Port, OK_BTN_Pin) == GPIO_PIN_RESET)
|
|
||||||
key |= OK_BTN_Pin;
|
|
||||||
if(HAL_GPIO_ReadPin(UP_BTN_GPIO_Port, UP_BTN_Pin) == GPIO_PIN_RESET)
|
|
||||||
key |= UP_BTN_Pin;
|
|
||||||
if(HAL_GPIO_ReadPin(DN_BTN_GPIO_Port, DN_BTN_Pin) == GPIO_PIN_RESET)
|
|
||||||
key |= DN_BTN_Pin;
|
|
||||||
// if(HAL_GPIO_ReadPin(ON_GPIO_Port, ON_Pin) == GPIO_PIN_RESET) //todo: íîðìàëüíî ñäåëàòü êíîïêó âêëþ÷åíèÿ
|
|
||||||
// key |= ON_Pin;
|
|
||||||
|
|
||||||
return key;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
__IO uint16_t repeat = 0;
|
|
||||||
|
|
||||||
uint16_t kbhit(void)
|
|
||||||
{
|
|
||||||
volatile uint16_t key;
|
|
||||||
static uint32_t dreb = 0; //äðåáåçã
|
|
||||||
static uint8_t first = 1; //ïðèçíàê ïåðâîãî ìîìåíòà íàæàòèÿ êíîïêè
|
|
||||||
static uint16_t rep = 50;
|
|
||||||
|
|
||||||
|
|
||||||
do
|
|
||||||
{
|
|
||||||
key = readkey();
|
|
||||||
|
|
||||||
if(!key)
|
|
||||||
{
|
|
||||||
if(dreb)
|
|
||||||
dreb--;
|
|
||||||
else first = 1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if(dreb < 3)
|
|
||||||
dreb++;
|
|
||||||
}
|
|
||||||
//////
|
|
||||||
//for(int i=30000; i>0; i--){;} /// ïîêà ÷òî âìåñòî àíòèäðåáåçãà
|
|
||||||
//////
|
|
||||||
}
|
|
||||||
while((dreb > 0) && (dreb < 3));
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if(!key) //åñëè êíîïêè îòïóùåíû
|
|
||||||
{
|
|
||||||
first = 1; //äîñòîâåðíî êíîïêè îòïóùåíû
|
|
||||||
return 0; //âåðíóòü 0
|
|
||||||
}
|
|
||||||
else //èíà÷å
|
|
||||||
{
|
|
||||||
if(first) //îïðåäåëèòü êíîïêó
|
|
||||||
{ //òîëüêî îäèí ðàç
|
|
||||||
first = 0; //çà íàæàòèå
|
|
||||||
repeat = rep = 32;
|
|
||||||
return key; //âåðíóòü â ãëàâíóþ ôóíêöèþ ñîñòîÿíèå êëàâèàòóðû
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if(repeat)
|
|
||||||
return 0; //èìèòàöèÿ ñâîáîäíîé êëàâèàòóðû
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if(rep > 0)
|
|
||||||
rep >>= 1;
|
|
||||||
else rep = 32;
|
|
||||||
|
|
||||||
repeat = rep;
|
|
||||||
//if(key == KEY_RESET_Pin)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
|
|
||||||
return key;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
char* FloatToASCII(float Val, int32_t RoundTo)
|
|
||||||
{
|
|
||||||
uint8_t idx = 0;
|
|
||||||
int32_t i;
|
|
||||||
float value, F, I;
|
|
||||||
uint32_t rnd = 0;
|
|
||||||
|
|
||||||
uint32_t Tmp32 = 0;
|
|
||||||
uint32_t Int32 = 0;
|
|
||||||
uint32_t Frac32 = 0;
|
|
||||||
uint32_t _I32 = 0;
|
|
||||||
uint32_t _F32 = 0;
|
|
||||||
uint32_t d = 0, dd = 0;
|
|
||||||
char tmparray[32];
|
|
||||||
volatile bool minus = false;
|
|
||||||
|
|
||||||
memset(tmparray, 0, 32);
|
|
||||||
memset(pString, 0, 16);
|
|
||||||
|
|
||||||
value = Val;
|
|
||||||
if(value < 0)
|
|
||||||
minus = true;
|
|
||||||
|
|
||||||
if((Val >= 10000.00000f)/* || (Val <= 0)*/)
|
|
||||||
{
|
|
||||||
if(Val <= 0)
|
|
||||||
{
|
|
||||||
pString[0] = '0';
|
|
||||||
pString[1] = '~';
|
|
||||||
pString[2] = '0';
|
|
||||||
pString[3] = '\0';
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
pString[0] = '1';
|
|
||||||
pString[1] = '0';
|
|
||||||
pString[2] = '0';
|
|
||||||
pString[3] = '0';
|
|
||||||
pString[4] = '0';
|
|
||||||
pString[5] = '\0';
|
|
||||||
}
|
|
||||||
|
|
||||||
return pString;
|
|
||||||
}
|
|
||||||
|
|
||||||
value = ABS(Val);
|
|
||||||
rnd = ABS(RoundTo);
|
|
||||||
if(RoundTo < 0)
|
|
||||||
{
|
|
||||||
F = modff(value, &I);
|
|
||||||
while(rnd)
|
|
||||||
{
|
|
||||||
F *= 10.0f;
|
|
||||||
rnd--;
|
|
||||||
d++;
|
|
||||||
}
|
|
||||||
F = roundf(F);
|
|
||||||
|
|
||||||
dd = 1;
|
|
||||||
for(i = 0; i < d; i++)
|
|
||||||
dd *= 10;
|
|
||||||
|
|
||||||
if((uint32_t) F == dd)
|
|
||||||
{
|
|
||||||
F = 0;
|
|
||||||
I += 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
I = roundf(value);
|
|
||||||
F = 0.0f;
|
|
||||||
}
|
|
||||||
|
|
||||||
Int32 = (uint32_t) I;
|
|
||||||
Frac32 = (uint32_t) F;
|
|
||||||
_I32 = Int32;
|
|
||||||
_F32 = Frac32;
|
|
||||||
|
|
||||||
|
|
||||||
idx = 0;
|
|
||||||
tmparray[idx++] = '\0';
|
|
||||||
if((Int32 == 0) && (Frac32 == 0))
|
|
||||||
{
|
|
||||||
if(RoundTo < 0)
|
|
||||||
{
|
|
||||||
for(i = 0; i < abs(RoundTo); i++)
|
|
||||||
tmparray[idx++] = '0';
|
|
||||||
tmparray[idx++] = '~';
|
|
||||||
}
|
|
||||||
tmparray[idx++] = '0';
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if(RoundTo < 0)
|
|
||||||
{
|
|
||||||
for(i = 0; i < abs(RoundTo); i++)
|
|
||||||
{
|
|
||||||
Tmp32 = Frac32;
|
|
||||||
Frac32 /= 10;
|
|
||||||
Tmp32 = Tmp32 - Frac32 * 10;
|
|
||||||
tmparray[idx++] = '0' + Tmp32;
|
|
||||||
}
|
|
||||||
tmparray[idx++] = '~';
|
|
||||||
}
|
|
||||||
|
|
||||||
if(Int32 != 0)
|
|
||||||
{
|
|
||||||
while(Int32)
|
|
||||||
{
|
|
||||||
Tmp32 = Int32;
|
|
||||||
Int32 /= 10;
|
|
||||||
Tmp32 = Tmp32 - Int32 * 10;
|
|
||||||
tmparray[idx++] = '0' + Tmp32;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
tmparray[idx++] = '0';
|
|
||||||
|
|
||||||
if(minus)
|
|
||||||
{
|
|
||||||
if((_I32 != 0) || (_F32 != 0))
|
|
||||||
tmparray[idx++] = '-';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for(i = 0; i < idx; i++)
|
|
||||||
pString[i] = tmparray[idx - i - 1];
|
|
||||||
|
|
||||||
return pString;
|
|
||||||
}
|
|
|
@ -1,216 +0,0 @@
|
||||||
#include "screen.h"
|
|
||||||
#include "struct.h"
|
|
||||||
#include "my.h"
|
|
||||||
|
|
||||||
extern int menuPointer;
|
|
||||||
|
|
||||||
extern int reload_flag;
|
|
||||||
extern char* kPrToDispl;
|
|
||||||
extern UserData_TypeDef currentData;
|
|
||||||
|
|
||||||
|
|
||||||
const char STRING_KPR[] = "Rgh";
|
|
||||||
const char STRING_PKL_MS2[] = "gRk/vc2";
|
|
||||||
|
|
||||||
const char STRING_VIHOD[] = "Ds[jl";
|
|
||||||
const char STRING_MV_MS2[] = "vD/vc2";
|
|
||||||
|
|
||||||
const char STRING_FVCH[] = "ADX";
|
|
||||||
const char STRING_GC[] = "Uw";
|
|
||||||
|
|
||||||
const char STRING_FNCH[] = "AYX";
|
|
||||||
const char STRING_KGC[] = "rUw";
|
|
||||||
|
|
||||||
const char STRING_PEREGRUZKA[] = "Gthtuheprf";
|
|
||||||
const char STRING_OBSHAJA_ZEMLJA[] = "JP";
|
|
||||||
const char STRING_PLAVAJUSHAJA_ZEMLA[] = "GP";
|
|
||||||
|
|
||||||
const char STRING_Ku0_1[] = "0~1";
|
|
||||||
const char STRING_Ku0_2[] = "0~2";
|
|
||||||
const char STRING_Ku0_5[] = "0~5";
|
|
||||||
const char STRING_Ku1[] = "1";
|
|
||||||
const char STRING_Ku2[] = "2";
|
|
||||||
const char STRING_Ku5[] = "5";
|
|
||||||
const char STRING_Ku10[] = "10";
|
|
||||||
const char STRING_Ku20[] = "20";
|
|
||||||
const char STRING_Ku50[] = "50";
|
|
||||||
const char STRING_Ku100[] = "100";
|
|
||||||
const char STRING_Ku200[] = "200";
|
|
||||||
const char STRING_Ku500[] = "500";
|
|
||||||
|
|
||||||
const char STRING_Hp0_1[] = "0~1";
|
|
||||||
const char STRING_Hp1[] = "1";
|
|
||||||
const char STRING_Hp2[] = "2";
|
|
||||||
const char STRING_Hp10[] = "10";
|
|
||||||
|
|
||||||
/////Çíà÷åíèÿ LP â Êãö
|
|
||||||
const char STRING_Lp100[] = "0~1";
|
|
||||||
const char STRING_Lp300[] = "0~3";
|
|
||||||
const char STRING_Lp1000[] = "1";
|
|
||||||
const char STRING_Lp3000[] = "3";
|
|
||||||
const char STRING_Lp10000[] = "10";
|
|
||||||
const char STRING_Lp30000[] = "30";
|
|
||||||
const char STRING_Lp100000[] = "100";
|
|
||||||
|
|
||||||
char* kuToDispl;
|
|
||||||
char* fvchTODisp;
|
|
||||||
char* fnchTODisp;
|
|
||||||
char* plavZemlToDisp;
|
|
||||||
|
|
||||||
void screenDraw(void)
|
|
||||||
{
|
|
||||||
|
|
||||||
///////ïðîâåðÿåì ÊÓ/çíà÷åíèå âûõîäà. ïðèñâàåâàåì óêàçàòåëþ ñîîòâåòñâóþùåå çíà÷åíèå
|
|
||||||
switch(currentData.IKU){ ///ñäåëàòü èíëàéí ôóíêöèþ
|
|
||||||
case Ku0_1:
|
|
||||||
kuToDispl=STRING_Ku0_1;
|
|
||||||
break;
|
|
||||||
case Ku0_2:
|
|
||||||
kuToDispl=STRING_Ku0_2;
|
|
||||||
break;
|
|
||||||
case Ku0_5:
|
|
||||||
kuToDispl=STRING_Ku0_5;
|
|
||||||
break;
|
|
||||||
case Ku1:
|
|
||||||
kuToDispl=STRING_Ku1;
|
|
||||||
break;
|
|
||||||
case Ku2:
|
|
||||||
kuToDispl=STRING_Ku2;
|
|
||||||
break;
|
|
||||||
case Ku5:
|
|
||||||
kuToDispl=STRING_Ku5;
|
|
||||||
break;
|
|
||||||
case Ku10:
|
|
||||||
kuToDispl=STRING_Ku10;
|
|
||||||
break;
|
|
||||||
case Ku20:
|
|
||||||
kuToDispl=STRING_Ku20;
|
|
||||||
break;
|
|
||||||
case Ku50:
|
|
||||||
kuToDispl=STRING_Ku50;
|
|
||||||
break;
|
|
||||||
case Ku100:
|
|
||||||
kuToDispl=STRING_Ku100;
|
|
||||||
break;
|
|
||||||
case Ku200:
|
|
||||||
kuToDispl=STRING_Ku200;
|
|
||||||
break;
|
|
||||||
case Ku500:
|
|
||||||
kuToDispl=STRING_Ku500;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
///////ïðîâåðÿåì ÔÂ× âûõîäà. ïðèñâàåâàåì óêàçàòåëþ ñîîòâåòñâóþùåå çíà÷åíèå
|
|
||||||
switch(currentData.IFV){
|
|
||||||
case Hp0_1:
|
|
||||||
fvchTODisp=STRING_Hp0_1;
|
|
||||||
break;
|
|
||||||
case Hp1:
|
|
||||||
fvchTODisp=STRING_Hp1;
|
|
||||||
break;
|
|
||||||
case Hp2:
|
|
||||||
fvchTODisp=STRING_Hp2;
|
|
||||||
break;
|
|
||||||
case Hp10:
|
|
||||||
fvchTODisp=STRING_Hp10;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
switch(currentData.IFN){
|
|
||||||
case Lp100:
|
|
||||||
fnchTODisp=STRING_Lp100;
|
|
||||||
break;
|
|
||||||
case Lp300:
|
|
||||||
fnchTODisp=STRING_Lp300;
|
|
||||||
break;
|
|
||||||
case Lp1000:
|
|
||||||
fnchTODisp=STRING_Lp1000;
|
|
||||||
break;
|
|
||||||
case Lp3000:
|
|
||||||
fnchTODisp=STRING_Lp3000;
|
|
||||||
break;
|
|
||||||
case Lp10000:
|
|
||||||
fnchTODisp=STRING_Lp10000;
|
|
||||||
break;
|
|
||||||
case Lp30000:
|
|
||||||
fnchTODisp=STRING_Lp30000;
|
|
||||||
break;
|
|
||||||
case Lp100000:
|
|
||||||
fnchTODisp=STRING_Lp100000;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
switch(currentData.IPZ){
|
|
||||||
case 0:
|
|
||||||
plavZemlToDisp=STRING_OBSHAJA_ZEMLJA;
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
plavZemlToDisp=STRING_PLAVAJUSHAJA_ZEMLA;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
FontSet(Segoe_UI_Rus_10);
|
|
||||||
OLED_DrawStr(STRING_KPR, 1, 10, TEXT);
|
|
||||||
|
|
||||||
if(menuPointer==KPR0) DrawSome(currentData.IK0, 40, 10, CURSOR);
|
|
||||||
else {DrawSome(currentData.IK0, 40, 10, TEXT);
|
|
||||||
}
|
|
||||||
if(menuPointer==KPR1) DrawSome(currentData.IK1, 47, 10, CURSOR);
|
|
||||||
else {DrawSome(currentData.IK1, 47, 10, TEXT);
|
|
||||||
}
|
|
||||||
if(menuPointer==KPR2) DrawSome(currentData.IK2, 54, 10, CURSOR);
|
|
||||||
else {DrawSome(currentData.IK2, 54, 10, TEXT);
|
|
||||||
}
|
|
||||||
if(menuPointer==KPR3) DrawSome(currentData.IK3, 61, 10, CURSOR);
|
|
||||||
else {DrawSome(currentData.IK3, 61, 10, TEXT);
|
|
||||||
}
|
|
||||||
if(menuPointer==KPR4) DrawSome(currentData.IK4, 68, 10, CURSOR);
|
|
||||||
else {DrawSome(currentData.IK4, 68, 10, TEXT);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
OLED_DrawStr(STRING_PKL_MS2, 80, 10, TEXT);
|
|
||||||
////////////////////////////
|
|
||||||
|
|
||||||
OLED_DrawStr(STRING_VIHOD, 1, 24, TEXT);
|
|
||||||
if(menuPointer==OUT)OLED_DrawStr(kuToDispl, 40, 24, CURSOR);
|
|
||||||
else OLED_DrawStr(kuToDispl, 40, 24, TEXT);
|
|
||||||
OLED_DrawStr(STRING_MV_MS2, 60, 24, TEXT);
|
|
||||||
////////////////////////////
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
OLED_DrawStr(STRING_FVCH, 2, 36, TEXT);
|
|
||||||
if(menuPointer==FVCH) OLED_DrawStr(fvchTODisp, 26, 36, CURSOR);
|
|
||||||
else OLED_DrawStr(fvchTODisp, 26, 36, TEXT);
|
|
||||||
OLED_DrawStr(STRING_GC, 42, 36, TEXT);
|
|
||||||
|
|
||||||
|
|
||||||
//////////////
|
|
||||||
OLED_DrawStr(STRING_FNCH, 58, 36, TEXT);
|
|
||||||
if(menuPointer==FNCH) OLED_DrawStr(fnchTODisp, 83, 36, CURSOR);
|
|
||||||
else OLED_DrawStr(fnchTODisp, 83, 36, TEXT);
|
|
||||||
OLED_DrawStr(STRING_KGC, 103, 36, TEXT);
|
|
||||||
//////////////
|
|
||||||
|
|
||||||
if(menuPointer==GROUND) OLED_DrawStr(plavZemlToDisp, 20, 48, CURSOR);
|
|
||||||
else OLED_DrawStr(plavZemlToDisp, 20, 48, TEXT);
|
|
||||||
|
|
||||||
if(reload_flag){OLED_DrawStr(STRING_PEREGRUZKA, 50, 48, CURSOR);}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
if((menuPointer==GROUND)&&(set.plavZeml==0)) OLED_DrawStr(STRING_OBSHAJA_ZEMLJA, CENTER, 48, CURSOR);
|
|
||||||
else if(set.plavZeml==0) OLED_DrawStr(STRING_OBSHAJA_ZEMLJA, CENTER, 48, TEXT);
|
|
||||||
if((menuPointer==GROUND)&&(set.plavZeml==1)) OLED_DrawStr(STRING_PLAVAJUSHAJA_ZEMLA, CENTER, 48, CURSOR);
|
|
||||||
else if(set.plavZeml==1) OLED_DrawStr(STRING_PLAVAJUSHAJA_ZEMLA, CENTER, 48, TEXT);
|
|
||||||
*/
|
|
||||||
}
|
|
|
@ -9,7 +9,7 @@
|
||||||
extern __IO bool por;
|
extern __IO bool por;
|
||||||
extern __IO bool clbr;
|
extern __IO bool clbr;
|
||||||
const char SERIAL[] ={'0','2','3'};
|
const char SERIAL[] ={'0','2','3'};
|
||||||
extern __IO UserData_TypeDef currentData, pardata_old;
|
extern __IO UserData_TypeDef pardata, pardata_old;
|
||||||
|
|
||||||
__IO uint8_t DMA_Ready = 0;
|
__IO uint8_t DMA_Ready = 0;
|
||||||
|
|
||||||
|
@ -241,24 +241,24 @@ char str[10];
|
||||||
ssd1306_WriteString((char *) SERIAL, Font_6x8, White);
|
ssd1306_WriteString((char *) SERIAL, Font_6x8, White);
|
||||||
|
|
||||||
|
|
||||||
strcpy(str, "Flhtc "); // íàïèñàíî àäðåñ
|
strcpy(str, "Flhtc ");
|
||||||
if(currentData.OWN < 10)
|
if(pardata.OWN < 10)
|
||||||
{
|
{
|
||||||
str[6] = (char) (currentData.OWN + 48);
|
str[6] = (char) (pardata.OWN + 48);
|
||||||
str[7] = 0;
|
str[7] = 0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
if(currentData.OWN < 100)
|
if(pardata.OWN < 100)
|
||||||
{
|
{
|
||||||
str[6] = (char) ((currentData.OWN / 10) + 48);
|
str[6] = (char) ((pardata.OWN / 10) + 48);
|
||||||
str[7] = (char) ((currentData.OWN % 10) + 48);
|
str[7] = (char) ((pardata.OWN % 10) + 48);
|
||||||
str[8] = 0;
|
str[8] = 0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
str[6] = (char) ((currentData.OWN / 100) + 48);
|
str[6] = (char) ((pardata.OWN / 100) + 48);
|
||||||
str[7] = (char) ((currentData.OWN % 100 / 10) + 48);
|
str[7] = (char) ((pardata.OWN % 100 / 10) + 48);
|
||||||
str[8] = (char) ((currentData.OWN % 100 % 10) + 48);
|
str[8] = (char) ((pardata.OWN % 100 % 10) + 48);
|
||||||
str[9] = 0;
|
str[9] = 0;
|
||||||
}
|
}
|
||||||
OLED_DrawStr(str, 2, 51, White);
|
OLED_DrawStr(str, 2, 51, White);
|
||||||
|
|
|
@ -29,16 +29,6 @@ extern int needRefresh;
|
||||||
TIM_HandleTypeDef htim3;
|
TIM_HandleTypeDef htim3;
|
||||||
TIM_HandleTypeDef htim7;
|
TIM_HandleTypeDef htim7;
|
||||||
|
|
||||||
|
|
||||||
__IO int RefreshScreen = 0;
|
|
||||||
__IO uint32_t TimerRefreshScreen = 2;
|
|
||||||
|
|
||||||
|
|
||||||
uint32_t TimerKeys = 2;
|
|
||||||
extern __IO uint16_t repeat;
|
|
||||||
extern __IO uint16_t KEY_STATE;
|
|
||||||
|
|
||||||
|
|
||||||
/* TIM3 init function */
|
/* TIM3 init function */
|
||||||
void MX_TIM3_Init(void)
|
void MX_TIM3_Init(void)
|
||||||
{
|
{
|
||||||
|
@ -56,7 +46,7 @@ void MX_TIM3_Init(void)
|
||||||
htim3.Instance = TIM3;
|
htim3.Instance = TIM3;
|
||||||
htim3.Init.Prescaler = 0;
|
htim3.Init.Prescaler = 0;
|
||||||
htim3.Init.CounterMode = TIM_COUNTERMODE_UP;
|
htim3.Init.CounterMode = TIM_COUNTERMODE_UP;
|
||||||
htim3.Init.Period = 239;
|
htim3.Init.Period = 499;
|
||||||
htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
|
htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
|
||||||
htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
|
htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
|
||||||
if (HAL_TIM_Base_Init(&htim3) != HAL_OK)
|
if (HAL_TIM_Base_Init(&htim3) != HAL_OK)
|
||||||
|
@ -93,7 +83,7 @@ void MX_TIM7_Init(void)
|
||||||
|
|
||||||
/* USER CODE END TIM7_Init 1 */
|
/* USER CODE END TIM7_Init 1 */
|
||||||
htim7.Instance = TIM7;
|
htim7.Instance = TIM7;
|
||||||
htim7.Init.Prescaler = 1999;
|
htim7.Init.Prescaler = 999;
|
||||||
htim7.Init.CounterMode = TIM_COUNTERMODE_UP;
|
htim7.Init.CounterMode = TIM_COUNTERMODE_UP;
|
||||||
htim7.Init.Period = 239;
|
htim7.Init.Period = 239;
|
||||||
htim7.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
|
htim7.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
|
||||||
|
@ -123,8 +113,6 @@ void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle)
|
||||||
/* USER CODE END TIM3_MspInit 0 */
|
/* USER CODE END TIM3_MspInit 0 */
|
||||||
/* TIM3 clock enable */
|
/* TIM3 clock enable */
|
||||||
__HAL_RCC_TIM3_CLK_ENABLE();
|
__HAL_RCC_TIM3_CLK_ENABLE();
|
||||||
|
|
||||||
|
|
||||||
/* USER CODE BEGIN TIM3_MspInit 1 */
|
/* USER CODE BEGIN TIM3_MspInit 1 */
|
||||||
|
|
||||||
/* USER CODE END TIM3_MspInit 1 */
|
/* USER CODE END TIM3_MspInit 1 */
|
||||||
|
@ -138,7 +126,7 @@ void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle)
|
||||||
__HAL_RCC_TIM7_CLK_ENABLE();
|
__HAL_RCC_TIM7_CLK_ENABLE();
|
||||||
|
|
||||||
/* TIM7 interrupt Init */
|
/* TIM7 interrupt Init */
|
||||||
HAL_NVIC_SetPriority(TIM7_IRQn, 1, 0);
|
HAL_NVIC_SetPriority(TIM7_IRQn, 0, 0);
|
||||||
HAL_NVIC_EnableIRQ(TIM7_IRQn);
|
HAL_NVIC_EnableIRQ(TIM7_IRQn);
|
||||||
/* USER CODE BEGIN TIM7_MspInit 1 */
|
/* USER CODE BEGIN TIM7_MspInit 1 */
|
||||||
|
|
||||||
|
@ -177,40 +165,13 @@ void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* tim_baseHandle)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* USER CODE BEGIN 1 */
|
/* USER CODE BEGIN 1 */
|
||||||
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim){
|
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
|
||||||
|
|
||||||
|
|
||||||
__HAL_TIM_CLEAR_IT(htim, TIM_IT_UPDATE);
|
|
||||||
|
|
||||||
if(TimerRefreshScreen)
|
|
||||||
TimerRefreshScreen--;
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
TimerRefreshScreen = 20;
|
|
||||||
RefreshScreen = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
if(needRefresh==1) {//ssd1306_Fill(0x00);
|
||||||
if(needRefresh==1) {ssd1306_UpdateScreen();
|
ssd1306_UpdateScreen();
|
||||||
ssd1306_Fill(0x00);
|
needRefresh=0;
|
||||||
///OFill áëàñê
|
|
||||||
needRefresh=0; ///ñ÷åò÷èê, åñëè ìåíüøå 20 òî ++
|
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
|
|
||||||
if(TimerKeys)
|
|
||||||
TimerKeys--;
|
|
||||||
else
|
|
||||||
{
|
|
||||||
TimerKeys = 5;
|
|
||||||
if(!KEY_STATE) {
|
|
||||||
KEY_STATE = kbhit();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(repeat)
|
|
||||||
repeat--;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* USER CODE END 1 */
|
/* USER CODE END 1 */
|
||||||
|
|
|
@ -55,8 +55,8 @@ ENTRY(Reset_Handler)
|
||||||
/* Highest address of the user mode stack */
|
/* Highest address of the user mode stack */
|
||||||
_estack = 0x20020000; /* end of RAM */
|
_estack = 0x20020000; /* end of RAM */
|
||||||
/* Generate a link error if heap and stack don't fit into RAM */
|
/* Generate a link error if heap and stack don't fit into RAM */
|
||||||
_Min_Heap_Size = 0x800; /* required amount of heap */
|
_Min_Heap_Size = 0x200; /* required amount of heap */
|
||||||
_Min_Stack_Size = 0x800; /* required amount of stack */
|
_Min_Stack_Size = 0x400; /* required amount of stack */
|
||||||
|
|
||||||
/* Specify the memory areas */
|
/* Specify the memory areas */
|
||||||
MEMORY
|
MEMORY
|
||||||
|
|
Loading…
Reference in New Issue