瀏覽代碼

AD5318 동작안하는 문제 수정 / Project Name Printf 추가

PYJ 5 年之前
父節點
當前提交
a6581b45ff
共有 60 個文件被更改,包括 12620 次插入9576 次删除
  1. 二進制
      Debug/STM32F103_ATTEN_PLL_Zig.binary
  2. 二進制
      Debug/STM32F103_ATTEN_PLL_Zig.elf
  3. 1385 1349
      Debug/STM32F103_ATTEN_PLL_Zig.hex
  4. 7836 7607
      Debug/STM32F103_ATTEN_PLL_Zig.list
  5. 569 564
      Debug/STM32F103_ATTEN_PLL_Zig.map
  6. 二進制
      Debug/Src/AD5318.o
  7. 1 1
      Debug/Src/AD5318.su
  8. 二進制
      Debug/Src/PE43711.o
  9. 二進制
      Debug/Src/main.o
  10. 2 2
      Debug/Src/main.su
  11. 2 2
      Debug/Src/zig_operate.su
  12. 2 2
      Inc/main.h
  13. 42 42
      STM32F103_ATTEN_PLL_Zig.elf.launch
  14. 29 2
      Src/AD5318.c
  15. 11 1
      Src/main.c
  16. 1 1
      Src/uart.c
  17. 13 3
      Src/zig_operate.c
  18. 23 0
      insight/STM32F103_PLLZIG.si4project/Backup/CRC16(3106).h
  19. 157 0
      insight/STM32F103_PLLZIG.si4project/Backup/CRC16(5488).c
  20. 37 0
      insight/STM32F103_PLLZIG.si4project/Backup/MBIC_Bootloader(2626).c
  21. 59 0
      insight/STM32F103_PLLZIG.si4project/Backup/MBIC_Bootloader(3546).h
  22. 36 0
      insight/STM32F103_PLLZIG.si4project/Backup/MBIC_Bootloader(4226).c
  23. 35 0
      insight/STM32F103_PLLZIG.si4project/Backup/MBIC_Bootloader(4700).c
  24. 126 0
      insight/STM32F103_PLLZIG.si4project/Backup/MBIC_Bootloader(4718).c
  25. 172 0
      insight/STM32F103_PLLZIG.si4project/Backup/MBIC_Bootloader(7330).c
  26. 383 0
      insight/STM32F103_PLLZIG.si4project/Backup/main(3179).c
  27. 413 0
      insight/STM32F103_PLLZIG.si4project/Backup/main(5161).c
  28. 383 0
      insight/STM32F103_PLLZIG.si4project/Backup/main(733).c
  29. 383 0
      insight/STM32F103_PLLZIG.si4project/Backup/main(7947).c
  30. 93 0
      insight/STM32F103_PLLZIG.si4project/Backup/uart(3045).c
  31. 109 0
      insight/STM32F103_PLLZIG.si4project/Backup/uart(3470).c
  32. 98 0
      insight/STM32F103_PLLZIG.si4project/Backup/uart(3680).c
  33. 93 0
      insight/STM32F103_PLLZIG.si4project/Backup/uart(4051).c
  34. 35 0
      insight/STM32F103_PLLZIG.si4project/Backup/uart(6423).h
  35. 92 0
      insight/STM32F103_PLLZIG.si4project/Backup/uart(6696).c
  36. 二進制
      insight/STM32F103_PLLZIG.si4project/STM32F103_PLLZIG.sip_sym
  37. 二進制
      insight/STM32F103_PLLZIG.si4project/STM32F103_PLLZIG.sip_xab
  38. 二進制
      insight/STM32F103_PLLZIG.si4project/STM32F103_PLLZIG.sip_xad
  39. 二進制
      insight/STM32F103_PLLZIG.si4project/STM32F103_PLLZIG.sip_xc
  40. 二進制
      insight/STM32F103_PLLZIG.si4project/STM32F103_PLLZIG.sip_xf
  41. 二進制
      insight/STM32F103_PLLZIG.si4project/STM32F103_PLLZIG.sip_xm
  42. 二進制
      insight/STM32F103_PLLZIG.si4project/STM32F103_PLLZIG.sip_xr
  43. 二進制
      insight/STM32F103_PLLZIG.si4project/STM32F103_PLLZIG.sip_xsb
  44. 二進制
      insight/STM32F103_PLLZIG.si4project/STM32F103_PLLZIG.sip_xsd
  45. 二進制
      insight/STM32F103_PLLZIG.si4project/STM32F103_PLLZIG.siproj
  46. 二進制
      insight/STM32F103_PLLZIG.si4project/cache/parse/.._Inc_CRC16.h.sisc
  47. 二進制
      insight/STM32F103_PLLZIG.si4project/cache/parse/.._Inc_MBIC_Bootloader.h.sisc
  48. 二進制
      insight/STM32F103_PLLZIG.si4project/cache/parse/.._Inc_flash.h.sisc
  49. 二進制
      insight/STM32F103_PLLZIG.si4project/cache/parse/.._Inc_main.h.sisc
  50. 二進制
      insight/STM32F103_PLLZIG.si4project/cache/parse/.._Inc_stm32f1xx_hal_conf.h.sisc
  51. 二進制
      insight/STM32F103_PLLZIG.si4project/cache/parse/.._Inc_stm32f1xx_it.h.sisc
  52. 二進制
      insight/STM32F103_PLLZIG.si4project/cache/parse/.._Inc_uart.h.sisc
  53. 二進制
      insight/STM32F103_PLLZIG.si4project/cache/parse/.._Src_CRC16.c.sisc
  54. 二進制
      insight/STM32F103_PLLZIG.si4project/cache/parse/.._Src_MBIC_Bootloader.c.sisc
  55. 二進制
      insight/STM32F103_PLLZIG.si4project/cache/parse/.._Src_flash.c.sisc
  56. 二進制
      insight/STM32F103_PLLZIG.si4project/cache/parse/.._Src_main.c.sisc
  57. 二進制
      insight/STM32F103_PLLZIG.si4project/cache/parse/.._Src_stm32f1xx_hal_msp.c.sisc
  58. 二進制
      insight/STM32F103_PLLZIG.si4project/cache/parse/.._Src_stm32f1xx_it.c.sisc
  59. 二進制
      insight/STM32F103_PLLZIG.si4project/cache/parse/.._Src_system_stm32f1xx.c.sisc
  60. 二進制
      insight/STM32F103_PLLZIG.si4project/cache/parse/.._Src_uart.c.sisc

二進制
Debug/STM32F103_ATTEN_PLL_Zig.binary


二進制
Debug/STM32F103_ATTEN_PLL_Zig.elf


文件差異過大導致無法顯示
+ 1385 - 1349
Debug/STM32F103_ATTEN_PLL_Zig.hex


文件差異過大導致無法顯示
+ 7836 - 7607
Debug/STM32F103_ATTEN_PLL_Zig.list


文件差異過大導致無法顯示
+ 569 - 564
Debug/STM32F103_ATTEN_PLL_Zig.map


二進制
Debug/Src/AD5318.o


+ 1 - 1
Debug/Src/AD5318.su

@@ -1,2 +1,2 @@
1
-AD5318.c:30:6:AD5318_Ctrl	16	static
1
+AD5318.c:130:6:AD5318_Ctrl	16	static
2 2
 AD5318.c:10:7:AD5318_Initialize	8	static

二進制
Debug/Src/PE43711.o


二進制
Debug/Src/main.o


+ 2 - 2
Debug/Src/main.su

@@ -1,5 +1,5 @@
1 1
 main.c:96:6:HAL_TIM_PeriodElapsedCallback	0	static
2 2
 main.c:105:5:_write	8	static
3
-main.c:188:6:SystemClock_Config	96	static
3
+main.c:198:6:SystemClock_Config	96	static
4 4
 main.c:117:5:main	56	static
5
-main.c:630:6:Error_Handler	0	static
5
+main.c:640:6:Error_Handler	0	static

+ 2 - 2
Debug/Src/zig_operate.su

@@ -1,5 +1,5 @@
1 1
 zig_operate.c:201:6:RF_Data_Check	8	static
2 2
 zig_operate.c:234:6:RF_Status_Get	8	static
3 3
 zig_operate.c:248:6:RF_Status_Ack	8	static
4
-zig_operate.c:262:6:RF_Operate	176	static
5
-zig_operate.c:739:6:RF_Ctrl_Main	16	static
4
+zig_operate.c:262:6:RF_Operate	184	static
5
+zig_operate.c:748:6:RF_Ctrl_Main	16	static

+ 2 - 2
Inc/main.h

@@ -207,9 +207,9 @@ extern void ATTEN_PLL_PATH_Initialize(void);
207 207
 #define ATT_DATA_3_5G_HIGH1_GPIO_Port GPIOD
208 208
 #define ATT_DATA_3_5G_COM1_Pin GPIO_PIN_4
209 209
 #define ATT_DATA_3_5G_COM1_GPIO_Port GPIOD
210
-#define ATT_DATA_3_5G_LOW2_Pin GPIO_PIN_6
210
+#define ATT_DATA_3_5G_LOW2_Pin GPIO_PIN_5
211 211
 #define ATT_DATA_3_5G_LOW2_GPIO_Port GPIOD
212
-#define ATT_DATA_3_5G_COM2_Pin GPIO_PIN_5
212
+#define ATT_DATA_3_5G_COM2_Pin GPIO_PIN_6
213 213
 #define ATT_DATA_3_5G_COM2_GPIO_Port GPIOD
214 214
 #define PATH_EN_3_5G_L_Pin GPIO_PIN_7
215 215
 #define PATH_EN_3_5G_L_GPIO_Port GPIOD

文件差異過大導致無法顯示
+ 42 - 42
STM32F103_ATTEN_PLL_Zig.elf.launch


+ 29 - 2
Src/AD5318.c

@@ -27,10 +27,12 @@ extern void Pol_Delay_us(volatile uint32_t microseconds);
27 27
     HAL_Delay(1);
28 28
 #endif // PYJ.2019.10.21_END -- 
29 29
  }
