优化过后的代码

这款代码有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'
compiling myfreertos.c...
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...
"..\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
<h2>Collection of Component Files used:</h2>
Build Time Elapsed: 00:00:05
Build Time Elapsed: 00:00:04
</pre>
</body>
</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 !)
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 (..\FreeRTOS\include\FreeRTOS.h)(0x652F9ABE)
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\task.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 (..\FreeRTOS\include\FreeRTOS.h)(0x652F9ABE)
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 hour,min;
//int a_value=20;
//int b_value=20;
//int c_value=20;
int main(void)
{
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4); //FreeRTOS推荐使用 中断优先级分组4
@ -38,6 +41,7 @@ int main(void)
os_init();
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);
int isZeros(u8 arr[]) ;
u8 ZERO_Count=0;
u8 RS485_RX_BUF_COPY[128]={0};
u8 cnt_flag=0,sub_flag=0,pub_flag=0;
u16 time=0;//记录ping服务器的时间
@ -190,7 +189,7 @@ void Sensor_Communication_task(void *pvParameters)
C= RS485_RX_BUF_COPY[19];
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->加湿器 */
@ -248,7 +247,6 @@ void Sensor_Communication_task(void *pvParameters)
humidity_flag=0;
}
RS485_1_Send_Data_2(); //上传参数
RX_BUF_ZERO(23);
RX_BUF_Transfer(0,23);
//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("led!!!\r\n");
if(red<=1000&&blue<=1000)
@ -305,31 +303,29 @@ void Host_Computer_Communication(void)
if(RS485_RX_BUF_COPY[2]==0x03)//单个同步
{
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);//更新对应阶段号的参数
Write_Init();
RX_BUF_Transfer(0,11);
//RX_BUF_Printf(128);
}
if(RS485_RX_BUF_COPY[2]==0x04)//阶段切换
{
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);
now_stage=change_stage_rev1;
store_stage=change_stage_rev1;
Write_Init();
RX_BUF_Transfer(0,8);
RX_BUF_Printf(128);
}
if(RS485_RX_BUF_COPY[2]==0x01)//批量同步
{
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);//更新对应阶段号的参数
//Write_Init();减少擦写的次数
RX_BUF_Transfer(0,20);
//RX_BUF_Printf(128);
}
}
else if(RS485_RX_BUF_COPY[0]==0xEE&&RS485_RX_BUF_COPY[1]==0xB1)
@ -363,19 +359,20 @@ void Host_Computer_Communication(void)
}
else
{
int index=0;
int ZERO_Count=0;
//if()与while()的顺序不能变
if((RS485_RX_BUF_COPY[0]!=0x00))//不为0处理掉
{
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);
printf("previous array cut\r\n");
RX_BUF_Transfer(0,ZERO_Count);
//printf("previous array cut\r\n");
}
}

Loading…
Cancel
Save