Explorar o código

ADC 설정 추가 / Uart , PE43711,CRC16 추가 /

YJ %!s(int64=5) %!d(string=hai) anos
pai
achega
3838ddabcf

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 46 - 29
.cproject


+ 1 - 0
.gitignore

@@ -0,0 +1 @@
1
+/Debug/

+ 2 - 2
.settings/language.settings.xml

@@ -4,7 +4,7 @@
4 4
 		<extension point="org.eclipse.cdt.core.LanguageSettingsProvider">
5 5
 			<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
6 6
 			<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
7
-			<provider class="com.atollic.truestudio.mbs.GCCSpecsDetectorAtollicArm" console="false" env-hash="384304884455657694" id="com.atollic.truestudio.mbs.provider" keep-relative-paths="false" name="Atollic ARM Tools Language Settings" parameter="${COMMAND} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
7
+			<provider class="com.atollic.truestudio.mbs.GCCSpecsDetectorAtollicArm" console="false" env-hash="812862735599743217" id="com.atollic.truestudio.mbs.provider" keep-relative-paths="false" name="Atollic ARM Tools Language Settings" parameter="${COMMAND} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
8 8
 				<language-scope id="org.eclipse.cdt.core.gcc"/>
9 9
 				<language-scope id="org.eclipse.cdt.core.g++"/>
10 10
 			</provider>
@@ -14,7 +14,7 @@
14 14
 		<extension point="org.eclipse.cdt.core.LanguageSettingsProvider">
15 15
 			<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
16 16
 			<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
17
-			<provider class="com.atollic.truestudio.mbs.GCCSpecsDetectorAtollicArm" console="false" env-hash="384304884455657694" id="com.atollic.truestudio.mbs.provider" keep-relative-paths="false" name="Atollic ARM Tools Language Settings" parameter="${COMMAND} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
17
+			<provider class="com.atollic.truestudio.mbs.GCCSpecsDetectorAtollicArm" console="false" env-hash="812862735599743217" id="com.atollic.truestudio.mbs.provider" keep-relative-paths="false" name="Atollic ARM Tools Language Settings" parameter="${COMMAND} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
18 18
 				<language-scope id="org.eclipse.cdt.core.gcc"/>
19 19
 				<language-scope id="org.eclipse.cdt.core.g++"/>
20 20
 			</provider>

+ 11 - 0
.settings/org.eclipse.cdt.managedbuilder.core.prefs

@@ -0,0 +1,11 @@
1
+eclipse.preferences.version=1
2
+environment/buildEnvironmentInclude/com.atollic.truestudio.exe.debug.1518366166/CPATH/delimiter=;
3
+environment/buildEnvironmentInclude/com.atollic.truestudio.exe.debug.1518366166/CPATH/operation=remove
4
+environment/buildEnvironmentInclude/com.atollic.truestudio.exe.debug.1518366166/C_INCLUDE_PATH/delimiter=;
5
+environment/buildEnvironmentInclude/com.atollic.truestudio.exe.debug.1518366166/C_INCLUDE_PATH/operation=remove
6
+environment/buildEnvironmentInclude/com.atollic.truestudio.exe.debug.1518366166/append=true
7
+environment/buildEnvironmentInclude/com.atollic.truestudio.exe.debug.1518366166/appendContributed=true
8
+environment/buildEnvironmentLibrary/com.atollic.truestudio.exe.debug.1518366166/LIBRARY_PATH/delimiter=;
9
+environment/buildEnvironmentLibrary/com.atollic.truestudio.exe.debug.1518366166/LIBRARY_PATH/operation=remove
10
+environment/buildEnvironmentLibrary/com.atollic.truestudio.exe.debug.1518366166/append=true
11
+environment/buildEnvironmentLibrary/com.atollic.truestudio.exe.debug.1518366166/appendContributed=true

+ 27 - 0
Bluecell_Inc/CRC16.h

@@ -0,0 +1,27 @@
1
+/*
2
+ * CRC16.h
3
+ *
4
+ *  Created on: 2019. 7. 3.
5
+ *      Author: parkyj
6
+ */
7
+
8
+#ifndef CRC16_H_
9
+#define CRC16_H_
10
+
11
+#include "main.h"
12
+
13
+typedef enum{
14
+    CHECKSUM_ERROR = 0,
15
+    NO_ERROR
16
+}etError;
17
+
18
+
19
+uint16_t CRC16_Generate(uint8_t *buf_ptr, int32_t len);
20
+etError CRC16_Check(uint8_t *buf_ptr, int32_t len,uint16_t checksum);
21
+
22
+uint8_t STH30_CreateCrc(uint8_t *data, uint8_t nbrOfBytes);
23
+etError STH30_CheckCrc(uint8_t *data, uint8_t nbrOfBytes, uint8_t checksum);
24
+
25
+#define POLYNOMIAL 0x131 // P(x) = x^8 + x^5 + x^4 + 1 = 100110001
26
+
27
+#endif /* CRC16_H_ */

+ 42 - 0
Bluecell_Inc/PE43711.h

@@ -0,0 +1,42 @@
1
+/*
2
+ * PE43711.h
3
+ *
4
+ *  Created on: 2019. 6. 28.
5
+ *      Author: parkyj
6
+ */
7
+
8
+#ifndef PE43711_H_
9
+#define PE43711_H_
10
+#include "main.h"
11
+ void PE43711_PinInit(void);
12
+
13
+
14
+ typedef struct{
15
+    GPIO_TypeDef * CLK_PORT;
16
+    uint16_t CLK_PIN;
17
+
18
+    GPIO_TypeDef *DATA_PORT;
19
+    uint16_t DATA_PIN;
20
+
21
+    GPIO_TypeDef *LE_PORT;
22
+    uint16_t LE_PIN;
23
+ }PE43711_st;
24
+ 
25
+ typedef struct{
26
+   PE43711_st ATT0;
27
+   uint8_t    data0;
28
+   PE43711_st ATT1;
29
+   uint8_t    data1;
30
+   PE43711_st ATT2;
31
+   uint8_t    data2;
32
+   PE43711_st ATT3;
33
+   uint8_t    data3;
34
+   PE43711_st ATT4;    
35
+   uint8_t    data4;
36
+   PE43711_st ATT5;    
37
+   uint8_t    data5;
38
+ }ALL_PE43711_st;
39
+ALL_PE43711_st ALL_ATT_3_5G;
40
+
41
+
42
+#endif /* PE43711_H_ */

