Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //HW.c
- HW_FLASH_Task** pHW_HW_FLASH_Task = NULL;
- uint8_t ui8HW_FLASH_NumberOfTask = 0;
- bool bHW_FLASH_Init(char* pcTask, uint32_t ui32StartAddr, uint32_t ui32EndAddr)
- {
- uint8_t ui8Count = 0;
- uint8_t ui8ReInit = ui8HW_FLASH_NumberOfTask;
- bool bCheckAddress = FALSE;
- bool bCheckReInit = FALSE;
- /* Check Address */
- if(HW_IS_FLASH_Data_Address(ui32StartAddr) && HW_IS_FLASH_Data_Address(ui32EndAddr) && (ui32StartAddr < ui32EndAddr))
- bCheckAddress = TRUE;
- else bCheckAddress = FALSE;
- /* Check ReInit */
- bCheckReInit = FALSE;
- for(ui8Count = 0; ui8Count < ui8HW_FLASH_NumberOfTask; ui8Count++)
- {
- if( (bHW_StringCompare(pcTask, pHW_HW_FLASH_Task[ui8Count]->pcTaskName) == TRUE) &&
- (pHW_HW_FLASH_Task[ui8Count]->ui8Number == ui8Count) )
- {
- bCheckReInit = TRUE;
- ui8ReInit = ui8Count;
- }
- }
- /* Init */
- if(bCheckAddress == TRUE)
- {
- if(bCheckReInit == TRUE) //ReInit
- {
- pHW_HW_FLASH_Task[ui8ReInit]->ui8StartPage = HW_FLASH_GetPageFromAddress(ui32StartAddr);
- pHW_HW_FLASH_Task[ui8ReInit]->ui8EndPage = HW_FLASH_GetPageFromAddress(ui32EndAddr);
- pHW_HW_FLASH_Task[ui8ReInit]->ui32StartAddress = HW_FLASH_GetStartAddressFromPage(pHW_HW_FLASH_Task[ui8ReInit]->ui8StartPage);
- pHW_HW_FLASH_Task[ui8ReInit]->ui32EndAddress = HW_FLASH_GetEndAddressFromPage(pHW_HW_FLASH_Task[ui8ReInit]->ui8EndPage);
- }
- else //bCheckReInit == FALSE: New init
- {
- /* Add task */
- pHW_HW_FLASH_Task = realloc(pHW_HW_FLASH_Task, ui8HW_FLASH_NumberOfTask * sizeof(HW_FLASH_Task));
- pHW_HW_FLASH_Task[ui8HW_FLASH_NumberOfTask] = (HW_FLASH_Task*)malloc(sizeof(HW_FLASH_Task));
- pHW_HW_FLASH_Task[ui8HW_FLASH_NumberOfTask]->ui8Number = ui8HW_FLASH_NumberOfTask;
- pHW_HW_FLASH_Task[ui8HW_FLASH_NumberOfTask]->pcTaskName = pcTask;
- pHW_HW_FLASH_Task[ui8HW_FLASH_NumberOfTask]->ui8StartPage = HW_FLASH_GetPageFromAddress(ui32StartAddr);
- pHW_HW_FLASH_Task[ui8HW_FLASH_NumberOfTask]->ui8EndPage = HW_FLASH_GetPageFromAddress(ui32EndAddr);
- pHW_HW_FLASH_Task[ui8HW_FLASH_NumberOfTask]->ui32StartAddress = HW_FLASH_GetStartAddressFromPage(pHW_HW_FLASH_Task[ui8HW_FLASH_NumberOfTask]->ui8StartPage);
- pHW_HW_FLASH_Task[ui8HW_FLASH_NumberOfTask]->ui32EndAddress = HW_FLASH_GetEndAddressFromPage(pHW_HW_FLASH_Task[ui8HW_FLASH_NumberOfTask]->ui8EndPage);
- ui8HW_FLASH_NumberOfTask++;
- }
- }
- return bCheckAddress;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement