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

 
 
> IAR 5.10A, уплотнение структуры
nameless
сообщение Mar 11 2008, 09:38
Сообщение #1


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

Группа: Свой
Сообщений: 174
Регистрация: 9-07-04
Пользователь №: 305



делаю так:

/*defines.h*/
typedef union
{unsigned long DPT_all;
struct
{
unsigned char A8 :8;
unsigned int A3 :3;
unsigned int B8 :8;
unsigned int B3 :3;
unsigned int D :8;

}part;
}dpt_word;

/*main.c/*

dpt_word DPT_word;

DPT_word.DPT_all=0;
DPT_word.part.A8 = 255;
DPT_word.part.A3 = 0;
DPT_word.part.B8 = 255;
DPT_word.part.B3 = 0;
DPT_word.part.D = 255;

***

и в симуляторе смотрю DPT_all

вижу 0b11111111 00000111 11111000 11111111


танцы вокруг char и int привели пока только к тому, что первое трехбитное слово все-таки склеилось с соседними 8-битныими. Посоветуйте - как досклеить структуру.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
KRS
сообщение Mar 11 2008, 09:59
Сообщение #2


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



У меня 5.11 такая конструкция
Код
#include <stdint.h>
typedef union {
    uint32_t DPT_all;
    struct {
        uint32_t A8 :8;
        uint32_t A3 :3;
        uint32_t B8 :8;
        uint32_t B3 :3;
        uint32_t D :8;
    }part;
}dpt_word;

static dpt_word DPT_word;
uint32_t foo(void)
{
    DPT_word.DPT_all=0;
    DPT_word.part.A8 = 255;
    DPT_word.part.A3 = 0;
    DPT_word.part.B8 = 255;
    DPT_word.part.B3 = 0;
    DPT_word.part.D = 255;
    return DPT_word.DPT_all;
}

volatile dpt_word DPT_word1;
uint32_t foo1(void)
{
    DPT_word1.DPT_all=0;
    DPT_word1.part.A8 = 255;
    DPT_word1.part.A3 = 0;
    DPT_word1.part.B8 = 255;
    DPT_word1.part.B3 = 0;
    DPT_word1.part.D = 255;
    return DPT_word1.DPT_all;
}

компилится верно в первом случае компилер все выкидывает и возвращает коснтанту 0x3fc7f8ff
с volatile весь код есть и он правильный.
Go to the top of the page
 
+Quote Post



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

 


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


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