+ 37 - 0
Bluecell_Inc/uart.h

@@ -0,0 +1,37 @@
1
+/*
2
+ * uart.h
3
+ *
4
+ *  Created on: 2019. 5. 27.
5
+ *      Author: parkyj
6
+ */
7
+
8
+#ifndef UART_H_
9
+#define UART_H_
10
+
11
+#include <stdbool.h>
12
+#include "main.h"
13
+#define hTerminal    huart1
14
+
15
+#define QUEUE_BUFFER_LENGTH 1024
16
+
17
+typedef struct
18
+{
19
+    int head, tail, data;
20
+    uint8_t Buffer[QUEUE_BUFFER_LENGTH];
21
+}UARTQUEUE, *pUARTQUEUE;
22
+typedef struct  {
23
+   uint8_t buffer[QUEUE_BUFFER_LENGTH];
24
+   volatile uint16_t input_p;
25
+   volatile uint16_t output_p;
26
+} uart_hal_tx_type;
27
+
28
+extern UART_HandleTypeDef huart1;
29
+
30
+extern UARTQUEUE TerminalQueue;
31
+void PutDataToUartQueue(UART_HandleTypeDef *huart, uint8_t data);
32
+void InitUartQueue(pUARTQUEUE pQueue);
33
+void GetDataFromUartQueue(UART_HandleTypeDef *huart);
34
+bool Get_UartRcv(void);
35
+void Set_UartRcv(bool);
36
+
37
+#endif /* UART_H_ */

+ 121 - 0
Bluecell_Src/CRC16.c

@@ -0,0 +1,121 @@
1
+/*
2
+ * CRC16.c
3
+ *
4
+ *  Created on: 2019. 7. 3.
5
+ *      Author: parkyj
6
+ */
7
+
8
+/*---------------------------------------------------------------------------------------*/
9
+/*									CRC16	TABLE						    			 */
10
+/*---------------------------------------------------------------------------------------*/
11
+#include "CRC16.h"
12
+const unsigned short Table_CRC16[]  = {
13
+	0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7,
14
+	0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef,
15
+	0x1231, 0x0210, 0x3273, 0x2252, 0x52b5, 0x4294, 0x72f7, 0x62d6,
16
+	0x9339, 0x8318, 0xb37b, 0xa35a, 0xd3bd, 0xc39c, 0xf3ff, 0xe3de,
17
+	0x2462, 0x3443, 0x0420, 0x1401, 0x64e6, 0x74c7, 0x44a4, 0x5485,
18
+	0xa56a, 0xb54b, 0x8528, 0x9509, 0xe5ee, 0xf5cf, 0xc5ac, 0xd58d,
19
+	0x3653, 0x2672, 0x1611, 0x0630, 0x76d7, 0x66f6, 0x5695, 0x46b4,
20
+	0xb75b, 0xa77a, 0x9719, 0x8738, 0xf7df, 0xe7fe, 0xd79d, 0xc7bc,
21
+	0x48c4, 0x58e5, 0x6886, 0x78a7, 0x0840, 0x1861, 0x2802, 0x3823,
22
+	0xc9cc, 0xd9ed, 0xe98e, 0xf9af, 0x8948, 0x9969, 0xa90a, 0xb92b,
23
+	0x5af5, 0x4ad4, 0x7ab7, 0x6a96, 0x1a71, 0x0a50, 0x3a33, 0x2a12,
24
+	0xdbfd, 0xcbdc, 0xfbbf, 0xeb9e, 0x9b79, 0x8b58, 0xbb3b, 0xab1a,
25
+	0x6ca6, 0x7c87, 0x4ce4, 0x5cc5, 0x2c22, 0x3c03, 0x0c60, 0x1c41,
26
+	0xedae, 0xfd8f, 0xcdec, 0xddcd, 0xad2a, 0xbd0b, 0x8d68, 0x9d49,
27
+	0x7e97, 0x6eb6, 0x5ed5, 0x4ef4, 0x3e13, 0x2e32, 0x1e51, 0x0e70,
28
+	0xff9f, 0xefbe, 0xdfdd, 0xcffc, 0xbf1b, 0xaf3a, 0x9f59, 0x8f78,
29
+	0x9188, 0x81a9, 0xb1ca, 0xa1eb, 0xd10c, 0xc12d, 0xf14e, 0xe16f,
30
+	0x1080, 0x00a1, 0x30c2, 0x20e3, 0x5004, 0x4025, 0x7046, 0x6067,
31
+	0x83b9, 0x9398, 0xa3fb, 0xb3da, 0xc33d, 0xd31c, 0xe37f, 0xf35e,
32
+	0x02b1, 0x1290, 0x22f3, 0x32d2, 0x4235, 0x5214, 0x6277, 0x7256,
33
+	0xb5ea, 0xa5cb, 0x95a8, 0x8589, 0xf56e, 0xe54f, 0xd52c, 0xc50d,
34
+	0x34e2, 0x24c3, 0x14a0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405,
35
+	0xa7db, 0xb7fa, 0x8799, 0x97b8, 0xe75f, 0xf77e, 0xc71d, 0xd73c,
36
+	0x26d3, 0x36f2, 0x0691, 0x16b0, 0x6657, 0x7676, 0x4615, 0x5634,
37
+	0xd94c, 0xc96d, 0xf90e, 0xe92f, 0x99c8, 0x89e9, 0xb98a, 0xa9ab,
38
+	0x5844, 0x4865, 0x7806, 0x6827, 0x18c0, 0x08e1, 0x3882, 0x28a3,
39
+	0xcb7d, 0xdb5c, 0xeb3f, 0xfb1e, 0x8bf9, 0x9bd8, 0xabbb, 0xbb9a,
40
+	0x4a75, 0x5a54, 0x6a37, 0x7a16, 0x0af1, 0x1ad0, 0x2ab3, 0x3a92,
41
+	0xfd2e, 0xed0f, 0xdd6c, 0xcd4d, 0xbdaa, 0xad8b, 0x9de8, 0x8dc9,
42
+	0x7c26, 0x6c07, 0x5c64, 0x4c45, 0x3ca2, 0x2c83, 0x1ce0, 0x0cc1,
43
+	0xef1f, 0xff3e, 0xcf5d, 0xdf7c, 0xaf9b, 0xbfba, 0x8fd9, 0x9ff8,
44
+	0x6e17, 0x7e36, 0x4e55, 0x5e74, 0x2e93, 0x3eb2, 0x0ed1, 0x1ef0
45
+};
46
+
47
+//-----------------------------------------------
48
+//UART CRC üũ ÇÔ¼ö
49
+//-----------------------------------------------
50
+unsigned short genCRC16(char *buf_ptr, int len)
51
+{
52
+	unsigned char dt = 0U;
53
+	unsigned short crc16 = 0U;
54
+
55
+	len *= 8;
56
+	for(crc16 = (unsigned short)0x0000; len >= 8; len -= 8, buf_ptr++)
57
+	{
58
+		crc16 = (unsigned short)(Table_CRC16[(crc16>>8) ^ (unsigned short)(*buf_ptr)] ^ (crc16<<8));
59
+	}
60
+
61
+	if(len != 0)
62
+	{
63
+		dt = (unsigned char)(*buf_ptr << 8);
64
+
65
+		while(len != 0)
66
+		{
67
+			len--;
68
+
69
+			if(((crc16^dt) & ((unsigned short)1 << 15)) != 0)
70
+			{
71
+				crc16 =  (unsigned short)(crc16 << 1);
72
+				crc16 = (unsigned short)(crc16 ^ 0x1021);
73
+			}
74
+			else
75
+			{
76
+				crc16 =  (unsigned short)(crc16 << 1);
77
+			}
78
+			dt = (unsigned char)(dt << 1);
79
+		}
80
+	}
81
+	return(crc16);
82
+}
83
+
84
+uint8_t STH30_CreateCrc(uint8_t *data, uint8_t nbrOfBytes)
85
+{
86
+  uint8_t bit;        // bit mask
87
+  uint8_t crc = 0xFF; // calculated checksum
88
+  uint8_t byteCtr;    // byte counter
89
+
90
+  // calculates 8-Bit checksum with given polynomial
91
+  for(byteCtr = 0; byteCtr < nbrOfBytes; byteCtr++)
92
+  {
93
+    crc ^= (data[byteCtr]);
94
+    for(bit = 8; bit > 0; --bit)
95
+    {
96
+      if(crc & 0x80) crc = (crc << 1) ^ POLYNOMIAL;
97
+      else           crc = (crc << 1);
98
+    }
99
+  }
100
+  return crc;
101
+}
102
+etError STH30_CheckCrc(uint8_t *data, uint8_t nbrOfBytes, uint8_t checksum)
103
+{
104
+  uint8_t bit;        // bit mask
105
+  uint8_t crc = 0xFF; // calculated checksum
106
+  uint8_t byteCtr;    // byte counter
107
+
108
+  // calculates 8-Bit checksum with given polynomial
109
+  for(byteCtr = 0; byteCtr < nbrOfBytes; byteCtr++)
110
+  {
111
+    crc ^= (data[byteCtr]);
112
+    for(bit = 8; bit > 0; --bit)
113
+    {
114
+      if(crc & 0x80) crc = (crc << 1) ^ POLYNOMIAL;
115
+      else           crc = (crc << 1);
116
+    }
117
+  }
118
+  if(crc != checksum) return CHECKSUM_ERROR;
119
+  else                return NO_ERROR;
120
+}
121
+

+ 141 - 0
Bluecell_Src/PE43711.c

@@ -0,0 +1,141 @@
1
+/*
2
+ * PE43711.c
3
+ *
4
+ *  Created on: 2019. 6. 28.
5
+ *      Author: parkyj
6
+ */
7
+ #include "PE43711.h"
8
+#if 1 // PYJ.2019.07.26_BEGIN -- 
9
+#define ATTEN_3_5G_Initial_Val 0
10
+extern void Pol_Delay_us(volatile uint32_t microseconds);
11
+void PE43711_ALL_atten_ctrl(ALL_PE43711_st ATT);
12
+
13
+void PE43711_atten_ctrl(PE43711_st ATT ,uint8_t data);
14
+
15
+/*
16
+ALL_PE43711_st ALL_ATT_3_5G;
17
+
18
+PE43711_st ATT_3_5G_LOW1 ={
19
+    ATT_CLK_3_5G_GPIO_Port,
20
+    ATT_CLK_3_5G_Pin,
21
+    ATT_DATA_3_5G_LOW1_GPIO_Port,
22
+    ATT_DATA_3_5G_LOW1_Pin,
23
+    ATT_EN_3_5G_GPIO_Port,
24
+    ATT_EN_3_5G_Pin,
25
+}; 
26
+PE43711_st ATT_3_5G_HIGH1 ={
27
+    ATT_CLK_3_5G_GPIO_Port,
28
+    ATT_CLK_3_5G_Pin,
29
+    ATT_DATA_3_5G_HIGH1_GPIO_Port,
30
+    ATT_DATA_3_5G_HIGH1_Pin,
31
+    ATT_EN_3_5G_GPIO_Port,
32
+    ATT_EN_3_5G_Pin,
33
+}; 
34
+PE43711_st ATT_3_5G_COM1={
35
+    ATT_CLK_3_5G_GPIO_Port,
36
+    ATT_CLK_3_5G_Pin,
37
+    ATT_DATA_3_5G_COM1_GPIO_Port,
38
+    ATT_DATA_3_5G_COM1_Pin,
39
+    ATT_EN_3_5G_GPIO_Port,
40
+    ATT_EN_3_5G_Pin,
41
+}; 
42
+PE43711_st ATT_3_5G_LOW2 ={
43
+  ATT_CLK_3_5G_GPIO_Port,
44
+  ATT_CLK_3_5G_Pin,
45
+  ATT_DATA_3_5G_LOW2_GPIO_Port,
46
+  ATT_DATA_3_5G_LOW2_Pin,
47
+  ATT_EN_3_5G_GPIO_Port,
48
+  ATT_EN_3_5G_Pin,
49
+}; 
50
+PE43711_st ATT_3_5G_HIGH2 ={
51
+  ATT_CLK_3_5G_GPIO_Port,
52
+  ATT_CLK_3_5G_Pin,
53
+  ATT_DATA_3_5G_HIGH2_GPIO_Port,
54
+  ATT_DATA_3_5G_HIGH2_Pin,
55
+  ATT_EN_3_5G_GPIO_Port,
56
+  ATT_EN_3_5G_Pin,
57
+}; 
58
+PE43711_st ATT_3_5G_COM2={
59
+    ATT_CLK_3_5G_GPIO_Port,
60
+    ATT_CLK_3_5G_Pin,
61
+    ATT_DATA_3_5G_COM2_GPIO_Port,
62
+    ATT_DATA_3_5G_COM2_Pin,
63
+    ATT_EN_3_5G_GPIO_Port,
64
+    ATT_EN_3_5G_Pin,
65
+}; 
66
+*/
67
+void PE43711_PinInit(void){
68
+ /* ALL_ATT_3_5G.ATT0 = ATT_3_5G_LOW1;
69
+  ALL_ATT_3_5G.ATT1 = ATT_3_5G_HIGH1;
70
+  ALL_ATT_3_5G.ATT2 = ATT_3_5G_COM1;
71
+  ALL_ATT_3_5G.ATT3 = ATT_3_5G_LOW2;
72
+  ALL_ATT_3_5G.ATT4 = ATT_3_5G_HIGH2;    
73
+  ALL_ATT_3_5G.ATT5 = ATT_3_5G_COM2;
74
+  ALL_ATT_3_5G.data0 = ATTEN_3_5G_Initial_Val;    
75
+  ALL_ATT_3_5G.data1 = ATTEN_3_5G_Initial_Val;
76
+  ALL_ATT_3_5G.data2 = ATTEN_3_5G_Initial_Val;
77
+  ALL_ATT_3_5G.data3 = ATTEN_3_5G_Initial_Val;
78
+  ALL_ATT_3_5G.data4 = ATTEN_3_5G_Initial_Val;    
79
+  ALL_ATT_3_5G.data5 = ATTEN_3_5G_Initial_Val;        
80
+  PE43711_ALL_atten_ctrl(ALL_ATT_3_5G);*/
81
+}
82
+#endif // PYJ.2019.07.26_END -- 
83
+void Bit_Compare(PE43711_st ATT,uint8_t data,uint8_t Shift_Index){
84
+    if(data & (0x01 << Shift_Index)){
85
+        HAL_GPIO_WritePin(ATT.DATA_PORT,ATT.DATA_PIN,GPIO_PIN_SET);//DATA
86
+    }
87
+    else{
88
+        HAL_GPIO_WritePin(ATT.DATA_PORT,ATT.DATA_PIN,GPIO_PIN_RESET);//DATA
89
+    }
90
+}
91
+void PE43711_ALL_atten_ctrl(ALL_PE43711_st ATT){
92
+    HAL_GPIO_WritePin(ATT.ATT0.LE_PORT,ATT.ATT0.LE_PIN,GPIO_PIN_RESET);
93
+    Pol_Delay_us(10);
94
+//    printf("why not? \r\n");
95
+    for(uint8_t i = 0; i < 8; i++){
96
+      Bit_Compare(ATT.ATT0,ATT.data0,i);
97
+      Bit_Compare(ATT.ATT1,ATT.data1,i);
98
+      Bit_Compare(ATT.ATT2,ATT.data2,i);
99
+      Bit_Compare(ATT.ATT3,ATT.data3,i);
100
+      Bit_Compare(ATT.ATT4,ATT.data4,i);
101
+      Bit_Compare(ATT.ATT5,ATT.data5,i);
102
+  		HAL_GPIO_WritePin(ATT.ATT0.CLK_PORT,ATT.ATT0.CLK_PIN,GPIO_PIN_SET);//CLOCK
103
+  		Pol_Delay_us(10);
104
+  		HAL_GPIO_WritePin(ATT.ATT0.CLK_PORT,ATT.ATT0.CLK_PIN,GPIO_PIN_RESET);//CLOCK
105
+    }
106
+    HAL_GPIO_WritePin(GPIOB,GPIO_PIN_15,GPIO_PIN_RESET);//DATA
107
+    HAL_GPIO_WritePin(ATT.ATT0.LE_PORT,ATT.ATT0.LE_PIN,GPIO_PIN_SET);//LE
108
+    Pol_Delay_us(10);
109
+    HAL_GPIO_WritePin(ATT.ATT0.LE_PORT,ATT.ATT0.LE_PIN,GPIO_PIN_RESET);
110
+}
111
+
112
+void PE43711_atten_ctrl(PE43711_st ATT ,uint8_t data){
113
+    uint8_t i = 0;
114
+    uint8_t temp = 0;
115
+    data = 4 * data;
116
+    temp = (uint8_t)data;
117
+    
118
+    HAL_GPIO_WritePin(ATT.LE_PORT,ATT.LE_PIN,GPIO_PIN_RESET);
119
+    Pol_Delay_us(10);
120
+    for(i = 0; i < 8; i++){
121
+        if((uint8_t)temp & 0x01){
122
+           HAL_GPIO_WritePin(ATT.DATA_PORT,ATT.DATA_PIN,GPIO_PIN_SET);//DATA
123
+        }
124
+           else{
125
+           HAL_GPIO_WritePin(ATT.DATA_PORT,ATT.DATA_PIN,GPIO_PIN_RESET);//DATA
126
+           }
127
+
128
+		HAL_GPIO_WritePin(ATT.CLK_PORT,ATT.CLK_PIN,GPIO_PIN_SET);//CLOCK
129
+		Pol_Delay_us(10);
130
+		HAL_GPIO_WritePin(ATT.CLK_PORT,ATT.CLK_PIN,GPIO_PIN_RESET);//CLOCK
131
+		Pol_Delay_us(10);
132
+		temp >>= 1;
133
+    }
134
+    
135
+	HAL_GPIO_WritePin(ATT.CLK_PORT,ATT.CLK_PIN,GPIO_PIN_RESET);//CLOCK
136
+    HAL_GPIO_WritePin(ATT.DATA_PORT,ATT.DATA_PIN,GPIO_PIN_RESET);//DATA
137
+    HAL_Delay(5);
138
+    HAL_GPIO_WritePin(ATT.LE_PORT,ATT.LE_PIN,GPIO_PIN_SET);//LE
139
+    Pol_Delay_us(10);
140
+    HAL_GPIO_WritePin(ATT.LE_PORT,ATT.LE_PIN,GPIO_PIN_RESET);
141
+}

