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

 
 
> отладка в Keil
mihlit
сообщение Aug 18 2018, 10:22
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 34
Регистрация: 7-04-18
Пользователь №: 103 011



Код
GPIOD->BSRR |= GPIO_BSRR_BS2;            //Request -> 1
    Delay(1);
    GPIOD->BSRR |= GPIO_BSRR_BR2;            //Request -> 0
    
    while(!(GPIOD->IDR & GPIO_IDR_IDR3)) {}    //ждать Ready
    
        for(i=0; i<16; i++)
        {
            GPIOD->BSRR |= GPIO_BSRR_BS6;            //Read -> 1
            buf[i] = GPIO_ReadInputData(GPIOC);
            GPIOD->BSRR |= GPIO_BSRR_BR6;            //Read -> 0
        }
        
    while(1)
    {
        
    }

Когда программа запускается по сбросу, лог. анализатор показывает обмен сигналами между МК и внешним устройством.
Если я запускаю программу в отладчике, на строчке

while(!(GPIOD->IDR & GPIO_IDR_IDR3)) {} //ждать Ready
отладчик зависает. Объясните начинающему (стаж 4,5 мес), почему так происходит?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Professor Chaos
сообщение Sep 2 2018, 05:51
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 60
Регистрация: 25-08-17
Пользователь №: 98 970



Цитата(mihlit @ Sep 2 2018, 05:30) *
1. На просторах Интернета много раз встречал высказывания, что "магическое" число - это не есть хорошо.

Так и есть. Лучше давать таким константам осмысленные имена. Так и читается легче и вносить изменения в код проще.
Цитата
2. ИМХО, работа через регистры более компактна и нагляднее чем применение библиотек.

Компактна - да, возможно, в некоторых случаях. Но далеко не всегда и не везде. Что компактней: в некотором регистре установить какой-то бит в 1 (сбросить бит в 0) или вызвать функцию с 2-3 параметрами? В обоих случаях это будет одна строка кода.
Наглядна - нет. Если бы библиотеки делали код менее наглядным их бы не писали в принципе. А библиотеки как раз и пишутся для повышения наглядности. Они повышают уровень абстракции. Работая с регистрами вам надо знать не только "что делать", но и "как это делать" - какие битовые поля в каких регистрах в какие значения установить. Работая с библиотекой надо знать лишь "что делать". Вопрос "как это сделать" библиотечная функция взяла на себя. Она сама внутри своего тела оперирует регистрами, битами, их позициями в регистрах, сдвигами и масками битовых полей. Снаружи ничего этого не видно и знать не нужно.
Цитата
3. Из п 2. вытекает(для меня), что написание своих макросов и дефайнов не сокращает время долбания клавиатуры и не повышает читаемость кода.

Не сокращает и не повышает.
Но если надо сделать что-то, чего не умеют библиотечные функции, либо сделать то, что могут и они, но как-то по-другому - то для этого пишутся свои функции. Специализированные, под конкретные задачи.

Цитата(x893 @ Sep 2 2018, 08:17) *
Это очень просто

Точно, вспомнил - из-за точки с запятой.
Просто компилятор Кейла допускает конструкцию типа { }; и не ругаются на неё, связывая идущий после этого else с последним if. Так что забыл про этот неприятный момент, хотя и читал про это ранее (забыл уже где).
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- mihlit   отладка в Keil   Aug 18 2018, 10:22
- - Obam   IDR, который для GPIOD, часом не мониторится в око...   Aug 18 2018, 14:19
|- - Arlleex   Цитата(Obam @ Aug 18 2018, 17:19) IDR, ко...   Aug 18 2018, 16:13
- - x893   В IDR при чтении нисего не сбрасывается. Для GPIOD...   Aug 18 2018, 16:14
- - mihlit   "Поэтому с большой долей вероятности обмен Ва...   Aug 19 2018, 01:48
|- - Arlleex   Цитата(mihlit @ Aug 19 2018, 04:48) Дейст...   Aug 19 2018, 07:25
- - mihlit   ЦитатаМожете. Для этого Вам необходимо пересмотрет...   Aug 19 2018, 10:06
|- - Arlleex   Цитата(mihlit @ Aug 19 2018, 13:06) Я при...   Aug 19 2018, 10:50
- - mihlit   Дважды смотрел вкладку, но искал установленные пти...   Aug 19 2018, 11:22
- - mihlit   Чтобы не плодить тем, спрошу здесь, кто-нибудь под...   Sep 1 2018, 10:07
|- - Arlleex   Цитата(mihlit @ Sep 1 2018, 14:07) Чтобы ...   Sep 1 2018, 12:08
- - mihlit   Смотрел я GPIO_PinAFConfig, но по своей неопытност...   Sep 1 2018, 12:20
|- - Arlleex   Цитата(mihlit @ Sep 1 2018, 15:20) Смотре...   Sep 1 2018, 13:38
- - mihlit   КодGPIOA->AFRH = 0x50000000; Ассистент после -...   Sep 1 2018, 15:19
- - Professor Chaos   Цитата(mihlit @ Sep 1 2018, 13:07) Записа...   Sep 1 2018, 18:04
|- - Сергей Борщ   QUOTE (Professor Chaos @ Sep 1 2018, 21:0...   Sep 1 2018, 18:34
- - mihlit   Объяснюсь по поводу своего вопроса. 1. На простора...   Sep 2 2018, 02:30
- - mihlit   Задам еще вопрос по Keil. У меня версия 5.23 (32Кб...   Sep 2 2018, 05:05
- - Professor Chaos   Цитата(Сергей Борщ @ Sep 1 2018, 21:34) Ч...   Sep 2 2018, 05:06
|- - Сергей Борщ   QUOTE (Professor Chaos @ Sep 2 2018, 08:0...   Sep 2 2018, 06:07
- - x893   Это очень просто https://www.google.ru/search?q=за...   Sep 2 2018, 05:17
- - mihlit   ЦитатаРаботая с регистрами вам надо знать не тольк...   Sep 2 2018, 06:02
- - Arlleex   Цитата(Сергей Борщ @ Sep 1 2018, 21:34) К...   Sep 2 2018, 08:02
- - Professor Chaos   Цитата(Сергей Борщ @ Sep 2 2018, 09:07) Н...   Sep 2 2018, 08:17
- - mihlit   ЦитатаНужно больше информации. Скрин экрана, напри...   Sep 2 2018, 08:25
|- - Arlleex   Цитата(mihlit @ Sep 2 2018, 11:25) Дык в ...   Sep 2 2018, 08:54
- - mihlit   ЦитатаInclude paths прописаны в закладке C/C++ про...   Sep 2 2018, 09:06
- - Professor Chaos   С макросом оказалось всё немного сложнее. При введ...   Sep 2 2018, 12:48
|- - jcxz   Цитата(Professor Chaos @ Sep 2 2018, 15:4...   Sep 2 2018, 14:20
- - Professor Chaos   Цитата(jcxz @ Sep 2 2018, 17:20) Пользуйт...   Sep 2 2018, 16:01
- - mihlit   Задал вопрос в отдельной ветке - молчок. Буду спра...   Sep 8 2018, 04:21
- - mihlit   Извиняйте за компанию   Sep 8 2018, 07:21


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

 


RSS Текстовая версия Сейчас: 27th August 2025 - 08:32
Рейтинг@Mail.ru


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