Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/75: Рейтинг темы: голосов - 75, средняя оценка - 4.91
63 / 63 / 39
Регистрация: 18.11.2016
Сообщений: 562
1

С чего начать изучать программирование STM32?

02.03.2018, 22:40. Показов 15652. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В связи с перспективности этих микрочипов, задумался изучить тему о программирование данных микроконтроллеров.
Так, что есть:
1) Среда разработки Keil μVision
2) Программатор - отладчик STM32F4DISCOVERY.
С каких уроков (книг, туториалов) начать? Можно даже на английском, главное требование, чтобы каждый шаг был подробно описан.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.03.2018, 22:40
Ответы с готовыми решениями:

нуберский вопрос про STM32 или с чего начать
как то сложилось что начал с AVR как и многие но любопытство не оставляет в покое) есть вот...

Ассемблер, с чего начать изучать?
всем привет, вот появились каникулы и решил освоить ассемблер. Си я знаю, поэтому думаю трудностей...

Я только начинаю изучать AVR. Может сразу начать с STM32? Вроде хвалят
Микроконтроллеры изучаю для себя. Язык С более-менее знаю. Времени не очень много, но хочу изучить...

С чего начать? программирование микроконтроллеров
Здрасьте. Хочу начать заниматься программированием микроконтроллеров. Хотел бы купить все...

9
874 / 535 / 175
Регистрация: 30.07.2015
Сообщений: 1,739
05.03.2018, 09:23 2
Photofenix, Путь развития в мире микроконтроллеров STM32

Добавлено через 47 секунд
+ смотрите примеры с сайта ST
2
39 / 37 / 21
Регистрация: 02.04.2016
Сообщений: 127
09.03.2018, 12:02 3
Photofenix, опыт в программировании других микроконтроллеров есть? Может ардуиновские платки?
1
0 / 0 / 0
Регистрация: 09.03.2018
Сообщений: 23
14.03.2018, 21:30 4
А если нету опыта программирования вообще? Что делать?
Ну я потихоньку конечно ламаю его. Я пытался и низкоуровнего (без библиотек) в него подлезть. Но ничего не получилось с первого раза. Да и с третьего раза тоже. Ошибка какая то. Наверно.
Скачал всякие сервис мануалы и прочую фирменную литературу со схемами и регистрами. И понубасовски попытался полистать это все. И я понял, что регистры за что то отвечают. И их нужно тактировать перед использованием.
В них можно как то записывать значения чтобы что то зафунтациклировало.
Но больше всего у меня получилось, когда я установил куб эмикс с его хал библиотекой и кейл. И тогда я смог мингнуть светодиодом даже. А потом еще и смог ацп сделать чтобы оно слало по усарту.
Но там меня удивило, что нужно писать свою программу посередине какой то еще программы. В куче кода с обеих сторон. Назначение которого мне по большей части непонятно.
На каком языке stm32 програмируется? С или С++? Может мануал от этих языков мне поможет?
0
Эксперт .NET
10566 / 6490 / 1506
Регистрация: 25.05.2015
Сообщений: 19,662
Записей в блоге: 14
14.03.2018, 22:33 5
По умолчанию на Си.
C++ можно прикрутить, если захотеть.
0
86 / 85 / 4
Регистрация: 20.11.2016
Сообщений: 259
14.03.2018, 23:05 6
http://givi.olnd.ru/kr2/

Вот хороший мануал по Си )

в Visual Studio хорошо тренироваться на этом языке. Сначала сочиняем и отлаживаем в этой среде алгоритмы, а потом переносим их в свои программы в среду Кейл или IAR
0
4393 / 2243 / 252
Регистрация: 28.10.2011
Сообщений: 8,574
Записей в блоге: 6
15.03.2018, 00:17 7
Цитата Сообщение от c-sharp noob Посмотреть сообщение
А если нету опыта программирования вообще? Что делать?
Тогда на уровне регистров будет не просто.
Можно взять какую-то библиотеку, скажем SPL которая немного упростит разработку программы.
Для начала на мой взгляд хорошо подходит среда EmBitz. Она по умолчанию при создании проекта добавляет в него CMSIS, SPL и другие нужные файлы. Остается только открыть main.c и начать писать программу.
К примеру если создать проект под STM32F103C8T6 и в main.c написать код (часть этого кода будет в нем после создания проекта).
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include "stm32f10x_conf.h"
 
void Delay(volatile uint32_t nCount)
{
    for (; nCount != 0; nCount--);
}
 
