И сколько STM32 уже сгорело???Myp3ik писал(а):Сгорает![]()
STM32 новичку в ARM что к чему
- Сообщения: 3604
- Зарегистрирован: Пн июл 28, 2008 22:12:01
- Реклама
"Я не даю готовых решений, я заставляю думать!"(С)
- Сообщения: 502
- Зарегистрирован: Чт фев 16, 2012 19:00:11
для уверенности можно добавить volatileint j=0,i=0;
ошибаетесьзначит особых мер, в сравнении с теми же AVR по защите от статики предпринимать не нужно.
у выходных транзисторов сопротивление канала ненулевое (особенно при настройке на малую скорость), но резистор на 50..100 Ом добавить не помешает (если ведете сигналы наружу платы - типа RS232, SWD, LCD и т.д.)У STM32 ограничение тока короткого замыкания на выходах есть? Или сгорает?
- Сообщения: 1699
- Зарегистрирован: Вс июн 16, 2013 18:41:45
Неужели придется землить все - стол, себя, паяльную станцию?zöner писал(а):ошибаетесь
Вопрос то интересует в том плане, могу я обращаться с ними так, как обращался с AVR (в смысле пайки)?
У кошки четыре ноги - вход, выход, земля и питание. Но трогать ее не моги - получится замыкание.
- Сообщения: 502
- Зарегистрирован: Чт фев 16, 2012 19:00:11
нет, не все так печально. У меня еще ничего не горело, ничего не заземляю и вообще над этим не задумываюсь.
Хотя видел людей у которых от статики дохли контроллеры только так, не знаю от чего зависит - сопротивления кожи, одежды и т.д.
Хотя видел людей у которых от статики дохли контроллеры только так, не знаю от чего зависит - сопротивления кожи, одежды и т.д.
- Реклама
- Сообщения: 1699
- Зарегистрирован: Вс июн 16, 2013 18:41:45
У меня тоже никогда ни одна МОП-микросхема не горела от статики, и ни один МОП транзистор, хотя транзисторы, по крайней мере по даташитам (не знаю как в реальности) защитных стабилитронов затвор-исток не имели.
У кошки четыре ноги - вход, выход, земля и питание. Но трогать ее не моги - получится замыкание.
- Сообщения: 13
- Зарегистрирован: Пн апр 29, 2013 22:05:08
свежий взгляд на код выявил ошибку
нужно было
вместо
из за этого тактирование портов не заводилось на физическом устройстве , хотя на симуляторе все бегало аж бегом 
нужно было
Код: Выделить всё
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); Код: Выделить всё
RCC_AHBPeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); HHIMERA, в режиме выхода PWM пару раз порты палил.
Иван Сусанин - первый полупроводник 
всем привет! расскажите какие в KEIL есть битовые переменные. я подключил хидер stdbool.h, в нем нашел такое #define bool _Bool, а где определение _Bool я не нашел. меня интересует сколько бит памяти занимает тип _Bool.
_Bool test = 1514634861836; //такая строка не вызывает у компилятора подозрений. пока в качестве переменных-флагов использую uint8_t, но, может, есть более подходящий для этого тип?
_Bool test = 1514634861836; //такая строка не вызывает у компилятора подозрений. пока в качестве переменных-флагов использую uint8_t, но, может, есть более подходящий для этого тип?
Из встроенной справки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;
}uk8amk, способ полезный, но не удобный. мне бы узнать про стандартный тип _Bool.
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) ..... ;
Иван Сусанин - первый полупроводник 
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
может лучше по взрослому работать с битовыми переменными:
http://eugenemcu.ru/publ/13-1-0-77
http://eugenemcu.ru/publ/13-1-0-77
oleg110592, читал я это. неудобно и не какой кроссплатформенности. мне бы про _Bool узнать побольше.
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
В стандарте C99 определён собственный тип логических данных _Bool.
Размер здесь:
http://www.keil.com/support/man/docs/ar ... bfcgfc.htm
Размер здесь:
http://www.keil.com/support/man/docs/ar ... bfcgfc.htm
oleg110592, вот за это большее спасибо, сам найти не смог. а какой тогда толк с _Bool, если этот тип занимает как и char- 8bit?
Мне всегда было интересно, неужели в современных МК выпускаемых ST настолько мало памяти что вам жалко под переменные(у вас их наверное пара сотен) отвести полноценные 4 байта. МК 32 разрядные? Ну так пусть и переменные будут uint32. А вам 8 бит под тип bool жалко.
typedef enum{
true = (uint32) 0xFFFFFFFF, false = (uint32) 0x00000000,
} TBool;
Ужассс правда?
typedef enum{
true = (uint32) 0xFFFFFFFF, false = (uint32) 0x00000000,
} TBool;
Ужассс правда?
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
какой тогда толк с _Bool
Наверное удобно и наглядно когда функция возвращает bool значение:
Для флагов, наверное лучше использовать структуры, не забыть про это:
http://we.easyelectronics.ru/STM32/atom ... ex-m3.html
выше уже советовали
Наверное удобно и наглядно когда функция возвращает 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
выше уже советовали
Последний раз редактировалось oleg110592 Чт авг 08, 2013 12:20:58, всего редактировалось 2 раза.
А мне кажется нету смысла усложнять, в си уже описан тип бул, он используется при сравнении и представляет собой обычный инт, если он равен нулю то false и если любое другое значение - true,oleg110592 писал(а): Наверное удобно и наглядно когда функция возвращает bool значение:
так что код по идее должен быть таким:
Код: Выделить всё
int Compare ( uint32_t A, uint32_t B )
{
return (A == B);
}
.....
if ( Compare() ) bla-blaИнформация по RLC mini находится >тут<
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
это было так, для большей наглядности
Код: Выделить всё
if(A == B) bla-bla;


