static void _cbDialog(WM_MESSAGE * pMsg) {
WM_HWIN hItem;
int NCode;
int Id;
static char wang[5];
// USER START (Optionally insert additional variables)
// USER END
TEXT_SetText(hItem, "ji re she zhi");
TEXT_SetFont(hItem, GUI_FONT_32_1);
//
// Initialization of 'Text'
//
hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_1);
TEXT_SetTextColor(hItem, 0x00000000);
TEXT_SetFont(hItem, GUI_FONT_32_1);
TEXT_SetText(hItem, "wen cha xun huan");
//
// Initialization of 'Text'
//
hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_2);
sprintf(wang,"%d",gw);
TEXT_SetFont(hItem, GUI_FONT_24_1);
TEXT_SetText(hItem, wang);
//
// Initialization of 'Button'
//
hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_4);
BUTTON_SetText(hItem, "+1");
//
// Initialization of 'Edit'
//
hItem = WM_GetDialogItem(pMsg->hWin, ID_EDIT_2);
EDIT_SetDecMode(hItem,gw,0,100,0,0);
EDIT_SetFont(hItem, GUI_FONT_24_1);
EDIT_SetTextAlign(hItem, GUI_TA_HCENTER | GUI_TA_VCENTER);
//
// Initialization of 'Button'
//
hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_5);
BUTTON_SetText(hItem, "-1");
// USER START (Optionally insert additional code for further widget initialization)
// USER END
break;
case WM_NOTIFY_PARENT:
Id = WM_GetId(pMsg->hWinSrc);
NCode = pMsg->Data.v;
switch(Id) {
case ID_BUTTON_0: // Notifications sent by 'Button'
switch(NCode) {
case WM_NOTIFICATION_CLICKED:
qd++;
//sj=1;
break;
case WM_NOTIFICATION_RELEASED:
sjxr(); //调用数据写入函数 就在这个地方进去就出不来了,死机。
WM_InvalidateWindow(WM_HBKWIN);
break;
}
break;
case ID_BUTTON_1: // Notifications sent by 'Button'
switch(NCode) {
case WM_NOTIFICATION_CLICKED:
qd--;
sjxr();
break;
case WM_NOTIFICATION_RELEASED:
//sj=1;
WM_InvalidateWindow(WM_HBKWIN);
break;
}
break;
case ID_EDIT_0: // Notifications sent by 'Edit'
switch(NCode) {
case WM_NOTIFICATION_CLICKED:
break;
case WM_NOTIFICATION_RELEASED:
break;
case WM_NOTIFICATION_VALUE_CHANGED:
break;
}
break;
case ID_BUTTON_2: // Notifications sent by 'Button'
switch(NCode) {
case WM_NOTIFICATION_CLICKED:
tz++;
//sjxr();
break;
case WM_NOTIFICATION_RELEASED:
WM_InvalidateWindow(WM_HBKWIN);
break;
}
break;
case ID_EDIT_1: // Notifications sent by 'Edit'
switch(NCode) {
case WM_NOTIFICATION_CLICKED:
break;
case WM_NOTIFICATION_RELEASED:
break;
case WM_NOTIFICATION_VALUE_CHANGED:
break;
}
break;
case ID_BUTTON_3: // Notifications sent by 'Button'
switch(NCode) {
case WM_NOTIFICATION_CLICKED:
tz--;
// sjxr();
break;
case WM_NOTIFICATION_RELEASED:
WM_InvalidateWindow(WM_HBKWIN);
break;
}
break;
case ID_BUTTON_4: // Notifications sent by 'Button'
switch(NCode) {
case WM_NOTIFICATION_CLICKED:
gw++;
break;
case WM_NOTIFICATION_RELEASED:
// sjxr();
WM_InvalidateWindow(WM_HBKWIN);
break;
}
break;
case ID_EDIT_2: // Notifications sent by 'Edit'
switch(NCode) {
case WM_NOTIFICATION_CLICKED:
break;
case WM_NOTIFICATION_RELEASED:
break;
case WM_NOTIFICATION_VALUE_CHANGED:
break;
}
break;
case ID_BUTTON_5: // Notifications sent by 'Button'
switch(NCode) {
case WM_NOTIFICATION_CLICKED:
gw--;
break;
case WM_NOTIFICATION_RELEASED:
// sjxr();
WM_InvalidateWindow(WM_HBKWIN);
break;
}
break;
// USER START (Optionally insert additional public code)
// USER END
/*************************** End of file ****************************/
int qdx (void)
{
return qd;
}
int tzx (void)
{
return tz;
}
int gwx (void)
{
return gw;
}
int sjx (void)
{
return sj;
}
[/mw_shl_code]
调用数据写入函数时通过一步一步的调试好像是死机到 stm32f4xx_flash.c 的第507行函数 status = FLASH_WaitForLastOperation();
这是怎么回事啊!
if(status == FLASH_COMPLETE)
{
/* if the previous operation is completed, proceed to erase the sector */
FLASH->CR &= CR_PSIZE_MASK;
FLASH->CR |= tmp_psize;
FLASH->CR &= SECTOR_MASK;
FLASH->CR |= FLASH_CR_SER | FLASH_Sector;
FLASH->CR |= FLASH_CR_STRT;
/* Wait for last operation to be completed */
status = FLASH_WaitForLastOperation(); // 就死在这一行里
/* if the erase operation is completed, disable the SER Bit */
FLASH->CR &= (~FLASH_CR_SER);
FLASH->CR &= SECTOR_MASK;
}
/* Return the Erase Status */
return status;
}