Извиняюсь за откровенно нубовские вопросы, просто как-то не приходилось особо пользоваться сторонними функциями.СпойлерПопробовал вставить такой чит в свой код, не забыв при этом приинклудить сам *.с файл. Спойлер#include "stm32f10x.h" #include "system_stm32f10x.c"
// Выставляем тактирование в APB2 RCC->APB2ENR |= RCC_APB2ENR_IOPCEN; // Конфигурируем CRL регистры. GPIOC->CRH &= ~GPIO_CRH_CNF13; // Сбрасываем биты CNF для бита 13. Режим 00 - Push-Pull GPIOC->CRH |= GPIO_CRH_MODE13_0; // Выставляем бит MODE0 для 13 пина. Режим MODE01 = Max Speed 10MHz
while (1) { GPIOC->ODR &= ~GPIO_ODR_ODR13; // Выводим 0 на PC13 delay_ (4000-tmp); GPIOC->ODR |= GPIO_ODR_ODR13; // Выводим 1 на PC13 delay_ (tmp); if (dir) {tmp++; if (tmp>=4000) dir=0;} else {tmp--; if (tmp<=0) dir=1;} } }Но вот незадача, при попытке компиляции выдаёт 4 ошибки.СпойлерЧто я делаю не так?
Так всё же, как пользоваться этими функциями? Можете показать на примере? Этож крутейшая вещь, вместо того чтобы разбираться какие регистры за что отвечают и какие биты в них засылать, вызываешь функцию, которая всё делает сама.
_________________ Всё самое свежее по проекту "Дозиметр Сталкера" ищите здесь.
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Так всё же, как пользоваться этими функциями? Этож крутейшая вещь, вместо того чтобы разбираться какие регистры за что отвечают и какие биты в них засылать, вызываешь функцию, которая всё делает сама.
Функций не сильно меньше и они, не сказать, чтобы совсем уж проще. Делая выбор в пользу функций, вы отказываетесь в значительной мере от контакта с реальным железом и начинаете изучать некие нематериальные абстракции, придуманные неизвестными индусами. Печаль в таком подходе заключается еще и в том, что индусы свои абстракции могут и "перепридумать", как, например, было в случае отказа от SPL в пользу HAL. Т.е. в один прекрасный момент все функции, которые к тому времени вы изучили и привыкли использовать, вдруг признаются устаревшими и вам предлагается либо изучить новые библиотеки, либо отказаться от использования новых продуктов, которые старыми библиотеками не поддерживаются.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Мурик, спасибо, попробую. a5021, на то и были разработаны языки высокого уровня, чтобы иметь как можно меньше "контактов" со всеми маразмами реального железа. Кто хочет "контактов", тот пишет на Асме. Хотя, есть у меня один знакомый, который даже Асм не признаёт, а только машинные коды. Тут уж, как говорится, на вкус и цвет, каждый сходит с ума по своему.
_________________ Всё самое свежее по проекту "Дозиметр Сталкера" ищите здесь.
cmsis - библиотека для работы с кортексом, фундамент для spl,hal, для меня, лучшая документация к cmisis - ето "Reference manual" к МК хоть и на английском
Добрый день, тоже начал изучать stm32. Сейчас мучаю камень STM32f030k6 (32 ноги). Для простоты использую CubeMX и их либу HAL. Так вот Куб при выборе вкладки АЦП предлагает настроить только 10 каналов АЦП (IN0-IN9) в режим ADC. Но на других ножках есть возможность включения режима Analog Input (GPIO Analog). Если не ошибаюсь, то этот режим должен подключать данную ножку к АЦП МК. Но как настроить ее в таком режиме? При включении этого режима, появляется такая инициализацияСпойлер
А как дальше с ней работать? Я должен указывать ее, как канал при настройке АЦПСпойлер
Код:
/**Configure for the selected ADC regular channel to be converted. */ sConfig.Channel = ADC_CHANNEL_6; sConfig.Rank = ADC_RANK_CHANNEL_NUMBER; sConfig.SamplingTime = ADC_SAMPLETIME_13CYCLES_5; if (HAL_ADC_ConfigChannel(&hadc, &sConfig) != HAL_OK) { Error_Handler(); } /**Configure for the selected ADC regular channel to be converted. */ sConfig.Channel = ADC_CHANNEL_7; if (HAL_ADC_ConfigChannel(&hadc, &sConfig) != HAL_OK) { Error_Handler(); }
Или вызывать ее функцией HAL_GPIO_ReadPin? Просто в файле adc.h есть еще и такая записьСпойлер
Код:
/** * @brief Configure the channel number into channel selection register * @param _CHANNEL_ ADC Channel * @retval None *//* This function converts ADC channels from numbers (see defgroup ADC_channels) to bitfields, to get the equivalence of CMSIS channels: ADC_CHANNEL_0 ((uint32_t) ADC_CHSELR_CHSEL0) ADC_CHANNEL_1 ((uint32_t) ADC_CHSELR_CHSEL1) ADC_CHANNEL_2 ((uint32_t) ADC_CHSELR_CHSEL2) ADC_CHANNEL_3 ((uint32_t) ADC_CHSELR_CHSEL3) ADC_CHANNEL_4 ((uint32_t) ADC_CHSELR_CHSEL4) ADC_CHANNEL_5 ((uint32_t) ADC_CHSELR_CHSEL5) ADC_CHANNEL_6 ((uint32_t) ADC_CHSELR_CHSEL6) ADC_CHANNEL_7 ((uint32_t) ADC_CHSELR_CHSEL7) ADC_CHANNEL_8 ((uint32_t) ADC_CHSELR_CHSEL8) ADC_CHANNEL_9 ((uint32_t) ADC_CHSELR_CHSEL9) ADC_CHANNEL_10 ((uint32_t) ADC_CHSELR_CHSEL10) ADC_CHANNEL_11 ((uint32_t) ADC_CHSELR_CHSEL11) ADC_CHANNEL_12 ((uint32_t) ADC_CHSELR_CHSEL12) ADC_CHANNEL_13 ((uint32_t) ADC_CHSELR_CHSEL13) ADC_CHANNEL_14 ((uint32_t) ADC_CHSELR_CHSEL14) ADC_CHANNEL_15 ((uint32_t) ADC_CHSELR_CHSEL15) ADC_CHANNEL_16 ((uint32_t) ADC_CHSELR_CHSEL16) ADC_CHANNEL_17 ((uint32_t) ADC_CHSELR_CHSEL17) ADC_CHANNEL_18 ((uint32_t) ADC_CHSELR_CHSEL18) */
Первые 10 каналов соответствует тем, что позволяет настроить Куб в режиме АЦП (IN0-IN9), а с остальными 9 каналами как работать? Спасибо. СпойлерСпойлер
Добрый день, тоже начал изучать stm32. Сейчас мучаю камень STM32f030k6 (32 ноги). Для простоты использую CubeMX и их либу HAL. Так вот Куб при выборе вкладки АЦП предлагает настроить только 10 каналов АЦП (IN0-IN9) в режим ADC.
Не хотите поинтересоваться, сколько этих каналов вообще у данного чипа? Типа, совершить интеллектуальный подвиг и прочесть хотя бы первую страницу даташита? Там глядишь и вопрос про "только" отпадет сам собой.
Здравствуйте, начал изучать STM32, да и программирование в целом. Ну как начал, установил Keil, взял пример , которым поделился VladislavS ,на предыдущей странице. Всё прошилось на китайскую плату, всё мигает. Далее я попытался сам хотябы собрать проект с нуля, тут меня ждал провал)) создал через вкладку новый проект попробовал вбить теже строки автора, собрал нажал CTRL+F5 и ошибка Error: Flash Download failed - Could not load file 'D:\STM32\1\Objects\1.axf' . Есть ли алгоритм создания голого проекта (скелета), в ТыТруба много видео но от них можно кони двинуть. Разъясните знающие люди если не сложно.
начал изучать STM32, да и программирование в целом ... в ТыТруба много видео
разберись с собственно "программированием" для начала. Чо и как работает, что это все за файлы такие .h/.c, чего компилятор делает и что он иногда полезного говорит. И никакого ютуба, читаем и думаем. или, если не терпится, ардуину возьми.
Заголовок сообщения: Re: Stm32 с чего начать изучение...
Добавлено: Вт дек 18, 2018 19:41:53
Друг Кота
Карма: 38
Рейтинг сообщений: 618
Зарегистрирован: Пн апр 06, 2015 11:01:53 Сообщений: 3092 Откуда: москва, уфа
Рейтинг сообщения:0
вот, например, обзорно - https://www.oreilly.com/library/view/pr ... /ch04.html там рассматривают gcc, но это совершено пофиг - компиляторы C так работают примерно все. И когда нажимаются кнопочки в IDE, процеммы происходят те же самые.
просто сейчас вопрос из серии "компьютер мне чото пишет, а чего это оно?". Но уже при базовом понимании понятно, что он (предположу, что на этом этапе - линкер) не может найти объектник, который должен перед этим собрать собственно компилятор. Два варианта - либо файл ищется не в том месте (лезем смотреть настройки сборки проекта), либо - что куда более вероятно - он просто не собрался, потому что... А это нам должен был сказать компилятор, вывод ошибок которого походу дела кто-то не читал)
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 26
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения