Das ist doch wieder nicht der komplette code, oder? Wie soll man da wirklich helfen, wenn da immer irgendwo was fehlt.
Hast du das selbst programmiert? Oder hast du das von irgendwo hergenommen? Müsste das funktionieren, falls du es übernommen hast, oder ist es eher was experimentelles?
Was mir aufgefallen ist, ist, dass in der uart_init zwar der TXComplete-Interrupt aktiviert wird, aber da gibts keine ISR dazu und der wird ja dann ausgelöst, wenn was gesendet wurde. Und wenns dann keine ISR dazu gibt, gibts Probleme. Wahrscheinlich ist es das. Es sei denn das findet sich in einem anderen code-Teil...