本人用stm32内部flash保存200字节的参数,点击保存按钮,回调函数中先写flash,然后关闭对话框,为嘛关闭过后本对话框一直弹出又关闭??
用的是原子哥的flash读写代码! 把回调函数中先flash操作去掉就正常!
会不会是写flash操作影响了emwin的内部信号?
保存按钮回调函数如下:
[mw_shl_code=c,true]#define FLASH_SAVE_ADDR 0x0807F000 //103ve 最后4K,起始地址(必须为偶数) 0X0803 0000
#define STM32_FLASH_SIZE 512 //所选STM32的FLASH容量大小(单位为K)
#define STM32_FLASH_WREN 1 //使能FLASH写入(0,不是能;1,使能)
#define STM32_FLASH_BASE 0x08000000 //STM32 FLASH的起始地址
[/mw_shl_code]
[mw_shl_code=c,true]#define DB1 20
#define LEN1 20//*2
#define EDIT_NUM 5 // >4出错!!
#define buffsize 300 //buffsize>LEN1*2*EDIT_NUM
static void OnSaveReleased(WM_MESSAGE * pMsg) //按钮回调函数
{ WM_HWIN hWin = pMsg->hWin;
char buff[buffsize]={0};
uint8_t i;
for(i=0;i<EDIT_NUM;i++){ //i<10!!
EDIT_GetText(WM_GetDialogItem(hWin,GUI_ID_EDIT0+i), buff+LEN1*2*i,LEN1*2);
}
STMFLASH_Write(FLASH_SAVE_ADDR+DB1,(u16*)buff,LEN1*EDIT_NUM); //*2 写flash200字节!
//delay_ms(100);
memset(buff,0,buffsize*sizeof(char));
STMFLASH_Read (FLASH_SAVE_ADDR+DB1,(u16*)buff,LEN1*EDIT_NUM);
USART3_SendString((uint8_t*)"\r\nSaved dataN:");
for(i=0; i<EDIT_NUM; i++){
USART3_SendString((uint8_t*)"\r\n ");
USART3_SendString(buff+LEN1*2*i);
}
WM_SetFocus(hWin0); //焦点切换回主界面
GUI_EndDialog(hWin1, 0);//关闭本对话框
}
[/mw_shl_code]
|