+ 102 - 0
Bluecell_Src/uart.c

@@ -0,0 +1,102 @@
1
+/*
2
+ * uart.c
3
+ *
4
+ *  Created on: 2019. 5. 27.
5
+ *      Author: parkyj
6
+ */
7
+#include <stdio.h>
8
+#include "uart.h"
9
+//#include "zig_operate.h"
10
+#include "string.h"
11
+
12
+UARTQUEUE TerminalQueue;
13
+UARTQUEUE WifiQueue;
14
+uart_hal_tx_type uart_hal_tx;
15
+
16
+void InitUartQueue(pUARTQUEUE pQueue)
17
+{
18
+  setbuf(stdout, NULL);
19
+  pQueue->data = pQueue->head = pQueue->tail = 0;
20
+  uart_hal_tx.output_p = uart_hal_tx.input_p = 0;
21
+  if (HAL_UART_Receive_DMA(&hTerminal, TerminalQueue.Buffer, 1) != HAL_OK)
22
+  {
23
+    //_Error_Handler(__FILE__, __LINE__);
24
+  }
25
+  //HAL_UART_Receive_DMA(&hTerminal,  TerminalQueue.Buffer, 1);
26
+  //HAL_UART_Receive_IT(hTerminal, pQueue->Buffer + pQueue->head, 1);
27
+}
28
+
29
+void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
30
+{
31
+    pUARTQUEUE pQueue;
32
+//    printf("Function : %s : \r\n",__func__);
33
+   // AdcTimerCnt = UartRxTimerCnt = 0;
34
+    pQueue = &TerminalQueue;
35
+    pQueue->head++;
36
+    if (pQueue->head >= QUEUE_BUFFER_LENGTH) pQueue->head = 0;
37
+    pQueue->data++;
38
+    if (pQueue->data >= QUEUE_BUFFER_LENGTH)
39
+        GetDataFromUartQueue(huart);
40
+    HAL_UART_Receive_DMA(&hTerminal, pQueue->Buffer + pQueue->head, 1);
41
+   // Set_UartRcv(true);
42
+}
43
+
44
+
45
+
46
+void PutDataToUartQueue(UART_HandleTypeDef *huart, uint8_t data)
47
+{
48
+    pUARTQUEUE pQueue = &TerminalQueue;
49
+    if (pQueue->data >= QUEUE_BUFFER_LENGTH)
50
+        GetDataFromUartQueue(huart);
51
+    pQueue->Buffer[pQueue->head++] = data;
52
+    if (pQueue->head == QUEUE_BUFFER_LENGTH) pQueue->head = 0;
53
+    pQueue->data++;
54
+   // HAL_UART_Receive_DMA(&hTerminal,  pQueue->Buffer + pQueue->head, 10);
55
+}
56
+
57
+uint8_t uart_buf[QUEUE_BUFFER_LENGTH];
58
+void GetDataFromUartQueue(UART_HandleTypeDef *huart)
59
+{
60
+    volatile static int cnt;
61
+
62
+    
63
+//    UART_HandleTypeDef *dst = (huart->Instance == USART2 ? &hWifi:&hTerminal);
64
+//    UART_HandleTypeDef *dst = &hTerminal;
65
+    pUARTQUEUE pQueue = &TerminalQueue;
66
+//    if (HAL_UART_Transmit(dst, pQueue->Buffer + pQueue->tail, 1, 3000) != HAL_OK)
67
+//    {
68
+//       _Error_Handler(__FILE__, __LINE__);
69
+//    }
70
+    uart_buf[cnt++] = *(pQueue->Buffer + pQueue->tail); 
71
+#ifdef DEBUG_PRINT
72
+    printf("%02x ",*(pQueue->Buffer + pQueue->tail)) ;
73
+#endif /* DEBUG_PRINT */
74
+
75
+    pQueue->tail++;
76
+    if (pQueue->tail >= QUEUE_BUFFER_LENGTH) pQueue->tail = 0;
77
+    pQueue->data--;
78
+    
79
+    if(pQueue->data == 0){
80
+//        printf("data cnt zero !!!  \r\n");
81
+        //RF_Ctrl_Main(&uart_buf[Header]);
82
+//        HAL_UART_Transmit(dst, &temp_buf[BLUECELL_HEADER00], 11, 3000);
83
+#if 0 // PYJ.2019.07.15_BEGIN -- 
84
+            for(int i = 0; i < cnt; i++){
85
+                printf("%02x ",uart_buf[i]);
86
+            }
87
+#endif // PYJ.2019.07.15_END -- 
88
+        memset(uart_buf,0x00,cnt);
89
+        
90
+//        for(int i  = 0; i < cnt; i++)
91
+//            uart_buf[i] = 0;
92
+        cnt = 0;
93
+        
94
+        HAL_Delay(1);
95
+    }
96
+
97
+}
98
+
99
+void Uart1_Data_Send(uint8_t* data,uint8_t size){
100
+    HAL_UART_Transmit(&huart1, data,size, 10); 
101
+}
102
+

+ 17 - 1
Inc/main.h

@@ -62,10 +62,26 @@ void Error_Handler(void);
62 62
 #define FAIL_MBIC_GPIO_Port GPIOE
63 63
 #define BOOT_LED_Pin GPIO_PIN_15
64 64
 #define BOOT_LED_GPIO_Port GPIOC
65
+#define DET_UL4_OUT_Pin GPIO_PIN_6
66
+#define DET_UL4_OUT_GPIO_Port GPIOF
67
+#define DET_DL1_IN_Pin GPIO_PIN_7
68
+#define DET_DL1_IN_GPIO_Port GPIOF
69
+#define DET_DL2_IN_Pin GPIO_PIN_8
70
+#define DET_DL2_IN_GPIO_Port GPIOF
71
+#define DET_DL3_IN_Pin GPIO_PIN_9
72
+#define DET_DL3_IN_GPIO_Port GPIOF
73
+#define DET_DL4_IN_Pin GPIO_PIN_10
74
+#define DET_DL4_IN_GPIO_Port GPIOF
65 75
 #define RFU_TX_Pin GPIO_PIN_2
66 76
 #define RFU_TX_GPIO_Port GPIOA
67 77
 #define RFU_RX_Pin GPIO_PIN_3
68 78
 #define RFU_RX_GPIO_Port GPIOA
79
+#define DET_UL1_OUT_Pin GPIO_PIN_4
80
+#define DET_UL1_OUT_GPIO_Port GPIOA
81
+#define DET_UL2_OUT_Pin GPIO_PIN_5
82
+#define DET_UL2_OUT_GPIO_Port GPIOA
83
+#define DET_UL3_OUT_Pin GPIO_PIN_6
84
+#define DET_UL3_OUT_GPIO_Port GPIOA
69 85
 #define ATT_CLOCK3_Pin GPIO_PIN_0
70 86
 #define ATT_CLOCK3_GPIO_Port GPIOG
71 87
 #define ATT_DATA3_Pin GPIO_PIN_1
