M
						
					
					
						
					
				
				
					#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