int main(void)
{
    GPIO_InitTypeDef Init;
 
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); // Вкл тактирование порта GPIOC
 
    Init.GPIO_Pin = GPIO_Pin_13;       // Пин 13.
    Init.GPIO_Mode = GPIO_Mode_Out_PP;
    Init.GPIO_Speed = GPIO_Speed_50MHz; // Предельная частота выхода.
 
    GPIO_Init(GPIOC, &Init); // Конфигурация GPIOC
 
    while(1)
    {
        GPIO_SetBits(GPIOC, GPIO_Pin_13); // Мигание светодиода.
        Delay(1000000);
        GPIO_ResetBits(GPIOC, GPIO_Pin_13);
        Delay(1000000);
    }
}
то светодиод подключенный к PC13 будет мигать.
Для тестирования подойдет эта плата.
Кликните здесь для просмотра всего текста
0
912 / 672 / 134
Регистрация: 01.03.2010
Сообщений: 1,273
16.03.2018, 10:49 8
Цитата Сообщение от c-sharp noob Посмотреть сообщение
Но там меня удивило, что нужно писать свою программу посередине какой то еще программы. В куче кода с обеих сторон. Назначение которого мне по большей части непонятно.
Я так же учусь как и вы, но на это попробую ответить.
Если сгенерировать Кубом проект, открыть его в Кейле и смотреть код по порядку сверху вниз:
1. Идет подключение различных библиотек при помощи команды #include.
Например, автоматически подключилась собственная библиотека "stm32f1xx_hal.h". Уберите ее, и компилятор не
поймет, как работать с переменными, ножками микроконтроллера и т.д.
Туда же, со временем, будете подключать свои собственные библиотеки.

2. Удут названия функций, которые будут использоваться ниже в файле main. Прототипы.
Например, описан прототип функции void SystemClock_Config(void); Сама эта функция будет описана ниже, в программе.

3. int main(void) { Отсюда программа начнет свою работу после запуска. Еще ее называют точкой входа.
Когда программа запустится, начнет выполняться содержимое функции int main(void) { }. Например, выполнится
спрятанная внутри собственных библиотек функция HAL_Init(); Она, вроде, настраивает системный таймер.
Посмотреть содержимое этой функции можно, если кликнуть по HAL_Init() левой мышкой, затем правой и в меню выбрать
Go To Definition of "HAL_Init". Так можно смотреть содержимое любой функции и не только. Например так можно увидеть, из чего состоит команда GPIO_PIN_6 и т.д.
Но, не забудьте перед этим собрать проект. Иначе ничего не увидите.

4. Следующим в main идет SystemClock_Config(); Она нигде в в недрах библиотек не спрятана. Запустившись она выполнит то, что описано в сгенерированном коде ниже. Если полистать программу и найти ее, то там можно увидеть настройки тактирования микропроцессора. Когда в Кубе вы настраивали Clock Configuration, то в SystemClock_Config() можно увидеть итог этих настроек.

5. Дальше выполнится MX_GPIO_Init(); Она тоже нигде в библиотеках не спрятана, а описана ниже в основной программе.
Когда в Кубе вы настраивали ножки микроконтроллера, то там можно увидеть итог этих настроек.

6. После всех этих автоматически созданных настроек вы наконец попадаете в бесконечный цикл while (1) { }.
Вот там уже можете написать программу моргания светодиодом через управление портами и задержками. Программа там будет крититься до бесконечности.
Это самый простой вариант моргания светодиодом но не хороший. Для начала самое оно, но потом нужно учить прерывания и таймеры. Чем я сейчас и занимаюсь ))
1
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 4
20.04.2022, 05:03 9
Здравствуйте. А не подскажете литературу по которой вы изучаете микроконтроллер?
0
3881 / 2479 / 418
Регистрация: 09.09.2017
Сообщений: 10,888
20.04.2022, 08:26 10
Datasheet, ReferenceManual в первую очередь. Потом статьи в интернете.
Ну и для общего развития

Курс DiHalt'а на изиэлектрониксе
Практический курс микропроцессорной техники на базе процессорных ядер ARM-Cortex-M3/M4/M4F Козаченко В.Ф., Алямкин Д.И., Анучин А.С., и др.
0
20.04.2022, 08:26
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.04.2022, 08:26
Помогаю со студенческими работами здесь

С чего начать техническое программирование?
Я вот тут задался вопросом. Цель - научится этому, понимать как устроено и как этим управлять что...

C Чего Начать Изучать Программирование 1с ?
В общем хочу научиться программировать в 1с. До этого был опыт в C#. Посоветуйте с чего мне лучше...

С чего начать изучать 1С программирование?
Здравствуйте, какие источники информации можете посоветовать для изучения программирования 1С?...

с чего можно начать изучать программирование?
с чего можно начать изучать программирование? при условие что я заканчиваю 7 класс. и у меня по...

с чего начать изучать программирование в Linux
а именно под KDE или GNOME.

С чего начать изучать серверное программирование на js?
Добрый день, хочу изучать node js и двигаться в сторону серверного программирования, пока знаю...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru