Насколько я понял, переключение задач в порте для кортексов осуществляется вызовом программного прерывания.
То есть, чтобы остановить переключение задач, достаточно просто запретить все прерывания?
К примеру, в программе возникла аварийная ситуация, и потребовалось отобразить информацию на ЖКИ и остановить процессор:
1. LCD_Mutex.Lock(); - так как ЖКИ расшаренный ресурс, ждём его освобождения
2. __disable_irq(); - запрещаем прерывания
3. LCD.Print(); - выводим на дисплей, в процессе будет несколько раз выполняться LCD_Mutex.Unlock()
4. while (1); - остановка процессора.
Возможно ли переключение на другой процесс после вызова LCD_Mutex.Unlock() при запрещённых прерываниях?
ЗЫ:чёрт, посмотрел в исходниках ОС - переключение задач производится не зависимо от того, разрешены прерывания или нет.
Как же мне заставить систему не переключаться?
