while循环优化

优化与上位机通信的while循环,循环处理数据中间某一段为0的数据
before_die
kafeijiaasamu 2 years ago
parent fa41c5b4ab
commit 4d180f7ac6

@ -1,9 +1,11 @@
#include "stm32f10x.h" // Device header #include "stm32f10x.h" // Device header
#include "USART.h" #include "USART.h"
#include "rs485.h" #include "rs485.h"
#include "iwdg.h"
extern u8 ins_1; extern u8 ins_1;
extern u16 white; extern u16 white;
extern u16 tick; extern u16 tick;
extern u8 Feed_Dog_Count;
void PWM1_Init(uint16_t Per,uint16_t Psc) void PWM1_Init(uint16_t Per,uint16_t Psc)
{ {
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1,ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1,ENABLE);
@ -189,26 +191,32 @@ void PWM_SetCompare4( uint16_t Compare)//
{ {
TIM_ClearITPendingBit(TIM4, TIM_IT_Update ); //清除TIMx更新中断标志 TIM_ClearITPendingBit(TIM4, TIM_IT_Update ); //清除TIMx更新中断标志
tick++; tick++;
if(white<=1000&&white>0) Feed_Dog_Count++;
if( Feed_Dog_Count>5)
{ {
if(ins_1<=70) IWDG_FeedDog();
{ Feed_Dog_Count=0;
PWM_SetCompare4(ins_1);
ins_1+=(white/100.0*2.8+30)/6;
//ins_1+=((white/10)/5);
printf("white pwm\r\n");
}
else
{
ins_1=0;
PWM_SetCompare4(0);
}
} }
if(white==0){ // if(white<=1000&&white>0)
PWM_SetCompare4(0); // {
printf("white is 0!!!"); // if(ins_1<=70)
} // {
// PWM_SetCompare4(ins_1);
// ins_1+=(white/100.0*2.8+30)/6;
// //ins_1+=((white/10)/5);
// printf("white pwm\r\n");
// }
// else
// {
// ins_1=0;
// PWM_SetCompare4(0);
// }
//
// }
// if(white==0){
// PWM_SetCompare4(0);
// printf("white is 0!!!");
// }
} }
} }

@ -55,7 +55,7 @@ void RX_BUF_Printf(int num)
int i=0; int i=0;
for(i=0;i<num;i++) for(i=0;i<num;i++)
{ {
printf("%x ",RS485_RX_BUF[i]); //printf("%x ",RS485_RX_BUF[i]);
} }
} }

