优化过后的代码

这款代码有bug,主控板接收上位机的数据,接收几个指令后主控板程序不再运行,似乎进入了死循环,目前还没找出问题出在哪里
main
kafeijiaasamu 2 years ago
parent 685d591a6b
commit 460d4466e8

Binary file not shown.

@ -29,7 +29,7 @@ Project File Date: 11/19/2023
Build target 'LED' Build target 'LED'
compiling myfreertos.c... compiling myfreertos.c...
linking... linking...
Program Size: Code=25648 RO-data=804 RW-data=1524 ZI-data=13220 Program Size: Code=25352 RO-data=804 RW-data=1524 ZI-data=13220
FromELF: creating hex file... FromELF: creating hex file...
"..\OBJ\LED.axf" - 0 Error(s), 0 Warning(s). "..\OBJ\LED.axf" - 0 Error(s), 0 Warning(s).
@ -44,7 +44,7 @@ Package Vendor: Keil
D:\MDK5\ARM\Keil\STM32F1xx_DFP\2.3.0\Device\Include D:\MDK5\ARM\Keil\STM32F1xx_DFP\2.3.0\Device\Include
<h2>Collection of Component Files used:</h2> <h2>Collection of Component Files used:</h2>
Build Time Elapsed: 00:00:05 Build Time Elapsed: 00:00:04
</pre> </pre>
</body> </body>
</html> </html>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -1,6 +1,6 @@
Dependencies for Project 'control', Target 'LED': (DO NOT MODIFY !) Dependencies for Project 'control', Target 'LED': (DO NOT MODIFY !)
CompilerVersion: 5060960::V5.06 update 7 (build 960)::.\ARMCC CompilerVersion: 5060960::V5.06 update 7 (build 960)::.\ARMCC
F (.\main.c)(0x6577FD18)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ..\USER -I ..\CORE -I ..\STM32F10x_FWLib\inc -I ..\HARDWARE -I ..\SYSTEM -I ..\dhcp -I ..\dns -I ..\md5 -I ..\MQTT -I ..\MQTT\lib -I ..\w5500 -I ..\FreeRTOS\include -I ..\FreeRTOS\portable\RVDS\ARM_CM3 -I ..\myfreertos -ID:\MDK5\ARM\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="536" -DSTM32F10X_MD -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -o ..\obj\main.o --omf_browse ..\obj\main.crf --depend ..\obj\main.d) F (.\main.c)(0x657BF987)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ..\USER -I ..\CORE -I ..\STM32F10x_FWLib\inc -I ..\HARDWARE -I ..\SYSTEM -I ..\dhcp -I ..\dns -I ..\md5 -I ..\MQTT -I ..\MQTT\lib -I ..\w5500 -I ..\FreeRTOS\include -I ..\FreeRTOS\portable\RVDS\ARM_CM3 -I ..\myfreertos -ID:\MDK5\ARM\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="536" -DSTM32F10X_MD -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -o ..\obj\main.o --omf_browse ..\obj\main.crf --depend ..\obj\main.d)
I (..\myfreertos\myfreertos.h)(0x656FE939) I (..\myfreertos\myfreertos.h)(0x656FE939)
I (..\FreeRTOS\include\FreeRTOS.h)(0x652F9ABE) I (..\FreeRTOS\include\FreeRTOS.h)(0x652F9ABE)
I (D:\MDK5\ARM\ARMCC\include\stddef.h)(0x6025237E) I (D:\MDK5\ARM\ARMCC\include\stddef.h)(0x6025237E)
@ -2506,7 +2506,7 @@ I (..\FreeRTOS\portable\RVDS\ARM_CM3\portmacro.h)(0x573F3A17)
I (..\FreeRTOS\include\mpu_wrappers.h)(0x573F3A16) I (..\FreeRTOS\include\mpu_wrappers.h)(0x573F3A16)
I (..\FreeRTOS\include\task.h)(0x573F3A16) I (..\FreeRTOS\include\task.h)(0x573F3A16)
I (..\FreeRTOS\include\list.h)(0x573F3A16) I (..\FreeRTOS\include\list.h)(0x573F3A16)
F (..\myfreertos\myfreertos.c)(0x657816F8)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ..\USER -I ..\CORE -I ..\STM32F10x_FWLib\inc -I ..\HARDWARE -I ..\SYSTEM -I ..\dhcp -I ..\dns -I ..\md5 -I ..\MQTT -I ..\MQTT\lib -I ..\w5500 -I ..\FreeRTOS\include -I ..\FreeRTOS\portable\RVDS\ARM_CM3 -I ..\myfreertos -ID:\MDK5\ARM\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="536" -DSTM32F10X_MD -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -o ..\obj\myfreertos.o --omf_browse ..\obj\myfreertos.crf --depend ..\obj\myfreertos.d) F (..\myfreertos\myfreertos.c)(0x657C176B)(--c99 -c --cpu Cortex-M3 -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I ..\USER -I ..\CORE -I ..\STM32F10x_FWLib\inc -I ..\HARDWARE -I ..\SYSTEM -I ..\dhcp -I ..\dns -I ..\md5 -I ..\MQTT -I ..\MQTT\lib -I ..\w5500 -I ..\FreeRTOS\include -I ..\FreeRTOS\portable\RVDS\ARM_CM3 -I ..\myfreertos -ID:\MDK5\ARM\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="536" -DSTM32F10X_MD -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -o ..\obj\myfreertos.o --omf_browse ..\obj\myfreertos.crf --depend ..\obj\myfreertos.d)
I (..\myfreertos\myfreertos.h)(0x656FE939) I (..\myfreertos\myfreertos.h)(0x656FE939)
I (..\FreeRTOS\include\FreeRTOS.h)(0x652F9ABE) I (..\FreeRTOS\include\FreeRTOS.h)(0x652F9ABE)
I (D:\MDK5\ARM\ARMCC\include\stddef.h)(0x6025237E) I (D:\MDK5\ARM\ARMCC\include\stddef.h)(0x6025237E)

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

