掉电重启,读取flash中的数据
before_die
kafeijiaasamu 2 years ago
parent 9dc057ebc1
commit 518ebe2610

@ -24,7 +24,7 @@ u8 W25QXX_ReadSR(void)
u8 byte=0;
W25QXX_CS=0; //使能器件//
SPI1_ReadWriteByte(W25X_ReadStatusReg); //发送读取状态寄存器指令W25X_ReadStatusReg=0x05可忽略接收值//
byte=SPI1_ReadWriteByte(0Xff); //读取一个字节发送0xff读取回来的值传至byte//
byte=SPI1_ReadWriteByte(0xff); //读取一个字节发送0xff读取回来的值传至byte//
W25QXX_CS=1; //取消片选
return byte;
}

@ -48,18 +48,19 @@ void Write_Init(void)
{
W25QXX_Init();
W25QXX_Erase_Sector(0x000000);
W25QXX_Write_NoCheck(total,0x000000,108);//把数据写入flash
W25QXX_Read(ArrayRead,0x000000,108);//把数据读出来
}
void Read_Init(void)
{
W25QXX_Init();
W25QXX_Read(ArrayRead,0x000000,108);//把数据读出来
bufcut_Init(ArrayWrite,ArrayRead,0,109);
bufcut_Init(total,ArrayRead,0,109);
for(int i=0;i<108;i++)
{
printf("%x ",ArrayRead[i]);
printf("%d ",ArrayRead[i]);
}
}

Binary file not shown.

@ -29,7 +29,7 @@ Project File Date: 11/19/2023
Build target 'LED'
compiling main.c...
linking...
Program Size: Code=26144 RO-data=436 RW-data=496 ZI-data=12824
Program Size: Code=25516 RO-data=292 RW-data=496 ZI-data=12824
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:03
Build Time Elapsed: 00:00:02
</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)(0x6566E6CC)(--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)(0x656D3CAF)(--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)(0x655DC049)
I (..\FreeRTOS\include\FreeRTOS.h)(0x652F9ABE)
I (D:\MDK5\ARM\ARMCC\include\stddef.h)(0x6025237E)
@ -195,7 +195,7 @@ I (..\STM32F10x_FWLib\inc\stm32f10x_usart.h)(0x504F415F)
I (..\STM32F10x_FWLib\inc\stm32f10x_wwdg.h)(0x4D783BB4)
I (..\STM32F10x_FWLib\inc\misc.h)(0x4D783BB4)
F (..\HARDWARE\MYSPI.h)(0x64D06463)()
F (..\HARDWARE\W25Q128.c)(0x64D48CFB)(--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\w25q128.o --omf_browse ..\obj\w25q128.crf --depend ..\obj\w25q128.d)
F (..\HARDWARE\W25Q128.c)(0x656988D7)(--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\w25q128.o --omf_browse ..\obj\w25q128.crf --depend ..\obj\w25q128.d)
I (..\HARDWARE\W25Q128_Ins.h)(0x64D48CD3)
I (..\SYSTEM\system.h)(0x64BC0671)
I (..\USER\stm32f10x.h)(0x4D783CB5)
@ -266,7 +266,7 @@ I (D:\MDK5\ARM\ARMCC\include\stdio.h)(0x60252374)
I (..\SYSTEM\SysTick.h)(0x6530E176)
I (..\HARDWARE\Relays.h)(0x6559CD68)
F (..\HARDWARE\Relays.h)(0x6559CD68)()
F (..\HARDWARE\write.c)(0x6566DC40)(--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)(0x656D3BEF)(--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 (..\USER\stm32f10x.h)(0x4D783CB5)
I (..\CORE\core_cm3.h)(0x4D523B58)
@ -2474,7 +2474,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)(0x6566BD9E)(--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)(0x6569899D)(--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)(0x655DC049)
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.

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

@ -165,22 +165,6 @@
<ExecCommand></ExecCommand>
<Expression>0x0002FFFE</Expression>
</Bp>
<Bp>
<Number>1</Number>
<Type>0</Type>
<LineNumber>1</LineNumber>
<EnabledFlag>1</EnabledFlag>
<Address>0</Address>
<ByteObject>0</ByteObject>
<HtxType>0</HtxType>
<ManyObjects>0</ManyObjects>
<SizeOfObject>0</SizeOfObject>
<BreakByAccess>0</BreakByAccess>
<BreakIfRCount>0</BreakIfRCount>
<Filename>.\main.c</Filename>
<ExecCommand></ExecCommand>
<Expression></Expression>
</Bp>
</Breakpoint>
<WatchWindow1>
<Ww>
@ -263,7 +247,7 @@
<Group>
<GroupName>USER</GroupName>
<tvExp>1</tvExp>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>

