Create the tuner task
Add the prototype of semaphore
Modify the argument definition semaphore's prototype function
Create new task block status for semaphore
Try to implement signal and wait function
Merge branch 'semaphore' of https://github.com/rtenv-plus-stm32f4/rtenv-plus-stm32f4
Rearrange the header file
Merge branch 'semaphore' of https://github.com/rtenv-plus-stm32f4/final-project into metronome
Merge branch 'UI' of https://github.com/rtenv-plus-stm32f4/final-project into metronome
Merge branch 'tuner' of https://github.com/rtenv-plus-stm32f4/final-project into metronome
Use semaphore to switch the task
Add the user button initialization function
Create the button task
Create new make target "gdbauto"
Add the semaphore event into the event monitor
Merge branch 'semaphore' of https://github.com/rtenv-plus-stm32f4/rtenv-plus-stm32f4 into metronome
Merge branch 'UI' of https://github.com/rtenv-plus-stm32f4/final-project into metronome
Save the semaphore which blocked the task and create the unlock mechanism
Modify the rule of semaphore operation
Set the semaphore_t typedef to be unsigned