Этот ответ основывается на мнениях.
По моему опыту, всегда полезно использовать функции / определения для доступа к вашей ОС. Если вы используете CMSIS_OS или ваш собственный уровень не имеет большого значения, у вас больше работы, если вы используете свой собственный и особенно перенос и тестирование становится очень громоздким с более чем одной ОС.
CMSIS_OS связывает вас с системами Cortex-M, но, поскольку они реализуют то, что вы реализовали бы и на своем уровне, и вполне обычным способом, портировать с CMSIS_OS на ваш собственный уровень довольно просто. Это не так просто, если вы используете прямые вызовы конкретной ОС в своем коде напрямую, но это также возможно, если вы полагаетесь только на стандартные функции (взгляните на CMSIS_OS, которые являются общими функциями RTOS) и не используете специальные особенности вашей ОС.