@@ -141,7 +157,7 @@ void Error_Handler(void);
141 157
 #define ATT_EN_DL1_Pin GPIO_PIN_9
142 158
 #define ATT_EN_DL1_GPIO_Port GPIOB
143 159
 /* USER CODE BEGIN Private defines */
144
-
160
+#define ADC_EA 8
145 161
 /* USER CODE END Private defines */
146 162
 
147 163
 #ifdef __cplusplus

+ 2 - 0
Inc/stm32f1xx_it.h

@@ -56,10 +56,12 @@ void SVC_Handler(void);
56 56
 void DebugMon_Handler(void);
57 57
 void PendSV_Handler(void);
58 58
 void SysTick_Handler(void);
59
+void DMA1_Channel1_IRQHandler(void);
59 60
 void DMA1_Channel4_IRQHandler(void);
60 61
 void DMA1_Channel5_IRQHandler(void);
61 62
 void TIM2_IRQHandler(void);
62 63
 void USART1_IRQHandler(void);
64
+void DMA2_Channel4_5_IRQHandler(void);
63 65
 /* USER CODE BEGIN EFP */
64 66
 
65 67
 /* USER CODE END EFP */

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 87 - 26
STM32F103ZET_JDASMBIC.ioc


+ 82 - 14
Src/main.c

@@ -23,7 +23,7 @@
23 23
 
24 24
 /* Private includes ----------------------------------------------------------*/
25 25
 /* USER CODE BEGIN Includes */
26
-
26
+#include "PE43711.h"
27 27
 /* USER CODE END Includes */
28 28
 
29 29
 /* Private typedef -----------------------------------------------------------*/
@@ -43,6 +43,8 @@
43 43
 /* Private variables ---------------------------------------------------------*/
44 44
 ADC_HandleTypeDef hadc1;
45 45
 ADC_HandleTypeDef hadc3;
46
+DMA_HandleTypeDef hdma_adc1;
47
+DMA_HandleTypeDef hdma_adc3;
46 48
 
47 49
 I2C_HandleTypeDef hi2c2;
48 50
 
@@ -54,7 +56,11 @@ DMA_HandleTypeDef hdma_usart1_rx;
54 56
 DMA_HandleTypeDef hdma_usart1_tx;
55 57
 
56 58
 /* USER CODE BEGIN PV */
57
-
59
+uint32_t ADCvalue[ADC_EA];
60
+volatile uint32_t AdcTimerCnt = 0;
61
+volatile uint32_t LedTimerCnt = 0;
62
+volatile uint32_t UartRxTimerCnt = 0;
63
+volatile uint32_t LDTimerCnt = 0;
58 64
 /* USER CODE END PV */
59 65
 
60 66
 /* Private function prototypes -----------------------------------------------*/
@@ -73,7 +79,11 @@ static void MX_USART2_UART_Init(void);
73 79
 
74 80
 /* Private user code ---------------------------------------------------------*/
75 81
 /* USER CODE BEGIN 0 */
76
-
82
+int _write (int file, uint8_t *ptr, uint16_t len)
83
+{
84
+    HAL_UART_Transmit(&huart1, ptr, len,10);
85
+    return len;
86
+}
77 87
 /* USER CODE END 0 */
78 88
 
79 89
 /**
@@ -113,7 +123,11 @@ int main(void)
113 123
   MX_TIM6_Init();
114 124
   MX_USART2_UART_Init();
115 125
   /* USER CODE BEGIN 2 */
116
-
126
+  while(!(HAL_ADCEx_Calibration_Start(&hadc1)==HAL_OK));
127
+  while(!(HAL_ADCEx_Calibration_Start(&hadc3)==HAL_OK));
128
+  PE43711_PinInit();
129
+  HAL_ADC_Start_DMA(&hadc1, (uint32_t*)ADCvalue, 3);
130
+  HAL_ADC_Start_DMA(&hadc2, (uint32_t*)ADCvalue, 5);
117 131
   /* USER CODE END 2 */
118 132
  
119 133
  
@@ -146,7 +160,7 @@ void SystemClock_Config(void)
146 160
   RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
147 161
   RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
148 162
   RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI_DIV2;
149
-  RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL16;
163
+  RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL14;
150 164
   if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
151 165
   {
152 166
     Error_Handler();
@@ -165,7 +179,7 @@ void SystemClock_Config(void)
165 179
     Error_Handler();
166 180
   }
167 181
   PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC;
168
-  PeriphClkInit.AdcClockSelection = RCC_ADCPCLK2_DIV8;
182
+  PeriphClkInit.AdcClockSelection = RCC_ADCPCLK2_DIV4;
169 183
   if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
170 184
   {
171 185
     Error_Handler();
@@ -192,12 +206,12 @@ static void MX_ADC1_Init(void)
192 206
   /** Common config 
193 207
   */
194 208
   hadc1.Instance = ADC1;
195
-  hadc1.Init.ScanConvMode = ADC_SCAN_DISABLE;
196
-  hadc1.Init.ContinuousConvMode = DISABLE;
209
+  hadc1.Init.ScanConvMode = ADC_SCAN_ENABLE;
210
+  hadc1.Init.ContinuousConvMode = ENABLE;
197 211
   hadc1.Init.DiscontinuousConvMode = DISABLE;
198 212
   hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START;
199 213
   hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;
200
-  hadc1.Init.NbrOfConversion = 1;
214
+  hadc1.Init.NbrOfConversion = 3;
201 215
   if (HAL_ADC_Init(&hadc1) != HAL_OK)
202 216
   {
203 217
     Error_Handler();
@@ -211,6 +225,20 @@ static void MX_ADC1_Init(void)
211 225
   {
212 226
     Error_Handler();
213 227
   }
228
+  /** Configure Regular Channel 
229
+  */
230
+  sConfig.Rank = ADC_REGULAR_RANK_2;
231
+  if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
232
+  {
233
+    Error_Handler();
234
+  }
235
+  /** Configure Regular Channel 
236
+  */
237
+  sConfig.Rank = ADC_REGULAR_RANK_3;
238
+  if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
239
+  {
240
+    Error_Handler();
241
+  }
214 242
   /* USER CODE BEGIN ADC1_Init 2 */
215 243
 
216 244
   /* USER CODE END ADC1_Init 2 */
@@ -237,12 +265,12 @@ static void MX_ADC3_Init(void)
237 265
   /** Common config 
238 266
   */
239 267
   hadc3.Instance = ADC3;
240
-  hadc3.Init.ScanConvMode = ADC_SCAN_DISABLE;
241
-  hadc3.Init.ContinuousConvMode = DISABLE;
268
+  hadc3.Init.ScanConvMode = ADC_SCAN_ENABLE;
269
+  hadc3.Init.ContinuousConvMode = ENABLE;
242 270
   hadc3.Init.DiscontinuousConvMode = DISABLE;
243 271
   hadc3.Init.ExternalTrigConv = ADC_SOFTWARE_START;
244 272
   hadc3.Init.DataAlign = ADC_DATAALIGN_RIGHT;
245
-  hadc3.Init.NbrOfConversion = 1;
273
+  hadc3.Init.NbrOfConversion = 5;
246 274
   if (HAL_ADC_Init(&hadc3) != HAL_OK)
247 275
   {
248 276
     Error_Handler();
@@ -256,6 +284,34 @@ static void MX_ADC3_Init(void)
256 284
   {
257 285
     Error_Handler();
258 286
   }
287
+  /** Configure Regular Channel 
288
+  */
289
+  sConfig.Rank = ADC_REGULAR_RANK_2;
290
+  if (HAL_ADC_ConfigChannel(&hadc3, &sConfig) != HAL_OK)
291
+  {
292
+    Error_Handler();
293
+  }
294
+  /** Configure Regular Channel 
295
+  */
296
+  sConfig.Rank = ADC_REGULAR_RANK_3;
297
+  if (HAL_ADC_ConfigChannel(&hadc3, &sConfig) != HAL_OK)
298
+  {
299
+    Error_Handler();
300
+  }
301
+  /** Configure Regular Channel 
302
+  */
303
+  sConfig.Rank = ADC_REGULAR_RANK_4;
304
+  if (HAL_ADC_ConfigChannel(&hadc3, &sConfig) != HAL_OK)
305
+  {
306
+    Error_Handler();
307
+  }
308
+  /** Configure Regular Channel 
309
+  */
310
+  sConfig.Rank = ADC_REGULAR_RANK_5;
311
+  if (HAL_ADC_ConfigChannel(&hadc3, &sConfig) != HAL_OK)
312
+  {
313
+    Error_Handler();
314
+  }
259 315
   /* USER CODE BEGIN ADC3_Init 2 */
260 316
 
261 317
   /* USER CODE END ADC3_Init 2 */
@@ -314,7 +370,7 @@ static void MX_TIM6_Init(void)
314 370
 
315 371
   /* USER CODE END TIM6_Init 1 */
316 372
   htim6.Instance = TIM6;
317
-  htim6.Init.Prescaler = 64000-1;
373
+  htim6.Init.Prescaler = 56000-1;
318 374
   htim6.Init.CounterMode = TIM_COUNTERMODE_UP;
319 375
   htim6.Init.Period = 1;
320 376
   htim6.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
@@ -408,14 +464,21 @@ static void MX_DMA_Init(void)
408 464
 
409 465
   /* DMA controller clock enable */
410 466
   __HAL_RCC_DMA1_CLK_ENABLE();
467
+  __HAL_RCC_DMA2_CLK_ENABLE();
411 468
 
412 469
   /* DMA interrupt init */
470
+  /* DMA1_Channel1_IRQn interrupt configuration */
471
+  HAL_NVIC_SetPriority(DMA1_Channel1_IRQn, 0, 0);
472
+  HAL_NVIC_EnableIRQ(DMA1_Channel1_IRQn);
413 473
   /* DMA1_Channel4_IRQn interrupt configuration */
414 474
   HAL_NVIC_SetPriority(DMA1_Channel4_IRQn, 0, 0);
415 475
   HAL_NVIC_EnableIRQ(DMA1_Channel4_IRQn);
416 476
   /* DMA1_Channel5_IRQn interrupt configuration */
417 477
   HAL_NVIC_SetPriority(DMA1_Channel5_IRQn, 0, 0);
418 478
   HAL_NVIC_EnableIRQ(DMA1_Channel5_IRQn);
479
+  /* DMA2_Channel4_5_IRQn interrupt configuration */
480
+  HAL_NVIC_SetPriority(DMA2_Channel4_5_IRQn, 0, 0);
481
+  HAL_NVIC_EnableIRQ(DMA2_Channel4_5_IRQn);
419 482
 
420 483
 }
421 484
 
@@ -528,7 +591,12 @@ void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
528 591
     HAL_IncTick();
529 592
   }
530 593
   /* USER CODE BEGIN Callback 1 */
531
-
594
+  if(htim->Instance == TIM6){
595
+      UartRxTimerCnt++;
596
+      LedTimerCnt++;
597
+      AdcTimerCnt++;
598
+      LDTimerCnt++;
599
+  }
532 600
   /* USER CODE END Callback 1 */
533 601
 }
534 602
 

+ 48 - 6
Src/stm32f1xx_hal_msp.c

@@ -24,6 +24,10 @@
24 24
 /* USER CODE BEGIN Includes */
25 25
 
26 26
 /* USER CODE END Includes */
27
+extern DMA_HandleTypeDef hdma_adc1;
28
+
29
+extern DMA_HandleTypeDef hdma_adc3;
30
+
27 31
 extern DMA_HandleTypeDef hdma_usart1_rx;
28 32
 
29 33
 extern DMA_HandleTypeDef hdma_usart1_tx;
@@ -107,10 +111,27 @@ void HAL_ADC_MspInit(ADC_HandleTypeDef* hadc)
107 111
     PA5     ------> ADC1_IN5
108 112
     PA6     ------> ADC1_IN6 
109 113
     */
110
-    GPIO_InitStruct.Pin = GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6;
114
+    GPIO_InitStruct.Pin = DET_UL1_OUT_Pin|DET_UL2_OUT_Pin|DET_UL3_OUT_Pin;
111 115
     GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
112 116
     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
113 117
 
118
+    /* ADC1 DMA Init */
119
+    /* ADC1 Init */
120
+    hdma_adc1.Instance = DMA1_Channel1;
121
+    hdma_adc1.Init.Direction = DMA_PERIPH_TO_MEMORY;
122
+    hdma_adc1.Init.PeriphInc = DMA_PINC_DISABLE;
123
+    hdma_adc1.Init.MemInc = DMA_MINC_ENABLE;
124
+    hdma_adc1.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD;
125
+    hdma_adc1.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD;
126
+    hdma_adc1.Init.Mode = DMA_NORMAL;
127
+    hdma_adc1.Init.Priority = DMA_PRIORITY_LOW;
128
+    if (HAL_DMA_Init(&hdma_adc1) != HAL_OK)
129
+    {
130
+      Error_Handler();
131
+    }
132
+
133
+    __HAL_LINKDMA(hadc,DMA_Handle,hdma_adc1);
134
+
114 135
   /* USER CODE BEGIN ADC1_MspInit 1 */
