Advertisement
Guest User

Untitled

a guest
Oct 25th, 2014
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.36 KB | None | 0 0
  1. //HW.c
  2. HW_FLASH_Task** pHW_HW_FLASH_Task = NULL;
  3. uint8_t ui8HW_FLASH_NumberOfTask = 0;
  4.  
  5. bool bHW_FLASH_Init(char* pcTask, uint32_t ui32StartAddr, uint32_t ui32EndAddr)
  6. {
  7. uint8_t ui8Count = 0;
  8. uint8_t ui8ReInit = ui8HW_FLASH_NumberOfTask;
  9. bool bCheckAddress = FALSE;
  10. bool bCheckReInit = FALSE;
  11.  
  12. /* Check Address */
  13. if(HW_IS_FLASH_Data_Address(ui32StartAddr) && HW_IS_FLASH_Data_Address(ui32EndAddr) && (ui32StartAddr < ui32EndAddr))
  14. bCheckAddress = TRUE;
  15. else bCheckAddress = FALSE;
  16.  
  17. /* Check ReInit */
  18. bCheckReInit = FALSE;
  19. for(ui8Count = 0; ui8Count < ui8HW_FLASH_NumberOfTask; ui8Count++)
  20. {
  21. if( (bHW_StringCompare(pcTask, pHW_HW_FLASH_Task[ui8Count]->pcTaskName) == TRUE) &&
  22. (pHW_HW_FLASH_Task[ui8Count]->ui8Number == ui8Count) )
  23. {
  24. bCheckReInit = TRUE;
  25. ui8ReInit = ui8Count;
  26. }
  27. }
  28.  
  29. /* Init */
  30. if(bCheckAddress == TRUE)
  31. {
  32. if(bCheckReInit == TRUE) //ReInit
  33. {
  34. pHW_HW_FLASH_Task[ui8ReInit]->ui8StartPage = HW_FLASH_GetPageFromAddress(ui32StartAddr);
  35. pHW_HW_FLASH_Task[ui8ReInit]->ui8EndPage = HW_FLASH_GetPageFromAddress(ui32EndAddr);
  36. pHW_HW_FLASH_Task[ui8ReInit]->ui32StartAddress = HW_FLASH_GetStartAddressFromPage(pHW_HW_FLASH_Task[ui8ReInit]->ui8StartPage);
  37. pHW_HW_FLASH_Task[ui8ReInit]->ui32EndAddress = HW_FLASH_GetEndAddressFromPage(pHW_HW_FLASH_Task[ui8ReInit]->ui8EndPage);
  38. }
  39. else //bCheckReInit == FALSE: New init
  40. {
  41. /* Add task */
  42. pHW_HW_FLASH_Task = realloc(pHW_HW_FLASH_Task, ui8HW_FLASH_NumberOfTask * sizeof(HW_FLASH_Task));
  43. pHW_HW_FLASH_Task[ui8HW_FLASH_NumberOfTask] = (HW_FLASH_Task*)malloc(sizeof(HW_FLASH_Task));
  44.  
  45. pHW_HW_FLASH_Task[ui8HW_FLASH_NumberOfTask]->ui8Number = ui8HW_FLASH_NumberOfTask;
  46. pHW_HW_FLASH_Task[ui8HW_FLASH_NumberOfTask]->pcTaskName = pcTask;
  47. pHW_HW_FLASH_Task[ui8HW_FLASH_NumberOfTask]->ui8StartPage = HW_FLASH_GetPageFromAddress(ui32StartAddr);
  48. pHW_HW_FLASH_Task[ui8HW_FLASH_NumberOfTask]->ui8EndPage = HW_FLASH_GetPageFromAddress(ui32EndAddr);
  49. pHW_HW_FLASH_Task[ui8HW_FLASH_NumberOfTask]->ui32StartAddress = HW_FLASH_GetStartAddressFromPage(pHW_HW_FLASH_Task[ui8HW_FLASH_NumberOfTask]->ui8StartPage);
  50. pHW_HW_FLASH_Task[ui8HW_FLASH_NumberOfTask]->ui32EndAddress = HW_FLASH_GetEndAddressFromPage(pHW_HW_FLASH_Task[ui8HW_FLASH_NumberOfTask]->ui8EndPage);
  51.  
  52. ui8HW_FLASH_NumberOfTask++;
  53. }
  54. }
  55.  
  56. return bCheckAddress;
  57. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement