Страница 49 из 446

Re: STM32 новичку в ARM что к чему

Добавлено: Пн авг 05, 2013 14:55:40
dosikus
Задержка жесть... :)))

Re: STM32 новичку в ARM что к чему

Добавлено: Пн авг 05, 2013 15:30:09
HHIMERA
Myp3ik писал(а):Сгорает :kill:
И сколько STM32 уже сгорело??? :)

Re: STM32 новичку в ARM что к чему

Добавлено: Пн авг 05, 2013 16:20:04
zöner
int j=0,i=0;
для уверенности можно добавить volatile
значит особых мер, в сравнении с теми же AVR по защите от статики предпринимать не нужно.
ошибаетесь
У STM32 ограничение тока короткого замыкания на выходах есть? Или сгорает?
у выходных транзисторов сопротивление канала ненулевое (особенно при настройке на малую скорость), но резистор на 50..100 Ом добавить не помешает (если ведете сигналы наружу платы - типа RS232, SWD, LCD и т.д.)

Re: STM32 новичку в ARM что к чему

Добавлено: Пн авг 05, 2013 16:33:32
Darth Cuauhtemoc
zöner писал(а):ошибаетесь
Неужели придется землить все - стол, себя, паяльную станцию? :)
Вопрос то интересует в том плане, могу я обращаться с ними так, как обращался с AVR (в смысле пайки)?

Re: STM32 новичку в ARM что к чему

Добавлено: Пн авг 05, 2013 17:20:22
zöner
нет, не все так печально. У меня еще ничего не горело, ничего не заземляю и вообще над этим не задумываюсь.
Хотя видел людей у которых от статики дохли контроллеры только так, не знаю от чего зависит - сопротивления кожи, одежды и т.д.

Re: STM32 новичку в ARM что к чему

Добавлено: Пн авг 05, 2013 17:47:25
Darth Cuauhtemoc
У меня тоже никогда ни одна МОП-микросхема не горела от статики, и ни один МОП транзистор, хотя транзисторы, по крайней мере по даташитам (не знаю как в реальности) защитных стабилитронов затвор-исток не имели.

Re: STM32 новичку в ARM что к чему

Добавлено: Пн авг 05, 2013 19:46:01
Обфускатор
свежий взгляд на код выявил ошибку
нужно было

Код: Выделить всё

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);  
вместо

Код: Выделить всё

RCC_AHBPeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); 
из за этого тактирование портов не заводилось на физическом устройстве , хотя на симуляторе все бегало аж бегом :))

Re: STM32 новичку в ARM что к чему

Добавлено: Пн авг 05, 2013 20:00:45
Myp3ik
HHIMERA, в режиме выхода PWM пару раз порты палил.

Re: STM32 новичку в ARM что к чему

Добавлено: Ср авг 07, 2013 18:28:05
drakon
всем привет! расскажите какие в KEIL есть битовые переменные. я подключил хидер stdbool.h, в нем нашел такое #define bool _Bool, а где определение _Bool я не нашел. меня интересует сколько бит памяти занимает тип _Bool.
_Bool test = 1514634861836; //такая строка не вызывает у компилятора подозрений. пока в качестве переменных-флагов использую uint8_t, но, может, есть более подходящий для этого тип?

Re: STM32 новичку в ARM что к чему

Добавлено: Ср авг 07, 2013 19:11:48
uk8amk
drakon писал(а):расскажите какие в KEIL есть битовые переменные.
Из встроенной справки
__attribute__((bitband)) type attribute
ARM Compiler toolchain v5.02 for µVision Compiler Reference

Home > Compiler-specific Features > __attribute__((bitband)) type attribute

__attribute__((bitband)) type attribute
__attribute__((bitband)) is a type attribute that gives you efficient atomic access to single-bit values in SRAM and Peripheral regions of the memory architecture. It is possible to set or clear a single bit directly with a single memory access in certain memory regions, rather than having to use the traditional read, modify, write approach. It is also possible to read a single bit directly rather than having to use the traditional read then shift and mask operation. Example 10 illustrates the use of __attribute__((bitband)).

Example 10. Using __attribute__((bitband))

