Size: a a a

🎄Embedded Group

2021 January 21

P

Ponytale 🇷🇺 in 🎄Embedded Group
Георгий Торопов
ясно
enum state_t {STOPPED = 0, ONE_SHOT, ONE_SHOT_OVF, RUN, RUN_OVF};
static state_t state = STOPPED;

switch (state)
 {
   case STOPPED:
     state = ONE_SHOT;
   break;
   
   case ONE_SHOT:
     res = ICR5_now - ICR5_last;
     state = RUN;
   break;

   case ONE_SHOT_OVF:
     if(ICR5_now < ICR5_last)
     {
       res = ICR5_now - ICR5_last;
       state = RUN;
     }
     state = ONE_SHOT;
   break;

   case RUN:
     res = ICR5_now - ICR5_last;
   break;

   case RUN_OVF:
     if(ICR5_now < ICR5_last)
     {
       res = ICR5_now - ICR5_last;
       state = RUN;
     }
     state = ONE_SHOT;
   break;
 }

например
так можно
источник

Г

Георгий Торопов... in 🎄Embedded Group
До меня сейчас дошло, что я сам еще не понял чего хочу получить. Спасибо всем за советы!
источник

P

Ponytale 🇷🇺 in 🎄Embedded Group
Георгий Торопов
До меня сейчас дошло, что я сам еще не понял чего хочу получить. Спасибо всем за советы!
это нормально :)
источник

LZ

Leonid Zaliubovskii in 🎄Embedded Group
Георгий Торопов
Подскажите, хочу сделать инициализацию как-то так:
uint32_t str[2] = {(uint32_t)"QWER", (uint32_t)"1234"};
Но оно не работает. Можно как-то извратиться чтобы сделать такое?
Тебе нужно массив двусерный делать

Т.е. типа char array[2][] = {"text1", "trxt2"};
источник

LZ

Leonid Zaliubovskii in 🎄Embedded Group
Вторую размерность можно не указывать, компилятор сам посчитает
источник

LZ

Leonid Zaliubovskii in 🎄Embedded Group
Но советую указывать. Тогда меньше вероятность ошибки, когда напихать пытаешься больше чем нужно
источник

LZ

Leonid Zaliubovskii in 🎄Embedded Group
Ну и да. Почитай что такое си строки (нуль терминированые строки) и чем они от обычных отличаются
источник

Г

Георгий Торопов... in 🎄Embedded Group
да я решил не кривляться и определить константы для Case дефайнами
источник

LZ

Leonid Zaliubovskii in 🎄Embedded Group
Георгий Торопов
а как выравнивание по 4 байтам сделать?
Зачем тебе выравнивание здесь? Если этого требует процессор - то компилятор+линкер сделают сами.

Но если сильно хочется самому - ищи #pragma или align attribute gcc или armcc смотря какой у тебя компилятор
источник

LZ

Leonid Zaliubovskii in 🎄Embedded Group
Георгий Торопов
да я решил не кривляться и определить константы для Case дефайнами
А нужно не кривляться. А почитать книгу по си. Например керниган и ритчи.

Там есть ответы на все твои вопросы
источник

LZ

Leonid Zaliubovskii in 🎄Embedded Group
И почему свитч нерабтает как тебе хочется и все остальное
источник

Г

Георгий Торопов... in 🎄Embedded Group
#define SRNM (uint32_t)0x53514E4D
#define VERS (uint32_t)0x56455253
#define DEL0 (uint32_t)0x44454C30
буду получать байтики через uart и определять что за команда пришла
источник

LZ

Leonid Zaliubovskii in 🎄Embedded Group
Георгий Торопов
да я решил не кривляться и определить константы для Case дефайнами
Надеюсь не строками под дефайнами
источник

LZ

Leonid Zaliubovskii in 🎄Embedded Group
Ну можно и так. Но простите, это немножко через жопное отверстие
источник

Г

Георгий Торопов... in 🎄Embedded Group
Leonid Zaliubovskii
Ну можно и так. Но простите, это немножко через жопное отверстие
а как если по-уму?
источник

LZ

Leonid Zaliubovskii in 🎄Embedded Group
Георгий Торопов
#define SRNM (uint32_t)0x53514E4D
#define VERS (uint32_t)0x56455253
#define DEL0 (uint32_t)0x44454C30
буду получать байтики через uart и определять что за команда пришла
Почитай тогда ещё про endianes и порядок байт
источник

LZ

Leonid Zaliubovskii in 🎄Embedded Group
Чтобы сюрпризов не было
источник

Г

Георгий Торопов... in 🎄Embedded Group
Leonid Zaliubovskii
Почитай тогда ещё про endianes и порядок байт
ну это я в курсе что в принятой строке нужно байтики переставлять
источник

LZ

Leonid Zaliubovskii in 🎄Embedded Group
Георгий Торопов
ну это я в курсе что в принятой строке нужно байтики переставлять
Это радует. Это основная проблема здесь
источник

LZ

Leonid Zaliubovskii in 🎄Embedded Group
Просто по вопросам выходило что может и не в курсе
источник