@ -6,8 +6,8 @@
u8 sendbuf[27]={0xEE,0xB5,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, u8 sendbuf[29]={0xEE,0xB5,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFC,0xFF,0xFF};//发送给串口屏的实时数据 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFC,0xFF,0xFF};//发送给串口屏的实时数据
u8 sendbuf_crc[20]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, u8 sendbuf_crc[20]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
extern u8 global_buffer[64]; extern u8 global_buffer[64];
@ -122,7 +122,7 @@ u8 CRC16_check(u8 *puchMsg, u16 usDataLen)
} }
if(uchCRCHi==*puchMsg++&&uchCRCLo==*puchMsg++) if(uchCRCHi==*puchMsg++&&uchCRCLo==*puchMsg++)
{ {
printf("CRC 校验成功\r\n"); // 调试使用 //printf("CRC 校验成功\r\n"); // 调试使用
return 1; return 1;
} }
else else
@ -370,7 +370,13 @@ void RS485_1_Send_Data_1(u8 *buf,u8 len)
//len:发送的字节数(为了和本代码的接收匹配,这里建议不要超过64个字节) //len:发送的字节数(为了和本代码的接收匹配,这里建议不要超过64个字节)
void RS485_1_Send_Data_2(void)//上传温湿度二氧化碳 void RS485_1_Send_Data_2(void)//上传温湿度二氧化碳
{ {
sendbuf[0]=0xEE;
sendbuf[1]=0xB5;
sendbuf[2]=0x05;
sendbuf[25]=0xFF;
sendbuf[26]=0xFC;
sendbuf[27]=0xFF;
sendbuf[28]=0xFF;
u8 a; u8 a;
RS485_1_TX_EN=1; //设置为发送模式 RS485_1_TX_EN=1; //设置为发送模式
if(T<=500) if(T<=500)
@ -413,8 +419,6 @@ void RS485_1_Send_Data_2(void)//
sendbuf[10]=blue_light2; //蓝光 sendbuf[10]=blue_light2; //蓝光
sendbuf[11]=white_light1; sendbuf[11]=white_light1;
sendbuf[12]=white_light2;//白光 sendbuf[12]=white_light2;//白光
// sendbuf[13]=RS485_RX_BUF[19];
// sendbuf[14]=RS485_RX_BUF[20];//CO2
if(C<=5000) if(C<=5000)
{ {
CO2_1=RS485_RX_BUF_COPY[19]; CO2_1=RS485_RX_BUF_COPY[19];
@ -422,40 +426,22 @@ void RS485_1_Send_Data_2(void)//
} }
sendbuf[13]=CO2_1; sendbuf[13]=CO2_1;
sendbuf[14]=CO2_2; sendbuf[14]=CO2_2;
if(now_stage<7) if(now_stage<7&&total[3 + 18 * (now_stage - 1)]<24&&total[4 + 18 * (now_stage - 1)]<60&&chour<24&&cminute<60)
{ {
sendbuf[15]=now_stage;//当前阶段 sendbuf[15]=now_stage;//当前阶段
}
if(total[3 + 18 * (now_stage - 1)]<24)
{
sendbuf[16]=total[3 + 18 * (now_stage - 1)];//阶段小时 sendbuf[16]=total[3 + 18 * (now_stage - 1)];//阶段小时
}
if(total[4 + 18 * (now_stage - 1)]<60)
{
sendbuf[17]=total[4 + 18 * (now_stage - 1)];//阶段分钟 sendbuf[17]=total[4 + 18 * (now_stage - 1)];//阶段分钟
}
if(chour<24)
{
sendbuf[18]=chour; //已运行小时数 sendbuf[18]=chour; //已运行小时数
}
if(cminute<60)
{
sendbuf[19]=cminute;//已运行分钟数 sendbuf[19]=cminute;//已运行分钟数
} }
sendbuf[20]=hot_clod_flag;//加热制冷状态 sendbuf[20]=hot_clod_flag;//加热制冷状态
sendbuf[21]= humidity_flag;//加湿干燥状态 sendbuf[21]= humidity_flag;//加湿干燥状态
//printf("%d\r\n", humidity_flag);
sendbuf[22]=ALARM;//报警状态状态 sendbuf[22]=ALARM;//报警状态状态
// bufcut_Init(sendbuf_crc,sendbuf,3,23); bufcut_Init(sendbuf_crc,sendbuf,3,23);
// GetCRC16(sendbuf_crc,20,&crc_num1,&crc_num2); GetCRC16(sendbuf_crc,20,&crc_num1,&crc_num2);
// sendbuf[23]=crc_num1; sendbuf[23]=crc_num1;
// sendbuf[24]=crc_num2; sendbuf[24]=crc_num2;
// for(int i=0;i<20;i++) // for(int i=0;i<20;i++)
// { // {
// printf("%x ",sendbuf_crc[i]); // printf("%x ",sendbuf_crc[i]);
@ -467,15 +453,9 @@ void RS485_1_Send_Data_2(void)//
// { // {
// printf("%x ",sendbuf[i]); // printf("%x ",sendbuf[i]);
// } // }
sendbuf[0]=0xEE;
sendbuf[1]=0xB5;
sendbuf[2]=0x05;
sendbuf[23]=0xFF;
sendbuf[24]=0xFC;
sendbuf[25]=0xFF;
sendbuf[26]=0xFF;
//printf("%x\r\n",sendbuf[0]); //printf("%x\r\n",sendbuf[0]);
for(a=0;a<27;a++) //循环发送数据 for(a=0;a<29;a++) //循环发送数据
{ {
while(USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET); while(USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);
USART_SendData(USART1,sendbuf[a]); USART_SendData(USART1,sendbuf[a]);

@ -79,7 +79,7 @@ void static RTC_NVIC_Config(void)
u8 RTC_Init(void) u8 RTC_Init(void)
{ {
//检查是不是第一次配置时钟 //检查是不是第一次配置时钟
printf("rtc_init start\r\n"); //printf("rtc_init start\r\n");
u8 temp=0; u8 temp=0;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE); //使能PWR和BKP外设时钟 RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE); //使能PWR和BKP外设时钟
PWR_BackupAccessCmd(ENABLE); //使能后备寄存器访问 PWR_BackupAccessCmd(ENABLE); //使能后备寄存器访问
@ -96,10 +96,10 @@ u8 RTC_Init(void)
delay_ms(10); delay_ms(10);
} }
if(temp>=250)return 1;//初始化时钟失败,晶振有问题 if(temp>=250)return 1;//初始化时钟失败,晶振有问题
printf("rtc_init \r\n"); //printf("rtc_init \r\n");
RCC_RTCCLKConfig(RCC_RTCCLKSource_HSE_Div128); RCC_RTCCLKConfig(RCC_RTCCLKSource_HSE_Div128);
//设置RTC时钟(RTCCLK),选择LSE作为RTC时钟 //设置RTC时钟(RTCCLK),选择LSE作为RTC时钟
printf("HSE is timesource\r\n"); //printf("HSE is timesource\r\n");
RCC_RTCCLKCmd(ENABLE); //使能RTC时钟 RCC_RTCCLKCmd(ENABLE); //使能RTC时钟
RTC_WaitForLastTask(); //等待最近一次对RTC寄存器的写操作完成 RTC_WaitForLastTask(); //等待最近一次对RTC寄存器的写操作完成
RTC_WaitForSynchro(); //等待RTC寄存器同步 RTC_WaitForSynchro(); //等待RTC寄存器同步
@ -196,13 +196,13 @@ void RTC_IRQHandler(void)
if (RTC_GetITStatus(RTC_IT_SEC) != RESET)//秒钟中断 if (RTC_GetITStatus(RTC_IT_SEC) != RESET)//秒钟中断
{ {
RTC_Get(&a,&b);//更新时间 RTC_Get(&a,&b);//更新时间
printf("RTC Time:%d-%d-%d %d:%d:%d\r\n",calendar.w_year,calendar.w_month,calendar.w_date,calendar.hour,calendar.min,calendar.sec); //printf("RTC Time:%d-%d-%d %d:%d:%d\r\n",calendar.w_year,calendar.w_month,calendar.w_date,calendar.hour,calendar.min,calendar.sec);
} }
if(RTC_GetITStatus(RTC_IT_ALR)!= RESET)//闹钟中断 if(RTC_GetITStatus(RTC_IT_ALR)!= RESET)//闹钟中断
{ {
RTC_ClearITPendingBit(RTC_IT_ALR); //清闹钟中断 RTC_ClearITPendingBit(RTC_IT_ALR); //清闹钟中断
RTC_Get(&a,&b); //更新时间 RTC_Get(&a,&b); //更新时间
printf("Alarm Time:%d-%d-%d %d:%d:%d\n",calendar.w_year,calendar.w_month,calendar.w_date,calendar.hour,calendar.min,calendar.sec);//输出闹铃时间 //printf("Alarm Time:%d-%d-%d %d:%d:%d\n",calendar.w_year,calendar.w_month,calendar.w_date,calendar.hour,calendar.min,calendar.sec);//输出闹铃时间
} }
RTC_ClearITPendingBit(RTC_IT_SEC|RTC_IT_OW); //清闹钟中断 RTC_ClearITPendingBit(RTC_IT_SEC|RTC_IT_OW); //清闹钟中断

@ -64,13 +64,13 @@ void Read_Init(void)
bufcut_Init(total,ArrayRead,0,109);//把读出来的数据赋值给total数组 bufcut_Init(total,ArrayRead,0,109);//把读出来的数据赋值给total数组
W25QXX_Read(&read_stage,0x00006D,1); W25QXX_Read(&read_stage,0x00006D,1);
now_stage=read_stage;//读出来的阶段赋值给当前阶段 now_stage=read_stage;//读出来的阶段赋值给当前阶段
printf("%d\r\n",now_stage); //printf("%d\r\n",now_stage);
printf("\r\n"); //printf("\r\n");
printf("\r\n"); //printf("\r\n");
for(int i=0;i<108;i++) // for(int i=0;i<108;i++)
{ // {
printf("%d ",ArrayRead[i]); // printf("%d ",ArrayRead[i]);
} // }
} }
@ -147,3 +147,4 @@ int isAllZeros(u8 arr[], int size)
} }
return 1; // 返回1表示全为0 return 1; // 返回1表示全为0
} }

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=25744 RO-data=292 RW-data=1524 ZI-data=13220 Program Size: Code=25444 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).

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