115 136
 
116 137
   /* USER CODE END ADC1_MspInit 1 */
@@ -131,11 +152,28 @@ void HAL_ADC_MspInit(ADC_HandleTypeDef* hadc)
131 152
     PF9     ------> ADC3_IN7
132 153
     PF10     ------> ADC3_IN8 
133 154
     */
134
-    GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9 
135
-                          |GPIO_PIN_10;
155
+    GPIO_InitStruct.Pin = DET_UL4_OUT_Pin|DET_DL1_IN_Pin|DET_DL2_IN_Pin|DET_DL3_IN_Pin 
156
+                          |DET_DL4_IN_Pin;
136 157
     GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
137 158
     HAL_GPIO_Init(GPIOF, &GPIO_InitStruct);
138 159
 
160
+    /* ADC3 DMA Init */
161
+    /* ADC3 Init */
162
+    hdma_adc3.Instance = DMA2_Channel5;
163
+    hdma_adc3.Init.Direction = DMA_PERIPH_TO_MEMORY;
164
+    hdma_adc3.Init.PeriphInc = DMA_PINC_DISABLE;
165
+    hdma_adc3.Init.MemInc = DMA_MINC_ENABLE;
166
+    hdma_adc3.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD;
167
+    hdma_adc3.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD;
168
+    hdma_adc3.Init.Mode = DMA_NORMAL;
169
+    hdma_adc3.Init.Priority = DMA_PRIORITY_LOW;
170
+    if (HAL_DMA_Init(&hdma_adc3) != HAL_OK)
171
+    {
172
+      Error_Handler();
173
+    }
174
+
175
+    __HAL_LINKDMA(hadc,DMA_Handle,hdma_adc3);
176
+
139 177
   /* USER CODE BEGIN ADC3_MspInit 1 */
140 178
 
141 179
   /* USER CODE END ADC3_MspInit 1 */
@@ -164,8 +202,10 @@ void HAL_ADC_MspDeInit(ADC_HandleTypeDef* hadc)
164 202
     PA5     ------> ADC1_IN5
165 203
     PA6     ------> ADC1_IN6 
166 204
     */
167
-    HAL_GPIO_DeInit(GPIOA, GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6);
205
+    HAL_GPIO_DeInit(GPIOA, DET_UL1_OUT_Pin|DET_UL2_OUT_Pin|DET_UL3_OUT_Pin);
168 206
 
207
+    /* ADC1 DMA DeInit */
208
+    HAL_DMA_DeInit(hadc->DMA_Handle);
169 209
   /* USER CODE BEGIN ADC1_MspDeInit 1 */
170 210
 
171 211
   /* USER CODE END ADC1_MspDeInit 1 */
@@ -185,9 +225,11 @@ void HAL_ADC_MspDeInit(ADC_HandleTypeDef* hadc)
185 225
     PF9     ------> ADC3_IN7
186 226
     PF10     ------> ADC3_IN8 
187 227
     */
188
-    HAL_GPIO_DeInit(GPIOF, GPIO_PIN_6|GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9 
189
-                          |GPIO_PIN_10);
228
+    HAL_GPIO_DeInit(GPIOF, DET_UL4_OUT_Pin|DET_DL1_IN_Pin|DET_DL2_IN_Pin|DET_DL3_IN_Pin 
229
+                          |DET_DL4_IN_Pin);
190 230
 
231
+    /* ADC3 DMA DeInit */
232
+    HAL_DMA_DeInit(hadc->DMA_Handle);
191 233
   /* USER CODE BEGIN ADC3_MspDeInit 1 */
192 234
 
193 235
   /* USER CODE END ADC3_MspDeInit 1 */

+ 30 - 0
Src/stm32f1xx_it.c

@@ -56,6 +56,8 @@
56 56
 /* USER CODE END 0 */
57 57
 
58 58
 /* External variables --------------------------------------------------------*/
59
+extern DMA_HandleTypeDef hdma_adc1;
60
+extern DMA_HandleTypeDef hdma_adc3;
59 61
 extern DMA_HandleTypeDef hdma_usart1_rx;
60 62
 extern DMA_HandleTypeDef hdma_usart1_tx;
61 63
 extern UART_HandleTypeDef huart1;
@@ -201,6 +203,20 @@ void SysTick_Handler(void)
201 203
 /* please refer to the startup file (startup_stm32f1xx.s).                    */
202 204
 /******************************************************************************/
203 205
 
206
+/**
207
+  * @brief This function handles DMA1 channel1 global interrupt.
208
+  */
209
+void DMA1_Channel1_IRQHandler(void)
210
+{
211
+  /* USER CODE BEGIN DMA1_Channel1_IRQn 0 */
212
+
213
+  /* USER CODE END DMA1_Channel1_IRQn 0 */
214
+  HAL_DMA_IRQHandler(&hdma_adc1);
215
+  /* USER CODE BEGIN DMA1_Channel1_IRQn 1 */
216
+
217
+  /* USER CODE END DMA1_Channel1_IRQn 1 */
218
+}
219
+
204 220
 /**
205 221
   * @brief This function handles DMA1 channel4 global interrupt.
206 222
   */
@@ -257,6 +273,20 @@ void USART1_IRQHandler(void)
257 273
   /* USER CODE END USART1_IRQn 1 */
258 274
 }
259 275
 
276
+/**
277
+  * @brief This function handles DMA2 channel4 and channel5 global interrupts.
278
+  */
279
+void DMA2_Channel4_5_IRQHandler(void)
280
+{
281
+  /* USER CODE BEGIN DMA2_Channel4_5_IRQn 0 */
282
+
283
+  /* USER CODE END DMA2_Channel4_5_IRQn 0 */
284
+  HAL_DMA_IRQHandler(&hdma_adc3);
285
+  /* USER CODE BEGIN DMA2_Channel4_5_IRQn 1 */
286
+
287
+  /* USER CODE END DMA2_Channel4_5_IRQn 1 */
288
+}
289
+
260 290
 /* USER CODE BEGIN 1 */
261 291
 
262 292
 /* USER CODE END 1 */