Yes, you should leave out the bx lr, because the compiler automatically adds code to clean up the stack frame and the variables and return to the caller after the last instruction. It is recommended not to return yourself, otherwise you might loose stack memory.