if the hard fault occurs within HD44780_PowerUpInit(); then it's pretty difficult to guess.
If the hard fault occurs when you call HD44780_PowerUpInit(); then check the address of HD44780_PowerUpInit either by looking at the assembler listing or by casting it to a u32 and outputting. You could also check the map file. Check if this address is within a valid region of memory.