modified: .settings/language.settings.xml
modified: Core/Inc/OLED_Fonts.h modified: Core/Inc/flash.h modified: Core/Inc/keys.h modified: Core/Inc/main.h modified: Core/Inc/modbus.h modified: Core/Inc/my.h modified: Core/Inc/screen.h modified: Core/Inc/struct.h modified: Core/Inc/usart.h modified: Core/Src/flash.c modified: Core/Src/main.c modified: Core/Src/my.c modified: Core/Src/screen.c modified: Core/Src/ssd1306.c modified: Core/Src/stm32f4xx_it.c modified: Core/Src/tim.c modified: Core/Src/usart.c .settings/org.eclipse.core.resources.prefs Core/Src/modbus.c "\320\235\320\276\320\263\320\270 \320\270 \321\203\321\201\320\270\320\273\320\265\320\275\320\270\320\265.xlsx"main
parent
d289acf169
commit
d9f76c68ee
|
@ -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="-1229430809610863902" 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="-1229430809610863902" 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>
|
||||||
|
|
|
@ -43,4 +43,5 @@ void FontSet(const uint8_t* font);
|
||||||
|
|
||||||
void OLED_DrawStr(char *str, uint8_t x, uint8_t y, uint8_t mode);
|
void OLED_DrawStr(char *str, uint8_t x, uint8_t y, uint8_t mode);
|
||||||
|
|
||||||
|
|
||||||
#endif /* OLEDFONTS_H_ */
|
#endif /* OLEDFONTS_H_ */
|
||||||
|
|
|
@ -20,7 +20,10 @@
|
||||||
|
|
||||||
|
|
||||||
void MX_FLASH_Init(void);
|
void MX_FLASH_Init(void);
|
||||||
|
void wrPar(void);
|
||||||
void rdPar(void);
|
void rdPar(void);
|
||||||
|
void wrCor(void);
|
||||||
|
void rdCor(void);
|
||||||
|
|
||||||
|
|
||||||
#endif /* INC_FLASH_H_ */
|
#endif /* INC_FLASH_H_ */
|
||||||
|
|
|
@ -4,3 +4,4 @@
|
||||||
|
|
||||||
|
|
||||||
void keysHandler(void);
|
void keysHandler(void);
|
||||||
|
void keysHandlerCallibration(void);
|
||||||
|
|
|
@ -112,6 +112,7 @@ void Error_Handler(void);
|
||||||
/* USER CODE END Private defines */
|
/* USER CODE END Private defines */
|
||||||
|
|
||||||
|
|
||||||
|
char* FloatToASCII(float Val, int32_t RoundTo); //ïîêà îáúÿâëþ å¸ òóò
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|
|
@ -55,5 +55,8 @@ uint16_t Crc16(uint16_t len);
|
||||||
uint16_t Crc16_TX(uint16_t len);
|
uint16_t Crc16_TX(uint16_t len);
|
||||||
void UART_Transmit(uint8_t *pData);
|
void UART_Transmit(uint8_t *pData);
|
||||||
void StartTransfer(void);
|
void StartTransfer(void);
|
||||||
|
void Receive_Complete(void);
|
||||||
|
void Transfer_Complete(void);
|
||||||
|
|
||||||
|
|
||||||
#endif /* _MODBUS_H_ */
|
#endif /* _MODBUS_H_ */
|
||||||
|
|
|
@ -23,56 +23,22 @@
|
||||||
#include "ssd1306.h"
|
#include "ssd1306.h"
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
#define LOGO_TIME_MS (500u)
|
#define LOGO_TIME_MS (1000u)
|
||||||
#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
|
typedef enum
|
||||||
{
|
{
|
||||||
CURSOR = Black,
|
CURSOR = Black,
|
||||||
TEXT = White
|
TEXT = White
|
||||||
}typeTEXT;
|
}typeTEXT;
|
||||||
|
|
||||||
static const uint16_t Crc16Table[256] =
|
|
||||||
{
|
|
||||||
0x0000, 0xC0C1, 0xC181, 0x0140, 0xC301, 0x03C0, 0x0280, 0xC241,
|
|
||||||
0xC601, 0x06C0, 0x0780, 0xC741, 0x0500, 0xC5C1, 0xC481, 0x0440,
|
|
||||||
0xCC01, 0x0CC0, 0x0D80, 0xCD41, 0x0F00, 0xCFC1, 0xCE81, 0x0E40,
|
|
||||||
0x0A00, 0xCAC1, 0xCB81, 0x0B40, 0xC901, 0x09C0, 0x0880, 0xC841,
|
|
||||||
0xD801, 0x18C0, 0x1980, 0xD941, 0x1B00, 0xDBC1, 0xDA81, 0x1A40,
|
|
||||||
0x1E00, 0xDEC1, 0xDF81, 0x1F40, 0xDD01, 0x1DC0, 0x1C80, 0xDC41,
|
|
||||||
0x1400, 0xD4C1, 0xD581, 0x1540, 0xD701, 0x17C0, 0x1680, 0xD641,
|
|
||||||
0xD201, 0x12C0, 0x1380, 0xD341, 0x1100, 0xD1C1, 0xD081, 0x1040,
|
|
||||||
0xF001, 0x30C0, 0x3180, 0xF141, 0x3300, 0xF3C1, 0xF281, 0x3240,
|
|
||||||
0x3600, 0xF6C1, 0xF781, 0x3740, 0xF501, 0x35C0, 0x3480, 0xF441,
|
|
||||||
0x3C00, 0xFCC1, 0xFD81, 0x3D40, 0xFF01, 0x3FC0, 0x3E80, 0xFE41,
|
|
||||||
0xFA01, 0x3AC0, 0x3B80, 0xFB41, 0x3900, 0xF9C1, 0xF881, 0x3840,
|
|
||||||
0x2800, 0xE8C1, 0xE981, 0x2940, 0xEB01, 0x2BC0, 0x2A80, 0xEA41,
|
|
||||||
0xEE01, 0x2EC0, 0x2F80, 0xEF41, 0x2D00, 0xEDC1, 0xEC81, 0x2C40,
|
|
||||||
0xE401, 0x24C0, 0x2580, 0xE541, 0x2700, 0xE7C1, 0xE681, 0x2640,
|
|
||||||
0x2200, 0xE2C1, 0xE381, 0x2340, 0xE101, 0x21C0, 0x2080, 0xE041,
|
|
||||||
0xA001, 0x60C0, 0x6180, 0xA141, 0x6300, 0xA3C1, 0xA281, 0x6240,
|
|
||||||
0x6600, 0xA6C1, 0xA781, 0x6740, 0xA501, 0x65C0, 0x6480, 0xA441,
|
|
||||||
0x6C00, 0xACC1, 0xAD81, 0x6D40, 0xAF01, 0x6FC0, 0x6E80, 0xAE41,
|
|
||||||
0xAA01, 0x6AC0, 0x6B80, 0xAB41, 0x6900, 0xA9C1, 0xA881, 0x6840,
|
|
||||||
0x7800, 0xB8C1, 0xB981, 0x7940, 0xBB01, 0x7BC0, 0x7A80, 0xBA41,
|
|
||||||
0xBE01, 0x7EC0, 0x7F80, 0xBF41, 0x7D00, 0xBDC1, 0xBC81, 0x7C40,
|
|
||||||
0xB401, 0x74C0, 0x7580, 0xB541, 0x7700, 0xB7C1, 0xB681, 0x7640,
|
|
||||||
0x7200, 0xB2C1, 0xB381, 0x7340, 0xB101, 0x71C0, 0x7080, 0xB041,
|
|
||||||
0x5000, 0x90C1, 0x9181, 0x5140, 0x9301, 0x53C0, 0x5280, 0x9241,
|
|
||||||
0x9601, 0x56C0, 0x5780, 0x9741, 0x5500, 0x95C1, 0x9481, 0x5440,
|
|
||||||
0x9C01, 0x5CC0, 0x5D80, 0x9D41, 0x5F00, 0x9FC1, 0x9E81, 0x5E40,
|
|
||||||
0x5A00, 0x9AC1, 0x9B81, 0x5B40, 0x9901, 0x59C0, 0x5880, 0x9841,
|
|
||||||
0x8801, 0x48C0, 0x4980, 0x8941, 0x4B00, 0x8BC1, 0x8A81, 0x4A40,
|
|
||||||
0x4E00, 0x8EC1, 0x8F81, 0x4F40, 0x8D01, 0x4DC0, 0x4C80, 0x8C41,
|
|
||||||
0x4400, 0x84C1, 0x8581, 0x4540, 0x8701, 0x47C0, 0x4680, 0x8641,
|
|
||||||
0x8201, 0x42C0, 0x4380, 0x8341, 0x4100, 0x81C1, 0x8081, 0x4040
|
|
||||||
};
|
|
||||||
|
|
||||||
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 };
|
|
||||||
|
|
||||||
void DrawSome(int16_t some, uint8_t x, uint8_t y, uint8_t mode);
|
void DrawSome(int16_t some, uint8_t x, uint8_t y, uint8_t mode);
|
||||||
typedef enum { CHARGE = 0} typeIIN;
|
typedef enum { CHARGE = 0} typeIIN;
|
||||||
|
@ -130,5 +96,7 @@ void WRDAC(uint16_t DVD);
|
||||||
void sh_SetFvch(uint16_t IFV);
|
void sh_SetFvch(uint16_t IFV);
|
||||||
void sh_SetOutGain(uint16_t IKU);
|
void sh_SetOutGain(uint16_t IKU);
|
||||||
void sh_applysetting(UserData_TypeDef * currentData);
|
void sh_applysetting(UserData_TypeDef * currentData);
|
||||||
|
uint16_t kbhit(void);
|
||||||
|
void DrawSome(int16_t some, uint8_t x, uint8_t y, uint8_t mode); // îïðåäåëÿåì öèôðà èëè ÷àð è â ñîîòâåòñòâèè ðèñóåì
|
||||||
|
|
||||||
#endif /* INC_MY_H_ */
|
#endif /* INC_MY_H_ */
|
||||||
|
|
|
@ -5,5 +5,5 @@
|
||||||
|
|
||||||
|
|
||||||
void screenDraw(void);
|
void screenDraw(void);
|
||||||
|
void screenDrawCallibration(void);
|
||||||
|
|
||||||
|
|
|
@ -73,20 +73,27 @@ typedef struct
|
||||||
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 // Legacy a141
|
||||||
uint16_t IK1; // 16,17 5006 // çíàêîìåñòî 1
|
uint16_t IKD; // 16,17 5006 // Legacy a141
|
||||||
uint16_t IK2; // 18,19 5007 // çíàêîìåñòî 2
|
uint16_t IKS; // 18,19 5007 // Legacy a141
|
||||||
uint16_t IK3; // 20,21 // çíàêîìåñòî 3
|
uint16_t IPZ; // 20,21 5008 // ďđčçíŕę ďëŕâ çĺěëč
|
||||||
uint16_t IK4; // 22,23 // çíàêîìåñòî 4
|
uint16_t OPZ; // 22,23 5009 // Legacy a141
|
||||||
uint16_t IK5; // 22,23 // çíàêîìåñòî 4
|
uint16_t UNIT; // 22,23 5010 // Çíŕ÷ĺíč˙
|
||||||
|
uint16_t OVERLOAD; // 24,25 5011 // Čńďîëüçóţ äë˙ ďĺđĺäŕ÷č ďĺđĺăđóçęč
|
||||||
|
|
||||||
uint16_t IPZ; // 24,25 5008 // ïëàâàþùàÿ çåìëÿ
|
|
||||||
|
|
||||||
float KCOND; // 28,29,30,31 7501 //
|
uint16_t IK0; // 14,15 5012 // çíŕęîěĺńňî 0
|
||||||
|
uint16_t IK1; // 16,17 5013 // çíŕęîěĺńňî 1
|
||||||
|
uint16_t IK2; // 18,19 5014 // çíŕęîěĺńňî 2
|
||||||
|
uint16_t IK3; // 20,21 5015 // çíŕęîěĺńňî 3
|
||||||
|
uint16_t IK4; // 22,23 5016 // çíŕęîěĺńňî 4
|
||||||
|
uint16_t IK5; // 22,23 5017 // çíŕęîěĺńňî 5
|
||||||
|
|
||||||
|
float KCOND; // 28,29,30,31 7501 //Legacy a141
|
||||||
float SENS; // 32,33,34,35 7502 //дублирование (коэфициэнт преобразования)
|
float SENS; // 32,33,34,35 7502 //дублирование (коэфициэнт преобразования)
|
||||||
uint16_t UNIT; //Îòîáðàæàåìûå âåëè÷èíû íà ýêðàíå
|
float ACCEL; // 32,33,34,35 7503 //Legacy a141
|
||||||
|
|
||||||
} UserData_TypeDef; // ********LENGTH = 39 bytes***********
|
} UserData_TypeDef; // ********LENGTH = ** bytes***********
|
||||||
|
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
|
|
@ -38,6 +38,7 @@ extern UART_HandleTypeDef huart1;
|
||||||
/* USER CODE END Private defines */
|
/* USER CODE END Private defines */
|
||||||
|
|
||||||
void MX_USART1_UART_Init(void);
|
void MX_USART1_UART_Init(void);
|
||||||
|
void MX_USART1_UART_DeInit(void);
|
||||||
|
|
||||||
/* USER CODE BEGIN Prototypes */
|
/* USER CODE BEGIN Prototypes */
|
||||||
|
|
||||||
|
|
|
@ -106,7 +106,7 @@ void wrCor(void) ///
|
||||||
|
|
||||||
void rdPar(void)
|
void rdPar(void)
|
||||||
{
|
{
|
||||||
uint8_t i;
|
//uint8_t i;
|
||||||
uint32_t lenpar;
|
uint32_t lenpar;
|
||||||
volatile bool rewrite = false;
|
volatile bool rewrite = false;
|
||||||
|
|
||||||
|
@ -152,7 +152,7 @@ volatile bool rewrite = false;
|
||||||
|
|
||||||
void rdCor(void)
|
void rdCor(void)
|
||||||
{
|
{
|
||||||
uint8_t i;
|
//uint8_t i;
|
||||||
uint32_t lenpar;
|
uint32_t lenpar;
|
||||||
volatile bool rewrite = false;
|
volatile bool rewrite = false;
|
||||||
|
|
||||||
|
|
|
@ -37,11 +37,12 @@
|
||||||
#include "struct.h"
|
#include "struct.h"
|
||||||
//#include "arm_math.h"
|
//#include "arm_math.h"
|
||||||
|
|
||||||
|
#define ALLWAISRELOAD 0 /// òåñòîâûé - âñåãäà ïåðåãðóæåí
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
char pString[16];
|
char pString[16];
|
||||||
char* FloatToASCII(float Val, int32_t RoundTo); //ïîêà îáúÿâëþ å¸ òóò
|
|
||||||
void SystemClock_Config(void);
|
void SystemClock_Config(void);
|
||||||
|
|
||||||
|
|
||||||
|
@ -55,10 +56,12 @@ extern uint32_t current_buff; //
|
||||||
volatile int needRefresh; ///
|
volatile int needRefresh; ///
|
||||||
extern uint16_t ADC_Buff[ADC_BUFFSIZE]; //áóôåð àöï
|
extern uint16_t ADC_Buff[ADC_BUFFSIZE]; //áóôåð àöï
|
||||||
uint16_t meashBuff[DMA_BUFFSIZE];
|
uint16_t meashBuff[DMA_BUFFSIZE];
|
||||||
|
uint8_t buff[16] = {0,}; // áóôåð äëÿ ïðèåìà
|
||||||
|
|
||||||
|
extern __IO bool needSave;
|
||||||
|
|
||||||
uint32_t dotPositon; // ïîçèöèÿ òî÷êè
|
uint32_t dotPositon; // ïîçèöèÿ òî÷êè
|
||||||
int reload_flag=0; //ôëàã ïåðåãðóçêè
|
int reload_flag=1; //ôëàã ïåðåãðóçêè
|
||||||
int ignoreOff_flag=1; //èãíîðèðîâàíèå êíîïêè ïèòàíèÿ
|
int ignoreOff_flag=1; //èãíîðèðîâàíèå êíîïêè ïèòàíèÿ
|
||||||
uint16_t dvd=0xfff; //Äåôîëòíîå çíà÷åíèå äëÿ îòïðàâêè íà öàï ÎÒËÀÄÊÀ
|
uint16_t dvd=0xfff; //Äåôîëòíîå çíà÷åíèå äëÿ îòïðàâêè íà öàï ÎÒËÀÄÊÀ
|
||||||
float kNormToDAC = 0; // Ê äëÿ íîðìèðîâàíèÿ ñîãëàñíî ÷óâñòâèòåëüíîñòè äàò÷èêà
|
float kNormToDAC = 0; // Ê äëÿ íîðìèðîâàíèÿ ñîãëàñíî ÷óâñòâèòåëüíîñòè äàò÷èêà
|
||||||
|
@ -75,49 +78,13 @@ void check_reload(void); // todo
|
||||||
UserData_TypeDef currentData;
|
UserData_TypeDef currentData;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* currentData.OWN; // 0,1 4001 // Àäðåñ óñòðîéñòâà
|
|
||||||
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 //
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
|
|
||||||
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();
|
HAL_Init();
|
||||||
SystemClock_Config();
|
SystemClock_Config();
|
||||||
MX_FLASH_Init();
|
MX_FLASH_Init();
|
||||||
|
@ -128,6 +95,9 @@ int main(void)
|
||||||
|
|
||||||
MX_SPI1_Init();
|
MX_SPI1_Init();
|
||||||
MX_TIM7_Init();
|
MX_TIM7_Init();
|
||||||
|
|
||||||
|
//currentData.BAUD = 5; // usart.c BAUDRATE[] = {4800, 7200, 9600, 14400, 19200, 38400, 57600, 115200, 128000, 230400};
|
||||||
|
//currentData.INFB = 0;
|
||||||
MX_USART1_UART_Init();
|
MX_USART1_UART_Init();
|
||||||
|
|
||||||
|
|
||||||
|
@ -141,17 +111,27 @@ int main(void)
|
||||||
ssd1306_UpdateScreen();
|
ssd1306_UpdateScreen();
|
||||||
|
|
||||||
|
|
||||||
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);
|
|
||||||
|
|
||||||
|
|
||||||
if(workMode==NORMAL){screenDraw(); // todo: Óáðàòü êîñòûëü!!! Ñ÷èòàåì â ýêðàíå çíà÷åíèå íà DAC.
|
if(workMode==NORMAL){screenDraw(); // todo: Óáðàòü êîñòûëü!!! Ñ÷èòàåì â ýêðàíå çíà÷åíèå íà DAC.
|
||||||
sh_applysetting(¤tData); }// ïðèìåíÿåì íàñòðîéêè èç ñòóêòóðû ñ ÖÀÏ íà âñþ
|
sh_applysetting(¤tData); }// ïðèìåíÿåì íàñòðîéêè èç ñòóêòóðû ñ ÖÀÏ íà âñþ
|
||||||
|
|
||||||
|
|
||||||
while (workMode==NORMAL){
|
while (workMode==NORMAL){
|
||||||
|
HAL_UART_Receive_IT(&huart1, (uint8_t*)buff, 1); //íà÷àëî öåïî÷êè ïðåðûâàíèé
|
||||||
check_reload();
|
check_reload();
|
||||||
keysHandler();
|
keysHandler();
|
||||||
|
|
||||||
|
if(needSave)
|
||||||
|
{
|
||||||
|
needSave = false;
|
||||||
|
|
||||||
|
//wrPar();
|
||||||
|
}
|
||||||
|
|
||||||
if(RefreshScreen){
|
if(RefreshScreen){
|
||||||
screenDraw();
|
screenDraw();
|
||||||
ssd1306_UpdateScreen();
|
ssd1306_UpdateScreen();
|
||||||
|
@ -195,7 +175,7 @@ int main(void)
|
||||||
|
|
||||||
void check_reload(void){
|
void check_reload(void){
|
||||||
static __IO uint32_t reloadOffTime=0;
|
static __IO uint32_t reloadOffTime=0;
|
||||||
uint32_t isReloaded=0;
|
uint32_t isReloaded=ALLWAISRELOAD;
|
||||||
/*__IO uint32_t tick=HAL_GetTick(); //äëÿ çàìåðîâ âðåìåíè */
|
/*__IO uint32_t tick=HAL_GetTick(); //äëÿ çàìåðîâ âðåìåíè */
|
||||||
memcpy((void *) &meashBuff[0], (void *) &ADC_Buff[current_buff], DMA_BUFFSIZE<<1);
|
memcpy((void *) &meashBuff[0], (void *) &ADC_Buff[current_buff], DMA_BUFFSIZE<<1);
|
||||||
for(uint16_t i=0; i<DMA_BUFFSIZE; i++ ){
|
for(uint16_t i=0; i<DMA_BUFFSIZE; i++ ){
|
||||||
|
@ -205,11 +185,11 @@ void check_reload(void){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(isReloaded==1){ //åñëè íàøëè ïîðîãîâîå çíà÷åíèå
|
if(isReloaded==1){ //åñëè íàøëè ïîðîãîâîå çíà÷åíèå
|
||||||
reload_flag=1; //âçâîäèì ãëîáàëüíûé ôëàã ïåðåãðóçêè
|
currentData.OVERLOAD=1; //âçâîäèì ãëîáàëüíûé ôëàã ïåðåãðóçêè
|
||||||
reloadOffTime=HAL_GetTick()+2000; //óñòàíàâëèâàåì òàéìåð ñáðîñà ïåðåãðóçêè +2 ñåê
|
reloadOffTime=HAL_GetTick()+2000; //óñòàíàâëèâàåì òàéìåð ñáðîñà ïåðåãðóçêè +2 ñåê
|
||||||
}
|
}
|
||||||
uint32_t tick = HAL_GetTick();
|
uint32_t tick = HAL_GetTick();
|
||||||
if(reloadOffTime<tick){reload_flag=0;} // åñëè ïðîøëî 2 ñåêóíäû îò ïåðåãðóçêè ñáðàñûâàåì ãëîáàëüíûé ôëàã
|
if(reloadOffTime<tick){currentData.OVERLOAD=0;} // åñëè ïðîøëî 2 ñåêóíäû îò ïåðåãðóçêè ñáðàñûâàåì ãëîáàëüíûé ôëàã
|
||||||
|
|
||||||
/*tick=HAL_GetTick()-tick;
|
/*tick=HAL_GetTick()-tick;
|
||||||
tick=0; //äëÿ çàìåðà âðåìåíè*/
|
tick=0; //äëÿ çàìåðà âðåìåíè*/
|
||||||
|
|
|
@ -251,9 +251,9 @@ uint16_t dvd = DVD;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void DrawSome(int16_t some, uint8_t x, uint8_t y, uint8_t mode){
|
void DrawSome(int16_t some, uint8_t x, uint8_t y, uint8_t mode){ //îòðèñîâûâàåì int èëè char
|
||||||
if (some<10) OLED_DrawNum(some, x, y, 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 if(some>=10&&some<=15) OLED_DrawChar((some+55), x, y, mode); //îòîáðàæàåì êàê HEX todo: ïðîâåðü
|
||||||
else OLED_DrawChar(some, x, y, mode);
|
else OLED_DrawChar(some, x, y, mode);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,7 +10,7 @@ extern UserData_TypeDef currentData;
|
||||||
extern float kNormToDAC;
|
extern float kNormToDAC;
|
||||||
extern uint16_t correctedKu[13];
|
extern uint16_t correctedKu[13];
|
||||||
|
|
||||||
|
extern uint8_t iobuf[256];
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -110,10 +110,10 @@ 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"};
|
const char *STRINGS_KU[]={"0~1","0~2","0~5","1","2","5","10","20","50","100","200","500","1000"};
|
||||||
|
|
||||||
//char* outUnit; // åäèíèöû âûõîäà
|
//char* outUnit; // åäèíèöû âûõîäà
|
||||||
char* kuToDispl;
|
const char* kuToDispl;
|
||||||
char* fvchTODisp;
|
const char* fvchTODisp;
|
||||||
char* fnchTODisp;
|
const char* fnchTODisp;
|
||||||
char* plavZemlToDisp;
|
const char* plavZemlToDisp;
|
||||||
int OffsetKuDisplay =0;
|
int OffsetKuDisplay =0;
|
||||||
|
|
||||||
|
|
||||||
|
@ -282,10 +282,9 @@ FontSet(Segoe_UI_Rus_10);
|
||||||
// in real code you would check for errors in malloc here
|
// in real code you would check for errors in malloc here
|
||||||
strcpy(result, STRINGS_OUTUNITS[currentData.IKU+OffsetKuDisplay]);
|
strcpy(result, STRINGS_OUTUNITS[currentData.IKU+OffsetKuDisplay]);
|
||||||
strcat(result, STRINGS_UNITS[currentData.UNIT]);
|
strcat(result, STRINGS_UNITS[currentData.UNIT]);
|
||||||
|
|
||||||
if(menuPointer==OUT)OLED_DrawStr((char *)result, 40, 24, CURSOR);
|
if(menuPointer==OUT)OLED_DrawStr((char *)result, 40, 24, CURSOR);
|
||||||
else OLED_DrawStr((char *)result, 40, 24, TEXT);//todo: STRINGS_OUTUNITS è units ïîëó÷àåòñÿ ìóòíî
|
else OLED_DrawStr((char *)result, 40, 24, TEXT);//todo: STRINGS_OUTUNITS è units ïîëó÷àåòñÿ ìóòíî
|
||||||
free(result);
|
free(result); /// îñâîáîäèë ïàìÿòü
|
||||||
|
|
||||||
OLED_DrawStr(STRING_FVCH, 2, 36, TEXT);
|
OLED_DrawStr(STRING_FVCH, 2, 36, TEXT);
|
||||||
if(menuPointer==FVCH) OLED_DrawStr(fvchTODisp, 19, 36, CURSOR);
|
if(menuPointer==FVCH) OLED_DrawStr(fvchTODisp, 19, 36, CURSOR);
|
||||||
|
@ -303,11 +302,18 @@ FontSet(Segoe_UI_Rus_10);
|
||||||
if(menuPointer==GROUND) OLED_DrawStr(plavZemlToDisp, 20, 48, CURSOR);
|
if(menuPointer==GROUND) OLED_DrawStr(plavZemlToDisp, 20, 48, CURSOR);
|
||||||
else OLED_DrawStr(plavZemlToDisp, 20, 48, TEXT);
|
else OLED_DrawStr(plavZemlToDisp, 20, 48, TEXT);
|
||||||
|
|
||||||
if(reload_flag){OLED_DrawStr(STRING_PEREGRUZKA, 50, 48, CURSOR);}
|
if(currentData.OVERLOAD){OLED_DrawStr(STRING_PEREGRUZKA, 50, 48, CURSOR);}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* uncomment to debug RS-232
|
||||||
|
OLED_DrawNum(iobuf[0], 6, 48, TEXT);
|
||||||
|
OLED_DrawNum(iobuf[1], 20, 48, TEXT);
|
||||||
|
OLED_DrawNum(iobuf[2], 34, 48, TEXT);
|
||||||
|
OLED_DrawNum(iobuf[3], 48, 48, TEXT);
|
||||||
|
OLED_DrawNum(iobuf[4], 62, 48, TEXT);
|
||||||
|
OLED_DrawNum(iobuf[5], 76, 48, TEXT);
|
||||||
|
OLED_DrawNum(iobuf[6], 90, 48, TEXT);
|
||||||
|
OLED_DrawNum(iobuf[7], 104, 48, TEXT);
|
||||||
|
*/
|
||||||
/*
|
/*
|
||||||
if((menuPointer==GROUND)&&(set.plavZeml==0)) OLED_DrawStr(STRING_OBSHAJA_ZEMLJA, CENTER, 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);
|
else if(set.plavZeml==0) OLED_DrawStr(STRING_OBSHAJA_ZEMLJA, CENTER, 48, TEXT);
|
||||||
|
@ -432,7 +438,7 @@ FontSet(Segoe_UI_Rus_10);
|
||||||
//ïîöèôðàì âûâîäèì ñîîòâåòñâóþùèé óñèëåíèþ çíà÷åíèå ÖÀÏ
|
//ïîöèôðàì âûâîäèì ñîîòâåòñâóþùèé óñèëåíèþ çíà÷åíèå ÖÀÏ
|
||||||
// äåëàåì ïîáèòîâûé & ñ ìàñêîé
|
// äåëàåì ïîáèòîâûé & ñ ìàñêîé
|
||||||
//
|
//
|
||||||
uint16_t correctedKutoDispl = correctedKu;//Íàâåðíîå ëèøíåå
|
|
||||||
if(menuPointer==DAC0SET) DrawSome((correctedKu[currentData.IKU]/1000), 85, 36, CURSOR);
|
if(menuPointer==DAC0SET) DrawSome((correctedKu[currentData.IKU]/1000), 85, 36, CURSOR);
|
||||||
else DrawSome((correctedKu[currentData.IKU]/1000), 85, 36, TEXT);
|
else DrawSome((correctedKu[currentData.IKU]/1000), 85, 36, TEXT);
|
||||||
|
|
||||||
|
|
|
@ -4,12 +4,14 @@
|
||||||
#include <string.h> // For memcpy
|
#include <string.h> // For memcpy
|
||||||
#include "my.h" // For memcpy
|
#include "my.h" // For memcpy
|
||||||
#include "OLED_Fonts.h"
|
#include "OLED_Fonts.h"
|
||||||
|
#include "stdio.h"
|
||||||
|
|
||||||
|
|
||||||
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 currentData, pardata_old;
|
||||||
|
const static uint32_t BAUDRATE[] = {4800, 7200, 9600, 14400, 19200, 38400, 57600, 115200, 128000, 230400}; // Óáðàë static ÷òî áû óâèäåòü â äðóãîì ôàéëå
|
||||||
|
|
||||||
__IO uint8_t DMA_Ready = 0;
|
__IO uint8_t DMA_Ready = 0;
|
||||||
|
|
||||||
|
@ -136,7 +138,7 @@ void ssd1306_Reset(void) {
|
||||||
|
|
||||||
// Send a byte to the command register
|
// Send a byte to the command register
|
||||||
void ssd1306_WriteCommand(uint8_t byte) {
|
void ssd1306_WriteCommand(uint8_t byte) {
|
||||||
uint8_t rx;
|
// uint8_t rx;
|
||||||
HAL_GPIO_WritePin(SSD1306_CS_Port, SSD1306_CS_Pin, GPIO_PIN_RESET); // select OLED
|
HAL_GPIO_WritePin(SSD1306_CS_Port, SSD1306_CS_Pin, GPIO_PIN_RESET); // select OLED
|
||||||
HAL_GPIO_WritePin(SSD1306_DC_Port, SSD1306_DC_Pin, GPIO_PIN_RESET); // command
|
HAL_GPIO_WritePin(SSD1306_DC_Port, SSD1306_DC_Pin, GPIO_PIN_RESET); // command
|
||||||
//HAL_SPI_TransmitReceive(&hspi2, &byte, &rx, 1, 100);
|
//HAL_SPI_TransmitReceive(&hspi2, &byte, &rx, 1, 100);
|
||||||
|
@ -147,7 +149,7 @@ void ssd1306_WriteCommand(uint8_t byte) {
|
||||||
// Send data
|
// Send data
|
||||||
void ssd1306_WriteData(uint8_t* buffer, size_t buff_size) {
|
void ssd1306_WriteData(uint8_t* buffer, size_t buff_size) {
|
||||||
|
|
||||||
uint32_t i;
|
//uint32_t i;
|
||||||
|
|
||||||
HAL_GPIO_WritePin(SSD1306_CS_Port, SSD1306_CS_Pin, GPIO_PIN_RESET); // select OLED
|
HAL_GPIO_WritePin(SSD1306_CS_Port, SSD1306_CS_Pin, GPIO_PIN_RESET); // select OLED
|
||||||
HAL_GPIO_WritePin(SSD1306_DC_Port, SSD1306_DC_Pin, GPIO_PIN_SET); // data
|
HAL_GPIO_WritePin(SSD1306_DC_Port, SSD1306_DC_Pin, GPIO_PIN_SET); // data
|
||||||
|
@ -205,40 +207,21 @@ char str[10];
|
||||||
|
|
||||||
|
|
||||||
FontSet(Segoe_UI_Rus_8);
|
FontSet(Segoe_UI_Rus_8);
|
||||||
#ifdef A621
|
|
||||||
OLED_DrawStr("Db,hjrjynhjkkth F621", CENTER, 0, White);
|
|
||||||
#endif
|
|
||||||
#ifdef A631
|
|
||||||
OLED_DrawStr("Db,hjrjynhjkkth F631", CENTER, 0, White);
|
|
||||||
#endif
|
|
||||||
#ifdef A632
|
|
||||||
OLED_DrawStr("Db,hjrjynhjkkth F632", CENTER, 0, White);
|
|
||||||
#endif
|
|
||||||
#ifdef A633
|
|
||||||
OLED_DrawStr("Db,hjrjynhjkkth F633", CENTER, 0, White);
|
|
||||||
#endif
|
|
||||||
#ifdef A634
|
|
||||||
OLED_DrawStr("Db,hjrjynhjkkth F634", CENTER, 0, White);
|
|
||||||
#endif
|
|
||||||
#ifdef A635
|
|
||||||
OLED_DrawStr("Db,hjrjynhjkkth F635", CENTER, 0, White);
|
|
||||||
#endif
|
|
||||||
#ifdef A636
|
|
||||||
OLED_DrawStr("Db,hjrjynhjkkth F636", CENTER, 0, White);
|
|
||||||
#endif
|
|
||||||
#ifdef A637
|
|
||||||
OLED_DrawStr("Db,hjrjynhjkkth F637", CENTER, 0, White);
|
|
||||||
#endif
|
|
||||||
#ifdef A638
|
|
||||||
OLED_DrawStr("Db,hjrjynhjkkth F638", CENTER, 0, White);
|
|
||||||
#endif
|
|
||||||
#ifdef A639
|
|
||||||
OLED_DrawStr("Db,hjrjynhjkkth F639", CENTER, 0, White);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
ssd1306_SetCursor(76, 52);
|
//ssd1306_SetCursor(76, 52); //ïîæàëóé îòðèñóþ òóò ñêîðîñòü
|
||||||
ssd1306_WriteString((char *) SERIAL, Font_6x8, White);
|
|
||||||
|
|
||||||
|
char speed[20];
|
||||||
|
sprintf(speed, "%i", BAUDRATE[currentData.BAUD]);
|
||||||
|
OLED_DrawStr(speed, 54, 52, White);
|
||||||
|
|
||||||
|
if(currentData.INFB ==0) OLED_DrawStr("<TP RX", 92, 52, White);
|
||||||
|
if(currentData.INFB ==1) OLED_DrawStr("JLL", 92, 52, White);
|
||||||
|
if(currentData.INFB ==2) OLED_DrawStr("TDTY", 92, 52, White);
|
||||||
|
|
||||||
|
|
||||||
|
//ssd1306_WriteString((char *) SERIAL, Font_6x8, White);
|
||||||
|
|
||||||
|
|
||||||
strcpy(str, "Flhtc "); // íàïèñàíî àäðåñ
|
strcpy(str, "Flhtc "); // íàïèñàíî àäðåñ
|
||||||
|
@ -261,7 +244,7 @@ char str[10];
|
||||||
str[8] = (char) ((currentData.OWN % 100 % 10) + 48);
|
str[8] = (char) ((currentData.OWN % 100 % 10) + 48);
|
||||||
str[9] = 0;
|
str[9] = 0;
|
||||||
}
|
}
|
||||||
OLED_DrawStr(str, 2, 51, White);
|
OLED_DrawStr(str, 2, 52, White);
|
||||||
|
|
||||||
|
|
||||||
ssd1306_UpdateScreen();
|
ssd1306_UpdateScreen();
|
||||||
|
@ -271,7 +254,7 @@ char str[10];
|
||||||
// Initialize the oled screen
|
// Initialize the oled screen
|
||||||
void ssd1306_Init(void)
|
void ssd1306_Init(void)
|
||||||
{
|
{
|
||||||
char str[10];
|
//char str[10];
|
||||||
|
|
||||||
// Reset OLED
|
// Reset OLED
|
||||||
ssd1306_Reset();
|
ssd1306_Reset();
|
||||||
|
|
|
@ -21,6 +21,9 @@
|
||||||
/* Includes ------------------------------------------------------------------*/
|
/* Includes ------------------------------------------------------------------*/
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
#include "stm32f4xx_it.h"
|
#include "stm32f4xx_it.h"
|
||||||
|
#include "stdbool.h"
|
||||||
|
#include "struct.h"
|
||||||
|
#include "modbus.h"
|
||||||
/* Private includes ----------------------------------------------------------*/
|
/* Private includes ----------------------------------------------------------*/
|
||||||
/* USER CODE BEGIN Includes */
|
/* USER CODE BEGIN Includes */
|
||||||
/* USER CODE END Includes */
|
/* USER CODE END Includes */
|
||||||
|
@ -56,8 +59,13 @@
|
||||||
/* USER CODE END 0 */
|
/* USER CODE END 0 */
|
||||||
|
|
||||||
/* External variables --------------------------------------------------------*/
|
/* External variables --------------------------------------------------------*/
|
||||||
extern DMA_HandleTypeDef hdma_adc1;
|
extern bool sendreq;
|
||||||
extern TIM_HandleTypeDef htim7;
|
extern __IO UserData_TypeDef currentData;
|
||||||
|
extern __IO uint16_t iolen;
|
||||||
|
extern __IO uint8_t timeout;
|
||||||
|
extern __IO DMA_HandleTypeDef hdma_adc1;
|
||||||
|
extern TIM_HandleTypeDef htim7;
|
||||||
|
extern __IO uint8_t send;
|
||||||
/* USER CODE BEGIN EV */
|
/* USER CODE BEGIN EV */
|
||||||
|
|
||||||
/* USER CODE END EV */
|
/* USER CODE END EV */
|
||||||
|
@ -182,12 +190,32 @@ void PendSV_Handler(void)
|
||||||
/**
|
/**
|
||||||
* @brief This function handles System tick timer.
|
* @brief This function handles System tick timer.
|
||||||
*/
|
*/
|
||||||
void SysTick_Handler(void)
|
void SysTick_Handler(void){
|
||||||
{
|
|
||||||
/* USER CODE BEGIN SysTick_IRQn 0 */
|
/* USER CODE BEGIN SysTick_IRQn 0 */
|
||||||
|
|
||||||
/* USER CODE END SysTick_IRQn 0 */
|
/* USER CODE END SysTick_IRQn 0 */
|
||||||
HAL_IncTick();
|
HAL_IncTick();
|
||||||
|
|
||||||
|
if(timeout)
|
||||||
|
timeout--;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(iolen)
|
||||||
|
iolen = 0;
|
||||||
|
|
||||||
|
if(sendreq)
|
||||||
|
{
|
||||||
|
sendreq = false;
|
||||||
|
send = true;
|
||||||
|
timeout = time35[currentData.BAUD];
|
||||||
|
|
||||||
|
StartTransfer();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
send = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* USER CODE BEGIN SysTick_IRQn 1 */
|
/* USER CODE BEGIN SysTick_IRQn 1 */
|
||||||
|
|
||||||
/* USER CODE END SysTick_IRQn 1 */
|
/* USER CODE END SysTick_IRQn 1 */
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
|
|
||||||
/* Includes ------------------------------------------------------------------*/
|
/* Includes ------------------------------------------------------------------*/
|
||||||
#include "tim.h"
|
#include "tim.h"
|
||||||
|
#include "my.h"
|
||||||
|
|
||||||
/* USER CODE BEGIN 0 */
|
/* USER CODE BEGIN 0 */
|
||||||
|
|
||||||
|
|
150
Core/Src/usart.c
150
Core/Src/usart.c
|
@ -19,9 +19,26 @@
|
||||||
|
|
||||||
/* Includes ------------------------------------------------------------------*/
|
/* Includes ------------------------------------------------------------------*/
|
||||||
#include "usart.h"
|
#include "usart.h"
|
||||||
|
#include "stdbool.h"
|
||||||
|
#include "struct.h"
|
||||||
|
|
||||||
|
|
||||||
/* USER CODE BEGIN 0 */
|
/* USER CODE BEGIN 0 */
|
||||||
|
|
||||||
|
__IO bool UART_ERROR = 0;
|
||||||
|
__IO bool TX_OK = 0, RX_OK = 0;
|
||||||
|
const uint32_t BAUDRATE[] = {4800, 7200, 9600, 14400, 19200, 38400, 57600, 115200, 128000, 230400}; //uint32_t - åñëè ñòàâëþ 16 òî íå ðàáîòàåò!!!!
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
extern __IO UserData_TypeDef currentData;
|
||||||
|
|
||||||
|
extern uint8_t buff[16];
|
||||||
|
|
||||||
|
extern bool needSave;
|
||||||
|
extern bool setbaud;
|
||||||
|
extern uint16_t delayREDE;
|
||||||
|
|
||||||
/* USER CODE END 0 */
|
/* USER CODE END 0 */
|
||||||
|
|
||||||
UART_HandleTypeDef huart1;
|
UART_HandleTypeDef huart1;
|
||||||
|
@ -39,17 +56,55 @@ void MX_USART1_UART_Init(void)
|
||||||
|
|
||||||
/* USER CODE END USART1_Init 1 */
|
/* USER CODE END USART1_Init 1 */
|
||||||
huart1.Instance = USART1;
|
huart1.Instance = USART1;
|
||||||
huart1.Init.BaudRate = 115200;
|
huart1.Init.BaudRate = BAUDRATE[currentData.BAUD];
|
||||||
huart1.Init.WordLength = UART_WORDLENGTH_8B;
|
|
||||||
|
switch(currentData.INFB)
|
||||||
|
{
|
||||||
|
case 0: //NONE
|
||||||
|
huart1.Init.WordLength = UART_WORDLENGTH_8B;
|
||||||
|
huart1.Init.Parity = UART_PARITY_NONE;
|
||||||
|
break;
|
||||||
|
case 1: //ODD
|
||||||
|
huart1.Init.WordLength = UART_WORDLENGTH_9B;
|
||||||
|
huart1.Init.Parity = UART_PARITY_ODD;
|
||||||
|
break;
|
||||||
|
case 2: //EVEN
|
||||||
|
huart1.Init.WordLength = UART_WORDLENGTH_9B;
|
||||||
|
huart1.Init.Parity = UART_PARITY_EVEN;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
//huart1.Init.WordLength = UART_WORDLENGTH_8B;
|
||||||
huart1.Init.StopBits = UART_STOPBITS_1;
|
huart1.Init.StopBits = UART_STOPBITS_1;
|
||||||
huart1.Init.Parity = UART_PARITY_NONE;
|
// huart1.Init.Parity = UART_PARITY_NONE;
|
||||||
huart1.Init.Mode = UART_MODE_TX_RX;
|
huart1.Init.Mode = UART_MODE_TX_RX;
|
||||||
huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
|
huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
|
||||||
huart1.Init.OverSampling = UART_OVERSAMPLING_16;
|
//huart1.Init.OverSampling = UART_OVERSAMPLING_16;
|
||||||
|
|
||||||
|
if(currentData.INFB < 9)
|
||||||
|
huart1.Init.OverSampling = UART_OVERSAMPLING_16;
|
||||||
|
else huart1.Init.OverSampling = UART_OVERSAMPLING_8;
|
||||||
|
|
||||||
if (HAL_UART_Init(&huart1) != HAL_OK)
|
if (HAL_UART_Init(&huart1) != HAL_OK)
|
||||||
{
|
{
|
||||||
Error_Handler();
|
Error_Handler();
|
||||||
}
|
}
|
||||||
|
/* todo: ðàñêîìåíòèòü çàñòàâèòü ðàáîòàòü
|
||||||
|
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);
|
||||||
|
|
||||||
|
HAL_GPIO_WritePin(RE_GPIO_Port, RE_Pin, GPIO_PIN_RESET);
|
||||||
|
SET_BIT(huart1.Instance->CR1, USART_CR1_RXNEIE | USART_CR1_PEIE); // ðàçðåøåíèå ïðåðûâàíèé ïî RENotEMPTY è îøèáêè ÷åòíîñòè
|
||||||
|
*/
|
||||||
|
|
||||||
/* USER CODE BEGIN USART1_Init 2 */
|
/* USER CODE BEGIN USART1_Init 2 */
|
||||||
|
|
||||||
/* USER CODE END USART1_Init 2 */
|
/* USER CODE END USART1_Init 2 */
|
||||||
|
@ -81,7 +136,7 @@ void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle)
|
||||||
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
|
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
|
||||||
|
|
||||||
/* USER CODE BEGIN USART1_MspInit 1 */
|
/* USER CODE BEGIN USART1_MspInit 1 */
|
||||||
HAL_NVIC_SetPriority(USART1_IRQn, 8, 6);
|
HAL_NVIC_SetPriority(USART1_IRQn, 0, 0);
|
||||||
HAL_NVIC_EnableIRQ(USART1_IRQn);
|
HAL_NVIC_EnableIRQ(USART1_IRQn);
|
||||||
/* USER CODE END USART1_MspInit 1 */
|
/* USER CODE END USART1_MspInit 1 */
|
||||||
}
|
}
|
||||||
|
@ -111,72 +166,81 @@ void HAL_UART_MspDeInit(UART_HandleTypeDef* uartHandle)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void MX_USART1_UART_DeInit(void)
|
||||||
|
{
|
||||||
|
if(HAL_UART_DeInit(&huart1) != HAL_OK) {
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
HAL_NVIC_DisableIRQ(USART1_IRQn);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void USART1_IRQHandler(void)
|
void USART1_IRQHandler(void)
|
||||||
{
|
{
|
||||||
if((__HAL_UART_GET_IT_SOURCE(&huart1, UART_IT_RXNE)) && (__HAL_UART_GET_FLAG(&huart1, UART_FLAG_RXNE)))
|
HAL_UART_IRQHandler(&huart1);
|
||||||
{
|
|
||||||
//Receive_Complete();
|
|
||||||
HAL_UART_RxCpltCallback(&huart1);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
HAL_UART_IRQHandler(&huart1);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(__HAL_UART_GET_FLAG(&huart1, UART_FLAG_ORE))
|
if(__HAL_UART_GET_FLAG(&huart1, UART_FLAG_ORE)) //jîøèáêà ïåðåïîëíåíèÿ
|
||||||
__HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_ORE);
|
__HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_ORE);
|
||||||
|
|
||||||
if(__HAL_UART_GET_FLAG(&huart1, UART_FLAG_PE))
|
if(__HAL_UART_GET_FLAG(&huart1, UART_FLAG_PE)) //îøèáêà ÷åòíîñòè
|
||||||
__HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_PE);
|
__HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_PE);
|
||||||
|
|
||||||
if(__HAL_UART_GET_FLAG(&huart1, UART_FLAG_FE))
|
if(__HAL_UART_GET_FLAG(&huart1, UART_FLAG_FE)) //îøèêà êàäðà-ïàêåòà
|
||||||
__HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_FE);
|
__HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_FE);
|
||||||
|
|
||||||
if(__HAL_UART_GET_FLAG(&huart1, UART_FLAG_NE))
|
if(__HAL_UART_GET_FLAG(&huart1, UART_FLAG_NE)) //îøèáêà øóìà
|
||||||
__HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_NE);
|
__HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_NE);
|
||||||
|
|
||||||
|
if(__HAL_UART_GET_FLAG(&huart1, UART_FLAG_NE)) //îøèáêà øóìà
|
||||||
|
__HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_NE);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
|
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
|
||||||
{
|
{
|
||||||
if(huart->Instance == USART1) // Sensors
|
|
||||||
{
|
__IO uint16_t a;
|
||||||
// HAL_GPIO_WritePin(SENS_RE_GPIO_Port, SENS_RE_Pin, GPIO_PIN_RESET);
|
|
||||||
//TX_OK = true;
|
a = delayREDE;
|
||||||
__HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_TC);
|
while(a)
|
||||||
}
|
{
|
||||||
else
|
a--; a++; a--; a++; a--;
|
||||||
{
|
}
|
||||||
// Transfer_Complete();
|
|
||||||
}
|
if(setbaud)
|
||||||
|
{
|
||||||
|
setbaud = false;
|
||||||
|
needSave = true;
|
||||||
|
SetBaudRate();
|
||||||
|
}
|
||||||
|
|
||||||
|
//__HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_TC);
|
||||||
|
//HAL_GPIO_WritePin(RE_GPIO_Port, RE_Pin, GPIO_PIN_RESET);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
|
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
|
||||||
{
|
{
|
||||||
if(huart->Instance == USART1) // Sensors
|
|
||||||
{
|
Receive_Complete();
|
||||||
// RX_OK = true;
|
HAL_UART_Receive_IT(&huart1, (uint8_t*)buff, 1);
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Receive_Complete();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart)
|
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;
|
RX_OK = TX_OK = false;
|
||||||
// HAL_UART_Abort_IT(huart);
|
HAL_GPIO_WritePin(USART1_RE_GPIO_Port, USART1_RE_Pin, GPIO_PIN_RESET);
|
||||||
|
|
||||||
|
UART_ERROR = true;
|
||||||
|
//HAL_UART_Abort_IT(huart); //todo: îòêëþ÷èë. Ïðè ïåðâîì çàïóñêå âëåòàë òóäà è îòêëþ÷àë ïðåðûâàíèÿ
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue