Stm32 с чего начать изучение...

Кто любит RISC в жизни, заходим, не стесняемся.
Аватара пользователя
Nicochip
Встал на лапы
Сообщения: 142
Зарегистрирован: Чт ноя 08, 2018 12:02:06

Re: Stm32 с чего начать изучение...

Сообщение Nicochip »

Извиняюсь за откровенно нубовские вопросы, просто как-то не приходилось особо пользоваться сторонними функциями.
СпойлерИзображение
Попробовал вставить такой чит в свой код, не забыв при этом приинклудить сам *.с файл.
Спойлер#include "stm32f10x.h"
#include "system_stm32f10x.c"

void delay_(uint32_t Wot)
{
uint32_t i;
for (i=0; i<Wot; i++){}
}

int main(void)
{
int32_t tmp=0;
_Bool dir=1;

SetSysClockTo48();


// Выставляем тактирование в 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 ошибки.
СпойлерИзображение
Что я делаю не так?
Вложения
Err4.png
(21.24 КБ) 908 скачиваний
Sys_stm32.png
(15.68 КБ) 1095 скачиваний
Всё самое свежее по проекту "Дозиметр Сталкера" ищите здесь.
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Re: Stm32 с чего начать изучение...

Сообщение Reflector »

[uquote="Nicochip",url="/forum/viewtopic.php?p=3510828#p3510828"]Что я делаю не так?[/uquote]
Никогда не инклудь *.c файлы, они добавляются в проект.
Аватара пользователя
Nicochip
Встал на лапы
Сообщения: 142
Зарегистрирован: Чт ноя 08, 2018 12:02:06

Re: Stm32 с чего начать изучение...

Сообщение Nicochip »

Так всё же, как пользоваться этими функциями? Можете показать на примере? Этож крутейшая вещь, вместо того чтобы разбираться какие регистры за что отвечают и какие биты в них засылать, вызываешь функцию, которая всё делает сама.
Всё самое свежее по проекту "Дозиметр Сталкера" ищите здесь.
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: Stm32 с чего начать изучение...

Сообщение Мурик »

Nicochip писал(а):как пользоваться этими функциями?
В файле system_stm32f10x.c есть строки.

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

/* #define SYSCLK_FREQ_HSE    HSE_VALUE */
/* #define SYSCLK_FREQ_24MHz  24000000 */
/* #define SYSCLK_FREQ_36MHz  36000000 */
/* #define SYSCLK_FREQ_48MHz  48000000 */
/* #define SYSCLK_FREQ_56MHz  56000000 */
#define SYSCLK_FREQ_72MHz  72000000
Нужно раскомментировать ту строку, какая частота нужна.
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Re: Stm32 с чего начать изучение...

Сообщение a5021 »

[uquote="Nicochip",url="/forum/viewtopic.php?p=3511382#p3511382"]Так всё же, как пользоваться этими функциями? Этож крутейшая вещь, вместо того чтобы разбираться какие регистры за что отвечают и какие биты в них засылать, вызываешь функцию, которая всё делает сама.[/uquote]
Функций не сильно меньше и они, не сказать, чтобы совсем уж проще. Делая выбор в пользу функций, вы отказываетесь в значительной мере от контакта с реальным железом и начинаете изучать некие нематериальные абстракции, придуманные неизвестными индусами. Печаль в таком подходе заключается еще и в том, что индусы свои абстракции могут и "перепридумать", как, например, было в случае отказа от SPL в пользу HAL. Т.е. в один прекрасный момент все функции, которые к тому времени вы изучили и привыкли использовать, вдруг признаются устаревшими и вам предлагается либо изучить новые библиотеки, либо отказаться от использования новых продуктов, которые старыми библиотеками не поддерживаются.
Аватара пользователя
Nicochip
Встал на лапы
Сообщения: 142
Зарегистрирован: Чт ноя 08, 2018 12:02:06

Re: Stm32 с чего начать изучение...

Сообщение Nicochip »

Мурик, спасибо, попробую.
a5021, на то и были разработаны языки высокого уровня, чтобы иметь как можно меньше "контактов" со всеми маразмами реального железа. Кто хочет "контактов", тот пишет на Асме. Хотя, есть у меня один знакомый, который даже Асм не признаёт, а только машинные коды. Тут уж, как говорится, на вкус и цвет, каждый сходит с ума по своему.
Всё самое свежее по проекту "Дозиметр Сталкера" ищите здесь.
Аватара пользователя
Nicochip
Встал на лапы
Сообщения: 142
Зарегистрирован: Чт ноя 08, 2018 12:02:06

Re: Stm32 с чего начать изучение...

Сообщение Nicochip »

Не подскажете, где можно почитать об использовании CMSIS на доступном русском с подробными примерами? Или этот набор библиотек уже не актуален?
Всё самое свежее по проекту "Дозиметр Сталкера" ищите здесь.
lazarev
Открыл глаза
Сообщения: 53
Зарегистрирован: Вт янв 19, 2016 23:13:21

Re: Stm32 с чего начать изучение...

Сообщение lazarev »

cmsis - библиотека для работы с кортексом, фундамент для spl,hal,
для меня, лучшая документация к cmisis - ето "Reference manual" к МК хоть и на английском
Аватара пользователя
Salk
Грызет канифоль
Сообщения: 288
Зарегистрирован: Пт янв 17, 2014 22:48:20
Откуда: Екатеринбург

Re: Stm32 с чего начать изучение...

Сообщение Salk »

Добрый день, тоже начал изучать stm32. Сейчас мучаю камень STM32f030k6 (32 ноги). Для простоты использую CubeMX и их либу HAL. Так вот Куб при выборе вкладки АЦП предлагает настроить только 10 каналов АЦП (IN0-IN9) в режим ADC. Но на других ножках есть возможность включения режима Analog Input (GPIO Analog). Если не ошибаюсь, то этот режим должен подключать данную ножку к АЦП МК. Но как настроить ее в таком режиме? При включении этого режима, появляется такая инициализация
Спойлер

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

/*Configure GPIO pin : PB3 */
  GPIO_InitStruct.Pin = GPIO_PIN_3;
  GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
А как дальше с ней работать? Я должен указывать ее, как канал при настройке АЦП
Спойлер

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

/**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 каналами как работать? Спасибо.
СпойлерИзображение
СпойлерИзображение
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Re: Stm32 с чего начать изучение...

Сообщение a5021 »

[uquote="Salk",url="/forum/viewtopic.php?p=3522531#p3522531"]Добрый день, тоже начал изучать stm32. Сейчас мучаю камень STM32f030k6 (32 ноги). Для простоты использую CubeMX и их либу HAL. Так вот Куб при выборе вкладки АЦП предлагает настроить только 10 каналов АЦП (IN0-IN9) в режим ADC.[/uquote]
Не хотите поинтересоваться, сколько этих каналов вообще у данного чипа? Типа, совершить интеллектуальный подвиг и прочесть хотя бы первую страницу даташита? Там глядишь и вопрос про "только" отпадет сам собой.
Аватара пользователя
Salk
Грызет канифоль
Сообщения: 288
Зарегистрирован: Пт янв 17, 2014 22:48:20
Откуда: Екатеринбург

Re: Stm32 с чего начать изучение...

Сообщение Salk »

a5021 @One 12-bit, 1.0 μs ADC (up to 16 channels). Я не понимаю, ноги в режиме GPIO_Analog можно задействовать в качестве АЦП или нет?
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: Stm32 с чего начать изучение...

Сообщение Мурик »

Если с выводом нет связанного канала АЦП, то нет. GPIO_Analog означает что от вывода отключены цифровой вход и выход.
Аватара пользователя
Salk
Грызет канифоль
Сообщения: 288
Зарегистрирован: Пт янв 17, 2014 22:48:20
Откуда: Екатеринбург

Re: Stm32 с чего начать изучение...

Сообщение Salk »

Мурик Спасибо, теперь все вроде бы встало на свои места. Увы, значит не получится, использовать АЦП на других ножках.
Brewer911
Родился
Сообщения: 3
Зарегистрирован: Сб июн 25, 2016 11:42:20

Re: Stm32 с чего начать изучение...

Сообщение Brewer911 »

Здравствуйте, начал изучать STM32, да и программирование в целом. Ну как начал, установил Keil, взял пример , которым поделился VladislavS ,на предыдущей странице. Всё прошилось на китайскую плату, всё мигает. Далее я попытался сам хотябы собрать проект с нуля, тут меня ждал провал)) создал через вкладку новый проект попробовал вбить теже строки автора, собрал нажал CTRL+F5 и ошибка Error: Flash Download failed - Could not load file 'D:\STM32\1\Objects\1.axf' . Есть ли алгоритм создания голого проекта (скелета), в ТыТруба много видео но от них можно кони двинуть. Разъясните знающие люди если не сложно.
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: Stm32 с чего начать изучение...

Сообщение Мурик »

Возьмите EmBitz. Создать проект в нем намного проще. http://purebasic.mybb.ru/viewtopic.php?id=575
Релизная прошивка заливается через "STM32 ST-LINK Utility" или можно добавить инструмент в IDE. http://forum.easyelectronics.ru/viewtop ... 66#p463866
Отладка программы. http://purebasic.mybb.ru/viewtopic.php?id=564
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: Stm32 с чего начать изучение...

Сообщение dosikus »

Brewer911, http://mcu.goodboard.ru/viewtopic.php?id=15
Мурик, где-то в вопросе просящего есть твой эмобитс???
Ты становишся весьма навязчивым , этаким попугаем...
Последний раз редактировалось dosikus Вт дек 18, 2018 18:40:18, всего редактировалось 1 раз.
arkhnchul
Друг Кота
Сообщения: 3092
Зарегистрирован: Пн апр 06, 2015 11:01:53
Откуда: москва, уфа

Re: Stm32 с чего начать изучение...

Сообщение arkhnchul »

[uquote="Brewer911",url="/forum/viewtopic.php?p=3529525#p3529525"]начал изучать STM32, да и программирование в целом ... в ТыТруба много видео[/uquote]
:facepalm: :facepalm:
разберись с собственно "программированием" для начала. Чо и как работает, что это все за файлы такие .h/.c, чего компилятор делает и что он иногда полезного говорит. И никакого ютуба, читаем и думаем.
или, если не терпится, ардуину возьми.
Brewer911
Родился
Сообщения: 3
Зарегистрирован: Сб июн 25, 2016 11:42:20

Re: Stm32 с чего начать изучение...

Сообщение Brewer911 »

Всем откликнувшимся спасибо.

arkhnchul
А ссылки на чтиво не дадите?
arkhnchul
Друг Кота
Сообщения: 3092
Зарегистрирован: Пн апр 06, 2015 11:01:53
Откуда: москва, уфа

Re: Stm32 с чего начать изучение...

Сообщение arkhnchul »

вот, например, обзорно - https://www.oreilly.com/library/view/pr ... /ch04.html
там рассматривают gcc, но это совершено пофиг - компиляторы C так работают примерно все. И когда нажимаются кнопочки в IDE, процеммы происходят те же самые.

просто сейчас вопрос из серии "компьютер мне чото пишет, а чего это оно?". Но уже при базовом понимании понятно, что он (предположу, что на этом этапе - линкер) не может найти объектник, который должен перед этим собрать собственно компилятор. Два варианта - либо файл ищется не в том месте (лезем смотреть настройки сборки проекта), либо - что куда более вероятно - он просто не собрался, потому что... А это нам должен был сказать компилятор, вывод ошибок которого походу дела кто-то не читал)
Brewer911
Родился
Сообщения: 3
Зарегистрирован: Сб июн 25, 2016 11:42:20

Re: Stm32 с чего начать изучение...

Сообщение Brewer911 »

В такие моменты ясно понимаешь , что зря не учил английский
Ответить

Вернуться в «ARM»