Код: Выделить всё

typedef struct {
  int i : 1;
  int j : 2;
  int k : 3;
} BB __attribute__((bitband));

BB bb __attribute__((at(0x20000004));

void foo(void)
{
  bb.i = 1;
}

Re: STM32 новичку в ARM что к чему

Добавлено: Ср авг 07, 2013 20:44:56
drakon
uk8amk, способ полезный, но не удобный. мне бы узнать про стандартный тип _Bool.

Re: STM32 новичку в ARM что к чему

Добавлено: Ср авг 07, 2013 21:15:10
Myp3ik
drakon, в одной uint8_t можно хранить 8 флагов. Для удобства создать битовые маски для каждого бита. Я делаю так:

Код: Выделить всё

#define BIT_FLAG1 ((uint8_t)0x01)
#define BIT_FLAG2 ((uint8_t)0x02)
#define BIT_FLAG3 ((uint8_t)0x04)

uint8_t FLAGS;

//утановка 0 бита
FLAGS |= BIT_FLAG1;

//сброс 1 бита
FLAGS &= ~BIT_FLAG2;

//проверка 2 бита
if (FLAGS & BIT_FLAG3) ..... ;

Re: STM32 новичку в ARM что к чему

Добавлено: Ср авг 07, 2013 22:02:53
oleg110592
может лучше по взрослому работать с битовыми переменными:
http://eugenemcu.ru/publ/13-1-0-77

Re: STM32 новичку в ARM что к чему

Добавлено: Ср авг 07, 2013 22:21:05
drakon
oleg110592, читал я это. неудобно и не какой кроссплатформенности. мне бы про _Bool узнать побольше.

Re: STM32 новичку в ARM что к чему

Добавлено: Ср авг 07, 2013 22:45:16
oleg110592
В стандарте C99 определён собственный тип логических данных _Bool.
Размер здесь:
http://www.keil.com/support/man/docs/ar ... bfcgfc.htm

Re: STM32 новичку в ARM что к чему

Добавлено: Ср авг 07, 2013 23:22:30
drakon
oleg110592, вот за это большее спасибо, сам найти не смог. а какой тогда толк с _Bool, если этот тип занимает как и char- 8bit?

Re: STM32 новичку в ARM что к чему

Добавлено: Чт авг 08, 2013 07:02:16
The_D
Мне всегда было интересно, неужели в современных МК выпускаемых ST настолько мало памяти что вам жалко под переменные(у вас их наверное пара сотен) отвести полноценные 4 байта. МК 32 разрядные? Ну так пусть и переменные будут uint32. А вам 8 бит под тип bool жалко.

typedef enum{
true = (uint32) 0xFFFFFFFF, false = (uint32) 0x00000000,
} TBool;

Ужассс правда? :))

Re: STM32 новичку в ARM что к чему

Добавлено: Чт авг 08, 2013 08:24:59
oleg110592
какой тогда толк с _Bool
Наверное удобно и наглядно когда функция возвращает bool значение:

Код: Выделить всё

bool Compare ( uint32_t A, uint32_t B )
{
        if(A == B) return true;
        return false;
}
.....
if ( Compare( 4 , 7 ) == false ) bla-bla
Для флагов, наверное лучше использовать структуры, не забыть про это:
http://we.easyelectronics.ru/STM32/atom ... ex-m3.html
выше уже советовали

Re: STM32 новичку в ARM что к чему

Добавлено: Чт авг 08, 2013 11:36:44
Neekeetos
oleg110592 писал(а): Наверное удобно и наглядно когда функция возвращает bool значение:
А мне кажется нету смысла усложнять, в си уже описан тип бул, он используется при сравнении и представляет собой обычный инт, если он равен нулю то false и если любое другое значение - true,
так что код по идее должен быть таким:

Код: Выделить всё

int Compare ( uint32_t A, uint32_t B )
{
        return (A == B);
}
.....
if ( Compare()  ) bla-bla

Re: STM32 новичку в ARM что к чему

Добавлено: Чт авг 08, 2013 12:17:40
oleg110592
это было так, для большей наглядности

Код: Выделить всё

if(A == B) bla-bla;