HAL and concurrency.
I am wondering if HAL functions have some builtin protection mechanism or if I have to wrap them around a semaphore/mutex take/give.
For example, if two tasks call `HAL_ADC_Start(&hadc1);` or `HAL_UART_Receive_IT`, what will happen? Shall I use a semaphore/mutex at OS level?
