|
Как лучше описать регистры, оставить как есть в uint32_t или в битовых полях |
|
|
|
Aug 8 2014, 21:43
|

Гуру
     
Группа: Свой
Сообщений: 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] как можно заставить компилятор генерить код в один этап?
|
|
|
|
|
 |
Ответов
|
Aug 12 2014, 14:20
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
Цитата(menzoda @ Aug 12 2014, 18:44)  Вот это точно бестолковое занятие. Это была гипербола, мне жаль, что вы не поняли. Цитата(menzoda @ Aug 12 2014, 18:44)  поэтому я делаю совсем просто: магическое число и комментарий о том, что там делается: Вы тоже начинали с PIC-ов? AlexandrY, поздравляю, ваш тонкий троллинг уже даёт всходы. Цитата(AlexandrY @ Aug 12 2014, 19:48)  Наша память ассоциативна. В этом смысле она бездонна. Эот вы ещё маловато программируете, всего 15 лет. Вот после 20 лет вы поймёте, что у нашей памяти есть дно  Цитата(AlexandrY @ Aug 12 2014, 19:48)  Лучше написать длинный коментарий но прямо радом с битом, чем обозвать бит мнемоникой у вместе с комментариями увести в хидер. Я так и не услышал от вас аргументов, чем этот подход лучше. И не услышу, по всей видимости. Свои аргументы, чем этот подход хуже, я уже привёл.
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Aug 12 2014, 14:57
|
Участник

Группа: Участник
Сообщений: 55
Регистрация: 13-09-12
Пользователь №: 73 530

|
Цитата(AHTOXA @ Aug 12 2014, 18:20)  Это была гипербола, мне жаль, что вы не поняли. Там же я процитировал и предыдущую твою фразу (извини, не люблю ВЫкать в интернетах), которая была не гиперболой. Странно, что ты ее не заметил, или только сделал вид? Кроме того я высказался не только и не сколько про абсурдное "переписать весь мануал", которое и так всем понятно, сколько про "копипастим коммент из мануала". Цитата(AHTOXA @ Aug 12 2014, 18:20)  Вы тоже начинали с PIC-ов?  Нет, с TMS32F28xx от Texas Instruments и LH75401 от тогда еще Phillips, если это имеет какое-то значение. С PIC приходится иметь дело всего в одном устройстве, и мне не особо нравятся эти моменты.
Сообщение отредактировал menzoda - Aug 12 2014, 15:01
|
|
|
|
|
Aug 14 2014, 07:19
|
Участник

Группа: Участник
Сообщений: 55
Регистрация: 13-09-12
Пользователь №: 73 530

|
Цитата По вашему примеру кода я сразу понял, что случай клинический, поэтому не стал на ваш пост реагировать всерьёз. Вы уж извините. Спасибо, доктор! Как же я раньше такой больной то ходил. Попытки принижения собеседника при отсутствии аргументов - это обязательный элемент твоей вашей стратегии спора? Это - риторический вопрос. Если уж притворяешся притворяетесь умным и вежливым человеком - так притворяйся притворяйтесь до конца.
Сообщение отредактировал menzoda - Aug 14 2014, 07:20
|
|
|
|
Сообщений в этой теме
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    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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|