STM32F030 ADC Handler CMSIS

Кто любит RISC в жизни, заходим, не стесняемся.
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: STM32F030 ADC Handler CMSIS

Сообщение VladislavS »

[uquote="BlackKilkennyCat",url="/forum/viewtopic.php?p=3954915#p3954915"]стандартным вызовом. Разве это запрещено?[/uquote]С дуру и хрен сломать можно.

Добавлено after 1 minute 50 seconds:
[uquote="КРАМ",url="/forum/viewtopic.php?p=3954920#p3954920"]Вообще то я пользуюсь практикой SPL, не прибегая к ней самой. Там все выглядит именно так - проверка разрешения && проверка флага - сброс флага - обработчик.[/uquote]Куда полезней своей головой пользоваться.
Реклама
jcxz
Мудрый кот
Сообщения: 1726
Зарегистрирован: Вт авг 15, 2017 10:51:13

Re: STM32F030 ADC Handler CMSIS

Сообщение jcxz »

[uquote="КРАМ",url="/forum/viewtopic.php?p=3954917#p3954917"]Что не так?[/uquote]Имха - неопределённый порядок чтения volatile-регистров.
Хотя возможно тут зависит от компилятора.... :dont_know:
Реклама
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: STM32F030 ADC Handler CMSIS

Сообщение VladislavS »

jcxz, вы абсолютно правы. Правая часть && не будет выполнена, если левая false. Это значит чтения из ADC1->ISR не произойдёт. А такое чтение, для некоторых периферийных устройств может менять состояние флагов.

Код: Выделить всё

//void ADC_IRQHandler (void) 
//{
//  if ((ADC1->IER & ADC_IER_ADRDYIE) && (ADC1->ISR & ADC_ISR_ADRDY)) 
        MOV      R0,#+1342177280
        LDR      R1,[R0, #+4]
        LSLS     R2,R1,#+31
        BPL.N    ??ADC_IRQHandler_0
        LDR      R1,[R0, #+0]
        LSLS     R2,R1,#+31
        ITT      MI 
//    ADC1->ISR = ADC_ISR_ADRDY;
        MOVMI    R1,#+1
        STRMI    R1,[R0, #+0]
//}
??ADC_IRQHandler_0:
        BX       LR               ;; return
jcxz
Мудрый кот
Сообщения: 1726
Зарегистрирован: Вт авг 15, 2017 10:51:13

Re: STM32F030 ADC Handler CMSIS

Сообщение jcxz »

[uquote="VladislavS",url="/forum/viewtopic.php?p=3954932#p3954932"]Правая часть && не будет выполнена, если левая false. Это значит чтения из ADC1->ISR не произойдёт. А такое чтение, для некоторых периферийных устройств может менять состояние флагов.[/uquote]
Я о чём и говорю. Поэтому думаю - или у ТС в свойствах проекта выставлено подавление варнингов, или он просто не обращает внимания на них при компиляции или регистры определены неверно (без volatile) или ...?
Реклама
Эиком - электронные компоненты и радиодетали
BlackKilkennyCat
Собутыльник Кота
Сообщения: 2905
Зарегистрирован: Ср ноя 29, 2017 06:58:50

Re: STM32F030 ADC Handler CMSIS

Сообщение BlackKilkennyCat »

А разве на это выдаются предупреждение? Возможное невыполнение части условия - стандартное поведение, о котором просто надо помнить.
Реклама
jcxz
Мудрый кот
Сообщения: 1726
Зарегистрирован: Вт авг 15, 2017 10:51:13

Re: STM32F030 ADC Handler CMSIS

Сообщение jcxz »

[uquote="BlackKilkennyCat",url="/forum/viewtopic.php?p=3954954#p3954954"]А разве на это выдаются предупреждение? Возможное невыполнение части условия - стандартное поведение, о котором просто надо помнить.[/uquote]Лучше в начале ISR прочитать регистр флагов прерываний в локальную переменную и работать уже ней.
Да и не нужно многократно читать эти флаги (если обрабатывается несколько разными ветками алгоритма).
Реклама
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: STM32F030 ADC Handler CMSIS

Сообщение VladislavS »

[uquote="jcxz",url="/forum/viewtopic.php?p=3954938#p3954938"]Поэтому думаю - или у ТС в свойствах проекта выставлено подавление варнингов, или он просто не обращает внимания на них при компиляции или регистры определены неверно (без volatile) или ...?[/uquote]Не, всё у него верно определено. Описания регистров из CMSIS взяты. Компиляторы действительно молчат.
Ответить

Вернуться в «ARM»