@ -4,6 +4,9 @@ extern u16 tem,hum,red,blue,white;
extern u8 now_stage; extern u8 now_stage;
extern u8 hour,min; extern u8 hour,min;
//int a_value=20;
//int b_value=20;
//int c_value=20;
int main(void) int main(void)
{ {
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4); //FreeRTOS推荐使用 中断优先级分组4 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4); //FreeRTOS推荐使用 中断优先级分组4
@ -38,6 +41,7 @@ int main(void)
os_init(); os_init();
while(1) while(1)
{ {
//printf("%d,%d,%d\r\n",a_value,b_value,c_value);
} }
} }

@ -26,7 +26,6 @@ void Sensor_Communication_task(void *pvParameters);
void Host_Computer_Communication(void); void Host_Computer_Communication(void);
int isZeros(u8 arr[]) ; int isZeros(u8 arr[]) ;
u8 ZERO_Count=0;
u8 RS485_RX_BUF_COPY[128]={0}; u8 RS485_RX_BUF_COPY[128]={0};
u8 cnt_flag=0,sub_flag=0,pub_flag=0; u8 cnt_flag=0,sub_flag=0,pub_flag=0;
u16 time=0;//记录ping服务器的时间 u16 time=0;//记录ping服务器的时间
@ -190,7 +189,7 @@ void Sensor_Communication_task(void *pvParameters)
C= RS485_RX_BUF_COPY[19]; C= RS485_RX_BUF_COPY[19];
C = C<<8|RS485_RX_BUF_COPY[20]; C = C<<8|RS485_RX_BUF_COPY[20];
printf("now_tem=%d.%d¡æ,now_hum=%d.%d%% ,co2=%d\r\n",T/10,T%10,H/10,H%10,C); //printf("now_tem=%d.%d¡æ,now_hum=%d.%d%% ,co2=%d\r\n",T/10,T%10,H/10,H%10,C);
/*GPIO1->报警铃 GPIO2->压缩机 GPIO3->四通阀 GPIO4—>新风风扇 GPIO5->加湿器 */ /*GPIO1->报警铃 GPIO2->压缩机 GPIO3->四通阀 GPIO4—>新风风扇 GPIO5->加湿器 */
@ -248,7 +247,6 @@ void Sensor_Communication_task(void *pvParameters)
humidity_flag=0; humidity_flag=0;
} }
RS485_1_Send_Data_2(); //上传参数 RS485_1_Send_Data_2(); //上传参数
RX_BUF_ZERO(23);
RX_BUF_Transfer(0,23); RX_BUF_Transfer(0,23);
//RX_BUF_Printf(128); //RX_BUF_Printf(128);
@ -278,7 +276,7 @@ void Sensor_Communication_task(void *pvParameters)
// } // }
} }
printf("%d£¬ %d £¬ %d\n",T,H,C); printf("%d,%d,%d\r\n",T,H,C);
//printf("current params: %d:%d,hot or cold flag:%d, humidity flag:%d, alarm: %d\r\n",chour, cminute, hot_clod_flag, humidity_flag, ALARM); //printf("current params: %d:%d,hot or cold flag:%d, humidity flag:%d, alarm: %d\r\n",chour, cminute, hot_clod_flag, humidity_flag, ALARM);
//printf("led!!!\r\n"); //printf("led!!!\r\n");
if(red<=1000&&blue<=1000) if(red<=1000&&blue<=1000)
@ -305,31 +303,29 @@ void Host_Computer_Communication(void)
if(RS485_RX_BUF_COPY[2]==0x03)//单个同步 if(RS485_RX_BUF_COPY[2]==0x03)//单个同步
{ {
Analysis(&n,&i,RS485_RX_BUF_COPY); Analysis(&n,&i,RS485_RX_BUF_COPY);
printf("B6 03 cmd: batch sync\r\n"); //printf("B6 03 cmd: batch sync\r\n");
Array(&now_stage,&hour,&min,&tem,&hum,&red,&blue,&white);//更新对应阶段号的参数 Array(&now_stage,&hour,&min,&tem,&hum,&red,&blue,&white);//更新对应阶段号的参数
Write_Init(); Write_Init();
RX_BUF_Transfer(0,11); RX_BUF_Transfer(0,11);
//RX_BUF_Printf(128);
} }
if(RS485_RX_BUF_COPY[2]==0x04)//阶段切换 if(RS485_RX_BUF_COPY[2]==0x04)//阶段切换
{ {
change_stage_rev1=RS485_RX_BUF_COPY[3]; change_stage_rev1=RS485_RX_BUF_COPY[3];
printf("B6 04 cmd: change stage\r\n"); //printf("B6 04 cmd: change stage\r\n");
RTC_synchronization_ins(2023,9,1,0,00,00); RTC_synchronization_ins(2023,9,1,0,00,00);
now_stage=change_stage_rev1; now_stage=change_stage_rev1;
store_stage=change_stage_rev1; store_stage=change_stage_rev1;
Write_Init(); Write_Init();
RX_BUF_Transfer(0,8); RX_BUF_Transfer(0,8);
RX_BUF_Printf(128);
} }
if(RS485_RX_BUF_COPY[2]==0x01)//批量同步 if(RS485_RX_BUF_COPY[2]==0x01)//批量同步
{ {
Batch_synchronization(&n,RS485_RX_BUF_COPY); Batch_synchronization(&n,RS485_RX_BUF_COPY);
printf("B6 01 cmd: get one %d\r\n", n); //printf("B6 01 cmd: get one %d\r\n", n);
Array(&now_stage,&hour,&min,&tem,&hum,&red,&blue,&white);//更新对应阶段号的参数 Array(&now_stage,&hour,&min,&tem,&hum,&red,&blue,&white);//更新对应阶段号的参数
//Write_Init();减少擦写的次数 //Write_Init();减少擦写的次数
RX_BUF_Transfer(0,20); RX_BUF_Transfer(0,20);
//RX_BUF_Printf(128);
} }
} }
else if(RS485_RX_BUF_COPY[0]==0xEE&&RS485_RX_BUF_COPY[1]==0xB1) else if(RS485_RX_BUF_COPY[0]==0xEE&&RS485_RX_BUF_COPY[1]==0xB1)
@ -363,19 +359,20 @@ void Host_Computer_Communication(void)
} }
else else
{ {
int index=0; int ZERO_Count=0;
//if()与while()的顺序不能变 //if()与while()的顺序不能变
if((RS485_RX_BUF_COPY[0]!=0x00))//不为0处理掉 if((RS485_RX_BUF_COPY[0]!=0x00))//不为0处理掉
{ {
RX_BUF_Transfer(0,1); RX_BUF_Transfer(0,1);
//printf("the number is no zero\r\n");
} }
while(RS485_RX_BUF_COPY[index]==0x00) while(RS485_RX_BUF_COPY[ZERO_Count]==0x00)
{ {
index++; ZERO_Count++;
} }
RX_BUF_Transfer(0,index); RX_BUF_Transfer(0,ZERO_Count);
printf("previous array cut\r\n"); //printf("previous array cut\r\n");
} }
} }

Loading…
Cancel
Save