Неблокирующие задержки против задержек блокировки - PullRequest
0 голосов
/ 09 октября 2018

В настоящее время я делаю некоторые дополнения к коду для микроконтроллера STM32F3, который я не написал.Часть того, что будет делать продукт, это мигать светодиодами с частотой 1 Гц во время тестирования, пока MCU не определит, пройден ли тест или нет.

Предыдущий разработчик этого кода реализовал две задержки;один для цикла, основанного на тактовой частоте, другой от прерывания по таймеру.Первая задержка вызывается следующим образом:

MsDelay(1000); //Provides approx a one second delay via a for loop 

Другая такая:

Wait(x,y); //x indicates the timer channel, y is delay in milliseconds

Функция "wait (x, y)" проходит проверку тактов и некоторое увеличение для реализации.эта задержка.

Проблема в том, что у меня мигает светодиод, о котором я говорил ранее.Чтобы проверить эту функцию, в ISR для теста я вызываю

Set_Led(1,1); //Turns LED1 ON
Wait(1,1000); //Wait one second 
Set_Led(2,1); //Turns LED2 ON

Однако между включением светодиодов не возникает ни одной задержки.Однако, если я позвоню,

Set_Led(1,1); //Turns LED1 ON
MsDelay(1000); //Wait one second 
Set_Led(2,1); //Turns LED2 ON

Будет задержка в одну секунду.Я не очень хорошо знаком с различиями блокирования и неблокирующих задержек, кроме того, что блокировка отнимает всю вычислительную мощность у других периферийных устройств.Не должна ли быть пауза между светодиодами, поворачивающимися при использовании неблокирующей задержки?Благодарю вас.

...