В данном случае я согласен с Пашей. Объявлять переменные в хидере - моветон. Шо это за лютый проект такой, где надо вагон переменных таскать в несколько файлов и экстерны не спасают? Как же ж абстрагирование от деталей реализации? Накрайняк напиши функцию через которую можно обратиться к данной переменной, если ты находишься в другой области видимости.
Бегло глянул либы, не нашел где там объявляют переменные. Только typedef'ы
Объявляются переменные типа указатель. Везде и много.Бегло глянул либы, не нашел где там объявляют переменные. Только typedef'ы
[QUOTE]/**
******************************************************************************
* @file stm32f1xx_hal_gpio.h
* @author MCD Application Team
* @version V1.0.3
* @date 11-January-2016
* @brief Header file of GPIO HAL module.
******************************************************************************[/QUOTE]
typedef struct
{
uint32_t Pin; /*!< Specifies the GPIO pins to be configured.
This parameter can be any value of @ref GPIO_pins_define */
uint32_t Mode; /*!< Specifies the operating mode for the selected pins.
This parameter can be a value of @ref GPIO_mode_define */
uint32_t Pull; /*!< Specifies the Pull-up or Pull-Down activation for the selected pins.
This parameter can be a value of @ref GPIO_pull_define */
uint32_t Speed; /*!< Specifies the speed for the selected pins.
This parameter can be a value of @ref GPIO_speed_define */
}[B]GPIO_InitTypeDe[/B]f;
struct MyStruct {
...content...
}instance;
Именно. Ты или пиши typedef, или не создавай экземпляр структуры. Одно из двух.
Я в твоем примере выпилил название экземпляра (master) и все шикарно скомпилилось.
Короче так или иначе в хидерах переменные не объявляются.
не потребует много extern'овсоздание небольших проектов с малым числом данных
Так справаж у наявності місця. Якщо є місце в флеші, то нафіга мудитись з лібами. Абсолютно нормальний підхід. Ніхто ж на асмі не пише для економії місця. От і тут пишуть виходячи з можливостй заліза - дозволяє об'єм пам'яті написати просто - пишуть.Так для справки, UART вместе с 2-мя FIFO-буферами, функцией авторасчета битрейта из десятичного числа в BRRH-BRRL и очередями для буферов - 1кБ. Это я про 8-bit ки.
1. В приложениях с большим потоком данных наличие DMA в ARM дает мощного пня под сраку Атмелу.Что там ещё?
Гемора с дебагерами нет. Есть ST-link и куча китайских клонов всего. JTAG - стандартен, как ни крути, и виглер шил и AT91SAM и STM32...1. В приложениях с большим потоком данных наличие DMA в ARM дает мощного пня под сраку Атмелу.
2. Стандартизация корпусов. Ну пестня же. Один корпус - одна распиновка. Ремап портов - дизайнеры PCB апплодируют стоя.
3. Многоуровневый контроллер прерываний с назначаемыми приоритетами. Любой вывод GPIO как источник прерывания. Мечта разработчика realtime приложений.
4. FSMC. Дисплеи с параллельным интерфейсом адресуются как память. Натравил DMA, ну ты понел...
5. USB в любом камне. За три копейки. То что с им надо ебаться пока опустим
6. Потребление же! L-серя в числе отличившихся. Не, ну у Атмела есть тини класса pico-power, но они же тини.
Гемор, секс и бубен в качестве дебаггера частично компенсируются наличием девбордов, кучи доков и местами кривых визардов различных разработчиков. Но это справедливо только для STM. Оттого и зохавал рынок.
Не согласен. Прерывания - редкое по меркам микроконтроллера событие. Если оно становится частым, это или неправильно выбрана платформа или программист-дебил.1. Скорость.
Имеем 16МГц против 72МГц.
Прерывание ATmega - 2 такта и я там.
Прерывание Cortex-M3 - 12 тактов.
Чтобы обеспечить такую же оперативность кортекс надо погнать до 96МГц. тогда вся "мощ" современного камня обрушится на врага и... догонит 16МГц восьмибитку.
Да болт с ними с 12-ю тактами. Это бывает нечасто.Вот многоуровневый контроллер прерываний, ИМХО - зло. Именно он порождает те 12 тактов.
Ну как знать. Или Кейл не едет или я ебанутый. F103VBT6 спокойно дебажу, RBT6 - хер! Он делает морду кирпичом и говорит что не найден алгоритм, зашивать/дебажить отказываюсь. Хоть усрись.Гемора с дебагерами нет.
Зато удобноВот многоуровневый контроллер прерываний, ИМХО - зло. Именно он порождает те 12 тактов.
Не согласен. Прерывания - редкое по меркам микроконтроллера событие. Если оно становится частым, это или неправильно выбрана платформа или программист-дебил.
совершенно сапоги. больше тама ничего эдакого нету.Тему считаю раскрытой. Реальная продуктивность использования мелких АРМ-ов - вопрос чистого холивара Единственное, чем они берут - периферия.
Забываем, я уже писал тут - все меги сейчас идут с индексом "А". Они уже на другой, наверное, технологии, на 5В они оверклочатся до 48МГц с внешним кварцем.Не забываем про, то что максимальные 16 МГц для мег можно получить при питании 5В, что не совместимо с жизнью большинства современных компонентов. Ставить рядами и колоннами согласователи на логике я желаю только сотрудникам Миландра.
Когда у меня встал вопрос о подключении LCD по SPI при 3,3 питания, разница между 8/2 = 4 МГц и 72/2 = 36МГц была очевидной.
Я говорю про оперативность. Не насколько часто, а насколько быстро я начну делать то, что надо по этому событию.Да болт с ними с 12-ю тактами. Это бывает нечасто.
А кейл обновился? Менеджер пакетов включи и посмотри.Ну как знать. Или Кейл не едет или я ебанутый. F103VBT6 спокойно дебажу, RBT6 - хер! Он делает морду кирпичом и говорит что не найден алгоритм, зашивать/дебажить отказываюсь. Хоть усрись.
Я ваще могу любую функцию вызвать!Зато удобноА еще можно программно ивенты вызывать!
Это как раз понятно, но если прерывания будут прилетать часто настолько, что 12 тактов будут играть существенную роль, то на основной код уже времени почти не останется и появляются конкретные шансы захлебнуться.В корне неверно - прерывания позволяют контролировать надцать физических процессов параллельно, ускоряя работу аппаратного комплекса в разы и частота прерываний определяется только физикой управляемого процесса.
Неа. Эксперименты экспериментами, но в даташите есть график Safe Operating Area. 16 МГц от 4,5 Вольт. Страница 416, даташит ревизии 8151A -08/08.Забываем, я уже писал тут - все меги сейчас идут с индексом "А". Они уже на другой, наверное, технологии, на 5В они оверклочатся до 48МГц с внешним кварцем.
Кейл один и тот же.А кейл обновился? Менеджер пакетов включи и посмотри.
Это как раз понятно, но если прерывания будут прилетать часто настолько, что 12 тактов будут играть существенную роль, то на основной код уже времени почти не останется и появляются конкретные шансы захлебнуться.
А система приоритетов прерываний тут огромный плюс, позволяет наиболее гибко использовать возможности проца и оптимально разруливать процессы.
Я говорю про оперативность. Не насколько часто, а насколько быстро я начну делать то, что надо по этому событию.
Это как раз понятно, но если прерывания будут прилетать часто настолько, что 12 тактов будут играть существенную роль, то на основной код уже времени почти не останется и появляются конкретные шансы захлебнуться.
А система приоритетов прерываний тут огромный плюс, позволяет наиболее гибко использовать возможности проца и оптимально разруливать процессы.
Atmega128 по всем показателям, включая целесообразность (так как она уже меньше 1$).
Я себе слабо представлю железяку на арме в которой прерывания летят скажем каждые 100 тактов (1нс, Карл!). Ну это же идиотизм чистой воды, там явно плисина проситься по крайней мере в качестве буфера.
Все верно. Видел на Али лот 13$ за 20 штук.atmega128 1$ ?
Неа. Эксперименты экспериментами, но в даташите есть график Safe Operating Area. 16 МГц от 4,5 Вольт. Страница 416, даташит ревизии 8151A -08/08..
Там больше нету сноски на 3,3 и 5. То есть - верно во всем диапазоне питания.Operating Voltages
– 2.7 - 5.5V
• Speed Grades
– 0 - 16MHz
atmega128 1$ ?
Посмотри все таки график 32-1 на странице 416. То что написано на первой странице это следствие общей тенденции делать из технической документации рекламные буклеты.Там больше нету сноски на 3,3 и 5. То есть - верно во всем диапазоне питания.
+много. Остальные не имеют смысла. А не, Тиня13 еще по 30 центов, и то не из-за жадности а из соображений удобства трассировки платы.Есть всего 2 целесообразніх микросхемі - Атмега8 (около 0,5$) и Atmega128( около 1$)/ Остальное ценообразование у них неадекватное.