diff --git a/.code_review_properties b/.code_review_properties new file mode 100644 index 0000000..36a49b9 --- /dev/null +++ b/.code_review_properties @@ -0,0 +1,80 @@ + + + + property.default.description + + 1970-01-01 :: 00:00:00:000 GMT-10:00 + review + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.cproject_org b/.cproject_org new file mode 100644 index 0000000..e696c93 --- /dev/null +++ b/.cproject_org @@ -0,0 +1,306 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.project_org b/.project_org new file mode 100644 index 0000000..56be3cf --- /dev/null +++ b/.project_org @@ -0,0 +1,76 @@ + + + A1210 + + + + + + org.eclipse.cdt.managedbuilder.core.genmakebuilder + clean,full,incremental, + + + ?children? + ?name?=outputEntries\|?children?=?name?=entry\\\\\\\|\\\|\|| + + + ?name? + + + + org.eclipse.cdt.make.core.append_environment + true + + + org.eclipse.cdt.make.core.buildArguments + + + + org.eclipse.cdt.make.core.buildCommand + make + + + org.eclipse.cdt.make.core.buildLocation + ${workspace_loc:/STM32100B-EVAL/Debug} + + + org.eclipse.cdt.make.core.contents + org.eclipse.cdt.make.core.activeConfigSettings + + + org.eclipse.cdt.make.core.enableAutoBuild + false + + + org.eclipse.cdt.make.core.enableCleanBuild + true + + + org.eclipse.cdt.make.core.enableFullBuild + true + + + org.eclipse.cdt.make.core.stopOnError + true + + + org.eclipse.cdt.make.core.useDefaultBuildCmd + true + + + + + org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder + + + + + + org.eclipse.cdt.core.cnature + org.eclipse.cdt.managedbuilder.core.managedBuildNature + org.eclipse.cdt.managedbuilder.core.ScannerConfigNature + + + + + diff --git a/.settings/language.settings.xml b/.settings/language.settings.xml new file mode 100644 index 0000000..800bc68 --- /dev/null +++ b/.settings/language.settings.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.settings/org.eclipse.cdt.core.prefs b/.settings/org.eclipse.cdt.core.prefs new file mode 100644 index 0000000..7347216 --- /dev/null +++ b/.settings/org.eclipse.cdt.core.prefs @@ -0,0 +1,6 @@ +eclipse.preferences.version=1 +environment/project/com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1843313540/PATH/delimiter=; +environment/project/com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1843313540/PATH/operation=append +environment/project/com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1843313540/PATH/value=C\:\\Program Files (x86)\\Atollic\\TrueSTUDIO for STM32 9.1.0\\ARMTools\\bin;C\:\\Program Files (x86)\\Atollic\\TrueSTUDIO for STM32 9.1.0\\Tools;C\:/Program Files (x86)/Atollic/TrueSTUDIO for STM32 9.1.0/ide/jre/bin/client;C\:/Program Files (x86)/Atollic/TrueSTUDIO for STM32 9.1.0/ide/jre/bin;C\:/Program Files (x86)/Atollic/TrueSTUDIO for STM32 9.1.0/ide/jre/lib/i386;C\:\\Program Files\\Eclipse Adoptium\\jdk-21.0.2.13-hotspot\\bin;C\:\\Program Files\\Common Files\\Oracle\\Java\\javapath;C\:\\Program Files (x86)\\Common Files\\Oracle\\Java\\javapath;C\:\\Windows\\system32;C\:\\Windows;C\:\\Windows\\System32\\Wbem;C\:\\Windows\\System32\\WindowsPowerShell\\v1.0\\;C\:\\Windows\\System32\\OpenSSH\\;C\:\\Program Files\\Git\\cmd;C\:\\Program Files (x86)\\STMicroelectronics\\STM32 ST-LINK Utility\\ST-LINK Utility;C\:\\Program Files (x86)\\IVI Foundation\\VISA\\WinNT\\Bin\\;C\:\\Program Files\\IVI Foundation\\VISA\\Win64\\Bin\\;C\:\\Program Files (x86)\\IVI Foundation\\VISA\\WinNT\\Bin;C\:\\PROGRA~2\\IVIFOU~1\\VISA\\WinNT\\Bin;C\:\\Strawberry\\c\\bin;C\:\\Strawberry\\perl\\site\\bin;C\:\\Strawberry\\perl\\bin;C\:\\Program Files\\Docker\\Docker\\resources\\bin;C\:\\Users\\Limin\\AppData\\Local\\Microsoft\\WindowsApps;C\:\\Users\\Limin\\AppData\\Local\\Programs\\Microsoft VS Code\\bin;C\:\\Qt\\Qt5.14.2\\5.14.2\\mingw73_32\\bin;C\:\\Qt\\Qt5.14.2\\5.14.2\\mingw73_64\\bin;C\:\\Program Files (x86)\\Atollic\\TrueSTUDIO for STM32 9.1.0 +environment/project/com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1843313540/append=true +environment/project/com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1843313540/appendContributed=true diff --git a/A1210 Debug.launch b/A1210 Debug.launch new file mode 100644 index 0000000..8f6641a --- /dev/null +++ b/A1210 Debug.launch @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/A1210_converter.log b/A1210_converter.log new file mode 100644 index 0000000..38d1447 --- /dev/null +++ b/A1210_converter.log @@ -0,0 +1,46 @@ +Project: A1210 +Converter: Atollic TrueSTUDIO project converter +Date: 20240502 + +Post-build step might need some manual actions. +Unknown value type "" for id com.atollic.truestudio.as.general.incpath on tool com.atollic.truestudio.exe.debug.toolchain.as +Unknown value type "" for id com.atollic.truestudio.gcc.symbols.defined on tool com.atollic.truestudio.exe.debug.toolchain.as +Option com.atollic.truestudio.common_options.target.endianess is no longer supported +Option com.atollic.truestudio.common_options.target.instr_set is no longer supported +Unknown value type "" for id com.atollic.truestudio.common_options.target.interwork on tool com.atollic.truestudio.exe.debug.toolchain.gcc +Option com.atollic.truestudio.common_options.target.endianess is no longer supported +Option com.atollic.truestudio.common_options.target.instr_set is no longer supported +No map found for id: com.atollic.truestudio.gcc.optimization.level.O0 +Unknown value type "" for id com.atollic.truestudio.ld.libraries.list on tool com.atollic.truestudio.exe.debug.toolchain.ld +Unknown value type "" for id com.atollic.truestudio.ld.libraries.searchpath on tool com.atollic.truestudio.exe.debug.toolchain.ld +Option com.atollic.truestudio.common_options.target.endianess is no longer supported +Option com.atollic.truestudio.common_options.target.instr_set is no longer supported +Unknown value type "" for id com.atollic.truestudio.gpp.optimization.fno_rtti on tool com.atollic.truestudio.exe.debug.toolchain.gpp +Unknown value type "" for id com.atollic.truestudio.gpp.optimization.fno_exceptions on tool com.atollic.truestudio.exe.debug.toolchain.gpp +Option com.atollic.truestudio.common_options.target.endianess is no longer supported +Option com.atollic.truestudio.common_options.target.instr_set is no longer supported +Unknown value type "" for id com.atollic.truestudio.ldcc.libraries.list on tool com.atollic.truestudio.exe.debug.toolchain.ldcc +Unknown value type "" for id com.atollic.truestudio.ldcc.libraries.searchpath on tool com.atollic.truestudio.exe.debug.toolchain.ldcc +Option com.atollic.truestudio.common_options.target.endianess is no longer supported +Option com.atollic.truestudio.common_options.target.instr_set is no longer supported +Post-build step might need some manual actions. +Unknown value type "" for id com.atollic.truestudio.as.general.incpath on tool com.atollic.truestudio.exe.release.toolchain.as +Unknown value type "" for id com.atollic.truestudio.gcc.symbols.defined on tool com.atollic.truestudio.exe.release.toolchain.as +Option com.atollic.truestudio.common_options.target.endianess is no longer supported +Option com.atollic.truestudio.common_options.target.instr_set is no longer supported +Unknown value type "" for id com.atollic.truestudio.common_options.target.interwork on tool com.atollic.truestudio.exe.release.toolchain.gcc +Option com.atollic.truestudio.common_options.target.endianess is no longer supported +Option com.atollic.truestudio.common_options.target.instr_set is no longer supported +No map found for id: com.atollic.truestudio.gcc.optimization.level.Os +Unknown value type "" for id com.atollic.truestudio.ld.libraries.list on tool com.atollic.truestudio.exe.release.toolchain.ld +Unknown value type "" for id com.atollic.truestudio.ld.libraries.searchpath on tool com.atollic.truestudio.exe.release.toolchain.ld +Option com.atollic.truestudio.common_options.target.endianess is no longer supported +Option com.atollic.truestudio.common_options.target.instr_set is no longer supported +Unknown value type "" for id com.atollic.truestudio.gpp.optimization.fno_rtti on tool com.atollic.truestudio.exe.release.toolchain.gpp +Unknown value type "" for id com.atollic.truestudio.gpp.optimization.fno_exceptions on tool com.atollic.truestudio.exe.release.toolchain.gpp +Option com.atollic.truestudio.common_options.target.endianess is no longer supported +Option com.atollic.truestudio.common_options.target.instr_set is no longer supported +Unknown value type "" for id com.atollic.truestudio.ldcc.libraries.list on tool com.atollic.truestudio.exe.release.toolchain.ldcc +Unknown value type "" for id com.atollic.truestudio.ldcc.libraries.searchpath on tool com.atollic.truestudio.exe.release.toolchain.ldcc +Option com.atollic.truestudio.common_options.target.endianess is no longer supported +Option com.atollic.truestudio.common_options.target.instr_set is no longer supported diff --git a/Core/Inc/my.h b/Core/Inc/my.h index 5c6f31b..8293401 100644 --- a/Core/Inc/my.h +++ b/Core/Inc/my.h @@ -56,7 +56,6 @@ typedef enum typedef enum //перечисление для основного меню { - WORK = 0, KPR0 , KPR1 , KPR2 , @@ -69,9 +68,10 @@ typedef enum // FVCH , FNCH, GROUND, - SAVING }mainMenuState; + + typedef enum //перечисление для сервисного меню { KUSET = 0, diff --git a/Core/Src/keys.c b/Core/Src/keys.c index dc1a161..7833f67 100644 --- a/Core/Src/keys.c +++ b/Core/Src/keys.c @@ -5,6 +5,7 @@ #include "my.h" extern UserData_TypeDef currentData; +extern bool menuItemIsEditable; extern int menuPointer; extern uint16_t dvd; extern int ignoreOff_flag; @@ -16,20 +17,44 @@ __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((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++; //иначе следующий пункт + if(menuItemIsEditable==0){ + menuItemIsEditable=1; + return; //вваливаемся в редактирование + }else{menuItemIsEditable=0; + return;} // вываливаемся из него } + if(!menuItemIsEditable){ + + if(key==UP_BTN_Pin){ //По нажатию ОК + if(menuPointer==KPR0){menuPointer=GROUND;} //todo сделай сохранение //Если крайний пункт меню то возвращаемся + else menuPointer--; //иначе следующий пункт + } + + if(key==DN_BTN_Pin){ //По нажатию ОК + if(menuPointer==GROUND){menuPointer=KPR0;} //todo сделай сохранение //Если крайний пункт меню то возвращаемся + else menuPointer++; //иначе следующий пункт + } + + } + + +if(menuItemIsEditable){ + switch (menuPointer){ case KPR0: @@ -90,7 +115,6 @@ void keysHandler(void){ case KPR4: - if((key==UP_BTN_Pin)) { if((currentData.IK4<9)&&(currentData.IK4>=0)) currentData.IK4++; else if(currentData.IK4=='~') currentData.IK4=0; @@ -105,7 +129,6 @@ 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; @@ -145,6 +168,7 @@ void keysHandler(void){ menuPointer++;} break; + case UNITSELECT: if((key==UP_BTN_Pin)&&(currentData.UNITAccel)) {currentData.UNIT--; sh_applysetting(¤tData);} @@ -169,17 +193,17 @@ void keysHandler(void){ 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);//todo Сделать по нормальному. break; - +*/ } //close switch - +} }; //close keysHandler @@ -200,8 +224,6 @@ void keysHandlerCallibration(void){ menuPointer++; //иначе следующий пункт } - - switch (menuPointer){ @@ -232,8 +254,6 @@ void keysHandlerCallibration(void){ } break; - - case DAC2SET: if(key==UP_BTN_Pin) { if((correctedKu[currentData.IKU]+10<=4095)) correctedKu[currentData.IKU]=correctedKu[currentData.IKU]+10; @@ -258,7 +278,6 @@ void keysHandlerCallibration(void){ case SAVE: - wrCor(); sh_applysetting(¤tData);//todo Сделать по нормальному. menuPointer=KUSET; diff --git a/Core/Src/main.c b/Core/Src/main.c index a636c3e..5306273 100644 --- a/Core/Src/main.c +++ b/Core/Src/main.c @@ -92,7 +92,6 @@ int main(void) MX_DMA_Init(); MX_TIM3_Init(); MX_ADC1_Init(); - MX_SPI1_Init(); MX_TIM7_Init(); @@ -109,34 +108,25 @@ int main(void) DrawLogo(); ssd1306_Fill(Black); ssd1306_UpdateScreen(); - - - // - if(workMode==NORMAL){screenDraw(); // todo: Убрать костыль!!! Считаем в экране значение на DAC. sh_applysetting(¤tData); }// применяем настройки из стуктуры с ЦАП на всю - while (workMode==NORMAL){ if(needSave) { needSave = false; - sh_applysetting(¤tData); wrPar(); } - - HAL_UART_Receive_IT(&huart1, (uint8_t*)buff, 1); //начало цепочки прерываний + check_reload(); keysHandler(); - - if(RefreshScreen){ screenDraw(); ssd1306_UpdateScreen(); @@ -155,6 +145,7 @@ int main(void) currentData.IFN=Lp100000; currentData.IFV=Hp0_2; sh_applysetting(¤tData); }// + while (workMode==CALLIBRATION){ check_reload(); keysHandlerCallibration(); diff --git a/Core/Src/my.c b/Core/Src/my.c index 8555834..d403613 100644 --- a/Core/Src/my.c +++ b/Core/Src/my.c @@ -9,6 +9,9 @@ extern UserData_TypeDef currentData; extern uint16_t correctedKu[13]; extern float kNormToDAC; +static int pulseTime; +static bool isHiden; + char pString[16] = {0}; //Нужна для FloatToASCII @@ -258,6 +261,36 @@ void DrawSome(int16_t some, uint8_t x, uint8_t y, uint8_t mode){ // } +void PulseDrawSome(int16_t some, uint8_t x, uint8_t y, uint8_t mode){ //Моргаем надписью + //static int pulseTime; + //static bool isHiden; + +if(!pulseTime) pulseTime=HAL_GetTick()+200; //ты у именя первый + if(pulseTime