#include "os_timer.h" os_timer_t timer_update_id; uint8_t flag =0; uint8_t read_data[128]={0}; uint8_t read_data_W[128]={0}; void timer_update_task(void* vag) { co_printf("%s, mem (0x%x)\r\n", func, os_get_free_heap_size()); // ool_write( , ); if(flag==0) { flash_read(0x3F000,128,&read_data[0]); co_printf("\r\n Read flash\r\n"); show_reg(read_data,128,1); flag=1; } else if(flag ==1) { flash_erase(0x3F000,0x1000); for(uint8_t i =0;i<128;i++) { read_data[i]=i; } show_reg(read_data,128,1); flag=2; } else if(flag ==2) { flash_write(0x3F000,128,&read_data[0]); flag=3; } else if(flag ==3) { flash_read(0x3F000,128,&read_data_W[0]); co_printf("\r\n read_data_W\r\n"); show_reg(read_data_W,128,1); os_timer_stop(&timer_update_id); } } void timer_task_send(uint8_t on_off, uint32_t ms, bool num) { #if 1 static uint8_t flag = 1; if(flag) { os_timer_init(&timer_update_id,timer_update_task,NULL); } if(on_off) { os_timer_start(&timer_update_id,ms,num); } else { os_timer_stop(&timer_update_id); } flag=0; #endif } 参考一下,写的地址不能写在代码区,A、B区之外,计算A、B区就是image_size*2之后就是用户可以操作的flash