modified: A1210.ioc
modified: Core/Inc/flash.h modified: Core/Inc/my.h modified: Core/Inc/struct.h modified: Core/Src/flash.c modified: Core/Src/keys.c modified: Core/Src/main.c modified: Core/Src/my.c modified: Core/Src/screen.c modified: Core/Src/usart.cmain
parent
d9756cf786
commit
d289acf169
43
A1210.ioc
43
A1210.ioc
|
@ -249,48 +249,49 @@ ProjectManager.TargetToolchain=TrueSTUDIO
|
|||
ProjectManager.ToolChainLocation=
|
||||
ProjectManager.UnderRoot=true
|
||||
ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false-HAL-true,2-MX_DMA_Init-DMA-false-HAL-true,3-SystemClock_Config-RCC-false-HAL-false,4-MX_ADC1_Init-ADC1-false-HAL-true,5-MX_TIM3_Init-TIM3-false-HAL-true,6-MX_SPI1_Init-SPI1-false-HAL-true,7-MX_TIM7_Init-TIM7-false-HAL-true,8-MX_USART1_UART_Init-USART1-false-HAL-true
|
||||
RCC.AHBFreq_Value=24000000
|
||||
RCC.AHBFreq_Value=96000000
|
||||
RCC.APB1CLKDivider=RCC_HCLK_DIV4
|
||||
RCC.APB1Freq_Value=24000000
|
||||
RCC.APB1TimFreq_Value=24000000
|
||||
RCC.APB2Freq_Value=24000000
|
||||
RCC.APB2TimFreq_Value=24000000
|
||||
RCC.APB1TimFreq_Value=48000000
|
||||
RCC.APB2CLKDivider=RCC_HCLK_DIV2
|
||||
RCC.APB2Freq_Value=48000000
|
||||
RCC.APB2TimFreq_Value=96000000
|
||||
RCC.CECFreq_Value=32786.88524590164
|
||||
RCC.CortexFreq_Value=24000000
|
||||
RCC.FCLKCortexFreq_Value=24000000
|
||||
RCC.CortexFreq_Value=96000000
|
||||
RCC.FCLKCortexFreq_Value=96000000
|
||||
RCC.FMPI2C1Freq_Value=24000000
|
||||
RCC.FamilyName=M
|
||||
RCC.HCLKFreq_Value=24000000
|
||||
RCC.IPParameters=AHBFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,CECFreq_Value,CortexFreq_Value,FCLKCortexFreq_Value,FMPI2C1Freq_Value,FamilyName,HCLKFreq_Value,MCO2PinFreq_Value,PLLCLKFreq_Value,PLLI2SPCLKFreq_Value,PLLI2SQCLKFreq_Value,PLLI2SRCLKFreq_Value,PLLM,PLLN,PLLQCLKFreq_Value,PLLR,PLLRCLKFreq_Value,PLLSAIPCLKFreq_Value,PLLSAIQCLKFreq_Value,PWRFreq_Value,SAIAFreq_Value,SAIBFreq_Value,SDIOFreq_Value,SPDIFRXFreq_Value,SYSCLKFreq_VALUE,SYSCLKSource,USBFreq_Value,VCOI2SInputFreq_Value,VCOI2SOutputFreq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOSAIInputFreq_Value,VCOSAIOutputFreq_Value
|
||||
RCC.MCO2PinFreq_Value=24000000
|
||||
RCC.PLLCLKFreq_Value=60000000
|
||||
RCC.HCLKFreq_Value=96000000
|
||||
RCC.IPParameters=AHBFreq_Value,APB1CLKDivider,APB1Freq_Value,APB1TimFreq_Value,APB2CLKDivider,APB2Freq_Value,APB2TimFreq_Value,CECFreq_Value,CortexFreq_Value,FCLKCortexFreq_Value,FMPI2C1Freq_Value,FamilyName,HCLKFreq_Value,MCO2PinFreq_Value,PLLCLKFreq_Value,PLLI2SPCLKFreq_Value,PLLI2SQCLKFreq_Value,PLLI2SRCLKFreq_Value,PLLM,PLLN,PLLQCLKFreq_Value,PLLRCLKFreq_Value,PLLSAIPCLKFreq_Value,PLLSAIQCLKFreq_Value,PWRFreq_Value,SAIAFreq_Value,SAIBFreq_Value,SDIOFreq_Value,SPDIFRXFreq_Value,SYSCLKFreq_VALUE,SYSCLKSource,USBFreq_Value,VCOI2SInputFreq_Value,VCOI2SOutputFreq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOSAIInputFreq_Value,VCOSAIOutputFreq_Value
|
||||
RCC.MCO2PinFreq_Value=96000000
|
||||
RCC.PLLCLKFreq_Value=96000000
|
||||
RCC.PLLI2SPCLKFreq_Value=96000000
|
||||
RCC.PLLI2SQCLKFreq_Value=96000000
|
||||
RCC.PLLI2SRCLKFreq_Value=96000000
|
||||
RCC.PLLM=8
|
||||
RCC.PLLN=60
|
||||
RCC.PLLQCLKFreq_Value=60000000
|
||||
RCC.PLLR=5
|
||||
RCC.PLLRCLKFreq_Value=24000000
|
||||
RCC.PLLN=96
|
||||
RCC.PLLQCLKFreq_Value=96000000
|
||||
RCC.PLLRCLKFreq_Value=96000000
|
||||
RCC.PLLSAIPCLKFreq_Value=96000000
|
||||
RCC.PLLSAIQCLKFreq_Value=96000000
|
||||
RCC.PWRFreq_Value=24000000
|
||||
RCC.PWRFreq_Value=96000000
|
||||
RCC.SAIAFreq_Value=96000000
|
||||
RCC.SAIBFreq_Value=96000000
|
||||
RCC.SDIOFreq_Value=60000000
|
||||
RCC.SPDIFRXFreq_Value=24000000
|
||||
RCC.SYSCLKFreq_VALUE=24000000
|
||||
RCC.SDIOFreq_Value=96000000
|
||||
RCC.SPDIFRXFreq_Value=96000000
|
||||
RCC.SYSCLKFreq_VALUE=96000000
|
||||
RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLRCLK
|
||||
RCC.USBFreq_Value=60000000
|
||||
RCC.USBFreq_Value=96000000
|
||||
RCC.VCOI2SInputFreq_Value=1000000
|
||||
RCC.VCOI2SOutputFreq_Value=192000000
|
||||
RCC.VCOInputFreq_Value=2000000
|
||||
RCC.VCOOutputFreq_Value=120000000
|
||||
RCC.VCOOutputFreq_Value=192000000
|
||||
RCC.VCOSAIInputFreq_Value=1000000
|
||||
RCC.VCOSAIOutputFreq_Value=192000000
|
||||
SH.ADCx_IN0.0=ADC1_IN0,IN0
|
||||
SH.ADCx_IN0.ConfNb=1
|
||||
SPI1.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_8
|
||||
SPI1.CalculateBaudRate=3.0 MBits/s
|
||||
SPI1.CalculateBaudRate=6.0 MBits/s
|
||||
SPI1.Direction=SPI_DIRECTION_2LINES
|
||||
SPI1.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,BaudRatePrescaler
|
||||
SPI1.Mode=SPI_MODE_MASTER
|
||||
|
|
|
@ -14,12 +14,13 @@
|
|||
#include "main.h"
|
||||
|
||||
|
||||
|
||||
#define USERPAGE ((uint32_t) 0x08060000)
|
||||
#define USERPAGECOR ((uint32_t) 0x08040000)
|
||||
#define USERPAGEPAR ((uint32_t) 0x08060000)
|
||||
|
||||
|
||||
|
||||
void MX_FLASH_Init(void);
|
||||
void rdPar(void);
|
||||
|
||||
|
||||
#endif /* INC_FLASH_H_ */
|
||||
|
|
|
@ -76,12 +76,19 @@ 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 { 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 { Ku0_1 = 0, Ku0_2, Ku0_5, Ku1, Ku2, Ku5, Ku10, Ku20, Ku50, Ku100, Ku200, Ku500, Ku1000 } typeIKU;
|
||||
typedef enum { Hp0_2 = 0, Hp1, Hp2, Hp10 } typeIFV;
|
||||
typedef enum { Lp100 = 0, Lp300, Lp1000, Lp3000, Lp10000, Lp30000, Lp100000 } typeIFN;
|
||||
|
||||
|
||||
typedef enum
|
||||
{
|
||||
AMPLIFIER = 0,
|
||||
CALLIBRATION
|
||||
|
||||
}workModeEnum;
|
||||
|
||||
typedef enum //ïåðå÷èñëåíèå äëÿ îñíîâíîãî ìåíþ
|
||||
{
|
||||
WORK = 0,
|
||||
KPR0 ,
|
||||
|
@ -89,7 +96,9 @@ typedef enum
|
|||
KPR2 ,
|
||||
KPR3 ,
|
||||
KPR4 ,
|
||||
KPR5 ,
|
||||
KPRSAVING,
|
||||
UNITSELECT,
|
||||
OUT ,
|
||||
FVCH ,
|
||||
FNCH,
|
||||
|
@ -97,12 +106,29 @@ typedef enum
|
|||
SAVING
|
||||
}mainMenuState;
|
||||
|
||||
int asciiToFloat4(uint16_t str[]);
|
||||
typedef enum //ïåðå÷èñëåíèå äëÿ ñåðâèñíîãî ìåíþ
|
||||
{
|
||||
KUSET = 0,
|
||||
DAC0SET ,
|
||||
DAC1SET ,
|
||||
DAC2SET ,
|
||||
DAC3SET ,
|
||||
SAVE
|
||||
}callibrationMenuState;
|
||||
|
||||
|
||||
typedef enum{ //ïåðå÷èñëåíèÿ äëÿ åäèíèö èçìåðåíèÿ
|
||||
MS2=0,
|
||||
PA,
|
||||
H
|
||||
} unit;
|
||||
|
||||
int asciiToFloat4(uint16_t str[]); //todo: çàïðàâèòü ôóíêöèè íå èñïîëüçóþùèåñÿ âíå
|
||||
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);
|
||||
void sh_applysetting(UserData_TypeDef * currentData);
|
||||
|
||||
#endif /* INC_MY_H_ */
|
||||
|
|
|
@ -78,17 +78,34 @@ typedef struct
|
|||
uint16_t IK2; // 18,19 5007 // знакоместо 2
|
||||
uint16_t IK3; // 20,21 // знакоместо 3
|
||||
uint16_t IK4; // 22,23 // знакоместо 4
|
||||
|
||||
uint16_t IK5; // 22,23 // çíàêîìåñòî 4
|
||||
|
||||
uint16_t IPZ; // 24,25 5008 // плавающая земля
|
||||
|
||||
float KCOND; // 28,29,30,31 7501 //
|
||||
float SENS; // 32,33,34,35 7502 //дублирование (коэфициэнт преобразования)
|
||||
uint16_t UNIT; //Îòîáðàæàåìûå âåëè÷èíû íà ýêðàíå
|
||||
|
||||
} UserData_TypeDef; // ********LENGTH = 39 bytes***********
|
||||
|
||||
|
||||
typedef struct {
|
||||
|
||||
uint16_t Ku0_1;
|
||||
uint16_t Ku0_2;
|
||||
uint16_t Ku0_5;
|
||||
uint16_t Ku1;
|
||||
uint16_t Ku2;
|
||||
uint16_t Ku5;
|
||||
uint16_t Ku10;
|
||||
uint16_t Ku20;
|
||||
uint16_t Ku50;
|
||||
uint16_t Ku100;
|
||||
uint16_t Ku200;
|
||||
uint16_t Ku500;
|
||||
uint16_t Ku1000;
|
||||
|
||||
} CorrectonKuStruct_TypeDef;
|
||||
|
||||
|
||||
|
||||
|
|
128
Core/Src/flash.c
128
Core/Src/flash.c
|
@ -12,9 +12,17 @@
|
|||
#include "stm32f4xx_hal_flash_ex.h"
|
||||
|
||||
|
||||
static FLASH_EraseInitTypeDef FlashEraseInit;
|
||||
//ÿ õî÷ó ïèñàòü êîððåêöèþ è ïàðàìåòðû íà ðàçíûõ ñòðàíèöàõ. Îíè ïî 128ê, ýòî íå ðàöèîíàëüíî.
|
||||
|
||||
static FLASH_EraseInitTypeDef FlashEraseInitPar; // ñòðóêòóðà äëÿ ñòèðàíèÿ ïàðàìåòðîâ
|
||||
static FLASH_EraseInitTypeDef FlashEraseInitCor; // ñòðóêòóðà äëÿ ñòèðàèÿ êîððåêöèè
|
||||
|
||||
|
||||
__IO extern UserData_TypeDef currentData;
|
||||
|
||||
__IO extern uint16_t correctedKu[13]; // ìîÿ ñòðóêòóðà ñ êîððåêöèÿìè
|
||||
|
||||
|
||||
__IO uint16_t COUNT_EXT = 0;
|
||||
|
||||
|
||||
|
@ -24,16 +32,24 @@ void MX_FLASH_Init(void)
|
|||
{
|
||||
__HAL_RCC_SYSCFG_CLK_ENABLE();
|
||||
|
||||
FlashEraseInit.TypeErase = FLASH_TYPEERASE_SECTORS;
|
||||
FlashEraseInit.Banks = FLASH_BANK_1;
|
||||
FlashEraseInit.Sector = FLASH_SECTOR_7;
|
||||
FlashEraseInit.NbSectors = 1;
|
||||
FlashEraseInit.VoltageRange = FLASH_VOLTAGE_RANGE_3;
|
||||
FlashEraseInitPar.TypeErase = FLASH_TYPEERASE_SECTORS;
|
||||
FlashEraseInitPar.Banks = FLASH_BANK_1;
|
||||
FlashEraseInitPar.Sector = FLASH_SECTOR_7;
|
||||
FlashEraseInitPar.NbSectors = 1;
|
||||
FlashEraseInitPar.VoltageRange = FLASH_VOLTAGE_RANGE_3;
|
||||
|
||||
FlashEraseInitCor.TypeErase = FLASH_TYPEERASE_SECTORS;
|
||||
FlashEraseInitCor.Banks = FLASH_BANK_1;
|
||||
FlashEraseInitCor.Sector = FLASH_SECTOR_6;
|
||||
FlashEraseInitCor.NbSectors = 1;
|
||||
FlashEraseInitCor.VoltageRange = FLASH_VOLTAGE_RANGE_3;
|
||||
|
||||
rdPar();
|
||||
rdCor();
|
||||
}
|
||||
|
||||
|
||||
|
||||
void wrPar(void)
|
||||
{
|
||||
__IO uint32_t Address, lenpar, i;
|
||||
|
@ -41,15 +57,15 @@ __IO uint32_t *pData;
|
|||
uint32_t SECTORError = 0;
|
||||
|
||||
lenpar = sizeof(UserData_TypeDef);
|
||||
while(lenpar % 4) {
|
||||
while(lenpar % 4) { //äîïîëíÿåì ñòðîêó äî òåõ ïîð ïîêà îíà íå ñòàíåò äåëèòñÿ íà 4
|
||||
lenpar++;
|
||||
}
|
||||
lenpar >>= 2;
|
||||
lenpar >>= 2; //äåëèì íà 4
|
||||
|
||||
HAL_FLASH_Unlock();
|
||||
if(HAL_FLASHEx_Erase(&FlashEraseInit, &SECTORError) == HAL_OK)
|
||||
HAL_FLASH_Unlock(); //îòêðûâàåì ïàìÿòü íà çàïèñü
|
||||
if(HAL_FLASHEx_Erase(&FlashEraseInitPar, &SECTORError) == HAL_OK) //
|
||||
{
|
||||
Address = USERPAGE;
|
||||
Address = USERPAGEPAR;
|
||||
pData = (uint32_t *) ¤tData;
|
||||
for(i = 0; i < lenpar; i++)
|
||||
{
|
||||
|
@ -61,6 +77,32 @@ uint32_t SECTORError = 0;
|
|||
}
|
||||
|
||||
|
||||
void wrCor(void) ///ïîïðîáóåì ïåðåïèñàòü ýòî ïîä ìîé ìàññèâ
|
||||
{
|
||||
__IO uint32_t Address, lenpar, i;
|
||||
__IO uint32_t *pData;
|
||||
uint32_t SECTORError = 0;
|
||||
|
||||
lenpar = sizeof(correctedKu); // èçìåðÿåì äëèííó ìàññèâà
|
||||
while(lenpar % 4) { //äîïîëíÿåì ñòðîêó äî òåõ ïîð ïîêà îíà íå ñòàíåò äåëèòñÿ íà 4
|
||||
lenpar++;
|
||||
}
|
||||
lenpar >>= 2; //äåëèì íà 4
|
||||
|
||||
HAL_FLASH_Unlock(); //îòêðûâàåì ïàìÿòü íà çàïèñü
|
||||
if(HAL_FLASHEx_Erase(&FlashEraseInitCor, &SECTORError) == HAL_OK) //ñòèðàåì ñòðàíèöó ïî ñòðóêòóðå
|
||||
{
|
||||
Address = USERPAGECOR;
|
||||
pData = (uint32_t *) &correctedKu;
|
||||
for(i = 0; i < lenpar; i++)
|
||||
{
|
||||
HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, Address, *pData++);
|
||||
Address += 4;
|
||||
}
|
||||
}
|
||||
HAL_FLASH_Lock();
|
||||
}
|
||||
|
||||
|
||||
void rdPar(void)
|
||||
{
|
||||
|
@ -69,30 +111,33 @@ uint32_t lenpar;
|
|||
volatile bool rewrite = false;
|
||||
|
||||
lenpar = sizeof(UserData_TypeDef);
|
||||
memcpy((void *) ¤tData, (void *) USERPAGE, lenpar);
|
||||
memcpy((void *) ¤tData, (void *) USERPAGEPAR, lenpar);
|
||||
|
||||
//pardata.OWN = 0xffff;//todo
|
||||
if(currentData.OWN == 0xffff)
|
||||
//pardata.OWN = 0xffff;//todo //ñêîðððåêòèðîâàòü áèòûå çíà÷åíèÿ
|
||||
if(currentData.OWN == 0xffff) //åñëè ïåðâàÿ çàïèñü è âåçäå ïóñòî
|
||||
{
|
||||
currentData.OWN = 1; //àäðåññ íîäáàñ
|
||||
currentData.OWN = 1; //ñòàâèì ïàðàìåòðû ïî óìîë÷àíèþ
|
||||
currentData.BAUD = 5;
|
||||
currentData.INFB = 1;
|
||||
|
||||
currentData.IIN = CHARGE;
|
||||
currentData.IFV = Hp0_1;
|
||||
currentData.IFV = Hp0_2;
|
||||
currentData.IFN = Lp100000;
|
||||
currentData.IKU = Ku1;
|
||||
currentData.IK0 = 1;
|
||||
currentData.IK1 = 0;
|
||||
currentData.IK2 = 0;
|
||||
currentData.IK2 = '~';
|
||||
currentData.IK3 = 0;
|
||||
currentData.IK4 = 0;
|
||||
|
||||
currentData.IK5 = 0;
|
||||
currentData.IPZ =0;
|
||||
|
||||
|
||||
currentData.KCOND = 1.0f;
|
||||
currentData.SENS = 1.0f;
|
||||
|
||||
currentData.UNIT =MS2;
|
||||
|
||||
rewrite = true;
|
||||
}
|
||||
|
||||
|
@ -105,6 +150,53 @@ volatile bool rewrite = false;
|
|||
}
|
||||
|
||||
|
||||
void rdCor(void)
|
||||
{
|
||||
uint8_t i;
|
||||
uint32_t lenpar;
|
||||
volatile bool rewrite = false;
|
||||
|
||||
lenpar = sizeof(correctedKu);
|
||||
memcpy((void *) &correctedKu, (void *) USERPAGECOR, lenpar);
|
||||
|
||||
//pardata.OWN = 0xffff;//todo //åñëè çíà÷åíèÿ áîëüøå 4095 òî ïåðåïèñàòü íà îáû÷íûå 4095
|
||||
|
||||
/*
|
||||
if(currentData.OWN == 0xffff) //åñëè ïåðâàÿ çàïèñü è âåçäå ïóñòî
|
||||
{
|
||||
currentData.OWN = 1; //ñòàâèì ïàðàìåòðû ïî óìîë÷àíèþ
|
||||
currentData.BAUD = 5;
|
||||
currentData.INFB = 1;
|
||||
|
||||
currentData.IIN = CHARGE;
|
||||
currentData.IFV = Hp0_2;
|
||||
currentData.IFN = Lp100000;
|
||||
currentData.IKU = Ku1;
|
||||
currentData.IK0 = 1;
|
||||
currentData.IK1 = 0;
|
||||
currentData.IK2 = '~';
|
||||
currentData.IK3 = 0;
|
||||
currentData.IK4 = 0;
|
||||
currentData.IK5 = 0;
|
||||
currentData.IPZ =0;
|
||||
|
||||
|
||||
currentData.KCOND = 1.0f;
|
||||
currentData.SENS = 1.0f;
|
||||
|
||||
currentData.UNIT =MS2;
|
||||
|
||||
rewrite = true;
|
||||
}
|
||||
|
||||
////////////////////
|
||||
if(rewrite)
|
||||
{
|
||||
rewrite = false;
|
||||
wrCor();
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
149
Core/Src/keys.c
149
Core/Src/keys.c
|
@ -8,7 +8,9 @@ extern UserData_TypeDef currentData;
|
|||
extern int menuPointer;
|
||||
extern uint16_t dvd;
|
||||
extern int ignoreOff_flag;
|
||||
uint16_t kpr_temp[5];
|
||||
uint16_t kpr_temp[6];
|
||||
|
||||
extern uint16_t correctedKu[13];
|
||||
|
||||
__IO uint16_t KEY_STATE = 0;
|
||||
|
||||
|
@ -26,6 +28,8 @@ void keysHandler(void){
|
|||
menuPointer++; //číŕ÷ĺ ńëĺäóţůčé ďóíęň
|
||||
}
|
||||
|
||||
|
||||
|
||||
switch (menuPointer){
|
||||
|
||||
case KPR0:
|
||||
|
@ -83,13 +87,16 @@ void keysHandler(void){
|
|||
}
|
||||
break;
|
||||
|
||||
|
||||
|
||||
case KPR4:
|
||||
|
||||
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--;
|
||||
|
@ -97,57 +104,167 @@ void keysHandler(void){
|
|||
}
|
||||
break;
|
||||
|
||||
case KPR5:
|
||||
|
||||
if((key==UP_BTN_Pin)) {
|
||||
if((currentData.IK5<9)&&(currentData.IK5>=0)) currentData.IK5++;
|
||||
else if(currentData.IK5=='~') currentData.IK5=0;
|
||||
else if(currentData.IK5==9) currentData.IK5='~';
|
||||
}
|
||||
|
||||
if((key==DN_BTN_Pin)) {
|
||||
if(currentData.IK5==0) currentData.IK5='~';
|
||||
else if ((currentData.IK5<=9)&&(currentData.IK5>0)) currentData.IK5--;
|
||||
else if(currentData.IK5='~') currentData.IK5=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){
|
||||
kpr_temp[5]=currentData.IK5;
|
||||
|
||||
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; // ÏÅÐÅÑÊÎ×ÈÒ ÑÀÌ
|
||||
currentData.IK5=kpr_temp[5];
|
||||
menuPointer=KPR0; // ÏÅÐÅÑÊÎ×ÈÒ ÑÀÌ
|
||||
//ďčřĺě ÷ňî çíŕ÷ĺíč˙ íĺ âĺđíű
|
||||
//đčńóĺě íóëč
|
||||
};
|
||||
menuPointer++;
|
||||
}
|
||||
else
|
||||
{sh_applysetting(¤tData);
|
||||
menuPointer++;}
|
||||
break;
|
||||
|
||||
case UNITSELECT:
|
||||
if((key==UP_BTN_Pin)&&(currentData.UNIT<H)) {currentData.UNIT++; sh_applysetting(¤tData);}
|
||||
if((key==DN_BTN_Pin)&&(currentData.UNIT>MS2)) {currentData.UNIT--; sh_applysetting(¤tData);}
|
||||
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);}
|
||||
if((key==UP_BTN_Pin)&&(currentData.IKU<Ku1000)) {currentData.IKU++; sh_applysetting(¤tData);}
|
||||
if((key==DN_BTN_Pin)&&(currentData.IKU>Ku0_1)) {currentData.IKU--; sh_applysetting(¤tData);}
|
||||
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);}
|
||||
if((key==UP_BTN_Pin)&&(currentData.IFV<Hp10)) {currentData.IFV++; sh_applysetting(¤tData);}
|
||||
if((key==DN_BTN_Pin)&&(currentData.IFV>Hp0_2)) {currentData.IFV--; sh_applysetting(¤tData);}
|
||||
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);}
|
||||
if((key==UP_BTN_Pin)&&(currentData.IFN<Lp100000)) {currentData.IFN++; sh_applysetting(¤tData);}
|
||||
if((key==DN_BTN_Pin)&&(currentData.IFN>Lp100)) {currentData.IFN--; sh_applysetting(¤tData);}
|
||||
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);}
|
||||
if((key==UP_BTN_Pin)) {currentData.IPZ=1; sh_applysetting(¤tData);}
|
||||
if((key==DN_BTN_Pin)) {currentData.IPZ=0; sh_applysetting(¤tData);}
|
||||
break;
|
||||
|
||||
case SAVING:
|
||||
wrPar();
|
||||
menuPointer=WORK;
|
||||
sh_applysetting(¤tData, dvd);//todo Ñäåëàòü ïî íîðìàëüíîìó.
|
||||
sh_applysetting(¤tData);//todo Ñäåëàòü ïî íîðìàëüíîìó.
|
||||
break;
|
||||
|
||||
|
||||
} //close switch
|
||||
|
||||
|
||||
|
||||
|
||||
}; //close keysHandler
|
||||
|
||||
|
||||
void keysHandlerCallibration(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))
|
||||
{ wrCor();
|
||||
HAL_GPIO_WritePin(ON_GPIO_Port, ON_Pin , GPIO_PIN_SET);} //
|
||||
|
||||
if(key==OK_BTN_Pin){ //Ïî íàæàòèþ ÎÊ
|
||||
//if(menuPointer==GROUND){menuPointer=WORK;} //todo ñäåëàé ñîõðàíåíèå //Åñëè êðàéíèé ïóíêò ìåíþ òî âîçâðàùàåìñÿ ê ðàáîòå
|
||||
sh_applysetting(¤tData);
|
||||
menuPointer++; //èíà÷å ñëåäóþùèé ïóíêò
|
||||
}
|
||||
|
||||
|
||||
|
||||
switch (menuPointer){
|
||||
|
||||
|
||||
case KUSET:
|
||||
if((key==UP_BTN_Pin)&&(currentData.IKU<Ku1000)) {currentData.IKU++; sh_applysetting(¤tData);}
|
||||
if((key==DN_BTN_Pin)&&(currentData.IKU>Ku0_1)) {currentData.IKU--; sh_applysetting(¤tData);}
|
||||
break;
|
||||
|
||||
case DAC0SET:
|
||||
if(key==UP_BTN_Pin) {
|
||||
if((correctedKu[currentData.IKU]+1000<=4095)) correctedKu[currentData.IKU]=correctedKu[currentData.IKU]+1000;
|
||||
sh_applysetting(¤tData);
|
||||
};
|
||||
if((key==DN_BTN_Pin)) {
|
||||
if((correctedKu[currentData.IKU]-1000>=1)) correctedKu[currentData.IKU]=correctedKu[currentData.IKU]-1000;
|
||||
sh_applysetting(¤tData);
|
||||
}
|
||||
break;
|
||||
|
||||
case DAC1SET:
|
||||
if(key==UP_BTN_Pin) {
|
||||
if((correctedKu[currentData.IKU]+100<=4095)) correctedKu[currentData.IKU]=correctedKu[currentData.IKU]+100;
|
||||
sh_applysetting(¤tData);
|
||||
};
|
||||
if((key==DN_BTN_Pin)) {
|
||||
if((correctedKu[currentData.IKU]-100>=1)) correctedKu[currentData.IKU]=correctedKu[currentData.IKU]-100;
|
||||
sh_applysetting(¤tData);
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
|
||||
case DAC2SET:
|
||||
if(key==UP_BTN_Pin) {
|
||||
if((correctedKu[currentData.IKU]+10<=4095)) correctedKu[currentData.IKU]=correctedKu[currentData.IKU]+10;
|
||||
sh_applysetting(¤tData);
|
||||
};
|
||||
if((key==DN_BTN_Pin)) {
|
||||
if((correctedKu[currentData.IKU]-10>=1)) correctedKu[currentData.IKU]=correctedKu[currentData.IKU]-10;
|
||||
sh_applysetting(¤tData);
|
||||
}
|
||||
break;
|
||||
|
||||
case DAC3SET:
|
||||
if(key==UP_BTN_Pin) {
|
||||
if((correctedKu[currentData.IKU]+1<=4095)) correctedKu[currentData.IKU]=correctedKu[currentData.IKU]+1;
|
||||
sh_applysetting(¤tData);
|
||||
};
|
||||
if((key==DN_BTN_Pin)) {
|
||||
if((correctedKu[currentData.IKU]-1>=1)) correctedKu[currentData.IKU]=correctedKu[currentData.IKU]-1;
|
||||
sh_applysetting(¤tData);
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case SAVE:
|
||||
|
||||
wrCor();
|
||||
sh_applysetting(¤tData);//todo Ñäåëàòü ïî íîðìàëüíîìó.
|
||||
menuPointer=KUSET;
|
||||
break;
|
||||
|
||||
|
||||
} //close switch
|
||||
|
||||
}; //close keysHandlerCallibration
|
||||
|
|
|
@ -39,41 +39,42 @@
|
|||
|
||||
|
||||
|
||||
volatile int needRefresh; ///
|
||||
|
||||
char pString[16];
|
||||
char* FloatToASCII(float Val, int32_t RoundTo); //ïîêà îáúÿâëþ å¸ òóò
|
||||
|
||||
void SystemClock_Config(void);
|
||||
|
||||
|
||||
uint16_t workMode = AMPLIFIER; //CALLIBRATION //AMPLIFIER // ïî óìîë÷àíèþ íîðì ðåæèì ðàáîòû, íå çàâîäñêîé.
|
||||
|
||||
|
||||
int menuPointer = 0; ///Óêàçàòåëü ìåíþ 0 - íè÷åãî 1-4 öèôðû Êïð. 5 òî÷êà ÊÏÐ 6-÷óâñòâ âûõîäà 7-ôâ÷ 8 ôí÷ 9 ÏÇ;
|
||||
extern int RefreshScreen;
|
||||
extern uint32_t ind_buff; //ñäâèã áóôåðà!!!!
|
||||
extern uint32_t current_buff; //òåêóùèé ýëåìåíò áóôåðà
|
||||
|
||||
extern uint16_t ADC_Buff[ADC_BUFFSIZE];
|
||||
volatile int needRefresh; ///
|
||||
extern uint16_t ADC_Buff[ADC_BUFFSIZE]; //áóôåð àöï
|
||||
uint16_t meashBuff[DMA_BUFFSIZE];
|
||||
|
||||
|
||||
int sourceDac=0;
|
||||
int reload_flag=0;
|
||||
int ignoreOff_flag=1;
|
||||
uint16_t dvd=0xfff;
|
||||
uint32_t dotPositon; // ïîçèöèÿ òî÷êè
|
||||
int reload_flag=0; //ôëàã ïåðåãðóçêè
|
||||
int ignoreOff_flag=1; //èãíîðèðîâàíèå êíîïêè ïèòàíèÿ
|
||||
uint16_t dvd=0xfff; //Äåôîëòíîå çíà÷åíèå äëÿ îòïðàâêè íà öàï ÎÒËÀÄÊÀ
|
||||
float kNormToDAC = 0; // Ê äëÿ íîðìèðîâàíèÿ ñîãëàñíî ÷óâñòâèòåëüíîñòè äàò÷èêà
|
||||
uint16_t correctedKu[13]; //êîýôèöèýíòû êîððåêöèè äëÿ êîýôèöèýíòîâ óñèëåíèÿ
|
||||
|
||||
__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);
|
||||
|
||||
|
||||
|
||||
|
||||
void check_reload(void); // todo îòíåñè íà ìåñòî
|
||||
|
||||
|
||||
UserData_TypeDef currentData;
|
||||
|
||||
|
||||
int main(void)
|
||||
{
|
||||
|
||||
|
@ -98,6 +99,24 @@ int main(void)
|
|||
currentData.ACCEL; // 32,33,34,35 7503 //
|
||||
*/
|
||||
|
||||
/*
|
||||
|
||||
correctedKu[Ku0_1]=4095;
|
||||
correctedKu[Ku0_2]=4095;
|
||||
correctedKu[Ku0_5]=4095;
|
||||
correctedKu[Ku1]=4095;
|
||||
correctedKu[Ku2]=4095;
|
||||
correctedKu[Ku5]=4095;
|
||||
correctedKu[Ku10]=4095;
|
||||
correctedKu[Ku20]=4095;
|
||||
correctedKu[Ku50]=4095;
|
||||
correctedKu[Ku100]=4095;
|
||||
correctedKu[Ku200]=4095;
|
||||
correctedKu[Ku500]=4095;
|
||||
correctedKu[Ku1000]=4095;
|
||||
|
||||
*/
|
||||
|
||||
|
||||
HAL_Init();
|
||||
SystemClock_Config();
|
||||
|
@ -112,33 +131,55 @@ int main(void)
|
|||
MX_USART1_UART_Init();
|
||||
|
||||
|
||||
|
||||
/////Äåëåì ñòàðò ýêðàíó
|
||||
ssd1306_Init();
|
||||
HAL_GPIO_WritePin(ON_GPIO_Port, ON_Pin , GPIO_PIN_RESET); //ôèêñèðóåì ïèòàíèå ïðèáîðà
|
||||
if(HAL_GPIO_ReadPin(OK_BTN_GPIO_Port, OK_BTN_Pin) == GPIO_PIN_RESET){workMode=CALLIBRATION;} // ïðè óäåðæèâàíèè êíîïêè ïåðåêëþ÷àåìñÿ â çàâîäñêîé ðåæèì ðàáîòû
|
||||
DrawLogo();
|
||||
ssd1306_Fill(Black);
|
||||
ssd1306_UpdateScreen();
|
||||
sh_applysetting(¤tData, dvd); // ïðèìåíÿåì íàñòðîéêè èç ñòóêòóðû ñ ÖÀÏ íà âñþ
|
||||
|
||||
|
||||
HAL_GPIO_WritePin(USART1_RE_GPIO_Port, USART1_RE_Pin, SET);
|
||||
//HAL_UART_Transmit(&huart1, (uint8_t*)"Hello World", 12, 100);
|
||||
HAL_UART_Transmit_IT(&huart1, (uint8_t*)"Hello World\n", 12);
|
||||
|
||||
|
||||
|
||||
|
||||
while (1){
|
||||
if(workMode==NORMAL){screenDraw(); // todo: Óáðàòü êîñòûëü!!! Ñ÷èòàåì â ýêðàíå çíà÷åíèå íà DAC.
|
||||
sh_applysetting(¤tData); }// ïðèìåíÿåì íàñòðîéêè èç ñòóêòóðû ñ ÖÀÏ íà âñþ
|
||||
while (workMode==NORMAL){
|
||||
check_reload();
|
||||
|
||||
keysHandler();
|
||||
|
||||
if(RefreshScreen){
|
||||
screenDraw();
|
||||
ssd1306_UpdateScreen();
|
||||
ssd1306_Fill(0x00);
|
||||
RefreshScreen=0;
|
||||
}
|
||||
} //end if RefreshScreen
|
||||
} //end while
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if(workMode==CALLIBRATION){
|
||||
screenDrawCallibration(); // todo: Óáðàòü êîñòûëü!!! Ñ÷èòàåì â ýêðàíå çíà÷åíèå íà DAC.
|
||||
kNormToDAC=1;//todo: ïîñûïàëèñü êîñòûëè æåñòêî ñòàâèì åäèíèöó äëÿ íàñòðîéêè ïðèáîðà
|
||||
currentData.SENS =1;
|
||||
currentData.IKU=1;
|
||||
sh_applysetting(¤tData); }//
|
||||
while (workMode==CALLIBRATION){
|
||||
check_reload();
|
||||
keysHandlerCallibration();
|
||||
if(RefreshScreen){
|
||||
screenDrawCallibration();
|
||||
ssd1306_UpdateScreen();
|
||||
ssd1306_Fill(0x00);
|
||||
RefreshScreen=0;
|
||||
} //end if RefreshScreen
|
||||
} //end while
|
||||
|
||||
} //end main
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -6,17 +6,24 @@
|
|||
|
||||
|
||||
extern UserData_TypeDef currentData;
|
||||
extern uint16_t correctedKu[13];
|
||||
extern float kNormToDAC;
|
||||
|
||||
char pString[16] = {0}; //Íóæíà äëÿ FloatToASCII
|
||||
|
||||
|
||||
void sh_applysetting(UserData_TypeDef * currentData, uint16_t DVD){
|
||||
|
||||
void setDAC(void);
|
||||
|
||||
|
||||
void sh_applysetting(UserData_TypeDef * currentData){
|
||||
|
||||
|
||||
sh_SetOutGain(currentData->IKU);
|
||||
sh_SetFvch(currentData->IFV);
|
||||
sh_SetFnch(currentData->IFN);
|
||||
sh_SetPlavZeml(currentData->IPZ);
|
||||
WRDAC(DVD);
|
||||
setDAC();
|
||||
|
||||
}
|
||||
|
||||
|
@ -28,6 +35,7 @@ void sh_SetOutGain(uint16_t IKU){
|
|||
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);
|
||||
|
@ -121,13 +129,13 @@ void sh_SetOutGain(uint16_t IKU){
|
|||
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:
|
||||
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; */
|
||||
break;
|
||||
}
|
||||
|
||||
};
|
||||
|
@ -135,7 +143,7 @@ void sh_SetOutGain(uint16_t IKU){
|
|||
|
||||
void sh_SetFvch(uint16_t IFV){ //DA9 IA2 IA3
|
||||
switch (IFV){
|
||||
case Hp0_1:
|
||||
case Hp0_2:
|
||||
HAL_GPIO_WritePin(A2_GPIO_Port, A2_Pin, GPIO_PIN_RESET);
|
||||
HAL_GPIO_WritePin(A3_GPIO_Port, A3_Pin, GPIO_PIN_RESET);
|
||||
break;
|
||||
|
@ -213,6 +221,13 @@ void sh_SetPlavZeml(uint16_t IPZ){
|
|||
};
|
||||
|
||||
|
||||
void setDAC(void){
|
||||
uint16_t DVD=0;
|
||||
setOffsetKuDisplay(); //todo:Êîñòûëü!! íóæíî ïîðàáîòàòü íàä àðõèòåêòóðîé, à íå ñ÷èòàòü êàê ïðèäåòñÿ
|
||||
DVD = correctedKu[currentData.IKU]/kNormToDAC; // Äåëèì êîðååêòèðîâàííûé ìíîæèòåëü íà êîýôèöèåíò
|
||||
WRDAC(DVD); //todo: äåëèì uint íà float - íàäåþñü çàðàáîòàåò
|
||||
}
|
||||
|
||||
void WRDAC(uint16_t DVD)
|
||||
{
|
||||
uint8_t i;
|
||||
|
@ -238,6 +253,7 @@ uint16_t dvd = DVD;
|
|||
|
||||
void DrawSome(int16_t some, uint8_t x, uint8_t y, uint8_t mode){
|
||||
if (some<10) OLED_DrawNum(some, x, y, mode);
|
||||
else if(some>=10&&some<=15) OLED_DrawChar((some+55), x, y, mode); //îòîáðàæàåì êàê HEX todo: ïðîâåðü
|
||||
else OLED_DrawChar(some, x, y, mode);
|
||||
|
||||
}
|
||||
|
@ -247,21 +263,22 @@ int asciiToFloat4(uint16_t str[]){
|
|||
float res=0;
|
||||
int dotFounded=0;
|
||||
int dotPos=0;
|
||||
for (int i=0; i<=4; i++){
|
||||
for (int i=0; i<=5; i++){
|
||||
if (str[i]=='~'){ ///todo ñäåëàòü ïðîâåðêó íà íåñêîëüêî òî÷åê
|
||||
if(dotFounded==0){dotFounded=1; dotPos=i;} //ñòàâèì ôëàã íàéäåííîé òî÷êè ïðèñâàèâàåì ïîçèöèþ
|
||||
else return 1; //èíà÷å âîçâðàùàåì îøèáêó 1
|
||||
}
|
||||
}
|
||||
float symbol[5];
|
||||
float symbol[6];
|
||||
symbol[0]=str[0];
|
||||
symbol[1]=str[1];
|
||||
symbol[2]=str[2];
|
||||
symbol[3]=str[3];
|
||||
symbol[4]=str[4];
|
||||
symbol[5]=str[5];
|
||||
|
||||
if(dotFounded==0){
|
||||
res=(float)symbol[0]*10000+(float)symbol[1]*1000+(float)symbol[2]*100+(float)symbol[3]*10+(float)symbol[4];
|
||||
res=(float)symbol[0]*100000+(float)symbol[1]*10000+(float)symbol[2]*1000+(float)symbol[3]*100+(float)symbol[4]*10+(float)symbol[5];
|
||||
memcpy(¤tData.SENS, &res, sizeof(float)); ///äåëàåì ïðÿìîå êîïèðîâàíèå èíà÷å âîçâðàùàåò íåïîíÿòíî ÷òî
|
||||
return 0;
|
||||
}
|
||||
|
@ -269,19 +286,46 @@ int asciiToFloat4(uint16_t str[]){
|
|||
|
||||
switch(dotPos){
|
||||
case 0:
|
||||
res=(float)symbol[1]/(float)10+symbol[2]/(float)100+symbol[3]/(float)1000+symbol[4]/(float)10000;
|
||||
res=(float)symbol[1]/(float)10
|
||||
+symbol[2]/(float)100
|
||||
+symbol[3]/(float)1000
|
||||
+symbol[4]/(float)10000
|
||||
+symbol[5]/(float)100000;
|
||||
break;
|
||||
case 1:
|
||||
res=symbol[0]+(float)symbol[2]/10+(float)symbol[3]/100+(float)symbol[4]/1000;
|
||||
res=symbol[0]
|
||||
+(float)symbol[2]/10
|
||||
+(float)symbol[3]/100
|
||||
+(float)symbol[4]/1000
|
||||
+(float)symbol[5]/10000;
|
||||
break;
|
||||
case 2:
|
||||
res=symbol[0]*10+(float)symbol[1]+(float)symbol[3]/10+(float)symbol[4]/100;
|
||||
res=symbol[0]*10
|
||||
+(float)symbol[1]
|
||||
+(float)symbol[3]/10
|
||||
+(float)symbol[4]/100
|
||||
+(float)symbol[5]/1000;
|
||||
break;
|
||||
case 3:
|
||||
res=symbol[0]*(float)100+symbol[1]*(float)10+symbol[2]+(float)symbol[4]/10;
|
||||
res=symbol[0]*100
|
||||
+(float)symbol[1]*(float)10
|
||||
+(float)symbol[2]
|
||||
+(float)symbol[4]/10
|
||||
+(float)symbol[5]/100;
|
||||
break;
|
||||
case 4:
|
||||
res=symbol[0]*1000+(float)symbol[1]*100+(float)symbol[2]*10+(float)symbol[3];
|
||||
res=symbol[0]*1000
|
||||
+(float)symbol[1]*100
|
||||
+(float)symbol[2]*10
|
||||
+(float)symbol[3]
|
||||
+(float)symbol[5]/10;
|
||||
break;
|
||||
case 5:
|
||||
res=symbol[0]*10000
|
||||
+(float)symbol[1]*1000
|
||||
+(float)symbol[2]*100
|
||||
+(float)symbol[3]*10
|
||||
+(float)symbol[4];
|
||||
break;
|
||||
default:
|
||||
|
||||
|
|
|
@ -7,18 +7,23 @@ extern int menuPointer;
|
|||
extern int reload_flag;
|
||||
extern char* kPrToDispl;
|
||||
extern UserData_TypeDef currentData;
|
||||
extern float kNormToDAC;
|
||||
extern uint16_t correctedKu[13];
|
||||
|
||||
|
||||
const char STRING_KPR[] = "Rgh";
|
||||
const char STRING_PKL_MS2[] = "gRk/vc2";
|
||||
|
||||
|
||||
|
||||
const char STRING_DATCHIK[] = "Lfnxbr";
|
||||
const char STRING_PKL[] = "gRk/";
|
||||
|
||||
const char STRING_VIHOD[] = "Ds[jl";
|
||||
const char STRING_MV_MS2[] = "vD/vc2";
|
||||
|
||||
const char STRING_FVCH[] = "ADX";
|
||||
const char STRING_FVCH[] = "DX";
|
||||
const char STRING_GC[] = "Uw";
|
||||
|
||||
const char STRING_FNCH[] = "AYX";
|
||||
const char STRING_FNCH[] = "YX";
|
||||
const char STRING_KGC[] = "rUw";
|
||||
|
||||
const char STRING_PEREGRUZKA[] = "Gthtuheprf";
|
||||
|
@ -37,8 +42,52 @@ const char STRING_Ku50[] = "50";
|
|||
const char STRING_Ku100[] = "100";
|
||||
const char STRING_Ku200[] = "200";
|
||||
const char STRING_Ku500[] = "500";
|
||||
const char STRING_Ku1000[] = "1000";
|
||||
|
||||
const char STRING_Hp0_1[] = "0~1";
|
||||
|
||||
|
||||
const char *STRINGS_UNITS[]={"vc2","Gf","Y&"};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
const char *STRINGS_OUTUNITS[] = {"0~0001vD/",
|
||||
"0~0002vD/",
|
||||
"0~0005vD/",
|
||||
"0~001vD/", //3
|
||||
"0~002vD/",
|
||||
"0~005vD/",
|
||||
"0~01vD/",//6
|
||||
"0~02vD/",
|
||||
"0~05vD/",
|
||||
"0~1vD/",//9
|
||||
"0~2vD/",
|
||||
"0~5vD/",
|
||||
"1vD/",//12
|
||||
"2vD/",
|
||||
"5vD/",
|
||||
"10vD/",//15
|
||||
"20vD/",
|
||||
"50vD/",
|
||||
"100vD/",//18
|
||||
"200vD/",
|
||||
"500vD/",
|
||||
"1D/",//21
|
||||
"2D/",
|
||||
"5D/",
|
||||
"10D/",//24
|
||||
"20D/",
|
||||
"50D/",
|
||||
"100D/",//27
|
||||
"200D/",
|
||||
"500D/",
|
||||
"1000D/", //30
|
||||
};
|
||||
|
||||
const char STRING_Hp0_2[] = "0~2";
|
||||
const char STRING_Hp1[] = "1";
|
||||
const char STRING_Hp2[] = "2";
|
||||
const char STRING_Hp10[] = "10";
|
||||
|
@ -52,10 +101,36 @@ const char STRING_Lp10000[] = "10";
|
|||
const char STRING_Lp30000[] = "30";
|
||||
const char STRING_Lp100000[] = "100";
|
||||
|
||||
///ñïåöèàëüíûå ñòðîêè äëÿ çàâîäñêîãî ìåíþ
|
||||
|
||||
const char STRING_KORREKCIA_USILENIA[] = "Rjhhtrwbz ecbktybz";
|
||||
const char STRING_KASKAD[] = "Rfcrfl";
|
||||
const char STRING_ZNACHENIE_DAC[] = "<fpjdsq WFG";
|
||||
const char STRING_SOHRANIT_IZMENENIYA[] = "CJ{HFYBNM BPVTYTYBZ";
|
||||
const char *STRINGS_KU[]={"0~1","0~2","0~5","1","2","5","10","20","50","100","200","500","1000"};
|
||||
|
||||
//char* outUnit; // åäèíèöû âûõîäà
|
||||
char* kuToDispl;
|
||||
char* fvchTODisp;
|
||||
char* fnchTODisp;
|
||||
char* plavZemlToDisp;
|
||||
int OffsetKuDisplay =0;
|
||||
|
||||
|
||||
|
||||
|
||||
void setOffsetKuDisplay(void){ // òàê ýòà øëÿïà âûñòàâëÿåò ñìåùåíèå ïî ìàññèâó ñòðîê äëÿ îòîáðàæåíèÿ ñîãëàñíî íîðìèðîâàíèþ
|
||||
if (currentData.SENS>=0.0001&¤tData.SENS<0.001) {OffsetKuDisplay=0; kNormToDAC=currentData.SENS*10000;} // òàêèå çíà÷åíèÿ íå äîïóñòèìû
|
||||
else if (currentData.SENS>=0.001&¤tData.SENS<0.01){OffsetKuDisplay=0; kNormToDAC=currentData.SENS*1000;}
|
||||
else if (currentData.SENS>=0.01&¤tData.SENS<0.1){OffsetKuDisplay=3; kNormToDAC=currentData.SENS*100;}
|
||||
else if (currentData.SENS>=0.1&¤tData.SENS<1){OffsetKuDisplay=6; kNormToDAC=currentData.SENS*10;}
|
||||
else if (currentData.SENS>=1&¤tData.SENS<10){OffsetKuDisplay=9; kNormToDAC=currentData.SENS/1;}
|
||||
else if (currentData.SENS>=10&¤tData.SENS<100){OffsetKuDisplay=12; kNormToDAC=currentData.SENS/10;}
|
||||
else if (currentData.SENS>=100&¤tData.SENS<1000){OffsetKuDisplay=15; kNormToDAC=currentData.SENS/100;}
|
||||
else if (currentData.SENS<=1000){OffsetKuDisplay=18; kNormToDAC=currentData.SENS/1000;}
|
||||
|
||||
}
|
||||
|
||||
|
||||
void screenDraw(void)
|
||||
{
|
||||
|
@ -98,6 +173,9 @@ void screenDraw(void)
|
|||
case Ku500:
|
||||
kuToDispl=STRING_Ku500;
|
||||
break;
|
||||
case Ku1000:
|
||||
kuToDispl=STRING_Ku1000;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
|
@ -105,8 +183,8 @@ void screenDraw(void)
|
|||
|
||||
///////ïðîâåðÿåì ÔÂ× âûõîäà. ïðèñâàåâàåì óêàçàòåëþ ñîîòâåòñâóþùåå çíà÷åíèå
|
||||
switch(currentData.IFV){
|
||||
case Hp0_1:
|
||||
fvchTODisp=STRING_Hp0_1;
|
||||
case Hp0_2:
|
||||
fvchTODisp=STRING_Hp0_2;
|
||||
break;
|
||||
case Hp1:
|
||||
fvchTODisp=STRING_Hp1;
|
||||
|
@ -154,49 +232,72 @@ void screenDraw(void)
|
|||
break;
|
||||
}
|
||||
|
||||
////ðàññòàâëÿåì íà äèñïëåå íàäïèñè
|
||||
|
||||
FontSet(Segoe_UI_Rus_10);
|
||||
OLED_DrawStr(STRING_KPR, 1, 10, TEXT);
|
||||
OLED_DrawStr(STRING_DATCHIK, 1, 10, TEXT);
|
||||
|
||||
if(menuPointer==KPR0) DrawSome(currentData.IK0, 40, 10, CURSOR);
|
||||
else {DrawSome(currentData.IK0, 40, 10, TEXT);
|
||||
}
|
||||
else DrawSome(currentData.IK0, 40, 10, TEXT);
|
||||
|
||||
if(menuPointer==KPR1) DrawSome(currentData.IK1, 47, 10, CURSOR);
|
||||
else {DrawSome(currentData.IK1, 47, 10, TEXT);
|
||||
}
|
||||
else DrawSome(currentData.IK1, 47, 10, TEXT);
|
||||
|
||||
if(menuPointer==KPR2) DrawSome(currentData.IK2, 54, 10, CURSOR);
|
||||
else {DrawSome(currentData.IK2, 54, 10, TEXT);
|
||||
}
|
||||
else DrawSome(currentData.IK2, 54, 10, TEXT);
|
||||
|
||||
if(menuPointer==KPR3) DrawSome(currentData.IK3, 61, 10, CURSOR);
|
||||
else {DrawSome(currentData.IK3, 61, 10, TEXT);
|
||||
}
|
||||
else DrawSome(currentData.IK3, 61, 10, TEXT);
|
||||
|
||||
if(menuPointer==KPR4) DrawSome(currentData.IK4, 68, 10, CURSOR);
|
||||
else {DrawSome(currentData.IK4, 68, 10, TEXT);
|
||||
else DrawSome(currentData.IK4, 68, 10, TEXT);
|
||||
|
||||
if(menuPointer==KPR5) DrawSome(currentData.IK5, 75, 10, CURSOR);
|
||||
else DrawSome(currentData.IK5, 75, 10, TEXT);
|
||||
|
||||
if(menuPointer==UNITSELECT){
|
||||
OLED_DrawStr(STRING_PKL, 85, 10, CURSOR);
|
||||
OLED_DrawStr(STRINGS_UNITS[currentData.UNIT], 109, 10, CURSOR);
|
||||
} else {
|
||||
OLED_DrawStr(STRING_PKL, 85, 10, TEXT);
|
||||
OLED_DrawStr(STRINGS_UNITS[currentData.UNIT], 109, 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_MV_MS2, 67, 24, TEXT);
|
||||
////////////////////////////
|
||||
*/
|
||||
setOffsetKuDisplay(); //îïðåäåëÿåì óñòàíàâëèâàåì åäèíèöû âûõîäà //todo: ñ÷èòàòü ÷àñòî ôëîàòû âðåäíî
|
||||
|
||||
OLED_DrawStr(STRING_VIHOD, 1, 24, TEXT);
|
||||
|
||||
|
||||
/// äåëàåì íîâóþ ñòðîêó èç STRINGS_OUTUNITS + units
|
||||
|
||||
char *result = malloc(strlen(STRINGS_OUTUNITS[currentData.IKU+OffsetKuDisplay]) + strlen(STRINGS_UNITS[currentData.UNIT]) + 1); // +1 for the null-terminator
|
||||
// in real code you would check for errors in malloc here
|
||||
strcpy(result, STRINGS_OUTUNITS[currentData.IKU+OffsetKuDisplay]);
|
||||
strcat(result, STRINGS_UNITS[currentData.UNIT]);
|
||||
|
||||
if(menuPointer==OUT)OLED_DrawStr((char *)result, 40, 24, CURSOR);
|
||||
else OLED_DrawStr((char *)result, 40, 24, TEXT);//todo: STRINGS_OUTUNITS è units ïîëó÷àåòñÿ ìóòíî
|
||||
free(result);
|
||||
|
||||
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);
|
||||
if(menuPointer==FVCH) OLED_DrawStr(fvchTODisp, 19, 36, CURSOR);
|
||||
else OLED_DrawStr(fvchTODisp, 19, 36, TEXT);
|
||||
OLED_DrawStr(STRING_GC, 35, 36, TEXT);
|
||||
|
||||
|
||||
//////////////
|
||||
OLED_DrawStr(STRING_FNCH, 58, 36, TEXT);
|
||||
OLED_DrawStr((char *)STRING_FNCH, 63, 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);
|
||||
OLED_DrawStr((char *)STRING_KGC, 103, 36, TEXT);
|
||||
//////////////
|
||||
|
||||
if(menuPointer==GROUND) OLED_DrawStr(plavZemlToDisp, 20, 48, CURSOR);
|
||||
|
@ -213,4 +314,144 @@ FontSet(Segoe_UI_Rus_10);
|
|||
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);
|
||||
*/
|
||||
}
|
||||
} // end screenDraw
|
||||
|
||||
|
||||
void screenDrawCallibration(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;
|
||||
case Ku1000:
|
||||
kuToDispl=STRING_Ku1000;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
///////ïðîâåðÿåì ÔÂ× âûõîäà. ïðèñâàåâàåì óêàçàòåëþ ñîîòâåòñâóþùåå çíà÷åíèå
|
||||
switch(currentData.IFV){
|
||||
case Hp0_2:
|
||||
fvchTODisp=STRING_Hp0_2;
|
||||
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_KORREKCIA_USILENIA, CENTER, 10, TEXT); //Çàãîëîâîê
|
||||
OLED_DrawStr(STRING_KASKAD, 1, 24, TEXT); //êàñêàä
|
||||
|
||||
if(menuPointer==KUSET) OLED_DrawStr(STRINGS_KU[currentData.IKU], 45, 24, CURSOR);// îòîáðàæàåì êîýôèöèåíò óñèëåíèÿ
|
||||
else OLED_DrawStr(STRINGS_KU[currentData.IKU], 45, 24, TEXT);
|
||||
|
||||
OLED_DrawStr(STRING_ZNACHENIE_DAC, 1, 36, TEXT);
|
||||
|
||||
|
||||
//ïîöèôðàì âûâîäèì ñîîòâåòñâóþùèé óñèëåíèþ çíà÷åíèå ÖÀÏ
|
||||
// äåëàåì ïîáèòîâûé & ñ ìàñêîé
|
||||
//
|
||||
uint16_t correctedKutoDispl = correctedKu;//Íàâåðíîå ëèøíåå
|
||||
if(menuPointer==DAC0SET) DrawSome((correctedKu[currentData.IKU]/1000), 85, 36, CURSOR);
|
||||
else DrawSome((correctedKu[currentData.IKU]/1000), 85, 36, TEXT);
|
||||
|
||||
|
||||
if(menuPointer==DAC1SET) DrawSome(((correctedKu[currentData.IKU]%1000)/100), 92, 36, CURSOR);
|
||||
else DrawSome(((correctedKu[currentData.IKU]%1000)/100), 92, 36, TEXT);
|
||||
|
||||
if(menuPointer==DAC2SET) DrawSome(((correctedKu[currentData.IKU]%100)/10), 99, 36, CURSOR);
|
||||
else DrawSome(((correctedKu[currentData.IKU]%100)/10), 99, 36, TEXT);
|
||||
|
||||
if(menuPointer==DAC3SET) DrawSome(((correctedKu[currentData.IKU]%10)/1), 106, 36, CURSOR);
|
||||
else DrawSome(((correctedKu[currentData.IKU]%10)/1), 106, 36, TEXT);
|
||||
|
||||
if(menuPointer==SAVE){
|
||||
OLED_DrawStr(STRING_SOHRANIT_IZMENENIYA, 1, 48, CURSOR); //todo:îòîáðàæàòü ñîõðàíåíèÿ
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
} // end screenDraw
|
||||
|
|
|
@ -81,7 +81,8 @@ void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle)
|
|||
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
|
||||
|
||||
/* USER CODE BEGIN USART1_MspInit 1 */
|
||||
|
||||
HAL_NVIC_SetPriority(USART1_IRQn, 8, 6);
|
||||
HAL_NVIC_EnableIRQ(USART1_IRQn);
|
||||
/* USER CODE END USART1_MspInit 1 */
|
||||
}
|
||||
}
|
||||
|
@ -109,6 +110,77 @@ void HAL_UART_MspDeInit(UART_HandleTypeDef* uartHandle)
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void USART1_IRQHandler(void)
|
||||
{
|
||||
if((__HAL_UART_GET_IT_SOURCE(&huart1, UART_IT_RXNE)) && (__HAL_UART_GET_FLAG(&huart1, UART_FLAG_RXNE)))
|
||||
{
|
||||
//Receive_Complete();
|
||||
HAL_UART_RxCpltCallback(&huart1);
|
||||
}
|
||||
else
|
||||
{
|
||||
HAL_UART_IRQHandler(&huart1);
|
||||
}
|
||||
|
||||
if(__HAL_UART_GET_FLAG(&huart1, UART_FLAG_ORE))
|
||||
__HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_ORE);
|
||||
|
||||
if(__HAL_UART_GET_FLAG(&huart1, UART_FLAG_PE))
|
||||
__HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_PE);
|
||||
|
||||
if(__HAL_UART_GET_FLAG(&huart1, UART_FLAG_FE))
|
||||
__HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_FE);
|
||||
|
||||
if(__HAL_UART_GET_FLAG(&huart1, UART_FLAG_NE))
|
||||
__HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_NE);
|
||||
}
|
||||
|
||||
|
||||
|
||||
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
|
||||
{
|
||||
if(huart->Instance == USART1) // Sensors
|
||||
{
|
||||
// HAL_GPIO_WritePin(SENS_RE_GPIO_Port, SENS_RE_Pin, GPIO_PIN_RESET);
|
||||
//TX_OK = true;
|
||||
__HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_TC);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Transfer_Complete();
|
||||
}
|
||||
}
|
||||
|
||||
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
|
||||
{
|
||||
if(huart->Instance == USART1) // Sensors
|
||||
{
|
||||
// RX_OK = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Receive_Complete();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart)
|
||||
{
|
||||
if(huart->Instance == USART1) // Sensors
|
||||
{
|
||||
// RX_OK = TX_OK = false;
|
||||
// HAL_GPIO_WritePin(SENS_RE_GPIO_Port, SENS_RE_Pin, GPIO_PIN_RESET);
|
||||
}
|
||||
|
||||
// UART_ERROR = true;
|
||||
// HAL_UART_Abort_IT(huart);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* USER CODE BEGIN 1 */
|
||||
|
||||
/* USER CODE END 1 */
|
||||
|
|
Loading…
Reference in New Issue