@ -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)(0x6572D3A6)(--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)(0x6577C745)(--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)
@ -138,7 +138,7 @@ I (..\STM32F10x_FWLib\inc\stm32f10x_tim.h)(0x64FD7190)
I (..\STM32F10x_FWLib\inc\stm32f10x_usart.h)(0x504F415F) I (..\STM32F10x_FWLib\inc\stm32f10x_usart.h)(0x504F415F)
I (..\STM32F10x_FWLib\inc\stm32f10x_wwdg.h)(0x4D783BB4) I (..\STM32F10x_FWLib\inc\stm32f10x_wwdg.h)(0x4D783BB4)
I (..\STM32F10x_FWLib\inc\misc.h)(0x4D783BB4) I (..\STM32F10x_FWLib\inc\misc.h)(0x4D783BB4)
F (..\HARDWARE\PWM.c)(0x65604530)(--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\pwm.o --omf_browse ..\obj\pwm.crf --depend ..\obj\pwm.d) F (..\HARDWARE\PWM.c)(0x65767A1E)(--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\pwm.o --omf_browse ..\obj\pwm.crf --depend ..\obj\pwm.d)
I (..\USER\stm32f10x.h)(0x4D783CB5) I (..\USER\stm32f10x.h)(0x4D783CB5)
I (..\CORE\core_cm3.h)(0x4D523B58) I (..\CORE\core_cm3.h)(0x4D523B58)
I (D:\MDK5\ARM\ARMCC\include\stdint.h)(0x6025237E) I (D:\MDK5\ARM\ARMCC\include\stdint.h)(0x6025237E)
@ -171,6 +171,7 @@ I (..\SYSTEM\USART.h)(0x655DAB3D)
I (..\SYSTEM\system.h)(0x64BC0671) I (..\SYSTEM\system.h)(0x64BC0671)
I (D:\MDK5\ARM\ARMCC\include\stdio.h)(0x60252374) I (D:\MDK5\ARM\ARMCC\include\stdio.h)(0x60252374)
I (..\HARDWARE\rs485.h)(0x656565E2) I (..\HARDWARE\rs485.h)(0x656565E2)
I (..\HARDWARE\iwdg.h)(0x64FC32D3)
F (..\HARDWARE\PWM.h)(0x655DC5F0)() F (..\HARDWARE\PWM.h)(0x655DC5F0)()
F (..\HARDWARE\MYSPI.c)(0x64D06481)(--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\myspi.o --omf_browse ..\obj\myspi.crf --depend ..\obj\myspi.d) F (..\HARDWARE\MYSPI.c)(0x64D06481)(--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\myspi.o --omf_browse ..\obj\myspi.crf --depend ..\obj\myspi.d)
I (..\HARDWARE\MYSPI.h)(0x64D06463) I (..\HARDWARE\MYSPI.h)(0x64D06463)
@ -275,7 +276,7 @@ I (D:\MDK5\ARM\ARMCC\include\stdio.h)(0x60252374)
I (..\SYSTEM\SysTick.h)(0x6530E176) I (..\SYSTEM\SysTick.h)(0x6530E176)
I (..\HARDWARE\Relays.h)(0x6559CD68) I (..\HARDWARE\Relays.h)(0x6559CD68)
F (..\HARDWARE\Relays.h)(0x6559CD68)() F (..\HARDWARE\Relays.h)(0x6559CD68)()
F (..\HARDWARE\write.c)(0x6572E0DC)(--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\write.o --omf_browse ..\obj\write.crf --depend ..\obj\write.d) F (..\HARDWARE\write.c)(0x6577D119)(--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\write.o --omf_browse ..\obj\write.crf --depend ..\obj\write.d)
I (..\SYSTEM\system.h)(0x64BC0671) I (..\SYSTEM\system.h)(0x64BC0671)
I (..\USER\stm32f10x.h)(0x4D783CB5) I (..\USER\stm32f10x.h)(0x4D783CB5)
I (..\CORE\core_cm3.h)(0x4D523B58) I (..\CORE\core_cm3.h)(0x4D523B58)
@ -374,7 +375,7 @@ I (..\SYSTEM\system.h)(0x64BC0671)
I (D:\MDK5\ARM\ARMCC\include\stdio.h)(0x60252374) I (D:\MDK5\ARM\ARMCC\include\stdio.h)(0x60252374)
I (..\SYSTEM\SysTick.h)(0x6530E176) I (..\SYSTEM\SysTick.h)(0x6530E176)
F (..\HARDWARE\OSC.h)(0x64E6C94A)() F (..\HARDWARE\OSC.h)(0x64E6C94A)()
F (..\HARDWARE\rs485.c)(0x6572FCE1)(--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\rs485.o --omf_browse ..\obj\rs485.crf --depend ..\obj\rs485.d) F (..\HARDWARE\rs485.c)(0x6576F269)(--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\rs485.o --omf_browse ..\obj\rs485.crf --depend ..\obj\rs485.d)
I (..\HARDWARE\rs485.h)(0x656565E2) I (..\HARDWARE\rs485.h)(0x656565E2)
I (..\USER\stm32f10x.h)(0x4D783CB5) I (..\USER\stm32f10x.h)(0x4D783CB5)
I (..\CORE\core_cm3.h)(0x4D523B58) I (..\CORE\core_cm3.h)(0x4D523B58)
@ -439,7 +440,7 @@ I (D:\MDK5\ARM\ARMCC\include\string.h)(0x6025237E)
I (..\dns\dns.h)(0x5F377DE4) I (..\dns\dns.h)(0x5F377DE4)
I (..\MQTT\mqtt_api.h)(0x5F3A0FBC) I (..\MQTT\mqtt_api.h)(0x5F3A0FBC)
F (..\HARDWARE\rs485.h)(0x656565E2)() F (..\HARDWARE\rs485.h)(0x656565E2)()
F (..\HARDWARE\rtc.c)(0x656ECFB0)(--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\rtc.o --omf_browse ..\obj\rtc.crf --depend ..\obj\rtc.d) F (..\HARDWARE\rtc.c)(0x6576ACBE)(--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\rtc.o --omf_browse ..\obj\rtc.crf --depend ..\obj\rtc.d)
I (..\SYSTEM\system.h)(0x64BC0671) I (..\SYSTEM\system.h)(0x64BC0671)
I (..\USER\stm32f10x.h)(0x4D783CB5) I (..\USER\stm32f10x.h)(0x4D783CB5)
I (..\CORE\core_cm3.h)(0x4D523B58) I (..\CORE\core_cm3.h)(0x4D523B58)
@ -474,7 +475,7 @@ I (..\SYSTEM\Systick.h)(0x6530E176)
I (..\SYSTEM\USART.h)(0x655DAB3D) I (..\SYSTEM\USART.h)(0x655DAB3D)
I (D:\MDK5\ARM\ARMCC\include\stdio.h)(0x60252374) I (D:\MDK5\ARM\ARMCC\include\stdio.h)(0x60252374)
F (..\HARDWARE\rtc.h)(0x656019C4)() F (..\HARDWARE\rtc.h)(0x656019C4)()
F (..\HARDWARE\bufcut.c)(0x65730198)(--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\bufcut.o --omf_browse ..\obj\bufcut.crf --depend ..\obj\bufcut.d) F (..\HARDWARE\bufcut.c)(0x6576ACBE)(--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\bufcut.o --omf_browse ..\obj\bufcut.crf --depend ..\obj\bufcut.d)
I (..\USER\stm32f10x.h)(0x4D783CB5) I (..\USER\stm32f10x.h)(0x4D783CB5)
I (..\CORE\core_cm3.h)(0x4D523B58) I (..\CORE\core_cm3.h)(0x4D523B58)
I (D:\MDK5\ARM\ARMCC\include\stdint.h)(0x6025237E) I (D:\MDK5\ARM\ARMCC\include\stdint.h)(0x6025237E)
@ -538,7 +539,7 @@ I (..\STM32F10x_FWLib\inc\stm32f10x_usart.h)(0x504F415F)
I (..\STM32F10x_FWLib\inc\stm32f10x_wwdg.h)(0x4D783BB4) I (..\STM32F10x_FWLib\inc\stm32f10x_wwdg.h)(0x4D783BB4)
I (..\STM32F10x_FWLib\inc\misc.h)(0x4D783BB4) I (..\STM32F10x_FWLib\inc\misc.h)(0x4D783BB4)
F (..\HARDWARE\iwdg.h)(0x64FC32D3)() F (..\HARDWARE\iwdg.h)(0x64FC32D3)()
F (..\HARDWARE\PID.c)(0x655DF05B)(--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\pid.o --omf_browse ..\obj\pid.crf --depend ..\obj\pid.d) F (..\HARDWARE\PID.c)(0x6576B840)(--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\pid.o --omf_browse ..\obj\pid.crf --depend ..\obj\pid.d)
I (..\HARDWARE\PID.h)(0x6559C02A) I (..\HARDWARE\PID.h)(0x6559C02A)
I (..\HARDWARE\Relays.h)(0x6559CD68) I (..\HARDWARE\Relays.h)(0x6559CD68)
I (..\SYSTEM\system.h)(0x64BC0671) I (..\SYSTEM\system.h)(0x64BC0671)
@ -1507,7 +1508,7 @@ I (..\STM32F10x_FWLib\inc\stm32f10x_usart.h)(0x504F415F)
I (..\STM32F10x_FWLib\inc\stm32f10x_wwdg.h)(0x4D783BB4) I (..\STM32F10x_FWLib\inc\stm32f10x_wwdg.h)(0x4D783BB4)
I (..\STM32F10x_FWLib\inc\misc.h)(0x4D783BB4) I (..\STM32F10x_FWLib\inc\misc.h)(0x4D783BB4)
I (..\w5500\Types.h)(0x5F374D02) I (..\w5500\Types.h)(0x5F374D02)
F (..\w5500\w5500api.c)(0x65714139)(--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\w5500api.o --omf_browse ..\obj\w5500api.crf --depend ..\obj\w5500api.d) F (..\w5500\w5500api.c)(0x6576ACB7)(--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\w5500api.o --omf_browse ..\obj\w5500api.crf --depend ..\obj\w5500api.d)
I (..\w5500\w5500api.h)(0x65712928) I (..\w5500\w5500api.h)(0x65712928)
I (..\SYSTEM\SysTick.h)(0x6530E176) I (..\SYSTEM\SysTick.h)(0x6530E176)
I (..\SYSTEM\system.h)(0x64BC0671) I (..\SYSTEM\system.h)(0x64BC0671)
@ -2364,7 +2365,7 @@ F (..\..\..\stm32-control _lianwang\control\FreeRTOS\include\croutine.h)(0x573F3
F (..\..\..\stm32-control _lianwang\control\FreeRTOS\include\deprecated_definitions.h)(0x573F3A16)() F (..\..\..\stm32-control _lianwang\control\FreeRTOS\include\deprecated_definitions.h)(0x573F3A16)()
F (..\..\..\stm32-control _lianwang\control\FreeRTOS\include\event_groups.h)(0x573F3A16)() F (..\..\..\stm32-control _lianwang\control\FreeRTOS\include\event_groups.h)(0x573F3A16)()
F (..\..\..\stm32-control _lianwang\control\FreeRTOS\include\FreeRTOS.h)(0x573F3A16)() F (..\..\..\stm32-control _lianwang\control\FreeRTOS\include\FreeRTOS.h)(0x573F3A16)()
F (..\..\..\stm32-control _lianwang\control\FreeRTOS\include\FreeRTOSConfig.h)(0x6530EDCC)() F (..\..\..\stm32-control _lianwang\control\FreeRTOS\include\FreeRTOSConfig.h)(0x6576CFF0)()
F (..\..\..\stm32-control _lianwang\control\FreeRTOS\include\list.h)(0x573F3A16)() F (..\..\..\stm32-control _lianwang\control\FreeRTOS\include\list.h)(0x573F3A16)()
F (..\..\..\stm32-control _lianwang\control\FreeRTOS\include\mpu_prototypes.h)(0x573F3A16)() F (..\..\..\stm32-control _lianwang\control\FreeRTOS\include\mpu_prototypes.h)(0x573F3A16)()
F (..\..\..\stm32-control _lianwang\control\FreeRTOS\include\mpu_wrappers.h)(0x573F3A16)() F (..\..\..\stm32-control _lianwang\control\FreeRTOS\include\mpu_wrappers.h)(0x573F3A16)()
@ -2505,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)(0x65730286)(--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)(0x6577D636)(--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.

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -32,3 +32,4 @@
..\obj\pwm.o: ..\SYSTEM\system.h ..\obj\pwm.o: ..\SYSTEM\system.h
..\obj\pwm.o: D:\MDK5\ARM\ARMCC\Bin\..\include\stdio.h ..\obj\pwm.o: D:\MDK5\ARM\ARMCC\Bin\..\include\stdio.h
..\obj\pwm.o: ..\HARDWARE\rs485.h ..\obj\pwm.o: ..\HARDWARE\rs485.h
..\obj\pwm.o: ..\HARDWARE\iwdg.h

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

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

@ -603,7 +603,7 @@
<Group> <Group>
<GroupName>SYSTEM</GroupName> <GroupName>SYSTEM</GroupName>
<tvExp>0</tvExp> <tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel> <cbSel>0</cbSel>
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
@ -1547,7 +1547,7 @@
<Group> <Group>
<GroupName>MD5</GroupName> <GroupName>MD5</GroupName>
<tvExp>0</tvExp> <tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel> <cbSel>0</cbSel>
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>

@ -8,9 +8,9 @@ int main(void)
{ {
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4); //FreeRTOS推荐使用 中断优先级分组4 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4); //FreeRTOS推荐使用 中断优先级分组4
SysTick_Init(72); SysTick_Init(72);
USART2_Init(2400); USART2_Init(115200);
PID_Init(); PID_Init();
printf("复位\r\n"); //printf("复位\r\n");
TimePwm_init(400-1,360-1);// 72M/400/360=500HZ TimePwm_init(400-1,360-1);// 72M/400/360=500HZ
RS485_1_Init(4800); RS485_1_Init(4800);
HC595_Pin_Init(); HC595_Pin_Init();
@ -21,21 +21,16 @@ int main(void)
PWM1_Init(500-1,720-1); PWM1_Init(500-1,720-1);
PWM2_Init(500-1,720-1); PWM2_Init(500-1,720-1);
PWM3_Init(500-1,720-1); PWM3_Init(500-1,720-1);
//TIM4_Init(10000-1,7200-1);//100ms计数溢出更新中断200*7200/72M=0.02s=20ms TIM4_Init(10000-1,7200-1);//1s计数溢出更新中断10000*7200/72M=1s,内含喂狗程序
// //iwdg_my_Init(5,16000); //不喂狗12s复位 iwdg_my_Init(5,16000); //不喂狗12s复位
// //RX_BUF_Init(); // //RX_BUF_Init();
HC595_Send_Byte(0x02);//默认打开压缩机 HC595_Send_Byte(0x02);//默认打开压缩机
TIM_SetCompare4(TIM4,170); TIM_SetCompare3(TIM3,170);
//delay_xms(10000);//压缩机启动时10秒内以一半的额定功率工作 delay_xms(10000);//压缩机启动时10秒内以一半的额定功率工作
//红白蓝对应J10 J11 J12 //红白蓝对应J10 J11 J12
PWM_SetCompare1(0);//J10 PWM_SetCompare1(0);//J10
PWM_SetCompare2(0);//J12 PWM_SetCompare2(0);//J12
PWM_SetCompare4(0);//J11 PWM_SetCompare4(0);//J11
//delay_ms(500);
PWM_SetCompare1(30);//J10
PWM_SetCompare2(30);//J12
PWM_SetCompare4(30);//J11
// printf("init start\r\n"); // printf("init start\r\n");
// init_Net();//网络初始化 // init_Net();//网络初始化
// printf("init_Net OK"); // printf("init_Net OK");
@ -43,7 +38,6 @@ int main(void)
os_init(); os_init();
while(1) while(1)
{ {
// printf("enter while\r\n");
// delay_ms(1000);
} }
} }

@ -5,6 +5,28 @@ char subTopic[512]="/sys/hp8oQhMZJ67/Device1/thing/service/property/set";//
#define MQTT_SOCK 5 #define MQTT_SOCK 5
//任务优先级
#define START_TASK_PRIO 0
//任务堆栈大小
#define START_STK_SIZE 128
//任务句柄
TaskHandle_t StartTask_Handler;
//任务函数
void start_task(void *pvParameters);
//任务优先级
#define Sensor_Communication_TASK_PRIO 1//与传感器通信
//任务堆栈大小
#define Sensor_Communication_STK_SIZE 512
//任务句柄
TaskHandle_t Sensor_CommunicationTask_Handler;
//任务函数
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 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服务器的时间
@ -26,6 +48,7 @@ u8 hot_clod_flag=0;//
u8 humidity_flag=0;//加湿除湿标志位。 humidity_flag=0不加湿不除湿 humidity_flag=2,加湿; humidity_flag=1除湿 u8 humidity_flag=0;//加湿除湿标志位。 humidity_flag=0不加湿不除湿 humidity_flag=2,加湿; humidity_flag=1除湿
u8 ALARM=0;//报警标志位。ALARM=0,不报警ALARM=1,报警 u8 ALARM=0;//报警标志位。ALARM=0,不报警ALARM=1,报警
u16 tick=0;//tick大于600触发报警条件会报警小于600则不报警。 u16 tick=0;//tick大于600触发报警条件会报警小于600则不报警。
u8 Feed_Dog_Count=0;//喂狗计时
u8 now_stage=1;//当前运行阶段 u8 now_stage=1;//当前运行阶段
u16 tem,hum,red,blue,white; u16 tem,hum,red,blue,white;
u8 hour,min; u8 hour,min;
@ -42,23 +65,6 @@ unsigned int num=0;
//任务优先级
#define START_TASK_PRIO 0
//任务堆栈大小
#define START_STK_SIZE 128
//任务句柄
TaskHandle_t StartTask_Handler;
//任务函数
void start_task(void *pvParameters);
//任务优先级
#define Sensor_Communication_TASK_PRIO 1//与传感器通信
//任务堆栈大小
#define Sensor_Communication_STK_SIZE 512
//任务句柄
TaskHandle_t Sensor_CommunicationTask_Handler;
//任务函数
void Sensor_Communication_task(void *pvParameters);
/********************* /*********************
@ -68,7 +74,7 @@ void Sensor_Communication_task(void *pvParameters);
*********************/ *********************/
void os_init(void) void os_init(void)
{ {
printf("入口函数调用成功\r\n"); //printf("入口函数调用成功\r\n");
xTaskCreate( (TaskFunction_t)start_task, xTaskCreate( (TaskFunction_t)start_task,
(char *)"start_task", (char *)"start_task",
(uint16_t)START_STK_SIZE, (uint16_t)START_STK_SIZE,
@ -115,8 +121,8 @@ void start_task(void*pvParameters)
(void* )NULL, (void* )NULL,
(UBaseType_t )Sensor_Communication_TASK_PRIO, (UBaseType_t )Sensor_Communication_TASK_PRIO,
(TaskHandle_t* )&Sensor_CommunicationTask_Handler); (TaskHandle_t* )&Sensor_CommunicationTask_Handler);
if(handler==pdPASS){printf("与传感器通信任务创建成功\r\n");} // if(handler==pdPASS){printf("与传感器通信任务创建成功\r\n");}
else{printf("与传感器通信任务创建失败\r\n");} // else{printf("与传感器通信任务创建失败\r\n");}
// //创建控灯任务 // //创建控灯任务
@ -157,13 +163,13 @@ void Sensor_Communication_task(void *pvParameters)
now_stage=timelong_Compare();// now_stage=timelong_Compare();//
//printf("%d %d\r\n",chour,cminute); //printf("%d %d\r\n",chour,cminute);
Array(&now_stage,&hour,&min,&tem,&hum,&red,&blue,&white);//更新对应阶段号的参数 Array(&now_stage,&hour,&min,&tem,&hum,&red,&blue,&white);//更新对应阶段号的参数
printf("current stage: %d\r\n",now_stage); //printf("current stage: %d\r\n",now_stage);
RS485_1_Send_Data_1(rs485buf,8);//(RS485_RX_CNT=0已被注释) RS485_1_Send_Data_1(rs485buf,8);//(RS485_RX_CNT=0已被注释)
//printf("send finish\r\n"); //printf("send finish\r\n");
delay_xms(500); delay_xms(200);
//RX_BUF_Printf(128); //RX_BUF_Printf(128);
RS485_1_Send_Data_3(); RS485_1_Send_Data_3();
delay_xms(500); delay_xms(200);
//RX_BUF_Printf(128); //RX_BUF_Printf(128);
bufcut_Init(RS485_RX_BUF_COPY,RS485_RX_BUF,0,128); bufcut_Init(RS485_RX_BUF_COPY,RS485_RX_BUF,0,128);
RS485_RX_CNT=0; RS485_RX_CNT=0;
@ -191,14 +197,12 @@ void Sensor_Communication_task(void *pvParameters)
if((T<(tem-20)||T>(tem+20)||H<(hum-100)||H>(hum+100))&&(tick>610))//温度偏差2℃报警湿度偏差10报警 if((T<(tem-20)||T>(tem+20)||H<(hum-100)||H>(hum+100))&&(tick>610))//温度偏差2℃报警湿度偏差10报警
{ {
HC595_Send_Byte(gpio_state|=0x01); HC595_Send_Byte(gpio_state|=0x01);//打开报警铃 GPIO1->PB1 |=0000 0001 0x01
//GPIO_SetBits(GPIOB,GPIO_Pin_1);//打开报警铃 GPIO1->PB1 |=0000 0001 0x01
ALARM=1; ALARM=1;
} }
else else
{ {
HC595_Send_Byte(gpio_state&=0xFE); HC595_Send_Byte(gpio_state&=0xFE);//关闭报警铃 &=1111 1110 0xFE
//GPIO_ResetBits(GPIOB,GPIO_Pin_1);//关闭报警铃 &=1111 1110 0xFE
ALARM=0; ALARM=0;
} }
if(T<600&&T>-30) if(T<600&&T>-30)
@ -211,7 +215,7 @@ void Sensor_Communication_task(void *pvParameters)
pid.now_tem=T/10.0; pid.now_tem=T/10.0;
PID_Calc(); PID_Calc();
num=(((pid.OUT*400)/pid.pwmcycle)-1);//请问这个pid.OUT与pwm占空比的值是如何换算过来的 num=(((pid.OUT*400)/pid.pwmcycle)-1);//请问这个pid.OUT与pwm占空比的值是如何换算过来的
TIM_SetCompare4(TIM4,0.845*num); //0-200对应0-100%如果pid.out=50,占空比就是25%//num=50*400/200=100100/400=25% TIM_SetCompare3(TIM3,0.845*num); //0-200对应0-100%如果pid.out=50,占空比就是25%//num=50*400/200=100100/400=25%
//printf("%d ,%d ,%d ,%d ,%f ,%f ,%f ,%f ,%f ,%f ,%f ,%.3f\r\n",T,H,C,num,(pid.set_tem*10),pid.Kp,ki,kd,pid.Pout,pid.Iout,pid.Dout,num/399.0); //printf("%d ,%d ,%d ,%d ,%f ,%f ,%f ,%f ,%f ,%f ,%f ,%.3f\r\n",T,H,C,num,(pid.set_tem*10),pid.Kp,ki,kd,pid.Pout,pid.Iout,pid.Dout,num/399.0);
current_T=T; current_T=T;
} }
@ -220,137 +224,57 @@ void Sensor_Communication_task(void *pvParameters)
if(H>(hum+50))//湿度高于设定值5打开新风风扇 GPIO4->PD1 if(H>(hum+50))//湿度高于设定值5打开新风风扇 GPIO4->PD1
{ {
HC595_Send_Byte(gpio_state|=0x08); HC595_Send_Byte(gpio_state|=0x08);//打开新风风扇 |=0000 1000 0x08
HC595_Send_Byte(gpio_state&=0xEF); HC595_Send_Byte(gpio_state&=0xEF);//关闭加湿器 &=1110 1111 0xEF
// GPIO_SetBits(GPIOD,GPIO_Pin_1);//打开新风风扇 |=0000 1000 0x08
// GPIO_ResetBits(GPIOD,GPIO_Pin_0);//关闭加湿器 &=1110 1111 0xEF
humidity_flag=1; //除湿 humidity_flag=1; //除湿
} }
if(H<(hum-50))//湿度低于设定值5打开加湿器 GPIO5->PD0 if(H<(hum-50))//湿度低于设定值5打开加湿器 GPIO5->PD0
{ {
HC595_Send_Byte(gpio_state|=0x10); HC595_Send_Byte(gpio_state|=0x10);//启动加湿器 |=0001 0000 0x10
HC595_Send_Byte(gpio_state&=0xF7); HC595_Send_Byte(gpio_state&=0xF7);//关闭风扇 &=1111 0111 0xF7
// GPIO_SetBits(GPIOD,GPIO_Pin_0);//启动加湿器 |=0001 0000 0x10
// GPIO_ResetBits(GPIOD,GPIO_Pin_1);//关闭风扇 &=1111 0111 0xF7
humidity_flag=2; humidity_flag=2;
} }
if( humidity_flag==1 && H<=hum) if( humidity_flag==1 && H<=hum)
{ {
HC595_Send_Byte(gpio_state&=0xE7); HC595_Send_Byte(gpio_state&=0xE7);//关闭风扇 关闭加湿器 &=1110 0111 0xE7
// GPIO_ResetBits(GPIOD,GPIO_Pin_1);//关闭风扇 &=1110 0111 0xE7
// GPIO_ResetBits(GPIOD,GPIO_Pin_0);//关闭加湿器
humidity_flag=0; humidity_flag=0;
} }
if( humidity_flag==2 && H>=hum) if( humidity_flag==2 && H>=hum)
{ {
HC595_Send_Byte(gpio_state&=0xE7); HC595_Send_Byte(gpio_state&=0xE7);//关闭加湿器 关闭风扇 &=1110 0111 0xE7
// GPIO_ResetBits(GPIOD,GPIO_Pin_0);//关闭加湿器 &=1110 0111 0xE7
// GPIO_ResetBits(GPIOD,GPIO_Pin_1);//关闭风扇
humidity_flag=0; humidity_flag=0;
} }
//printf("!!!");
RS485_1_Send_Data_2(); //上传参数 RS485_1_Send_Data_2(); //上传参数
RX_BUF_ZERO(23); RX_BUF_ZERO(23);
//printf(" \r\n");
RX_BUF_Transfer(0,23); RX_BUF_Transfer(0,23);
//printf("\r\n");
//RX_BUF_Printf(128); //RX_BUF_Printf(128);
// printf("\r\n");
}
else if(RS485_RX_BUF_COPY[0]==0xEE&&RS485_RX_BUF_COPY[1]==0xB6&&RS485_RX_BUF_COPY[2]==0x03)//单个同步
{
Analysis(&n,&i,RS485_RX_BUF_COPY);
//printf("B6 03 cmd: batch sync\r\n");
Array(&now_stage,&hour,&min,&tem,&hum,&red,&blue,&white);//更新对应阶段号的参数
Write_Init();
RX_BUF_ZERO(11);
//printf(" \r\n");
RX_BUF_Transfer(0,11);
//printf("\r\n");
//RX_BUF_Printf(128);
//printf("\r\n");
} }
else if(RS485_RX_BUF_COPY[0]==0xEE&&RS485_RX_BUF_COPY[1]==0xB6&&RS485_RX_BUF_COPY[2]==0x04)//切换阶段 else if(RS485_RX_BUF_COPY[0]==0xEE)
{
change_stage_rev1=RS485_RX_BUF_COPY[3];
//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_ZERO(8);
//printf(" \r\n");
RX_BUF_Transfer(0,8);
//printf("\r\n");
//RX_BUF_Printf(128);
//printf("\r\n");
}
else if(RS485_RX_BUF_COPY[0]==0xEE&&RS485_RX_BUF_COPY[1]==0xB6&&RS485_RX_BUF_COPY[2]==0x01)//批量同步
{
Batch_synchronization(&n,RS485_RX_BUF_COPY);
//printf("B6 01 cmd: get one %d\r\n", n);
Array(&now_stage,&hour,&min,&tem,&hum,&red,&blue,&white);//更新对应阶段号的参数
//Write_Init();减少擦写的次数
RX_BUF_ZERO(20);
//printf(" \r\n");
RX_BUF_Transfer(0,20);
//printf("\r\n");
//RX_BUF_Printf(128);
//printf("\r\n");
}
else if(RS485_RX_BUF_COPY[0]==0xEE&&RS485_RX_BUF_COPY[1]==0xB1&&RS485_RX_BUF_COPY[2]==0x11&&RS485_RX_BUF_COPY[15]==0xFF&&RS485_RX_BUF[16]==0xFF)//单个同步默认带的数据
{ {
RX_BUF_ZERO(17); Host_Computer_Communication();
//printf(" \r\n");
//printf("cut overdata of B6 03 \r\n");
//RX_BUF_Printf(128);
RX_BUF_Transfer(0,17);
//RX_BUF_Printf(128);
}
else if(RS485_RX_BUF_COPY[0]==0xEE&&RS485_RX_BUF_COPY[1]==0xB1&&RS485_RX_BUF_COPY[2]==0x11&&RS485_RX_BUF_COPY[14]==0xFF&&RS485_RX_BUF[15]==0xFF)//单个同步默认带的数据
{
RX_BUF_ZERO(16);
//printf("cut overdata of B6 03 \r\n");
//printf(" \r\n");
//RX_BUF_Printf(128);
RX_BUF_Transfer(0,16);
//RX_BUF_Printf(128);
}
else if(RS485_RX_BUF_COPY[0]==0xEE&&RS485_RX_BUF_COPY[1]==0xB1&&RS485_RX_BUF_COPY[2]==0x11&&RS485_RX_BUF_COPY[12]==0xFF&&RS485_RX_BUF_COPY[13]==0xFF)//阶段切换默认带的数据
{
RX_BUF_ZERO(14);
//printf("cut overdata of B6 04 \r\n");
//printf(" \r\n");
//RX_BUF_Printf(128);
RX_BUF_Transfer(0,14);
//RX_BUF_Printf(128);
}
else if(RS485_RX_BUF_COPY[0]==0xEE&&RS485_RX_BUF_COPY[1]==0xB1&&RS485_RX_BUF_COPY[2]==0x01&&RS485_RX_BUF_COPY[7]==0xFF&&RS485_RX_BUF_COPY[8]==0xFF)//上位机默认带的数据
{
RX_BUF_ZERO(9);
//printf("cut overdata of Upper computer \r\n");
//printf(" \r\n");
//RX_BUF_Printf(128);
RX_BUF_Transfer(0,9);
//RX_BUF_Printf(128);
} }
else else
{ {
printf("previous array cut\r\n"); //printf("previous array cut\r\n");
RX_BUF_Transfer(0,1); while(RS485_RX_BUF_COPY[0]==0x00)//前面数据为0删掉
//printf(" \r\n"); {
//printf("\r\n"); RX_BUF_Transfer(0,1);
}
if((RS485_RX_BUF_COPY[0]!=0x00))//不为0处理掉
{
RX_BUF_Transfer(0,1);
}
//RX_BUF_Printf(128); //RX_BUF_Printf(128);
//printf("\r\n");
} }
} }
//printf("%d %d %d\r\n",T,H,C); printf("%d %d %d\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)
@ -358,7 +282,7 @@ void Sensor_Communication_task(void *pvParameters)
PWM_SetCompare1((red/100.0*3.5+28));//J9 PWM_SetCompare1((red/100.0*3.5+28));//J9
PWM_SetCompare2((blue/100.0*3.5+28));//J11 PWM_SetCompare2((blue/100.0*3.5+28));//J11
PWM_SetCompare4((blue/100.0*3.5+28));//J10 PWM_SetCompare4((white/100.0*3.5+28));//J10
//printf("red=%d\r\n",red); //printf("red=%d\r\n",red);
//printf("bule=%d\r\n",blue); //printf("bule=%d\r\n",blue);
} }
@ -370,22 +294,79 @@ void Sensor_Communication_task(void *pvParameters)
} }
//void led_task(void *pvParameters) void Host_Computer_Communication(void)
//{ {
// while(1) if(RS485_RX_BUF_COPY[0]==0xEE&&RS485_RX_BUF_COPY[1]==0xB6)
// { {
// printf("led!!!\r\n"); if(RS485_RX_BUF_COPY[2]==0x03)//单个同步
// if(red<=1000&&blue<=1000) {
// { Analysis(&n,&i,RS485_RX_BUF_COPY);
//printf("B6 03 cmd: batch sync\r\n");
Array(&now_stage,&hour,&min,&tem,&hum,&red,&blue,&white);//更新对应阶段号的参数
Write_Init();
RX_BUF_ZERO(11);
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");
RTC_synchronization_ins(2023,9,1,0,00,00);
now_stage=change_stage_rev1;
store_stage=change_stage_rev1;
Write_Init();
RX_BUF_ZERO(8);
RX_BUF_Transfer(0,8);
//RX_BUF_Printf(128);
}
if(RS485_RX_BUF_COPY[2]==0x03)//批量同步
{
Batch_synchronization(&n,RS485_RX_BUF_COPY);
//printf("B6 01 cmd: get one %d\r\n", n);
Array(&now_stage,&hour,&min,&tem,&hum,&red,&blue,&white);//更新对应阶段号的参数
//Write_Init();减少擦写的次数
RX_BUF_ZERO(20);
RX_BUF_Transfer(0,20);
//RX_BUF_Printf(128);
}
}
if(RS485_RX_BUF_COPY[0]==0xEE&&RS485_RX_BUF_COPY[1]==0xB1)
{
if(RS485_RX_BUF_COPY[2]==0x11&&RS485_RX_BUF_COPY[15]==0xFF&&RS485_RX_BUF[16]==0xFF)//单个同步默认带的数据
{
RX_BUF_ZERO(17);
//printf("cut overdata of B6 03 \r\n");
RX_BUF_Transfer(0,17);
}
if(RS485_RX_BUF_COPY[2]==0x11&&RS485_RX_BUF_COPY[14]==0xFF&&RS485_RX_BUF[15]==0xFF)//单个同步默认带的数据
{
RX_BUF_ZERO(16);
//printf("cut overdata of B6 03 \r\n");
//RX_BUF_Printf(128);
RX_BUF_Transfer(0,16);
//RX_BUF_Printf(128);
}
if(RS485_RX_BUF_COPY[2]==0x11&&RS485_RX_BUF_COPY[12]==0xFF&&RS485_RX_BUF_COPY[13]==0xFF)//阶段切换默认带的数据
{
RX_BUF_ZERO(14);
//printf("cut overdata of B6 04 \r\n");
//RX_BUF_Printf(128);
RX_BUF_Transfer(0,14);
}
if(RS485_RX_BUF_COPY[2]==0x01&&RS485_RX_BUF_COPY[7]==0xFF&&RS485_RX_BUF_COPY[8]==0xFF)//上位机默认带的数据
{
RX_BUF_ZERO(9);
//printf("cut overdata of Upper computer \r\n");
//RX_BUF_Printf(128);
RX_BUF_Transfer(0,9);
//RX_BUF_Printf(128);
}
}
}
// PWM_SetCompare1((red/10));//J9
// PWM_SetCompare2((blue/10));//J11
// //PWM_SetCompare4((white/10));//J10
// }
// vTaskDelay(5000);
//
// }
//}

@ -91,14 +91,14 @@ void init_W5500(void){
void init_Net(void){ void init_Net(void){
u8 try_times=0; u8 try_times=0;
init_W5500(); init_W5500();
printf("reset\r\n"); //printf("reset\r\n");
init_dhcp_client();//初始化DHCP客户端 init_dhcp_client();//初始化DHCP客户端
printf("okk\r\n"); //printf("okk\r\n");
while(check_DHCP_state(SOCK_DHCP)!=DHCP_RET_UPDATE){ while(check_DHCP_state(SOCK_DHCP)!=DHCP_RET_UPDATE){
try_times++; try_times++;
if(try_times==100){ //超时 重启芯片 if(try_times==100){ //超时 重启芯片
Reset_W5500(); Reset_W5500();
printf("w5500 reset ok"); //printf("w5500 reset ok");
init_dhcp_client(); init_dhcp_client();
try_times=0; try_times=0;
} }

Loading…
Cancel
Save