为什么我声明的static静态局部变量值会丢失?

2019-07-21 04:30发布

void read_usbdata(void)
{  
static u32 read_address=0;
volatile u32 readaddress1=0;
    FRESULT res;  
   f_mount(0, &fatfs);
   res = f_open(&file, "Cfont.FON" , FA_READ);
// if (!res)
//    {  
readaddress1=read_address;
f_lseek(&file, readaddress1);  
f_read(&file, Data_buffer, sizeof(Data_buffer), (void *)&num_ReadBytes); 
GPIO_SetBits(GPIOF, GPIO_Pin_7);
//if(read_address>9000)
//printf( "%d ", readaddress1);
//read_address+=4096;
read_address=readaddress1+4096;
// }
f_close(&file);
}
主函数中要调用该函数,本来我想保留read_address值,可是每次程序执行了f_read后read_address就变成0,readaddress1却不改变
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
jiutianshenjian
1楼-- · 2019-07-21 06:50
你对文件操作啊,看不懂。
pengpengpang
2楼-- · 2019-07-21 11:46
回复【2楼】jiutianshenjian:
---------------------------------
今天我又试了一下,我在static u32 read_address=0;上边有定义了一个static u32 test_address=0;结果test_address值就会丢失,而read_address的值就不会丢失了!真奇怪
正点原子
3楼-- · 2019-07-21 13:50
 精彩回答 2  元偷偷看……
pengpengpang
4楼-- · 2019-07-21 16:49
回复【4楼】正点原子:
---------------------------------
谢谢原子哥这么晚还回复。这两个值我都是打印出来看到的。优化也是-00。static u32 read_address=0跟static u32 test_address=0谁先声明谁的值在执行了f_read()后就会变成零。
正点原子
5楼-- · 2019-07-21 20:14
回复【5楼】pengpengpang:
---------------------------------
丢失的时候,打印出来,是什么现象?

一周热门 更多>