реклама на сайте
подробности

 
 
> Проблема снятия флага, Различные проявления при варьировании уровнем оптимизации
proga
сообщение Mar 21 2013, 11:32
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 86
Регистрация: 17-01-06
Из: иркутск
Пользователь №: 13 278



Здравствуйте. Я разрабатываю программу на базе микроконтроллера STM32F417. У меня возникла проблема следующего характера. В одной части своей программы мне необходимо запретить DMA исполнение. Делаю я это стандартным способом

Код
    
        DMA_Cmd(DMA1_Stream5, DISABLE);
    while(DMA1_Stream5->CR & DMA_SxCR_EN);

Однако программа в цикле застревает навечно. Если же я в отладчике пошагово исполняю этот кусок кода, то без проблем прохожу цикл.
Если же я изменяю уровень оптимизации с O3 на O1, то программа начивает застревать раньше в подобном же блоке
Код
    DMA_Cmd(DMA2_Stream0, DISABLE);
    while(DMA2_Stream0->CR & DMA_SxCR_EN);

, который раннее при оптимизации O3 программа проходила без проблем. Прошу помощи в разрешении данной проблемы.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Golikov A.
сообщение Mar 21 2013, 13:07
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



не излишество, а определенность, и помогли вам другие скобки.
while((DMA1_Stream5->CR & DMA_SxCR_EN) !=0);
равносильно
while((DMA1_Stream5->CR & DMA_SxCR_EN));
но не равносильно
while(DMA1_Stream5->CR & DMA_SxCR_EN);
в кейле несколько раз на это нарывался, не совсем корректная работа компилятора, иногда можно объяснить приоритетом действий иногда нет, но за правило для себя принял запись
while((DMA1_Stream5->CR & DMA_SxCR_EN) !=0);
так нагляднее и надежнее работает!
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Mar 21 2013, 14:41
Сообщение #3


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Да ну!
Это же конкретная бага в компиляторе!
Какая версия компилятора так себя ведёт, кстати?


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 03:39
Рейтинг@Mail.ru


Страница сгенерированна за 0.0135 секунд с 7
ELECTRONIX ©2004-2016