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

 
 
> Как лучше описать регистры, оставить как есть в uint32_t или в битовых полях
toweroff
сообщение Aug 8 2014, 21:43
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Доброго времени

Есть у меня некий хидер для LPC177x
Там описан volatile регистр, к примеру IOCON, потом регистр пина, к которым доступ примерно такой - LPC_IOCON->P0_0 = xxx;
Я тут устал считать биты, описал в виде полей типы вот так:
Код
typedef struct
{
    union
    {
        __IO uint32_t D_IOCON;
        struct
        {
            __IO uint32_t FUNC        : 3;
            __IO uint32_t MODE        : 2;
            __IO uint32_t HYS        : 1;
            __IO uint32_t INV        : 1;
                 uint32_t RESERVED0    : 2;
            __IO uint32_t SLEW        : 1;
            __IO uint32_t OD        : 1;
                 uint32_t RESERVED1    : 21;
        };
    };
} LPC_PIN_TypeD_TypeDef;


но, разумеется, из-за vilatile код генерится в два этапа:
Код
;;;75         LPC_IOCON->P2_24.FUNC = 0; // GPIO pin
00000c  4921              LDR      r1,|L1.148|
00000e  f8d12160          LDR      r2,[r1,#0x160]
000012  f0220207          BIC      r2,r2,#7
000016  f8c12160          STR      r2,[r1,#0x160]
;;;76         LPC_IOCON->P2_24.MODE = 2; // Pullup enabled
00001a  f8d12160          LDR      r2,[r1,#0x160]
00001e  f0220218          BIC      r2,r2,#0x18
000022  3210              ADDS     r2,r2,#0x10
000024  f8c12160          STR      r2,[r1,#0x160]


как можно заставить компилятор генерить код в один этап?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- toweroff   Как лучше описать регистры   Aug 8 2014, 21:43
- - AHTOXA   1. Убрать volatile (__IO) из структуры, добавить в...   Aug 8 2014, 22:38
|- - toweroff   Цитата(AHTOXA @ Aug 9 2014, 02:38) 1. Убр...   Aug 9 2014, 09:53
|- - AHTOXA   Цитата(toweroff @ Aug 9 2014, 15:53) 1. Н...   Aug 9 2014, 18:21
- - ViKo   А чем хуже, например, такой способ инициализации? ...   Aug 9 2014, 09:59
|- - Сергей Борщ   Цитата(ViKo @ Aug 9 2014, 12:59) А чем ху...   Aug 10 2014, 15:07
|- - ViKo   Цитата(Сергей Борщ @ Aug 10 2014, 18:07) ...   Aug 10 2014, 15:20
|- - AlexandrY   Цитата(ViKo @ Aug 10 2014, 18:20) А я не ...   Aug 10 2014, 18:43
|- - AHTOXA   Цитата(AlexandrY @ Aug 11 2014, 00:43) Мо...   Aug 11 2014, 06:57
|- - ViKo   Цитата(AHTOXA @ Aug 11 2014, 09:57) Вариа...   Aug 11 2014, 07:22
||- - AHTOXA   Цитата(ViKo @ Aug 11 2014, 13:22) Зачем? ...   Aug 11 2014, 07:30
|- - AlexandrY   Цитата(AHTOXA @ Aug 11 2014, 09:57) А есл...   Aug 11 2014, 10:43
|- - AHTOXA   Цитата(AlexandrY @ Aug 11 2014, 16:43) В ...   Aug 11 2014, 11:59
|- - AlexandrY   Цитата(AHTOXA @ Aug 11 2014, 14:59) Вот п...   Aug 11 2014, 12:40
|- - AHTOXA   Цитата(AlexandrY @ Aug 11 2014, 18:40) Пр...   Aug 11 2014, 14:50
|- - AlexandrY   Цитата(AHTOXA @ Aug 11 2014, 17:50) Наско...   Aug 11 2014, 17:22
|- - AHTOXA   Цитата(AlexandrY @ Aug 11 2014, 23:22) Ма...   Aug 11 2014, 18:24
|- - AlexandrY   Цитата(AHTOXA @ Aug 11 2014, 21:24) В ваш...   Aug 11 2014, 19:03
|- - AHTOXA   Цитата(AlexandrY @ Aug 12 2014, 01:03) Да...   Aug 11 2014, 21:54
|- - menzoda   Цитата(AHTOXA @ Aug 12 2014, 01:54) Пишем...   Aug 12 2014, 12:44
|- - AlexandrY   Цитата(AHTOXA @ Aug 12 2014, 00:54) Во-пе...   Aug 12 2014, 13:48
- - toweroff   Спасибо всем С volatile действительно нужно быть ...   Aug 10 2014, 19:59
- - ViKo   Преимущество умножения в том, что для группы битов...   Aug 11 2014, 05:09
- - ViKo   У меня вообще нет сдвигов. Я пользуюсь битовыми ма...   Aug 11 2014, 07:49
- - ViKo   Для menzoda - мне ваш первый пример логичнее, поня...   Aug 12 2014, 13:24
- - AHTOXA   Цитата(menzoda @ Aug 12 2014, 18:44) Вот ...   Aug 12 2014, 14:20
|- - menzoda   Цитата(AHTOXA @ Aug 12 2014, 18:20) Это б...   Aug 12 2014, 14:57
|- - Herz   Цитата(menzoda @ Aug 12 2014, 17:57) (изв...   Aug 12 2014, 20:20
|- - menzoda   ЦитатаПо вашему примеру кода я сразу понял, что сл...   Aug 14 2014, 07:19
|- - adnega   Цитата(menzoda @ Aug 14 2014, 11:19) Спас...   Aug 14 2014, 07:30
- - AHTOXA   Цитата(menzoda @ Aug 12 2014, 20:57) Там ...   Aug 12 2014, 20:57
- - ViKo   Я показал лучшее решение в сообщении #4, но ...   Aug 14 2014, 07:37
- - dxp   QUOTE (ViKo @ Aug 14 2014, 14:37) Я показ...   Aug 15 2014, 05:58
- - ViKo   Цитата(dxp @ Aug 15 2014, 08:58) Чем это ...   Aug 15 2014, 22:05
- - demiurg_spb   Поддержу в этом споре Антоху. Есть системный подхо...   Aug 16 2014, 12:49


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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 16:00
Рейтинг@Mail.ru


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