30
+#if 0
30 31
 void AD5318_Ctrl(uint16_t ShiftTarget) {
31 32
     char i; /* serial counter */
32
-//    printf("ShiftTarget : %x \r\n",ShiftTarget);
33
-#if 0 // PYJ.2019.11.14_BEGIN -- 
33
+
34
+//  printf("ShiftTarget : %x \r\n",ShiftTarget);
35
+#if 1 // PYJ.2019.11.14_BEGIN --
34 36
     if(ShiftTarget & 0x1000){
35 37
         HAL_GPIO_WritePin(DA_SYNC_GPIO_Port, DA_SYNC_Pin, GPIO_PIN_RESET);    
36 38
         for (i=0;i < 16;i++) { /* loop through all 16 data bits */
@@ -124,5 +126,30 @@ void AD5318_Ctrl(uint16_t ShiftTarget) {
124 126
 
125 127
     }
126 128
 }
129
+#else
130
+void AD5318_Ctrl(uint16_t ShiftTarget) {
131
+    char i; /* serial counter */
132
+//    printf("ShiftTarget : %x \r\n",ShiftTarget);
133
+    HAL_GPIO_WritePin(DA_SYNC_GPIO_Port, DA_SYNC_Pin, GPIO_PIN_RESET);
134
+    for (i=0;i < 16;i++) { /* loop through all 16 data bits */
135
+        HAL_GPIO_WritePin(DA_SCLK_GPIO_Port, DA_SCLK_Pin, GPIO_PIN_SET); /* rise clk line again */
136
+        if (ShiftTarget & 0x8000) HAL_GPIO_WritePin(DA_DIN_GPIO_Port, DA_DIN_Pin, GPIO_PIN_SET);
137
+        else HAL_GPIO_WritePin(DA_DIN_GPIO_Port, DA_DIN_Pin, GPIO_PIN_RESET); /* set data bit */
138
+        HAL_GPIO_WritePin(DA_SCLK_GPIO_Port, DA_SCLK_Pin, GPIO_PIN_RESET); /* lower clock line */
139
+        ShiftTarget <<= 1;
140
+    }
141
+    HAL_GPIO_WritePin(DA_LDAC_GPIO_Port, DA_LDAC_Pin, GPIO_PIN_SET);
142
+    Pol_Delay_us(10);
143
+    HAL_GPIO_WritePin(DA_LDAC_GPIO_Port, DA_LDAC_Pin, GPIO_PIN_RESET);
144
+    HAL_GPIO_WritePin(DA_SYNC_GPIO_Port, DA_SYNC_Pin, GPIO_PIN_SET);
145
+    HAL_GPIO_WritePin(DA_DIN_GPIO_Port, DA_DIN_Pin, GPIO_PIN_RESET);
146
+    HAL_GPIO_WritePin(DA_LDAC_GPIO_Port, DA_LDAC_Pin, GPIO_PIN_SET);
147
+    /* rise DAC SYNC line again */
148
+    HAL_GPIO_WritePin(DA_SYNC_GPIO_Port, DA_SYNC_Pin, GPIO_PIN_RESET);
149
+    HAL_GPIO_WritePin(DA_LDAC_GPIO_Port, DA_LDAC_Pin, GPIO_PIN_RESET);
150
+
151
+}
152
+
153
+#endif
127 154
 
128 155
 

+ 11 - 1
Src/main.c

@@ -150,10 +150,11 @@ int main(void)
150 150
   /* USER CODE BEGIN 2 */
151 151
   InitUartQueue(&TerminalQueue);
152 152
 //  PE43711_PinInit();
153
+  setbuf(stdout, NULL);
153 154
   Power_ON_OFF_Initialize();  
154 155
   Path_Init();
155 156
   while(!(HAL_ADCEx_Calibration_Start(&hadc1)==HAL_OK));
156
-//  AD5318_Initialize();
157
+  AD5318_Initialize();
157 158
   Bluecell_Flash_Read(&Flash_Save_data[INDEX_BLUE_HEADER]);
158 159
   ADF4153_Initialize();
159 160
   ADF4113_Initialize();
@@ -161,10 +162,19 @@ int main(void)
161 162
   BDA4601_Initialize();
162 163
   ATTEN_PLL_PATH_Initialize();
163 164
   HAL_ADC_Start_DMA(&hadc1, (uint32_t*)ADCvalue, 14);
165
+
164 166
   /* USER CODE END 2 */
165 167
 
166 168
   /* Infinite loop */
167 169
   /* USER CODE BEGIN WHILE */
170
+#if 1 // PYJ.2020.05.06_BEGIN --
171
+    printf("****************************************\r\n");
172
+    printf("MAO Project\r\n");
173
+    printf("Build at %s %s\r\n", __DATE__, __TIME__);
174
+    printf("Copyright (c) 2020. BLUECELL\r\n");
175
+    printf("****************************************\r\n");
176
+#endif // PYJ.2020.05.06_END --
177
+
168 178
   while (1)
169 179
   {
170 180
 //    ADF4113_Check();

+ 1 - 1
Src/uart.c

@@ -68,7 +68,7 @@ void GetDataFromUartQueue(UART_HandleTypeDef *huart)
68 68
 //       _Error_Handler(__FILE__, __LINE__);
69 69
 //    }
70 70
     uart_buf[cnt++] = *(pQueue->Buffer + pQueue->tail); 
71
-#ifdef DEBUG_PRINT
71
+#if false
72 72
     printf("%02x ",*(pQueue->Buffer + pQueue->tail)) ;
73 73
 #endif /* DEBUG_PRINT */
74 74
 

+ 13 - 3
Src/zig_operate.c

@@ -704,7 +704,7 @@ void RF_Operate(uint8_t* data_buf){
704 704
 //        AD5318_Ctrl(0x800C);
705 705
 //        AD5318_Ctrl(0xA000);
706 706
 //        printf("DAC Change\r\n");
707
-#if 0 // PYJ.2019.10.21_BEGIN -- 
707
+#if 0 // PYJ.2019.10.21_BEGIN --
708 708
         if(ADC_Modify & 0x01){
709 709
           AD5318_Ctrl((Prev_data[INDEX_DAC_VCtrl_A_H] << 8 | Prev_data[INDEX_DAC_VCtrl_A_L]));    
710 710
         }
@@ -729,6 +729,15 @@ void RF_Operate(uint8_t* data_buf){
729 729
         if(ADC_Modify & 0x80){
730 730
           AD5318_Ctrl((Prev_data[INDEX_DAC_VCtrl_H_H] << 8 | Prev_data[INDEX_DAC_VCtrl_H_L]));
731 731
         }
732
+#else
733
+	AD5318_Ctrl((Prev_data[INDEX_DAC_VCtrl_A_H] << 8 | Prev_data[INDEX_DAC_VCtrl_A_L]));
734
+	AD5318_Ctrl((Prev_data[INDEX_DAC_VCtrl_B_H] << 8 | Prev_data[INDEX_DAC_VCtrl_B_L]));
735
+	AD5318_Ctrl((Prev_data[INDEX_DAC_VCtrl_C_H] << 8 | Prev_data[INDEX_DAC_VCtrl_C_L]));
736
+	AD5318_Ctrl((Prev_data[INDEX_DAC_VCtrl_D_H] << 8 | Prev_data[INDEX_DAC_VCtrl_D_L]));
737
+	AD5318_Ctrl((Prev_data[INDEX_DAC_VCtrl_E_H] << 8 | Prev_data[INDEX_DAC_VCtrl_E_L]));
738
+	AD5318_Ctrl((Prev_data[INDEX_DAC_VCtrl_F_H] << 8 | Prev_data[INDEX_DAC_VCtrl_F_L]));
739
+	AD5318_Ctrl((Prev_data[INDEX_DAC_VCtrl_G_H] << 8 | Prev_data[INDEX_DAC_VCtrl_G_L]));
740
+	AD5318_Ctrl((Prev_data[INDEX_DAC_VCtrl_H_H] << 8 | Prev_data[INDEX_DAC_VCtrl_H_L]));
732 741
 #endif // PYJ.2019.10.21_END -- 
733 742
                       
734 743
     }
@@ -758,9 +767,10 @@ bool RF_Ctrl_Main(uint8_t* data_buf){
758 767
     for(uint8_t i =0 ; i < INDEX_BLUE_EOF + 1; i++)
759 768
         printf("%02x ",data_buf[i]);
760 769
 #endif // PYJ.2019.07.31_END -- 
761
-        RF_Operate(&data_buf[Header]);
762
-        RF_Status_Ack();
763 770
 
771
+      RF_Operate(&data_buf[Header]);
772
+        RF_Status_Ack();
773
+//        printf("Data Set End\r\n");
764 774
 //        ADF4153_Freq_Calc(3465500000,40000000,2,5000);
765 775
 //        ADF4153_Freq_Calc(3993450000,40000000,2,5000);
766 776
 //        halSynSetFreq(1995000000);

+ 23 - 0
insight/STM32F103_PLLZIG.si4project/Backup/CRC16(3106).h

@@ -0,0 +1,23 @@
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
+uint8_t STH30_CreateCrc(uint8_t *data, uint8_t nbrOfBytes);
22
+uint8_t STH30_CreateCrc(uint8_t *data, uint8_t nbrOfBytes);
23
+#endif /* CRC16_H_ */

+ 157 - 0
insight/STM32F103_PLLZIG.si4project/Backup/CRC16(5488).c

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

+ 37 - 0
insight/STM32F103_PLLZIG.si4project/Backup/MBIC_Bootloader(2626).c

@@ -0,0 +1,37 @@
1
+/*
2
+ * MBIC_Bootloader.c
3
+ *
4
+ *  Created on: 2020. 5. 18.
5
+ *      Author: parkyj
6
+ */
7
+
8
+
9
+#include "main.h"
10
+#include "MBIC_Bootloader.h"
11
+
12
+
13
+void MBIC_Bootloader_FirmwareUpdate(uint8_t* data){
14
+
15
+    uint8_t datatype = data[MBIC_PAYLOADSTART];
16
+    printf("RX");
17
+    for(int i = 0; i < 128; i++)
18
+        printf("%c",*data++);
19
+    switch(datatype){
20
+        case MBIC_Notice_REQ:
21
+            
22
+        break;
23
+        case MBIC_Download_DATA_REQ:
24
+
25
+        break;
26
+        case MBIC_Download_Confirm_REQ:
27
+
28
+        break;
29
+        case MBIC_Complete_Notice_REQ_REQ:
30
+
31
+        break;
32
+        case MBIC_Reboot_Notice_REQ:
33
+
34
+        break;
35
+    }
36
+
37
+}

+ 59 - 0
insight/STM32F103_PLLZIG.si4project/Backup/MBIC_Bootloader(3546).h

@@ -0,0 +1,59 @@
1
+/*
2
+ * MBIC_Bootloader.h
3
+ *
4
+ *  Created on: 2020. 5. 18.
5
+ *      Author: parkyj
6
+ */
7
+
8
+#ifndef MBIC_BOOTLOADER_H_
9
+#define MBIC_BOOTLOADER_H_
10
+
11
+typedef enum{
12
+  MBIC_Notice_REQ = 0x10,
13
+  MBIC_Download_DATA_REQ,
14
+  MBIC_Download_Confirm_REQ,
15
+  MBIC_Complete_Notice_REQ_REQ,
16
+  MBIC_Reboot_Notice_REQ,
17
+}MBIC_Download_Req_L;
18
+typedef enum{
19
+  MBIC_Notice_RSP = 0x90,
20
+  MBIC_Download_DATA_RSP,
21
+  MBIC_Download_Confirm_RSP,
22
+  MBIC_Complete_Notice_RSP,
23
+  MBIC_Reboot_Notice_RSP,
24
+}MBIC_Download_Rsp_L;
25
+
26
+
27
+typedef enum{
28
+	MBIC_PREAMBLE_0 = 0,
29
+	MBIC_PREAMBLE_1,
30
+	MBIC_PREAMBLE_2,
31
+	MBIC_PREAMBLE_3,
32
+	MBIC_SUBUID_0,
33
+	MBIC_SUBUID_1,
34
+	MBIC_RCODE_0,
35
+	MBIC_TRID_0,
36
+	MBIC_TRID_1,
37
+	MBIC_SEQSUM_0, // 9Index
38
+	
39
+	MBIC_TTL_0, //10 INDEX
40
+	MBIC_TIME_0,
41
+	MBIC_TIME_1,
42
+	MBIC_TIME_2,
43
+	MBIC_TIME_3,
44
+	MBIC_TIME_4,
45
+	MBIC_TIME_5,
46
+	MBIC_ERRRESPONSE_0,
47
+	MBIC_CMD_0,
48
+	
49
+	MBIC_LENGTH_0, // 19INDEX
50
+	MBIC_LENGTH_1, // 20
51
+
52
+	MBIC_HEADERCHECKSUM_0,
53
+	MBIC_PAYLOADSTART,
54
+    /*
55
+	 * PayLoadSTART
56
+	 */
57
+}MBICProt_st;
58
+
59
+#endif /* MBIC_BOOTLOADER_H_ */

+ 36 - 0
insight/STM32F103_PLLZIG.si4project/Backup/MBIC_Bootloader(4226).c

@@ -0,0 +1,36 @@
1
+/*
2
+ * MBIC_Bootloader.c
3
+ *
4
+ *  Created on: 2020. 5. 18.
5
+ *      Author: parkyj
6
+ */
7
+
8
+
9
+#include "main.h"
10
+#include "MBIC_Bootloader.h"
11
+
12
+
13
+void MBIC_Bootloader_FirmwareUpdate(uint8_t* data){
14
+
15
+    uint8_t datatype = data[MBIC_PAYLOADSTART];
16
+    for(int i = 0; i < 128; i++)
17
+        printf("%c",*data++);
18
+    switch(datatype){
19
+        case MBIC_Notice_REQ:
20
+            
21
+        break;
22
+        case MBIC_Download_DATA_REQ:
23
+
24
+        break;
25
+        case MBIC_Download_Confirm_REQ:
26
+
27
+        break;
28
+        case MBIC_Complete_Notice_REQ_REQ:
29
+
30
+        break;
31
+        case MBIC_Reboot_Notice_REQ:
32
+
33
+        break;
34
+    }
35
+
36
+}

+ 35 - 0
insight/STM32F103_PLLZIG.si4project/Backup/MBIC_Bootloader(4700).c

@@ -0,0 +1,35 @@
1
+/*
2
+ * MBIC_Bootloader.c
3
+ *
4
+ *  Created on: 2020. 5. 18.
5
+ *      Author: parkyj
6
+ */
7
+
8
+
9
+#include "main.h"
10
+#include "MBIC_Bootloader.h"
11
+
12
+
13
+void MBIC_Bootloader_FirmwareUpdate(uint8_t* data){
14
+
15
+    uint8_t datatype = data[MBIC_PAYLOADSTART];
16
+
17
+    switch(datatype){
18
+        case MBIC_Notice_REQ:
19
+            
20
+        break;
21
+        case MBIC_Download_DATA_REQ:
22
+
23
+        break;
24
+        case MBIC_Download_Confirm_REQ:
25
+
26
+        break;
27
+        case MBIC_Complete_Notice_REQ_REQ:
28
+
29
+        break;
30
+        case MBIC_Reboot_Notice_REQ:
31
+
32
+        break;
33
+    }
34
+
35
+}

+ 126 - 0
insight/STM32F103_PLLZIG.si4project/Backup/MBIC_Bootloader(4718).c

@@ -0,0 +1,126 @@
1
+/*
2
+ * MBIC_Bootloader.c
3
+ *
4
+ *  Created on: 2020. 5. 18.
5
+ *      Author: parkyj
6
+ */
7
+
8
+
9
+#include "main.h"
10
+#include "MBIC_Bootloader.h"
11
+void MBIC_FileDataCheck(uint8_t* data){
12
+  int8_t MBIC_Mark[9] = "JT-NRDAS ";
13
+  int8_t MBIC_FileName1[] = "jhfs-mbic-nrdas-v";
14
+  int8_t MBIC_FileName2[] = "v00.00.01.mbc";
15
+  uint8_t MBIC_type = 0x20;
16
+  uint8_t MBIC_FileType = 0x00;
17
+  int i = 0;
18
+  /***
19
+  MARK Check
20
+  ***/
21
+  for(i = 0; i < 9; i++){
22
+    if(MBIC_Mark[i] != data[i]){
23
+      printf("Data Diff \r\n");
24
+      return;
25
+    }else{
26
+      printf("MARK Data Success \r\n");
27
+    }
28
+  }
29
+    /***
30
+  TYPE Check
31
+  ***/
32
+  for(i = i; i < 10; i++){
33
+    if(MBIC_type != data[i]){
34
+      printf("Data Diff \r\n");
35
+      return;
36
+    }
37
+    else
38
+    printf("Type Data Success \r\n");
39
+  }  
40
+    /***
41
+  File Type Check
42
+  ***/
43
+  for(i = i; i < 11; i++){
44
+    if(MBIC_FileType != data[i]){
45
+      printf("Data Diff \r\n");
46
+      return;
47
+    }
48
+    else
49
+      printf("File Type Data Success \r\n");
50
+  }  
51
+    /***
52
+  Version Check 
53
+  ***/
54
+  for(i = i; i < 14; i++){
55
+    printf("Version Data Success Version %x\r\n",data[i]);    
56
+  }
57
+  /***
58
+  File Name Check
59
+  ***/
60
+  for(i = i; i < 30; i++){
61
+    if(MBIC_FileName1[i-14] != data[i]){
62
+      printf("Data Diff \r\n");
63
+      printf("MBIC_FileName1[%d] : %x, data[%d] :  %x\r\n",i - 14,MBIC_FileName1[i - 14],i,data[i]);
64
+      return;
65
+    }
66
+    else
67
+      printf("File Name Data Success \r\n");
68
+  }  
69
+  for(i = i; i < 43; i++){
70
+    if(MBIC_FileName2[i-30] != data[i]){
71
+      printf("Data Diff %c\r\n",data[i]);
72
+      printf("MBIC_FileName2[%d] : %x, data[%d] :  %x\r\n",i - 30,MBIC_FileName2[i - 30],i,data[i]);
73
+      return;
74
+    }
75
+    else
76
+      printf("File Name Data Success %c\r\n",data[i]);
77
+  }   
78
+
79
+  for(i = i; i < 49; i++){
80
+      printf("Creation Success %x\r\n",data[i]);
81
+  }   
82
+}
83
+
84
+
85
+ 
86
+
87
+
88
+void MBIC_Bootloader_FirmwareUpdate(uint8_t* data){
89
+    uint8_t data[1024] = {
90
+      0x4A,0x54,0x2D,0x4E,0x52,0x44,0x41,0x53,0x20,0x20,0x00,0x00,
91
+        0x00,0x01,0x6A,0x68,0x66,0x73,0x2D,0x6D,0x62,0x69,0x63,0x2D,
92
+        0x6E,0x72,0x64,0x61,0x73,0x2D,0x76,0x30,0x30,0x2E,0x30,0x30,0x2E,
93
+        0x30,0x31,0x2E,0x6D,0x62,0x63,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
94
+        0x20,0x20,0x20,0x20,0x20,0x14,0x06,0x03,0x10,0x1F,0xC4,0x3C,0x49,
95
+        0x42,0x98,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
96
+        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
97
+        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
98
+        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
99
+        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
100
+    };
101
+    MBIC_FileDataCheck(data);
102
+    
103
+
104
+    uint8_t datatype = data[MBIC_PAYLOADSTART];
105
+    printf("RX");
106
+    for(int i = 0; i < 128; i++)
107
+        printf("%c",*data++);
108
+    switch(datatype){
109
+        case MBIC_Notice_REQ:
110
+            
111
+        break;
112
+        case MBIC_Download_DATA_REQ:
113
+
114
+        break;
115
+        case MBIC_Download_Confirm_REQ:
116
+
117
+        break;
118
+        case MBIC_Complete_Notice_REQ_REQ:
119
+
120
+        break;
121
+        case MBIC_Reboot_Notice_REQ:
122
+
123
+        break;
124
+    }
125
+
126
+}

+ 172 - 0
insight/STM32F103_PLLZIG.si4project/Backup/MBIC_Bootloader(7330).c

@@ -0,0 +1,172 @@
1
+/*
2
+ * MBIC_Bootloader.c
3
+ *
4
+ *  Created on: 2020. 5. 18.
5
+ *      Author: parkyj
6
+ */
7
+
8
+
9
+#include "main.h"
10
+#include <stdbool.h>
11
+#include "MBIC_Bootloader.h"
12
+
13
+#define MARK_START_POSITION						0
14
+#define TYPE_START_POSITION						9	
15
+#define FILE_TYPE_START_POSITION				10
16
+#define VERSION_START_POSITION					11
17
+#define FILENAME_START_POSITION					14
18
+#define CREATION_TIME_START_POSITION			55
19
+#define LENGTH_START_POSITION					61
20
+#define CRC_START_POSITION						65
21
+#define RESERVED_START_POSITION					69
22
+typedef struct{
23
+    uint16_t Length;
24
+    uint16_t Crcchk;
25
+    bool FileChk;
26
+}BootLoaderDataCheck_st;
27
+
28
+
29
+BootLoaderDataCheck_st MBIC_FileDataCheck(uint8_t* data){
30
+  BootLoaderDataCheck_st ret = {0,0,false};
31
+  int8_t MBIC_Mark[9] = "JT-NRDAS ";
32
+  int8_t MBIC_FileName1[] = "jhfs-mbic-nrdas-v";
33
+  int8_t MBIC_FileName2[] = "v00.00.01.mbc";
34
+  uint8_t MBIC_type = 0x20;
35
+  uint8_t MBIC_FileType = 0x00;
36
+  int i = 0;
37
+  /***
38
+  MARK Check
39
+  ***/
40
+  for(i = MARK_START_POSITION; i < TYPE_START_POSITION; i++){
41
+    if(MBIC_Mark[i] != data[i]){
42
+      printf("Data Diff \r\n");
43
+      return ret;
44
+    }else{
45
+      printf("MARK Data Success \r\n");
46
+    }
47
+  }
48
+    /***
49
+  TYPE Check
50
+  ***/
51
+  for(i = TYPE_START_POSITION; i < FILE_TYPE_START_POSITION; i++){
52
+    if(MBIC_type != data[i]){
53
+      printf("Data Diff \r\n");
54
+      return ret;
55
+    }
56
+    else
57
+    printf("Type Data Success \r\n");
58
+  }  
59
+    /***
60
+  File Type Check
61
+  ***/
62
+  for(i = FILE_TYPE_START_POSITION; i < VERSION_START_POSITION; i++){
63
+    if(MBIC_FileType != data[i]){
64
+      printf("Data Diff \r\n");
65
+      return ret;
66
+    }
67
+    else
68
+      printf("File Type Data Success \r\n");
69
+  }  
70
+    /***
71
+  Version Check 
72
+  ***/
73
+  for(i = VERSION_START_POSITION; i < FILENAME_START_POSITION; i++){
74
+    printf("Version Data Success Version %x\r\n",data[i]);    
75
+  }
76
+  /***
77
+  File Name Check
78
+  ***/
79
+  for(i = FILENAME_START_POSITION; i < 30; i++){
80
+    if(MBIC_FileName1[i-14] != data[i]){
81
+      printf("Data Diff \r\n");
82
+      printf("MBIC_FileName1[%d] : %x, data[%d] :  %x\r\n",i - 14,MBIC_FileName1[i - 14],i,data[i]);
83
+      return ret;
84
+    }
85
+    else
86
+      printf("File Name Data Success %c\r\n",data[i]);
87
+  }  
88
+  for(i = i; i < 43; i++){
89
+    if(MBIC_FileName2[i-30] != data[i]){
90
+      printf("Data Diff %c\r\n",data[i]);
91
+      printf("MBIC_FileName2[%d] : %x, data[%d] :  %x\r\n",i - 30,MBIC_FileName2[i - 30],i,data[i]);
92
+      return ret;
93
+    }
94
+    else
95
+      printf("File Name Data Success %c\r\n",data[i]);
96
+  }   
97
+
98
+  for(i = i; i < 49; i++){
99
+      printf("Creation Success %x\r\n",data[i]);
100
+  }
101
+  for(i = i; i < 55; i++){
102
+    printf("Creation Success data[%d] : %x\r\n",i,data[i]);
103
+  }
104
+  printf(" %d",data[i++]);
105
+  printf(" -%02d",data[i++]);
106
+  printf(" -%02d",data[i++]);
107
+  printf(" -%02d",data[i++]);
108
+  printf(" -%02d",data[i++]);
109
+  printf(" -%02d\r\n",data[i++]);
110
+  
111
+  
112
+  
113
+  ret.Length = ((data[i++] << 8) & 0xFF00);
114
+  ret.Length += (data[i++]);
115
+  printf("data[%d] : %d\r\n",i - 1,ret.Length);
116
+  printf("data[%d] : %d\r\n",i - 1,ret.Length);
117
+
118
+  ret.Crcchk = ((data[i++] << 8) & 0xFF00);
119
+  ret.Crcchk += (data[i++]);
120
+  
121
+  printf("CRC_H[%d] : %x\r\n",i,ret.Crcchk);
122
+  printf("CRC_L[%d] : %x\r\n",i,ret.Crcchk);
123
+
124
+  ret.FileChk = true;
125
+  return ret;
126
+}
127
+
128
+
129
+
130
+void MBIC_Bootloader_FirmwareUpdate(uint8_t* data){
131
+    uint8_t datatype = data[MBIC_PAYLOADSTART];
132
+
133
+#if 0 // PYJ.2020.06.04_BEGIN -- 
134
+    uint8_t dataTest[1024] = {
135
+      0x4A,0x54,0x2D,0x4E,0x52,0x44,0x41,0x53,0x20,0x20,0x00,0x00,
136
+        0x00,0x01,0x6A,0x68,0x66,0x73,0x2D,0x6D,0x62,0x69,0x63,0x2D,
137
+        0x6E,0x72,0x64,0x61,0x73,0x2D,0x76,0x30,0x30,0x2E,0x30,0x30,0x2E,
138
+        0x30,0x31,0x2E,0x6D,0x62,0x63,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
139
+        0x20,0x20,0x20,0x20,0x20,0x14,0x06,0x03,0x10,0x1F,0xC4,0x3C,0x49,
140
+        0x42,0x98,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
141
+        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
142
+        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
143
+        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
144
+        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
145
+    };
146
+    MBIC_FileDataCheck(dataTest);
147
+    
148
+#endif // PYJ.2020.06.04_END -- 
149
+
150
+
151
+//    printf("RX");
152
+//    for(int i = 0; i < 128; i++)
153
+//        printf("%c",*data++);
154
+    switch(datatype){
155
+        case MBIC_Notice_REQ:
156
+            
157
+        break;
158
+        case MBIC_Download_DATA_REQ:
159
+
160
+        break;
161
+        case MBIC_Download_Confirm_REQ:
162
+
163
+        break;
164
+        case MBIC_Complete_Notice_REQ_REQ:
165
+
166
+        break;
167
+        case MBIC_Reboot_Notice_REQ:
168
+
169
+        break;
170
+    }
171
+
172
+}

+ 383 - 0
insight/STM32F103_PLLZIG.si4project/Backup/main(3179).c

@@ -0,0 +1,383 @@
1
+/* USER CODE BEGIN Header */
2
+/**
3
+  ******************************************************************************
4
+  * @file           : main.c
5
+  * @brief          : Main program body
6
+  ******************************************************************************
7
+  * @attention
8
+  *
9
+  * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
10
+  * All rights reserved.</center></h2>
11
+  *
12
+  * This software component is licensed by ST under BSD 3-Clause license,
13
+  * the "License"; You may not use this file except in compliance with the
14
+  * License. You may obtain a copy of the License at:
15
+  *                        opensource.org/licenses/BSD-3-Clause
16
+  *
17
+  ******************************************************************************
18
+  */
19
+/* USER CODE END Header */
20
+
21
+/* Includes ------------------------------------------------------------------*/
22
+#include "main.h"
23
+
24
+/* Private includes ----------------------------------------------------------*/
25
+/* USER CODE BEGIN Includes */
26
+
27
+/* USER CODE END Includes */
28
+
29
+/* Private typedef -----------------------------------------------------------*/
30
+/* USER CODE BEGIN PTD */
31
+
32
+/* USER CODE END PTD */
33
+
34
+/* Private define ------------------------------------------------------------*/
35
+/* USER CODE BEGIN PD */
36
+
37
+/* USER CODE END PD */
38
+
39
+/* Private macro -------------------------------------------------------------*/
40
+/* USER CODE BEGIN PM */
41
+
42
+/* USER CODE END PM */
43
+
44
+/* Private variables ---------------------------------------------------------*/
45
+I2C_HandleTypeDef hi2c2;
46
+
47
+TIM_HandleTypeDef htim6;
48
+
49
+UART_HandleTypeDef huart1;
50
+DMA_HandleTypeDef hdma_usart1_rx;
51
+DMA_HandleTypeDef hdma_usart1_tx;
52
+
53
+/* USER CODE BEGIN PV */
54
+
55
+volatile uint32_t LedTimerCnt = 0;
56
+volatile uint32_t FirmwareTimerCnt = 0;
57
+volatile uint32_t UartTimerCnt = 0;
58
+/* USER CODE END PV */
59
+
60
+/* Private function prototypes -----------------------------------------------*/
61
+void SystemClock_Config(void);
62
+static void MX_GPIO_Init(void);
63
+static void MX_DMA_Init(void);
64
+static void MX_USART1_UART_Init(void);
65
+static void MX_I2C2_Init(void);
66
+static void MX_TIM6_Init(void);
67
+static void MX_NVIC_Init(void);
68
+/* USER CODE BEGIN PFP */
69
+
70
+/* USER CODE END PFP */
71
+
72
+/* Private user code ---------------------------------------------------------*/
73
+/* USER CODE BEGIN 0 */
74
+void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
75
+{
76
+
77
+    if(htim->Instance == TIM6){
78
+        UartTimerCnt++;
79
+        LedTimerCnt++;
80
+        FirmwareTimerCnt++;
81
+    }
82
+}
83
+int _write (int file, uint8_t *ptr, uint16_t len)
84
+{
85
+    HAL_UART_Transmit (&huart1, ptr, len, 10);
86
+    return len;
87
+}
88
+extern UARTQUEUE TerminalQueue;
89
+/* USER CODE END 0 */
90
+
91
+/**
92
+  * @brief  The application entry point.
93
+  * @retval int
94
+  */
95
+int main(void)
96
+{
97
+  /* USER CODE BEGIN 1 */
98
+	uint8_t tempdata[] = {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A};
99
+  /* USER CODE END 1 */
100
+  
101
+
102
+  /* MCU Configuration--------------------------------------------------------*/
103
+
104
+  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
105
+  HAL_Init();
106
+
107
+  /* USER CODE BEGIN Init */
108
+
109
+  /* USER CODE END Init */
110
+
111
+  /* Configure the system clock */
112
+  SystemClock_Config();
113
+
114
+  /* USER CODE BEGIN SysInit */
115
+
116
+  /* USER CODE END SysInit */
117
+
118
+  /* Initialize all configured peripherals */
119
+  MX_GPIO_Init();
120
+  MX_DMA_Init();
121
+  MX_USART1_UART_Init();
122
+  MX_I2C2_Init();
123
+  MX_TIM6_Init();
124
+
125
+  /* Initialize interrupts */
126
+  MX_NVIC_Init();
127
+  /* USER CODE BEGIN 2 */
128
+  HAL_TIM_Base_Start_IT(&htim6);
129
+  setbuf(stdout, NULL);
130
+  /*printf("Uart Start \r\n");
131
+  printf("Crc generate %x \r\n",CRC16_Generate(tempdata,11));*/
132
+  Firmware_BootStart_Signal();
133
+  InitUartQueue(&TerminalQueue);
134
+  /* USER CODE END 2 */
135
+
136
+  /* Infinite loop */
137
+  /* USER CODE BEGIN WHILE */
138
+  while (1)
139
+  {
140
+	 // printf("Uart Start \r\n");
141
+	  if(LedTimerCnt > 500){HAL_GPIO_TogglePin(BOOT_LED_GPIO_Port,BOOT_LED_Pin);LedTimerCnt = 0;}
142
+	  while (TerminalQueue.data > 0 && UartTimerCnt > 30) GetDataFromUartQueue(&hTerminal);
143
+	  while(FirmwareTimerCnt > 3000)  Jump_App();
144
+
145
+	  //HAL_Delay(500);
146
+    /* USER CODE END WHILE */
147
+
148
+    /* USER CODE BEGIN 3 */
149
+  }
150
+  /* USER CODE END 3 */
151
+}
152
+
153
+/**
154
+  * @brief System Clock Configuration
155
+  * @retval None
156
+  */
157
+void SystemClock_Config(void)
158
+{
159
+  RCC_OscInitTypeDef RCC_OscInitStruct = {0};
160
+  RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
161
+
162
+  /** Initializes the CPU, AHB and APB busses clocks 
163
+  */
164
+  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
165
+  RCC_OscInitStruct.HSIState = RCC_HSI_ON;
166
+  RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
167
+  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
168
+  RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI_DIV2;
169
+  RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL14;
170
+  if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
171
+  {
172
+    Error_Handler();
173
+  }
174
+  /** Initializes the CPU, AHB and APB busses clocks 
175
+  */
176
+  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
177
+                              |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
178
+  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
179
+  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
180
+  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
181
+  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
182
+
183
+  if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)
184
+  {
185
+    Error_Handler();
186
+  }
187
+}
188
+
189
+/**
190
+  * @brief NVIC Configuration.
191
+  * @retval None
192
+  */
193
+static void MX_NVIC_Init(void)
194
+{
195
+  /* DMA1_Channel5_IRQn interrupt configuration */
196
+  HAL_NVIC_SetPriority(DMA1_Channel5_IRQn, 0, 0);
197
+  HAL_NVIC_EnableIRQ(DMA1_Channel5_IRQn);
198
+  /* USART1_IRQn interrupt configuration */
199
+  HAL_NVIC_SetPriority(USART1_IRQn, 0, 0);
200
+  HAL_NVIC_EnableIRQ(USART1_IRQn);
201
+  /* TIM6_IRQn interrupt configuration */
202
+  HAL_NVIC_SetPriority(TIM6_IRQn, 0, 0);
203
+  HAL_NVIC_EnableIRQ(TIM6_IRQn);
204
+  /* DMA1_Channel4_IRQn interrupt configuration */
205
+  HAL_NVIC_SetPriority(DMA1_Channel4_IRQn, 0, 0);
206
+  HAL_NVIC_EnableIRQ(DMA1_Channel4_IRQn);
207
+}
208
+
209
+/**
210
+  * @brief I2C2 Initialization Function
211
+  * @param None
212
+  * @retval None
213
+  */
214
+static void MX_I2C2_Init(void)
215
+{
216
+
217
+  /* USER CODE BEGIN I2C2_Init 0 */
218
+
219
+  /* USER CODE END I2C2_Init 0 */
220
+
221
+  /* USER CODE BEGIN I2C2_Init 1 */
222
+
223
+  /* USER CODE END I2C2_Init 1 */
224
+  hi2c2.Instance = I2C2;
225
+  hi2c2.Init.ClockSpeed = 400000;
226
+  hi2c2.Init.DutyCycle = I2C_DUTYCYCLE_2;
227
+  hi2c2.Init.OwnAddress1 = 0;
228
+  hi2c2.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
229
+  hi2c2.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
230
+  hi2c2.Init.OwnAddress2 = 0;
231
+  hi2c2.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
232
+  hi2c2.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
233
+  if (HAL_I2C_Init(&hi2c2) != HAL_OK)
234
+  {
235
+    Error_Handler();
236
+  }
237
+  /* USER CODE BEGIN I2C2_Init 2 */
238
+
239
+  /* USER CODE END I2C2_Init 2 */
240
+
241
+}
242
+
243
+/**
244
+  * @brief TIM6 Initialization Function
245
+  * @param None
246
+  * @retval None
247
+  */
248
+static void MX_TIM6_Init(void)
249
+{
250
+
251
+  /* USER CODE BEGIN TIM6_Init 0 */
252
+
253
+  /* USER CODE END TIM6_Init 0 */
254
+
255
+  TIM_MasterConfigTypeDef sMasterConfig = {0};
256
+
257
+  /* USER CODE BEGIN TIM6_Init 1 */
258
+
259
+  /* USER CODE END TIM6_Init 1 */
260
+  htim6.Instance = TIM6;
261
+  htim6.Init.Prescaler = 5600 - 1;
262
+  htim6.Init.CounterMode = TIM_COUNTERMODE_UP;
263
+  htim6.Init.Period = 10 - 1;
264
+  htim6.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
265
+  if (HAL_TIM_Base_Init(&htim6) != HAL_OK)
266
+  {
267
+    Error_Handler();
268
+  }
269
+  sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
270
+  sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
271
+  if (HAL_TIMEx_MasterConfigSynchronization(&htim6, &sMasterConfig) != HAL_OK)
272
+  {
273
+    Error_Handler();
274
+  }
275
+  /* USER CODE BEGIN TIM6_Init 2 */
276
+
277
+  /* USER CODE END TIM6_Init 2 */
278
+
279
+}
280
+
281
+/**
282
+  * @brief USART1 Initialization Function
283
+  * @param None
284
+  * @retval None
285
+  */
286
+static void MX_USART1_UART_Init(void)
287
+{
288
+
289
+  /* USER CODE BEGIN USART1_Init 0 */
290
+
291
+  /* USER CODE END USART1_Init 0 */
292
+
293
+  /* USER CODE BEGIN USART1_Init 1 */
294
+
295
+  /* USER CODE END USART1_Init 1 */
296
+  huart1.Instance = USART1;
297
+  huart1.Init.BaudRate = 115200;
298
+  huart1.Init.WordLength = UART_WORDLENGTH_8B;
299
+  huart1.Init.StopBits = UART_STOPBITS_1;
300
+  huart1.Init.Parity = UART_PARITY_NONE;
301
+  huart1.Init.Mode = UART_MODE_TX_RX;
302
+  huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
303
+  huart1.Init.OverSampling = UART_OVERSAMPLING_16;
304
+  if (HAL_UART_Init(&huart1) != HAL_OK)
305
+  {
306
+    Error_Handler();
307
+  }
308
+  /* USER CODE BEGIN USART1_Init 2 */
309
+
310
+  /* USER CODE END USART1_Init 2 */
311
+
312
+}
313
+
314
+/** 
315
+  * Enable DMA controller clock
316
+  */
317
+static void MX_DMA_Init(void) 
318
+{
319
+  /* DMA controller clock enable */
320
+  __HAL_RCC_DMA1_CLK_ENABLE();
321
+
322
+}
323
+
324
+/**
325
+  * @brief GPIO Initialization Function
326
+  * @param None
327
+  * @retval None
328
+  */
329
+static void MX_GPIO_Init(void)
330
+{
331
+  GPIO_InitTypeDef GPIO_InitStruct = {0};
332
+
333
+  /* GPIO Ports Clock Enable */
334
+  __HAL_RCC_GPIOC_CLK_ENABLE();
335
+  __HAL_RCC_GPIOB_CLK_ENABLE();
336
+  __HAL_RCC_GPIOA_CLK_ENABLE();
337
+
338
+  /*Configure GPIO pin Output Level */
339
+  HAL_GPIO_WritePin(BOOT_LED_GPIO_Port, BOOT_LED_Pin, GPIO_PIN_RESET);
340
+
341
+  /*Configure GPIO pin : BOOT_LED_Pin */
342
+  GPIO_InitStruct.Pin = BOOT_LED_Pin;
343
+  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
344
+  GPIO_InitStruct.Pull = GPIO_NOPULL;
345
+  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
346
+  HAL_GPIO_Init(BOOT_LED_GPIO_Port, &GPIO_InitStruct);
347
+
348
+}
349
+
350
+/* USER CODE BEGIN 4 */
351
+
352
+/* USER CODE END 4 */
353
+
354
+/**
355
+  * @brief  This function is executed in case of error occurrence.
356
+  * @retval None
357
+  */
358
+void Error_Handler(void)
359
+{
360
+  /* USER CODE BEGIN Error_Handler_Debug */
361
+  /* User can add his own implementation to report the HAL error return state */
362
+
363
+  /* USER CODE END Error_Handler_Debug */
364
+}
365
+
366
+#ifdef  USE_FULL_ASSERT
367
+/**
368
+  * @brief  Reports the name of the source file and the source line number
369
+  *         where the assert_param error has occurred.
370
+  * @param  file: pointer to the source file name
371
+  * @param  line: assert_param error line source number
372
+  * @retval None
373
+  */
374
+void assert_failed(uint8_t *file, uint32_t line)
375
+{ 
376
+  /* USER CODE BEGIN 6 */
377
+  /* User can add his own implementation to report the file name and line number,
378
+     tex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
379
+  /* USER CODE END 6 */
380
+}
381
+#endif /* USE_FULL_ASSERT */
382
+
383
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/

+ 413 - 0
insight/STM32F103_PLLZIG.si4project/Backup/main(5161).c

@@ -0,0 +1,413 @@
1
+/* USER CODE BEGIN Header */
2
+/**
3
+  ******************************************************************************
4
+  * @file           : main.c
5
+  * @brief          : Main program body
6
+  ******************************************************************************
7
+  * @attention
8
+  *
9
+  * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
10
+  * All rights reserved.</center></h2>
11
+  *
12
+  * This software component is licensed by ST under BSD 3-Clause license,
13
+  * the "License"; You may not use this file except in compliance with the
14
+  * License. You may obtain a copy of the License at:
15
+  *                        opensource.org/licenses/BSD-3-Clause
16
+  *
17
+  ******************************************************************************
18
+  */
19
+/* USER CODE END Header */
20
+
21
+/* Includes ------------------------------------------------------------------*/
22
+#include "main.h"
23
+
24
+/* Private includes ----------------------------------------------------------*/
25
+/* USER CODE BEGIN Includes */
26
+#include <stdio.h>
27
+#include <string.h>
28
+
29
+/* USER CODE END Includes */
30
+
31
+/* Private typedef -----------------------------------------------------------*/
32
+/* USER CODE BEGIN PTD */
33
+
34
+/* USER CODE END PTD */
35
+
36
+/* Private define ------------------------------------------------------------*/
37
+/* USER CODE BEGIN PD */
38
+
39
+/* USER CODE END PD */
40
+
41
+/* Private macro -------------------------------------------------------------*/
42
+/* USER CODE BEGIN PM */
43
+
44
+/* USER CODE END PM */
45
+
46
+/* Private variables ---------------------------------------------------------*/
47
+I2C_HandleTypeDef hi2c2;
48
+
49
+TIM_HandleTypeDef htim6;
50
+
51
+UART_HandleTypeDef huart1;
52
+DMA_HandleTypeDef hdma_usart1_rx;
53
+DMA_HandleTypeDef hdma_usart1_tx;
54
+
55
+/* USER CODE BEGIN PV */
56
+
57
+volatile uint32_t LedTimerCnt = 0;
58
+volatile uint32_t FirmwareTimerCnt = 0;
59
+volatile uint32_t UartTimerCnt = 0;
60
+/* USER CODE END PV */
61
+
62
+/* Private function prototypes -----------------------------------------------*/
63
+void SystemClock_Config(void);
64
+static void MX_GPIO_Init(void);
65
+static void MX_DMA_Init(void);
66
+static void MX_USART1_UART_Init(void);
67
+static void MX_I2C2_Init(void);
68
+static void MX_TIM6_Init(void);
69
+static void MX_NVIC_Init(void);
70
+/* USER CODE BEGIN PFP */
71
+
72
+/* USER CODE END PFP */
73
+
74
+/* Private user code ---------------------------------------------------------*/
75
+/* USER CODE BEGIN 0 */
76
+void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
77
+{
78
+
79
+    if(htim->Instance == TIM6){
80
+        UartTimerCnt++;
81
+        LedTimerCnt++;
82
+        FirmwareTimerCnt++;
83
+    }
84
+}
85
+int _write (int file, uint8_t *ptr, uint16_t len)
86
+{
87
+    HAL_UART_Transmit (&huart1, ptr, len, 10);
88
+    return len;
89
+}
90
+extern UARTQUEUE TerminalQueue;
91
+
92
+
93
+
94
+char ary[10]="abcdef";
95
+
96
+void insert(int idx, char ch)
97
+{
98
+    memmove(ary+idx+1,ary+idx,strlen(ary)-idx+1);
99
+    ary[idx]=ch;
100
+}
101
+
102
+void delete(int idx)
103
+{
104
+    memmove(ary+idx,ary+idx+1,strlen(ary)-idx);
105
+}
106
+
107
+void append(char ch)
108
+{
109
+    insert(strlen(ary),ch);
110
+}
111
+
112
+/* USER CODE END 0 */
113
+
114
+/**
115
+  * @brief  The application entry point.
116
+  * @retval int
117
+  */
118
+int main(void)
119
+{
120
+  /* USER CODE BEGIN 1 */
121
+	uint8_t tempdata[] = {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A};
122
+  /* USER CODE END 1 */
123
+  
124
+
125
+  /* MCU Configuration--------------------------------------------------------*/
126
+
127
+  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
128
+  HAL_Init();
129
+
130
+  /* USER CODE BEGIN Init */
131
+
132
+  /* USER CODE END Init */
133
+
134
+  /* Configure the system clock */
135
+  SystemClock_Config();
136
+
137
+  /* USER CODE BEGIN SysInit */
138
+
139
+  /* USER CODE END SysInit */
140
+
141
+  /* Initialize all configured peripherals */
142
+  MX_GPIO_Init();
143
+  MX_DMA_Init();
144
+  MX_USART1_UART_Init();
145
+  MX_I2C2_Init();
146
+  MX_TIM6_Init();
147
+
148
+  /* Initialize interrupts */
149
+  MX_NVIC_Init();
150
+  /* USER CODE BEGIN 2 */
151
+  HAL_TIM_Base_Start_IT(&htim6);
152
+  setbuf(stdout, NULL);
153
+  /*printf("Uart Start \r\n");
154
+  printf("Crc generate %x \r\n",CRC16_Generate(tempdata,11));*/
155
+  Firmware_BootStart_Signal();
156
+  InitUartQueue(&TerminalQueue);
157
+  /* USER CODE END 2 */
158
+  printf("First : %s\n",ary);                               // 최초 : abcdef
159
+  insert(3,'t');
160
+  printf("t Insrt : %s\n",ary);                              // t삽입 : abctdef
161
+  delete(1); 
162
+  printf("b REMOVE : %s\n",ary);                             // b삭제 : actdef
163
+  append('s');
164
+  printf("s  ADD : %s\n",ary);                              // s추가 : actdefs
165
+
166
+  /* Infinite loop */
167
+  /* USER CODE BEGIN WHILE */
168
+  while (1)
169
+  {
170
+	 // printf("Uart Start \r\n");
171
+	  if(LedTimerCnt > 500){HAL_GPIO_TogglePin(BOOT_LED_GPIO_Port,BOOT_LED_Pin);LedTimerCnt = 0;}
172
+	  while (TerminalQueue.data > 0 && UartTimerCnt > 30) GetDataFromUartQueue(&hTerminal);
173
+//	  while(FirmwareTimerCnt > 3000)  Jump_App();
174
+
175
+	  //HAL_Delay(500);
176
+    /* USER CODE END WHILE */
177
+
178
+    /* USER CODE BEGIN 3 */
179
+  }
180
+  /* USER CODE END 3 */
181
+}
182
+
183
+/**
184
+  * @brief System Clock Configuration
185
+  * @retval None
186
+  */
187
+void SystemClock_Config(void)
188
+{
189
+  RCC_OscInitTypeDef RCC_OscInitStruct = {0};
190
+  RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
191
+
192
+  /** Initializes the CPU, AHB and APB busses clocks 
193
+  */
194
+  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
195
+  RCC_OscInitStruct.HSIState = RCC_HSI_ON;
196
+  RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
197
+  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
198
+  RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI_DIV2;
199
+  RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL14;
200
+  if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
201
+  {
202
+    Error_Handler();
203
+  }
204
+  /** Initializes the CPU, AHB and APB busses clocks 
205
+  */
206
+  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
207
+                              |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
208
+  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
209
+  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
210
+  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
211
+  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
212
+
213
+  if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)
214
+  {
215
+    Error_Handler();
216
+  }
217
+}
218
+
219
+/**
220
+  * @brief NVIC Configuration.
221
+  * @retval None
222
+  */
223
+static void MX_NVIC_Init(void)
224
+{
225
+  /* DMA1_Channel5_IRQn interrupt configuration */
226
+  HAL_NVIC_SetPriority(DMA1_Channel5_IRQn, 0, 0);
227
+  HAL_NVIC_EnableIRQ(DMA1_Channel5_IRQn);
228
+  /* USART1_IRQn interrupt configuration */
229
+  HAL_NVIC_SetPriority(USART1_IRQn, 0, 0);
230
+  HAL_NVIC_EnableIRQ(USART1_IRQn);
231
+  /* TIM6_IRQn interrupt configuration */
232
+  HAL_NVIC_SetPriority(TIM6_IRQn, 0, 0);
233
+  HAL_NVIC_EnableIRQ(TIM6_IRQn);
234
+  /* DMA1_Channel4_IRQn interrupt configuration */
235
+  HAL_NVIC_SetPriority(DMA1_Channel4_IRQn, 0, 0);
236
+  HAL_NVIC_EnableIRQ(DMA1_Channel4_IRQn);
237
+}
238
+
239
+/**
240
+  * @brief I2C2 Initialization Function
241
+  * @param None
242
+  * @retval None
243
+  */
244
+static void MX_I2C2_Init(void)
245
+{
246
+
247
+  /* USER CODE BEGIN I2C2_Init 0 */
248
+
249
+  /* USER CODE END I2C2_Init 0 */
250
+
251
+  /* USER CODE BEGIN I2C2_Init 1 */
252
+
253
+  /* USER CODE END I2C2_Init 1 */
254
+  hi2c2.Instance = I2C2;
255
+  hi2c2.Init.ClockSpeed = 400000;
256
+  hi2c2.Init.DutyCycle = I2C_DUTYCYCLE_2;
257
+  hi2c2.Init.OwnAddress1 = 0;
258
+  hi2c2.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
259
+  hi2c2.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
260
+  hi2c2.Init.OwnAddress2 = 0;
261
+  hi2c2.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
262
+  hi2c2.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
263
+  if (HAL_I2C_Init(&hi2c2) != HAL_OK)
264
+  {
265
+    Error_Handler();
266
+  }
267
+  /* USER CODE BEGIN I2C2_Init 2 */
268
+
269
+  /* USER CODE END I2C2_Init 2 */
270
+
271
+}
272
+
273
+/**
274
+  * @brief TIM6 Initialization Function
275
+  * @param None
276
+  * @retval None
277
+  */
278
+static void MX_TIM6_Init(void)
279
+{
280
+
281
+  /* USER CODE BEGIN TIM6_Init 0 */
282
+
283
+  /* USER CODE END TIM6_Init 0 */
284
+
285
+  TIM_MasterConfigTypeDef sMasterConfig = {0};
286
+
287
+  /* USER CODE BEGIN TIM6_Init 1 */
288
+
289
+  /* USER CODE END TIM6_Init 1 */
290
+  htim6.Instance = TIM6;
291
+  htim6.Init.Prescaler = 5600 - 1;
292
+  htim6.Init.CounterMode = TIM_COUNTERMODE_UP;
293
+  htim6.Init.Period = 10 - 1;
294
+  htim6.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
295
+  if (HAL_TIM_Base_Init(&htim6) != HAL_OK)
296
+  {
297
+    Error_Handler();
298
+  }
299
+  sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
300
+  sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
301
+  if (HAL_TIMEx_MasterConfigSynchronization(&htim6, &sMasterConfig) != HAL_OK)
302
+  {
303
+    Error_Handler();
304
+  }
305
+  /* USER CODE BEGIN TIM6_Init 2 */
306
+
307
+  /* USER CODE END TIM6_Init 2 */
308
+
309
+}
310
+
311
+/**
312
+  * @brief USART1 Initialization Function
313
+  * @param None
314
+  * @retval None
315
+  */
316
+static void MX_USART1_UART_Init(void)
317
+{
318
+
319
+  /* USER CODE BEGIN USART1_Init 0 */
320
+
321
+  /* USER CODE END USART1_Init 0 */
322
+
323
+  /* USER CODE BEGIN USART1_Init 1 */
324
+
325
+  /* USER CODE END USART1_Init 1 */
326
+  huart1.Instance = USART1;
327
+  huart1.Init.BaudRate = 115200;
328
+  huart1.Init.WordLength = UART_WORDLENGTH_8B;
329
+  huart1.Init.StopBits = UART_STOPBITS_1;
330
+  huart1.Init.Parity = UART_PARITY_NONE;
331
+  huart1.Init.Mode = UART_MODE_TX_RX;
332
+  huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
333
+  huart1.Init.OverSampling = UART_OVERSAMPLING_16;
334
+  if (HAL_UART_Init(&huart1) != HAL_OK)
335
+  {
336
+    Error_Handler();
337
+  }
338
+  /* USER CODE BEGIN USART1_Init 2 */
339
+
340
+  /* USER CODE END USART1_Init 2 */
341
+
342
+}
343
+
344
+/** 
345
+  * Enable DMA controller clock
346
+  */
347
+static void MX_DMA_Init(void) 
348
+{
349
+  /* DMA controller clock enable */
350
+  __HAL_RCC_DMA1_CLK_ENABLE();
351
+
352
+}
353
+
354
+/**
355
+  * @brief GPIO Initialization Function
356
+  * @param None
357
+  * @retval None
358
+  */
359
+static void MX_GPIO_Init(void)
360
+{
361
+  GPIO_InitTypeDef GPIO_InitStruct = {0};
362
+
363
+  /* GPIO Ports Clock Enable */
364
+  __HAL_RCC_GPIOC_CLK_ENABLE();
365
+  __HAL_RCC_GPIOB_CLK_ENABLE();
366
+  __HAL_RCC_GPIOA_CLK_ENABLE();
367
+
368
+  /*Configure GPIO pin Output Level */
369
+  HAL_GPIO_WritePin(BOOT_LED_GPIO_Port, BOOT_LED_Pin, GPIO_PIN_RESET);
370
+
371
+  /*Configure GPIO pin : BOOT_LED_Pin */
372
+  GPIO_InitStruct.Pin = BOOT_LED_Pin;
373
+  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
374
+  GPIO_InitStruct.Pull = GPIO_NOPULL;
375
+  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
376
+  HAL_GPIO_Init(BOOT_LED_GPIO_Port, &GPIO_InitStruct);
377
+
378
+}
379
+
380
+/* USER CODE BEGIN 4 */
381
+
382
+/* USER CODE END 4 */
383
+
384
+/**
385
+  * @brief  This function is executed in case of error occurrence.
386
+  * @retval None
387
+  */
388
+void Error_Handler(void)
389
+{
390
+  /* USER CODE BEGIN Error_Handler_Debug */
391
+  /* User can add his own implementation to report the HAL error return state */
392
+
393
+  /* USER CODE END Error_Handler_Debug */
394
+}
395
+
396
+#ifdef  USE_FULL_ASSERT
397
+/**
398
+  * @brief  Reports the name of the source file and the source line number
399
+  *         where the assert_param error has occurred.
400
+  * @param  file: pointer to the source file name
401
+  * @param  line: assert_param error line source number
402
+  * @retval None
403
+  */
404
+void assert_failed(uint8_t *file, uint32_t line)
405
+{ 
406
+  /* USER CODE BEGIN 6 */
407
+  /* User can add his own implementation to report the file name and line number,
408
+     tex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
409
+  /* USER CODE END 6 */
410
+}
411
+#endif /* USE_FULL_ASSERT */
412
+
413
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/

+ 383 - 0
insight/STM32F103_PLLZIG.si4project/Backup/main(733).c

@@ -0,0 +1,383 @@
1
+/* USER CODE BEGIN Header */
2
+/**
3
+  ******************************************************************************
4
+  * @file           : main.c
5
+  * @brief          : Main program body
6
+  ******************************************************************************
7
+  * @attention
8
+  *
9
+  * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
10
+  * All rights reserved.</center></h2>
11
+  *
12
+  * This software component is licensed by ST under BSD 3-Clause license,
13
+  * the "License"; You may not use this file except in compliance with the
14
+  * License. You may obtain a copy of the License at:
15
+  *                        opensource.org/licenses/BSD-3-Clause
16
+  *
17
+  ******************************************************************************
18
+  */
19
+/* USER CODE END Header */
20
+
21
+/* Includes ------------------------------------------------------------------*/
22
+#include "main.h"
23
+
24
+/* Private includes ----------------------------------------------------------*/
25
+/* USER CODE BEGIN Includes */
26
+
27
+/* USER CODE END Includes */
28
+
29
+/* Private typedef -----------------------------------------------------------*/
30
+/* USER CODE BEGIN PTD */
31
+
32
+/* USER CODE END PTD */
33
+
34
+/* Private define ------------------------------------------------------------*/
35
+/* USER CODE BEGIN PD */
36
+
37
+/* USER CODE END PD */
38
+
39
+/* Private macro -------------------------------------------------------------*/
40
+/* USER CODE BEGIN PM */
41
+
42
+/* USER CODE END PM */
43
+
44
+/* Private variables ---------------------------------------------------------*/
45
+I2C_HandleTypeDef hi2c2;
46
+
47
+TIM_HandleTypeDef htim6;
48
+
49
+UART_HandleTypeDef huart1;
50
+DMA_HandleTypeDef hdma_usart1_rx;
51
+DMA_HandleTypeDef hdma_usart1_tx;
52
+
53
+/* USER CODE BEGIN PV */
54
+
55
+volatile uint32_t LedTimerCnt = 0;
56
+volatile uint32_t FirmwareTimerCnt = 0;
57
+volatile uint32_t UartTimerCnt = 0;
58
+/* USER CODE END PV */
59
+
60
+/* Private function prototypes -----------------------------------------------*/
61
+void SystemClock_Config(void);
62
+static void MX_GPIO_Init(void);
63
+static void MX_DMA_Init(void);
64
+static void MX_USART1_UART_Init(void);
65
+static void MX_I2C2_Init(void);
66
+static void MX_TIM6_Init(void);
67
+static void MX_NVIC_Init(void);
68
+/* USER CODE BEGIN PFP */
69
+
70
+/* USER CODE END PFP */
71
+
72
+/* Private user code ---------------------------------------------------------*/
73
+/* USER CODE BEGIN 0 */
74
+void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
75
+{
76
+
77
+    if(htim->Instance == TIM6){
78
+        UartTimerCnt++;
79
+        LedTimerCnt++;
80
+        FirmwareTimerCnt++;
81
+    }
82
+}
83
+int _write (int file, uint8_t *ptr, uint16_t len)
84
+{
85
+    HAL_UART_Transmit (&huart1, ptr, len, 10);
86
+    return len;
87
+}
88
+extern UARTQUEUE TerminalQueue;
89
+/* USER CODE END 0 */
90
+
91
+/**
92
+  * @brief  The application entry point.
93
+  * @retval int
94
+  */
95
+int main(void)
96
+{
97
+  /* USER CODE BEGIN 1 */
98
+	uint8_t tempdata[] = {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A};
99
+  /* USER CODE END 1 */
100
+  
101
+
102
+  /* MCU Configuration--------------------------------------------------------*/
103
+
104
+  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
105
+  HAL_Init();
106
+
107
+  /* USER CODE BEGIN Init */
108
+
109
+  /* USER CODE END Init */
110
+
111
+  /* Configure the system clock */
112
+  SystemClock_Config();
113
+
114
+  /* USER CODE BEGIN SysInit */
115
+
116
+  /* USER CODE END SysInit */
117
+
118
+  /* Initialize all configured peripherals */
119
+  MX_GPIO_Init();
120
+  MX_DMA_Init();
121
+  MX_USART1_UART_Init();
122
+  MX_I2C2_Init();
123
+  MX_TIM6_Init();
124
+
125
+  /* Initialize interrupts */
126
+  MX_NVIC_Init();
127
+  /* USER CODE BEGIN 2 */
128
+  HAL_TIM_Base_Start_IT(&htim6);
129
+  setbuf(stdout, NULL);
130
+  /*printf("Uart Start \r\n");
131
+  printf("Crc generate %x \r\n",CRC16_Generate(tempdata,11));*/
132
+  Firmware_BootStart_Signal();
133
+  InitUartQueue(&TerminalQueue);
134
+  /* USER CODE END 2 */
135
+
136
+  /* Infinite loop */
137
+  /* USER CODE BEGIN WHILE */
138
+  while (1)
139
+  {
140
+	 // printf("Uart Start \r\n");
141
+	  if(LedTimerCnt > 500){HAL_GPIO_TogglePin(BOOT_LED_GPIO_Port,BOOT_LED_Pin);LedTimerCnt = 0;}
142
+	  while (TerminalQueue.data > 0 && UartTimerCnt > 30) GetDataFromUartQueue(&hTerminal);
143
+      //while(FirmwareTimerCnt > 3000)  Jump_App();
144
+
145
+	  //HAL_Delay(500);
146
+    /* USER CODE END WHILE */
147
+
148
+    /* USER CODE BEGIN 3 */
149
+  }
150
+  /* USER CODE END 3 */
151
+}
152
+
153
+/**
154
+  * @brief System Clock Configuration
155
+  * @retval None
156
+  */
157
+void SystemClock_Config(void)
158
+{
159
+  RCC_OscInitTypeDef RCC_OscInitStruct = {0};
160
+  RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
161
+
162
+  /** Initializes the CPU, AHB and APB busses clocks 
163
+  */
164
+  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
165
+  RCC_OscInitStruct.HSIState = RCC_HSI_ON;
166
+  RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
167
+  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
168
+  RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI_DIV2;
169
+  RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL14;
170
+  if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
171
+  {
172
+    Error_Handler();
173
+  }
174
+  /** Initializes the CPU, AHB and APB busses clocks 
175
+  */
176
+  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
177
+                              |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
178
+  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
179
+  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
180
+  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
181
+  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
182
+
183
+  if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)
184
+  {
185
+    Error_Handler();
186
+  }
187
+}
188
+
189
+/**
190
+  * @brief NVIC Configuration.
191
+  * @retval None
192
+  */
193
+static void MX_NVIC_Init(void)
194
+{
195
+  /* DMA1_Channel5_IRQn interrupt configuration */
196
+  HAL_NVIC_SetPriority(DMA1_Channel5_IRQn, 0, 0);
197
+  HAL_NVIC_EnableIRQ(DMA1_Channel5_IRQn);
198
+  /* USART1_IRQn interrupt configuration */
199
+  HAL_NVIC_SetPriority(USART1_IRQn, 0, 0);
200
+  HAL_NVIC_EnableIRQ(USART1_IRQn);
201
+  /* TIM6_IRQn interrupt configuration */
202
+  HAL_NVIC_SetPriority(TIM6_IRQn, 0, 0);
203
+  HAL_NVIC_EnableIRQ(TIM6_IRQn);
204
+  /* DMA1_Channel4_IRQn interrupt configuration */
205
+  HAL_NVIC_SetPriority(DMA1_Channel4_IRQn, 0, 0);
206
+  HAL_NVIC_EnableIRQ(DMA1_Channel4_IRQn);
207
+}
208
+
209
+/**
210
+  * @brief I2C2 Initialization Function
211
+  * @param None
212
+  * @retval None
213
+  */
214
+static void MX_I2C2_Init(void)
215
+{
216
+
217
+  /* USER CODE BEGIN I2C2_Init 0 */
218
+
219
+  /* USER CODE END I2C2_Init 0 */
220
+
221
+  /* USER CODE BEGIN I2C2_Init 1 */
222
+
223
+  /* USER CODE END I2C2_Init 1 */
224
+  hi2c2.Instance = I2C2;
225
+  hi2c2.Init.ClockSpeed = 400000;
226
+  hi2c2.Init.DutyCycle = I2C_DUTYCYCLE_2;
227
+  hi2c2.Init.OwnAddress1 = 0;
228
+  hi2c2.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
229
+  hi2c2.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
230
+  hi2c2.Init.OwnAddress2 = 0;
231
+  hi2c2.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
232
+  hi2c2.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
233
+  if (HAL_I2C_Init(&hi2c2) != HAL_OK)
234
+  {
235
+    Error_Handler();
236
+  }
237
+  /* USER CODE BEGIN I2C2_Init 2 */
238
+
239
+  /* USER CODE END I2C2_Init 2 */
240
+
241
+}
242
+
243
+/**
244
+  * @brief TIM6 Initialization Function
245
+  * @param None
246
+  * @retval None
247
+  */
248
+static void MX_TIM6_Init(void)
249
+{
250
+
251
+  /* USER CODE BEGIN TIM6_Init 0 */
252
+
253
+  /* USER CODE END TIM6_Init 0 */
254
+
255
+  TIM_MasterConfigTypeDef sMasterConfig = {0};
256
+
257
+  /* USER CODE BEGIN TIM6_Init 1 */
258
+
259
+  /* USER CODE END TIM6_Init 1 */
260
+  htim6.Instance = TIM6;
261
+  htim6.Init.Prescaler = 5600 - 1;
262
+  htim6.Init.CounterMode = TIM_COUNTERMODE_UP;
263
+  htim6.Init.Period = 10 - 1;
264
+  htim6.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
265
+  if (HAL_TIM_Base_Init(&htim6) != HAL_OK)
266
+  {
267
+    Error_Handler();
268
+  }
269
+  sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
270
+  sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
271
+  if (HAL_TIMEx_MasterConfigSynchronization(&htim6, &sMasterConfig) != HAL_OK)
272
+  {
273
+    Error_Handler();
274
+  }
275
+  /* USER CODE BEGIN TIM6_Init 2 */
276
+
277
+  /* USER CODE END TIM6_Init 2 */
278
+
279
+}
280
+
281
+/**
282
+  * @brief USART1 Initialization Function
283
+  * @param None
284
+  * @retval None
285
+  */
286
+static void MX_USART1_UART_Init(void)
287
+{
288
+
289
+  /* USER CODE BEGIN USART1_Init 0 */
290
+
291
+  /* USER CODE END USART1_Init 0 */
292
+
293
+  /* USER CODE BEGIN USART1_Init 1 */
294
+
295
+  /* USER CODE END USART1_Init 1 */
296
+  huart1.Instance = USART1;
297
+  huart1.Init.BaudRate = 115200;
298
+  huart1.Init.WordLength = UART_WORDLENGTH_8B;
299
+  huart1.Init.StopBits = UART_STOPBITS_1;
300
+  huart1.Init.Parity = UART_PARITY_NONE;
301
+  huart1.Init.Mode = UART_MODE_TX_RX;
302
+  huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
303
+  huart1.Init.OverSampling = UART_OVERSAMPLING_16;
304
+  if (HAL_UART_Init(&huart1) != HAL_OK)
305
+  {
306
+    Error_Handler();
307
+  }
308
+  /* USER CODE BEGIN USART1_Init 2 */
309
+
310
+  /* USER CODE END USART1_Init 2 */
311
+
312
+}
313
+
314
+/** 
315
+  * Enable DMA controller clock
316
+  */
317
+static void MX_DMA_Init(void) 
318
+{
319
+  /* DMA controller clock enable */
320
+  __HAL_RCC_DMA1_CLK_ENABLE();
321
+
322
+}
323
+
324
+/**
325
+  * @brief GPIO Initialization Function
326
+  * @param None
327
+  * @retval None
328
+  */
329
+static void MX_GPIO_Init(void)
330
+{
331
+  GPIO_InitTypeDef GPIO_InitStruct = {0};
332
+
333
+  /* GPIO Ports Clock Enable */
334
+  __HAL_RCC_GPIOC_CLK_ENABLE();
335
+  __HAL_RCC_GPIOB_CLK_ENABLE();
336
+  __HAL_RCC_GPIOA_CLK_ENABLE();
337
+
338
+  /*Configure GPIO pin Output Level */
339
+  HAL_GPIO_WritePin(BOOT_LED_GPIO_Port, BOOT_LED_Pin, GPIO_PIN_RESET);
340
+
341
+  /*Configure GPIO pin : BOOT_LED_Pin */
342
+  GPIO_InitStruct.Pin = BOOT_LED_Pin;
343
+  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
344
+  GPIO_InitStruct.Pull = GPIO_NOPULL;
345
+  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
346
+  HAL_GPIO_Init(BOOT_LED_GPIO_Port, &GPIO_InitStruct);
347
+
348
+}
349
+
350
+/* USER CODE BEGIN 4 */
351
+
352
+/* USER CODE END 4 */
353
+
354
+/**
355
+  * @brief  This function is executed in case of error occurrence.
356
+  * @retval None
357
+  */
358
+void Error_Handler(void)
359
+{
360
+  /* USER CODE BEGIN Error_Handler_Debug */
361
+  /* User can add his own implementation to report the HAL error return state */
362
+
363
+  /* USER CODE END Error_Handler_Debug */
364
+}
365
+
366
+#ifdef  USE_FULL_ASSERT
367
+/**
368
+  * @brief  Reports the name of the source file and the source line number
369
+  *         where the assert_param error has occurred.
370
+  * @param  file: pointer to the source file name
371
+  * @param  line: assert_param error line source number
372
+  * @retval None
373
+  */
374
+void assert_failed(uint8_t *file, uint32_t line)
375
+{ 
376
+  /* USER CODE BEGIN 6 */
377
+  /* User can add his own implementation to report the file name and line number,
378
+     tex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
379
+  /* USER CODE END 6 */
380
+}
381
+#endif /* USE_FULL_ASSERT */
382
+
383
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/

+ 383 - 0
insight/STM32F103_PLLZIG.si4project/Backup/main(7947).c

@@ -0,0 +1,383 @@
1
+/* USER CODE BEGIN Header */
2
+/**
3
+  ******************************************************************************
4
+  * @file           : main.c
5
+  * @brief          : Main program body
6
+  ******************************************************************************
7
+  * @attention
8
+  *
9
+  * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
10
+  * All rights reserved.</center></h2>
11
+  *
12
+  * This software component is licensed by ST under BSD 3-Clause license,
13
+  * the "License"; You may not use this file except in compliance with the
14
+  * License. You may obtain a copy of the License at:
15
+  *                        opensource.org/licenses/BSD-3-Clause
16
+  *
17
+  ******************************************************************************
18
+  */
19
+/* USER CODE END Header */
20
+
21
+/* Includes ------------------------------------------------------------------*/
22
+#include "main.h"
23
+
24
+/* Private includes ----------------------------------------------------------*/
25
+/* USER CODE BEGIN Includes */
26
+
27
+/* USER CODE END Includes */
28
+
29
+/* Private typedef -----------------------------------------------------------*/
30
+/* USER CODE BEGIN PTD */
31
+
32
+/* USER CODE END PTD */
33
+
34
+/* Private define ------------------------------------------------------------*/
35
+/* USER CODE BEGIN PD */
36
+
37
+/* USER CODE END PD */
38
+
39
+/* Private macro -------------------------------------------------------------*/
40
+/* USER CODE BEGIN PM */
41
+
42
+/* USER CODE END PM */
43
+
44
+/* Private variables ---------------------------------------------------------*/
45
+I2C_HandleTypeDef hi2c2;
46
+
47
+TIM_HandleTypeDef htim6;
48
+
49
+UART_HandleTypeDef huart1;
50
+DMA_HandleTypeDef hdma_usart1_rx;
51
+DMA_HandleTypeDef hdma_usart1_tx;
52
+
53
+/* USER CODE BEGIN PV */
54
+
55
+volatile uint32_t LedTimerCnt = 0;
56
+volatile uint32_t FirmwareTimerCnt = 0;
57
+volatile uint32_t UartTimerCnt = 0;
58
+/* USER CODE END PV */
59
+
60
+/* Private function prototypes -----------------------------------------------*/
61
+void SystemClock_Config(void);
62
+static void MX_GPIO_Init(void);
63
+static void MX_DMA_Init(void);
64
+static void MX_USART1_UART_Init(void);
65
+static void MX_I2C2_Init(void);
66
+static void MX_TIM6_Init(void);
67
+static void MX_NVIC_Init(void);
68
+/* USER CODE BEGIN PFP */
69
+
70
+/* USER CODE END PFP */
71
+
72
+/* Private user code ---------------------------------------------------------*/
73
+/* USER CODE BEGIN 0 */
74
+void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
75
+{
76
+
77
+    if(htim->Instance == TIM6){
78
+        UartTimerCnt++;
79
+        LedTimerCnt++;
80
+        FirmwareTimerCnt++;
81
+    }
82
+}
83
+int _write (int file, uint8_t *ptr, uint16_t len)
84
+{
85
+    HAL_UART_Transmit (&huart1, ptr, len, 10);
86
+    return len;
87
+}
88
+extern UARTQUEUE TerminalQueue;
89
+/* USER CODE END 0 */
90
+
91
+/**
92
+  * @brief  The application entry point.
93
+  * @retval int
94
+  */
95
+int main(void)
96
+{
97
+  /* USER CODE BEGIN 1 */
98
+	uint8_t tempdata[] = {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A};
99
+  /* USER CODE END 1 */
100
+  
101
+
102
+  /* MCU Configuration--------------------------------------------------------*/
103
+
104
+  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
105
+  HAL_Init();
106
+
107
+  /* USER CODE BEGIN Init */
108
+
109
+  /* USER CODE END Init */
110
+
111
+  /* Configure the system clock */
112
+  SystemClock_Config();
113
+
114
+  /* USER CODE BEGIN SysInit */
115
+
116
+  /* USER CODE END SysInit */
117
+
118
+  /* Initialize all configured peripherals */
119
+  MX_GPIO_Init();
120
+  MX_DMA_Init();
121
+  MX_USART1_UART_Init();
122
+  MX_I2C2_Init();
123
+  MX_TIM6_Init();
124
+
125
+  /* Initialize interrupts */
126
+  MX_NVIC_Init();
127
+  /* USER CODE BEGIN 2 */
128
+  HAL_TIM_Base_Start_IT(&htim6);
129
+  setbuf(stdout, NULL);
130
+  /*printf("Uart Start \r\n");
131
+  printf("Crc generate %x \r\n",CRC16_Generate(tempdata,11));*/
132
+  Firmware_BootStart_Signal();
133
+  InitUartQueue(&TerminalQueue);
134
+  /* USER CODE END 2 */
135
+
136
+  /* Infinite loop */
137
+  /* USER CODE BEGIN WHILE */
138
+  while (1)
139
+  {
140
+	 // printf("Uart Start \r\n");
141
+	  if(LedTimerCnt > 500){HAL_GPIO_TogglePin(BOOT_LED_GPIO_Port,BOOT_LED_Pin);LedTimerCnt = 0;}
142
+	  while (TerminalQueue.data > 0 && UartTimerCnt > 30) GetDataFromUartQueue(&hTerminal);
143
+//	  while(FirmwareTimerCnt > 3000)  Jump_App();
144
+
145
+	  //HAL_Delay(500);
146
+    /* USER CODE END WHILE */
147
+
148
+    /* USER CODE BEGIN 3 */
149
+  }
150
+  /* USER CODE END 3 */
151
+}
152
+
153
+/**
154
+  * @brief System Clock Configuration
155
+  * @retval None
156
+  */
157
+void SystemClock_Config(void)
158
+{
159
+  RCC_OscInitTypeDef RCC_OscInitStruct = {0};
160
+  RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
161
+
162
+  /** Initializes the CPU, AHB and APB busses clocks 
163
+  */
164
+  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
165
+  RCC_OscInitStruct.HSIState = RCC_HSI_ON;
166
+  RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
167
+  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
168
+  RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI_DIV2;
169
+  RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL14;
170
+  if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
171
+  {
172
+    Error_Handler();
173
+  }
174
+  /** Initializes the CPU, AHB and APB busses clocks 
175
+  */
176
+  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
177
+                              |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
178
+  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
179
+  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
180
+  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
181
+  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
182
+
183
+  if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)
184
+  {
185
+    Error_Handler();
186
+  }
187
+}
188
+
189
+/**
190
+  * @brief NVIC Configuration.
191
+  * @retval None
192
+  */
193
+static void MX_NVIC_Init(void)
194
+{
195
+  /* DMA1_Channel5_IRQn interrupt configuration */
196
+  HAL_NVIC_SetPriority(DMA1_Channel5_IRQn, 0, 0);
197
+  HAL_NVIC_EnableIRQ(DMA1_Channel5_IRQn);
198
+  /* USART1_IRQn interrupt configuration */
199
+  HAL_NVIC_SetPriority(USART1_IRQn, 0, 0);
200
+  HAL_NVIC_EnableIRQ(USART1_IRQn);
201
+  /* TIM6_IRQn interrupt configuration */
202
+  HAL_NVIC_SetPriority(TIM6_IRQn, 0, 0);
203
+  HAL_NVIC_EnableIRQ(TIM6_IRQn);
204
+  /* DMA1_Channel4_IRQn interrupt configuration */
205
+  HAL_NVIC_SetPriority(DMA1_Channel4_IRQn, 0, 0);
206
+  HAL_NVIC_EnableIRQ(DMA1_Channel4_IRQn);
207
+}
208
+
209
+/**
210
+  * @brief I2C2 Initialization Function
211
+  * @param None
212
+  * @retval None
213
+  */
214
+static void MX_I2C2_Init(void)
215
+{
216
+
217
+  /* USER CODE BEGIN I2C2_Init 0 */
218
+
219
+  /* USER CODE END I2C2_Init 0 */
220
+
221
+  /* USER CODE BEGIN I2C2_Init 1 */
222
+
223
+  /* USER CODE END I2C2_Init 1 */
224
+  hi2c2.Instance = I2C2;
225
+  hi2c2.Init.ClockSpeed = 400000;
226
+  hi2c2.Init.DutyCycle = I2C_DUTYCYCLE_2;
227
+  hi2c2.Init.OwnAddress1 = 0;
228
+  hi2c2.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
229
+  hi2c2.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
230
+  hi2c2.Init.OwnAddress2 = 0;
231
+  hi2c2.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
232
+  hi2c2.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
233
+  if (HAL_I2C_Init(&hi2c2) != HAL_OK)
234
+  {
235
+    Error_Handler();
236
+  }
237
+  /* USER CODE BEGIN I2C2_Init 2 */
238
+
239
+  /* USER CODE END I2C2_Init 2 */
240
+
241
+}
242
+
243
+/**
244
+  * @brief TIM6 Initialization Function
245
+  * @param None
246
+  * @retval None
247
+  */
248
+static void MX_TIM6_Init(void)
249
+{
250
+
251
+  /* USER CODE BEGIN TIM6_Init 0 */
252
+
253
+  /* USER CODE END TIM6_Init 0 */
254
+
255
+  TIM_MasterConfigTypeDef sMasterConfig = {0};
256
+
257
+  /* USER CODE BEGIN TIM6_Init 1 */
258
+
259
+  /* USER CODE END TIM6_Init 1 */
260
+  htim6.Instance = TIM6;
261
+  htim6.Init.Prescaler = 5600 - 1;
262
+  htim6.Init.CounterMode = TIM_COUNTERMODE_UP;
263
+  htim6.Init.Period = 10 - 1;
264
+  htim6.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
265
+  if (HAL_TIM_Base_Init(&htim6) != HAL_OK)
266
+  {
267
+    Error_Handler();
268
+  }
269
+  sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
270
+  sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
271
+  if (HAL_TIMEx_MasterConfigSynchronization(&htim6, &sMasterConfig) != HAL_OK)
272
+  {
273
+    Error_Handler();
274
+  }
275
+  /* USER CODE BEGIN TIM6_Init 2 */
276
+
277
+  /* USER CODE END TIM6_Init 2 */
278
+
279
+}
280
+
281
+/**
282
+  * @brief USART1 Initialization Function
283
+  * @param None
284
+  * @retval None
285
+  */
286
+static void MX_USART1_UART_Init(void)
287
+{
288
+
289
+  /* USER CODE BEGIN USART1_Init 0 */
290
+
291
+  /* USER CODE END USART1_Init 0 */
292
+
293
+  /* USER CODE BEGIN USART1_Init 1 */
294
+
295
+  /* USER CODE END USART1_Init 1 */
296
+  huart1.Instance = USART1;
297
+  huart1.Init.BaudRate = 115200;
298
+  huart1.Init.WordLength = UART_WORDLENGTH_8B;
299
+  huart1.Init.StopBits = UART_STOPBITS_1;
300
+  huart1.Init.Parity = UART_PARITY_NONE;
301
+  huart1.Init.Mode = UART_MODE_TX_RX;
302
+  huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
303
+  huart1.Init.OverSampling = UART_OVERSAMPLING_16;
304
+  if (HAL_UART_Init(&huart1) != HAL_OK)
305
+  {
306
+    Error_Handler();
307
+  }
308
+  /* USER CODE BEGIN USART1_Init 2 */
309
+
310
+  /* USER CODE END USART1_Init 2 */
311
+
312
+}
313
+
314
+/** 
315
+  * Enable DMA controller clock
316
+  */
317
+static void MX_DMA_Init(void) 
318
+{
319
+  /* DMA controller clock enable */
320
+  __HAL_RCC_DMA1_CLK_ENABLE();
321
+
322
+}
323
+
324
+/**
325
+  * @brief GPIO Initialization Function
326
+  * @param None
327
+  * @retval None
328
+  */
329
+static void MX_GPIO_Init(void)
330
+{
331
+  GPIO_InitTypeDef GPIO_InitStruct = {0};
332
+
333
+  /* GPIO Ports Clock Enable */
334
+  __HAL_RCC_GPIOC_CLK_ENABLE();
335
+  __HAL_RCC_GPIOB_CLK_ENABLE();
336
+  __HAL_RCC_GPIOA_CLK_ENABLE();
337
+
338
+  /*Configure GPIO pin Output Level */
339
+  HAL_GPIO_WritePin(BOOT_LED_GPIO_Port, BOOT_LED_Pin, GPIO_PIN_RESET);
340
+
341
+  /*Configure GPIO pin : BOOT_LED_Pin */
342
+  GPIO_InitStruct.Pin = BOOT_LED_Pin;
343
+  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
344
+  GPIO_InitStruct.Pull = GPIO_NOPULL;
345
+  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
346
+  HAL_GPIO_Init(BOOT_LED_GPIO_Port, &GPIO_InitStruct);
347
+
348
+}
349
+
350
+/* USER CODE BEGIN 4 */
351
+
352
+/* USER CODE END 4 */
353
+
354
+/**
355
+  * @brief  This function is executed in case of error occurrence.
356
+  * @retval None
357
+  */
358
+void Error_Handler(void)
359
+{
360
+  /* USER CODE BEGIN Error_Handler_Debug */
361
+  /* User can add his own implementation to report the HAL error return state */
362
+
363
+  /* USER CODE END Error_Handler_Debug */
364
+}
365
+
366
+#ifdef  USE_FULL_ASSERT
367
+/**
368
+  * @brief  Reports the name of the source file and the source line number
369
+  *         where the assert_param error has occurred.
370
+  * @param  file: pointer to the source file name
371
+  * @param  line: assert_param error line source number
372
+  * @retval None
373
+  */
374
+void assert_failed(uint8_t *file, uint32_t line)
375
+{ 
376
+  /* USER CODE BEGIN 6 */
377
+  /* User can add his own implementation to report the file name and line number,
378
+     tex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
379
+  /* USER CODE END 6 */
380
+}
381
+#endif /* USE_FULL_ASSERT */
382
+
383
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/

+ 93 - 0
insight/STM32F103_PLLZIG.si4project/Backup/uart(3045).c

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

+ 109 - 0
insight/STM32F103_PLLZIG.si4project/Backup/uart(3470).c

@@ -0,0 +1,109 @@
1
+/*
2
+ * uart.c
3
+ *
4
+ *  Created on: 2019. 5. 27.
5
+ *      Author: parkyj
6
+ */
7
+
8
+#include "uart.h"
9
+#include "CRC16.h"
10
+#include "MBIC_Bootloader.h"
11
+UARTQUEUE TerminalQueue;
12
+UARTQUEUE WifiQueue;
13
+
14
+void InitUartQueue(pUARTQUEUE pQueue)
15
+{
16
+    pQueue->data = pQueue->head = pQueue->tail = 0;
17
+
18
+    if (HAL_UART_Receive_DMA(&hTerminal, TerminalQueue.Buffer, 1) != HAL_OK)
19
+    {
20
+      //_Error_Handler(__FILE__, __LINE__);
21
+    }
22
+
23
+
24
+    //HAL_UART_Receive_DMA(&hTerminal,  TerminalQueue.Buffer, 1);
25
+    //HAL_UART_Receive_IT(hTerminal, pQueue->Buffer + pQueue->head, 1);
26
+}
27
+
28
+void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
29
+{
30
+    pUARTQUEUE pQueue;
31
+//    printf("Function : %s : \r\n",__func__);
32
+    UartTimerCnt = 0;
33
+    pQueue = &TerminalQueue;
34
+    pQueue->head++;
35
+    if (pQueue->head >= QUEUE_BUFFER_LENGTH) pQueue->head = 0;
36
+    pQueue->data++;
37
+    if (pQueue->data >= QUEUE_BUFFER_LENGTH)
38
+        GetDataFromUartQueue(huart);
39
+    HAL_UART_Receive_DMA(&hTerminal, pQueue->Buffer + pQueue->head, 1);
40
+   // Set_UartRcv(true);
41
+}
42
+void PutDataToUartQueue(UART_HandleTypeDef *huart, uint8_t data)
43
+{
44
+    pUARTQUEUE pQueue = &TerminalQueue;
45
+    if (pQueue->data >= QUEUE_BUFFER_LENGTH)
46
+        GetDataFromUartQueue(huart);
47
+    pQueue->Buffer[pQueue->head++] = data;
48
+    if (pQueue->head == QUEUE_BUFFER_LENGTH) pQueue->head = 0;
49
+    pQueue->data++;
50
+   // HAL_UART_Receive_DMA(&hTerminal,  pQueue->Buffer + pQueue->head, 10);
51
+}
52
+
53
+void GetDataFromUartQueue(UART_HandleTypeDef *huart)
54
+{
55
+    volatile static uint8_t update_data_buf[QUEUE_BUFFER_LENGTH];
56
+    volatile static int cnt;
57
+    uint16_t Length = 0;
58
+    uint16_t CrcChk = 0;
59
+    UART_HandleTypeDef *dst = (huart->Instance == USART2 ? &hTest:&hTerminal);
60
+//    UART_HandleTypeDef *dst = &hTerminal;
61
+    pUARTQUEUE pQueue = &TerminalQueue;
62
+//    if (HAL_UART_Transmit(dst, pQueue->Buffer + pQueue->tail, 1, 3000) != HAL_OK)
63
+//    {
64
+//       _Error_Handler(__FILE__, __LINE__);
65
+//    }
66
+    update_data_buf[cnt++] = *(pQueue->Buffer + pQueue->tail);        
67
+
68
+    pQueue->tail++;
69
+    if (pQueue->tail >= QUEUE_BUFFER_LENGTH) pQueue->tail = 0;
70
+    pQueue->data--;
71
+    
72
+    if(pQueue->data == 0){
73
+        //HAL_UART_Transmit_DMA(dst, &temp_buf[BLUECELL_HEADER00], 11);
74
+#if 0 // PYJ.2019.07.15_BEGIN -- 
75
+            for(int i = 0; i < 128; i++){
76
+                printf("%02x",update_data_buf[i]);
77
+            }
78
+#endif // PYJ.2019.07.15_END -- 
79
+        cnt = 0;
80
+        if(update_data_buf[0] = 0xbe)
81
+            FirmwareUpdateStart(&update_data_buf[0]);
82
+        else if(update_data_buf[0] == MBIC_PREAMBLE0
83
+                   &&update_data_buf[1] == MBIC_PREAMBLE1
84
+                   &&update_data_buf[2] == MBIC_PREAMBLE2
85
+                   &&update_data_buf[3] == MBIC_PREAMBLE3){
86
+                   
87
+               if(Chksum_Check(update_data_buf,MBIC_HEADER_SIZE - 4,update_data_buf[MBIC_CHECKSHUM_INDEX])){
88
+                Length = ((update_data_buf[MBIC_LENGTH_0] << 8) | update_data_buf[MBIC_LENGTH_1]);
89
+                CrcChk = ((update_data_buf[MBIC_PAYLOADSTART + Length + 1] << 8) | (update_data_buf[MBIC_PAYLOADSTART + Length + 2]));
90
+                    if(CRC16_Check(&update_data_buf[MBIC_PAYLOADSTART], Length,CrcChk))
91
+                       MBIC_Bootloader_FirmwareUpdate(&update_data_buf[0]);
92
+               }
93
+               else{
94
+                    printf("CHECK SUM ERR \r\n");
95
+               }
96
+            }
97
+        for(int i  = 0; i < QUEUE_BUFFER_LENGTH; i++)
98
+            update_data_buf[i] = 0;
99
+        
100
+        FirmwareTimerCnt = 0;
101
+       // HAL_Delay(1);
102
+    }
103
+
104
+}
105
+
106
+void Uart1_Data_Send(uint8_t* data,uint8_t size){
107
+	HAL_UART_Transmit_DMA(&huart1, data,size);
108
+}
109
+

+ 98 - 0
insight/STM32F103_PLLZIG.si4project/Backup/uart(3680).c

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

+ 93 - 0
insight/STM32F103_PLLZIG.si4project/Backup/uart(4051).c

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

+ 35 - 0
insight/STM32F103_PLLZIG.si4project/Backup/uart(6423).h

@@ -0,0 +1,35 @@
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 "main.h"
12
+#include "Bootloader.h"
13
+#define hTerminal    huart1
14
+#define hWifi        huart2
15
+
16
+#define QUEUE_BUFFER_LENGTH 2048
17
+
18
+typedef struct
19
+{
20
+    int head, tail, data;
21
+    uint8_t Buffer[QUEUE_BUFFER_LENGTH];
22
+}UARTQUEUE, *pUARTQUEUE;
23
+
24
+extern UART_HandleTypeDef huart1;
25
+extern UART_HandleTypeDef huart2;
26
+extern UART_HandleTypeDef huart3;
27
+
28
+extern UARTQUEUE TerminalQueue;
29
+void PutDataToUartQueue(UART_HandleTypeDef *huart, uint8_t data);
30
+void InitUartQueue(pUARTQUEUE pQueue);
31
+void GetDataFromUartQueue(UART_HandleTypeDef *huart);
32
+bool Get_UartRcv(void);
33
+void Set_UartRcv(bool);
34
+void Uart1_Data_Send(uint8_t* data,uint8_t size);
35
+#endif /* UART_H_ */

+ 92 - 0
insight/STM32F103_PLLZIG.si4project/Backup/uart(6696).c

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

二進制
insight/STM32F103_PLLZIG.si4project/STM32F103_PLLZIG.sip_sym


二進制
insight/STM32F103_PLLZIG.si4project/STM32F103_PLLZIG.sip_xab


二進制
insight/STM32F103_PLLZIG.si4project/STM32F103_PLLZIG.sip_xad


二進制
insight/STM32F103_PLLZIG.si4project/STM32F103_PLLZIG.sip_xc


二進制
insight/STM32F103_PLLZIG.si4project/STM32F103_PLLZIG.sip_xf


二進制
insight/STM32F103_PLLZIG.si4project/STM32F103_PLLZIG.sip_xm


二進制
insight/STM32F103_PLLZIG.si4project/STM32F103_PLLZIG.sip_xr


二進制
insight/STM32F103_PLLZIG.si4project/STM32F103_PLLZIG.sip_xsb


二進制
insight/STM32F103_PLLZIG.si4project/STM32F103_PLLZIG.sip_xsd


二進制
insight/STM32F103_PLLZIG.si4project/STM32F103_PLLZIG.siproj


二進制
insight/STM32F103_PLLZIG.si4project/cache/parse/.._Inc_CRC16.h.sisc


二進制
insight/STM32F103_PLLZIG.si4project/cache/parse/.._Inc_MBIC_Bootloader.h.sisc


二進制
insight/STM32F103_PLLZIG.si4project/cache/parse/.._Inc_flash.h.sisc


二進制
insight/STM32F103_PLLZIG.si4project/cache/parse/.._Inc_main.h.sisc


二進制
insight/STM32F103_PLLZIG.si4project/cache/parse/.._Inc_stm32f1xx_hal_conf.h.sisc


二進制
insight/STM32F103_PLLZIG.si4project/cache/parse/.._Inc_stm32f1xx_it.h.sisc


二進制
insight/STM32F103_PLLZIG.si4project/cache/parse/.._Inc_uart.h.sisc


二進制
insight/STM32F103_PLLZIG.si4project/cache/parse/.._Src_CRC16.c.sisc


二進制
insight/STM32F103_PLLZIG.si4project/cache/parse/.._Src_MBIC_Bootloader.c.sisc


二進制
insight/STM32F103_PLLZIG.si4project/cache/parse/.._Src_flash.c.sisc


二進制
insight/STM32F103_PLLZIG.si4project/cache/parse/.._Src_main.c.sisc


二進制
insight/STM32F103_PLLZIG.si4project/cache/parse/.._Src_stm32f1xx_hal_msp.c.sisc


二進制
insight/STM32F103_PLLZIG.si4project/cache/parse/.._Src_stm32f1xx_it.c.sisc


二進制
insight/STM32F103_PLLZIG.si4project/cache/parse/.._Src_system_stm32f1xx.c.sisc


二進制
insight/STM32F103_PLLZIG.si4project/cache/parse/.._Src_uart.c.sisc