sinusoidal bldc LUT synchronization
You're on the right track. It looks like your PWM is implemented correctly. I do recommend writing an SVM PWM modulation routine, as you will need it down the line. You should also try and get your motor to spin open loop using either sinusoidal PWM or SVM PWM. It should spin smoothly without drawing a significant amount of current. 

With respect to your hall sensor, you have a few problems to sort out. If you're using the low-res 3 phase type of encoder, you'll have to figure out a way to interpolate it based on your estimated motor RPM to get a continuous angle. This probably won't work terribly well at slow speeds. 

Once you have a continuous rotor angle estimation, you'll likely have some nonzero offset angle between your true electrical/rotor angle and the angle you're pulling from your encoder. If this offset is large, your motor will spin inefficiently. If it's too large, it won't spin at all. You're going to need to figure out some way of taking this offset out. 

Finally, the simplest way to put these components together is with inverse park + inverse clarke (i.e. SVM PWM...) transforms. If you have a PMBLDC motor, set your D term to 0, set your Q term to some fixed value, and use your encoder angle for theta. This is essentially the same as running a brushed dc motor with a fixed supply voltage; if you have the correct relationship between your encoder angle and your rotor angle, your motor will spin.