@ -16,26 +16,23 @@ int main(void)
HC595_Pin_Init();
RTC_Init(); //需要放在HC595_Pin_Init()后面
TIM3_Init();
delay_ms(20000);
//Write_Init(); //把数据写入W25Q128
Read_Init();
Read_Init();//读flash的值赋值给total数组
Array(&now_stage,&hour,&min,&tem,&hum,&red,&blue,&white);
Write_Init(); //把数据写入W25Q128
PWM1_Init(500-1,720-1);
PWM2_Init(500-1,720-1);
PWM3_Init(500-1,720-1);
TIM4_Init(10000-1,7200-1);//100ms计数溢出更新中断200*7200/72M=0.02s=20ms
//iwdg_my_Init(5,16000); //不喂狗12s复位
//RX_BUF_Init();
// //iwdg_my_Init(5,16000); //不喂狗12s复位
// //RX_BUF_Init();
HC595_Send_Byte(0x02);//默认打开压缩机
TIM_SetCompare4(TIM4,200);
delay_xms(10000);//压缩机启动时10秒内以一半的功率工作
TIM_SetCompare4(TIM4,170);
//delay_xms(10000);//压缩机启动时10秒内以一半的额定功率工作
//红白蓝对应J10 J11 J12
PWM_SetCompare1(0);//J10
PWM_SetCompare2(0);//J12
PWM_SetCompare4(0);//J11
delay_ms(500);
//delay_ms(500);
PWM_SetCompare1(30);//J10
PWM_SetCompare2(30);//J12
PWM_SetCompare4(30);//J11

@ -137,21 +137,21 @@ void Sensor_Communication_task(void *pvParameters)
while(1)
{
Read_Init();
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);//更新对应阶段号的参数
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已被注释)
printf("send finish\r\n");
//printf("send finish\r\n");
delay_xms(1000);
RX_BUF_Printf(128);
//RX_BUF_Printf(128);
RS485_1_Send_Data_3();
delay_xms(1000);
RX_BUF_Printf(128);
//RX_BUF_Printf(128);
while(!(RS485_RX_BUF[0]==0 && RS485_RX_BUF[1]==0 && RS485_RX_BUF[2]==0 && RS485_RX_BUF[3]==0 && RS485_RX_BUF[4]==0))
{
printf("enter while\r\n");
//printf("enter while\r\n");
if(RS485_RX_BUF[0]==0x01 && RS485_RX_BUF[1]==0x03) // 判断是否校验成功
{
@ -165,7 +165,7 @@ void Sensor_Communication_task(void *pvParameters)
C= RS485_RX_BUF[19];
C = C<<8|RS485_RX_BUF[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->加湿器 */
@ -192,8 +192,8 @@ void Sensor_Communication_task(void *pvParameters)
pid.now_tem=T/10.0;
PID_Calc();
num=(((pid.OUT*400)/pid.pwmcycle)-1);//请问这个pid.OUT与pwm占空比的值是如何换算过来的
TIM_SetCompare4(TIM4,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);
TIM_SetCompare4(TIM4,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);
current_T=T;
}
}
@ -232,14 +232,14 @@ void Sensor_Communication_task(void *pvParameters)
// GPIO_ResetBits(GPIOD,GPIO_Pin_1);//关闭风扇
humidity_flag=0;
}
printf("!!!");
//printf("!!!");
RS485_1_Send_Data_2(); //上传参数
RX_BUF_ZERO(23);
//printf(" \r\n");
RX_BUF_Transfer(0,23);
printf("\r\n");
RX_BUF_Printf(128);
printf("\r\n");
//printf("\r\n");
//RX_BUF_Printf(128);
// printf("\r\n");
}
else if(RS485_RX_BUF[0]==0xEE&&RS485_RX_BUF[1]==0xB6&&RS485_RX_BUF[2]==0x03)//单个同步
@ -291,25 +291,21 @@ void Sensor_Communication_task(void *pvParameters)
}
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");
//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)
{
PWM_SetCompare1((red/100.0*3.5+28));//J9
PWM_SetCompare2((blue/100.0*3.5+28));//J11
//PWM_SetCompare4((white/10));//J10
printf("red=%d\r\n",red);
printf("bule=%d\r\n",blue);
//printf("red=%d\r\n",red);
//printf("bule=%d\r\n",blue);
}
RS485_RX_CNT=0;
//printf("end data to serial monitor end");
// }
// }
}
}

Loading…
Cancel
Save