Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 14.06.2020
Сообщений: 5
1

Программирование микроконтроллеров на языке С

14.06.2020, 10:25. Просмотров 946. Ответов 33
Метки нет (Все метки)

Добрый день уважаемые участники форума! Подскажите, пожалуйста, где можно скачать хорошие видеокурсы по программированию микроконтроллеров на языке С доступные для понимания начинающих свой путь в этой необъятной области. Быть может кто-то подскажет раздачу на курсы по программированию микроконтроллеров на языке С Селиванова Максима? Спасибо за помощь.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.06.2020, 10:25
Ответы с готовыми решениями:

Программирование микроконтроллеров
Работаю в ImageCraft IDE for AVR. Хочу написать программу, которая бы считала функцию, не понимаю в...

Программирование микроконтроллеров
Всем привет, возникла проблема с кодом. Препод злюка не хочет помогать с этим. Суть проблемы. Пишу...

Программирование микроконтроллеров
Собственно хочу узнать как и где. В нете не смог найти хорошо структурированной информации. Прошу...

Программирование микроконтроллеров
где почитать?

33
Humanoid
16.06.2020, 11:53     Программирование микроконтроллеров на языке С
  #21

Не по теме:

Цитата Сообщение от Rius Посмотреть сообщение
А 0.5 это широкое шоссе просто, прекрасно получается, и паять тоже. Как нефиг делать.
Нельзя так говорить для новичков. Первые разы это будет совсем не просто. Человек попробует - у него не получится и он начнёт думать, что это не его. А на самом деле нужно просто посмотреть в ютубе как это делают и немного попрактиковаться. Например, я вообще не могу 0.5 паять без микроскопа... просто зрения не хватает.

0
Rius
16.06.2020, 12:08
  #22

Не по теме:

Пугать 0.5-ми тоже не стоит. Естественно, опыт получается только после серии попыток.
А ничего не пытаться и на веки застрять в DIP корпусах 8-битных МК - ничуть не лучше.

Если не догадался найти мануалы и подучиться, то действительно - не его.

И таки сейчас, в 2020 году, печатную плату можно заказать в интернете.
jlcpcb, pcbway, и в др. местах.
Будут тонкие дорожки и не будет никакой возни с ядовитой химией дома.

0
2573 / 1165 / 152
Регистрация: 28.10.2011
Сообщений: 4,144
Записей в блоге: 6
16.06.2020, 12:28 23
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
В отличие от AVR, здесь придется лезть в ядро хотя бы для настройки тактирования.
Тактирование это не процессорное ядро. Я уже писал на начальном этапе нет необходимости настраивать тактирование. Максимум что нужно, включить тактирование требуемой периферии.

Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Ну и периферия сама себя не настроит
В AVR периферия сама себя настраивает?

Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
а настройки отличаются даже внутри STM, не говоря про разных производителей.
Как будто в AVR во всех моделях МК одинаковые настройки для всей существующей периферии! Они ведь тоже отличаются.
Лучше учить то что перспективно чем потом переучиваться!

Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Даже популярный F103 на несколько порядков сложнее не менее популярных ATmega8 / 328.
Сильно преувеличиваете. Берете SPL и уровень вхождения в функции библиотеки даже ниже чем уровень вхождения в регистры AVR.

Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Чтобы в этом убедиться достаточно посмотреть объем минимального HelloWorld'а. (358 строк на ассемблере + 50 для настройки тактирования + 10 для main) в STM против десятка строк в AVR.
Да что вы говорите! Где много строк о которых вы пишите?
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
#include "stm32f10x.h"
 
#define StackTop  ((uint32_t)(0x20000000 + 20*1024))
 
static void Reset_Handler(void);
 
__attribute__((used,section(".isr_vector")))
void (*const g_pfnVectors[])(void) =
{
  (void*)StackTop, // Указатель на начало стека.
  Reset_Handler    // Функция выполняемая при сбросе МК.
};
 
static void Reset_Handler(void)
{
    RCC->APB2ENR |= RCC_APB2ENR_IOPCEN; // Вкл. тактирование порта GPIOC.
    GPIOC->CRH |= GPIO_CRH_MODE13;      // Настройка вывода PC13 как выхода.
 
    while(1)
    {
        GPIOC->ODR ^= (1<<13);         // Инвертирование состояния вывода PC13.
        for (uint32_t i=0; i<1000000; i++);
    }
}
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Если знать оба семейства, возможно.
Лучше хорошо знать МК одного производителя, чем посредственно нескольких. Объем запоминаемой информации ограничен и со временем начинаешь забывать.

Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Хотя даже так травить и паять плату под шаг 0.5 мм гораздо сложнее, чем под 1.25, а то и 2.5 мм.
Сколько памяти доступно AVR с таким шагом выводов? Берете STM32 в 32-ух выводном корпусе с шагом 0.8 мм и лутом не проблема сделать плату. Или заказывайте изготовление в китае, или же покупаете переходные платы с шагом 2.5 мм куда паяете МК. Не умеете паять мелкий шаг, берете отладочную плату у которой шаг выводов 2.5 мм. Короче шаг выводов не проблема.

Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Да и энергоэффективность у F103 так себе.
Берете серию STM32G0 или STM32G4 и получаете оптимальное соотношение производительность/потребление. Примерно 2 мА на частоте 64 МГц. А сколько AVR потребляет на частоте 16 МГц? Знаете, техпроцесс сильно влияет на потребление энергии.

Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Учитывая, что при переходе с нее стало проще, ваше заявление выглядит сомнительно.
А так и не скажешь учитывая какие у вас сложности с STM32 и что предлагаете изучать с командной строки компилятора...

Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
а потом не понимаешь как это работает
Вас в школе в первом классе учили таблице умножения или высшей математике?
Всему свое время. Сначала IDE, а потом можно и с командной строкой разобраться. Тем более что IDE дает подсказки по параметрам командной строки что позволяет понять какие ключи для чего нужны.
Название: IDE.png
Просмотров: 61

Размер: 6.3 Кб
Вы же предлагаете изучать все и сразу. Это сложно для начинающего.

Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Но по умолчанию там стоят делители, которые снижают ее, кажется, до 1 или 2 МГц.
Посмотрите даташит чтобы не казалось.

Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Нет, их можно перенастроить на 72/36/72 МГц, но это лишний код и ковыряние в документации
Я уже много раз писал. Это сделано в файле system_stm32f10x.c Нужно объяснять что это за файл и кто его написал?

Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
И чем это лучше AVR, которые точно так же с завода тактируются от 1 МГц?
У вас совершенно неправильный подход к изучению STM32. Я много раз писал. В system_stm32f10x.c настраивается тактирование на частоту 72 МГц при частот кварца 8 МГц (как на синей плате). Этот файл автоматически попадает в проект. То есть как я уже писал - создаете проект и пишите программу. Если кварц на 8 МГц и нужна частота 72 МГц настраивать тактирование нет необходимости. Это уже сделано в system_stm32f10x.c.

Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Не вводите ТСа в заблуждение. На самом деле разработка под Linux гораздо проще.
Судя по вашему подходу как раз наоборот! Что проще поставить IDE, создать проект и писать программу или разбираться с ключами компиляции, разбираться с makefile, разбираться какой файл нужен в проекте а какой нет, разбираться как правильно вручную создать проект? Вручную прописать все файлы в makefile и многое другое. Пока дело дойдет до написания программы, пропадет всякое желание программировать.
Так что это вы не вводите ТС в заблуждение!

Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
А раз можно повторить, можно изменить, экспериментировать.
Что мешает экспериментировать в IDE?

Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
А получать этот опыт вы предлагаете с помощью IDE-шной магии?
Я предлагаю обучаться постепенно а не изучать все и сразу.

Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Я-то предлагаю начать с AVR, где таких тонкостей почти нет.
То есть в линуксе не нужно изучать ключи компиляции, изучать makefile и др что я написал выше?
Не вводите ТС в заблуждение!

Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Большой, большой, не сомневайтесь.
Я не сомневаюсь а знаю. Я же изучал STM32. У вас просто неправильный подход и изучению отсюда и сложности.

Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Вы просто его уже преодолели и оцениваете исходя из текущего опыта.
Я оцениваю из сложности изучения. В моем случае она была невысокая.
0
1779 / 1109 / 109
Регистрация: 04.01.2010
Сообщений: 3,892
16.06.2020, 12:54 24
Цитата Сообщение от locm Посмотреть сообщение
C
1
2
3
4
5
6
__attribute__((used,section(".isr_vector")))
void (*const g_pfnVectors[])(void) =
{
  (void*)StackTop, // Указатель на начало стека.
  Reset_Handler    // Функция выполняемая при сбросе МК.
};
и что это скомпилит? (даже если поисправлять вызов reset-handler'a) ))
0
2514 / 1559 / 335
Регистрация: 09.09.2017
Сообщений: 6,301
16.06.2020, 13:25 25
Цитата Сообщение от Rius Посмотреть сообщение
Сложно дома 0.2 мм дорожки протравить.
Так шаг 0.5 как раз и означает дорожку 0.25 и зазор 0.25. В даташите, правда, написана ширина площадки 0.3, но разница невелика.
Цитата Сообщение от Rius Посмотреть сообщение
Пугать 0.5-ми тоже не стоит. Естественно, опыт получается только после серии попыток.
Речь не о "пугать". Речь о том чтобы сначала попрактиковаться на чем-то попроще.
Ну и даже если есть опыт и знания, сделать плату с "шоссе" все равно намного проще, чем с "волосками".
Цитата Сообщение от locm Посмотреть сообщение
В AVR периферия сама себя настраивает?
А в arm периферия вдруг стала самостоятельной и независимой от ядра?
Цитата Сообщение от locm Посмотреть сообщение
Как будто в AVR во всех моделях МК одинаковые настройки для всей существующей периферии! Они ведь тоже отличаются.
В основном именами регистров (на уровне UCSRA / UCSR0A) и вариантов там один - два.
Плюс на данном этапе бедность функционала - преимущество. Меньше шансов запутаться, а экзотический функционал все равно потребуется очень нескоро.
Цитата Сообщение от locm Посмотреть сообщение
Сильно преувеличиваете. Берете SPL и уровень вхождения в функции библиотеки даже ниже чем уровень вхождения в регистры AVR.
Ну давайте еще Куб возьмем или Ардуинский софт (порт Ардуины под stm тоже есть). Нет, если задача "тяп-ляп и в продакшен" то сойдет, кто ж спорит.
Цитата Сообщение от locm Посмотреть сообщение
А так и не скажешь учитывая какие у вас сложности с STM32 и что предлагаете изучать с командной строки компилятора...
То есть о возможности системы вы судите по одному человеку? Интересная логика.
Цитата Сообщение от locm Посмотреть сообщение
Да что вы говорите! Где много строк о которых вы пишите?
Интересный код, поэкспериментирую с ним, спасибо.
Цитата Сообщение от locm Посмотреть сообщение
Посмотрите даташит чтобы не казалось.
Ну вот вы посмотрели и что вычитали?
Цитата Сообщение от locm Посмотреть сообщение
Я уже много раз писал. Это сделано в файле system_stm32f10x.c Нужно объяснять что это за файл и кто его написал?
Конечно нужно! Только не мне, а "учащимся".
Цитата Сообщение от locm Посмотреть сообщение
Судя по вашему подходу как раз наоборот! Что проще поставить IDE, создать проект и писать программу или разбираться с ключами компиляции, разбираться с makefile
А я что, где-то говорил что способ, по которому шел я - наилучший?
Работа с makefile - это мне просто повезло что AVRStudio в свое время неправильно работала в wine, так что пришлось осваивать более низкоуровневые способы. О чем я, естественно, не жалею.
Цитата Сообщение от locm Посмотреть сообщение
Вас в школе в первом классе учили таблице умножения или высшей математике?
А вас, получается, учили сразу таблице умножения? Раз предлагаете начать со сложного (stm) вместо простого (avr).
Цитата Сообщение от locm Посмотреть сообщение
Что мешает экспериментировать в IDE?
Ничего. IDE штука полезная. Особенно если не пытаться делать из нее магию. А к чему был этот вопрос?
Цитата Сообщение от locm Посмотреть сообщение
У вас просто неправильный подход и изучению отсюда и сложности.
Ну конечно, вы единственный знаете истину.
Цитата Сообщение от locm Посмотреть сообщение
Я оцениваю из сложности изучения. В моем случае она была невысокая.
Я и говорю - просто не помните всех граблей, по которым прошлись.
Объективно AVR намного проще. Ну хорошо, если пользоваться всякими Кубами, Ардуинами и прочей магией - сравнимо.
0
1779 / 1109 / 109
Регистрация: 04.01.2010
Сообщений: 3,892
16.06.2020, 13:29 26
[my bad. пожалуй, так можно]
0
Эксперт .NET
6867 / 4469 / 1074
Регистрация: 25.05.2015
Сообщений: 13,677
Записей в блоге: 14
16.06.2020, 13:53 27
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Так шаг 0.5 как раз и означает дорожку 0.25 и зазор 0.25. В даташите, правда, написана ширина площадки 0.3, но разница невелика.
Для меня разница велика получилась. 0.3 (да оказывается, столько было) травится нормально, а длинные дорожки 0.2 по бокам съедаются. Да и 0.3 можно лишь для коротких отводов от падов проложить уже к 0.5 дорожкам.

Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Речь не о "пугать". Речь о том чтобы сначала попрактиковаться на чем-то попроще.
Ну и даже если есть опыт и знания, сделать плату с "шоссе" все равно намного проще, чем с "волосками".
Я рекомендую не возится с химией, а заказывать на заводе. Тогда без разницы.
И они попрактикуются на попроще, и там навсегда и останутся. Зачем учить что-то более совершенное, дешёвое, компактное, малопотребляющее, когда у них и так всё работает? Типа вот этого: PIC: Прерывание внутри прерывания
0
2514 / 1559 / 335
Регистрация: 09.09.2017
Сообщений: 6,301
16.06.2020, 14:14 28
Цитата Сообщение от Voland_ Посмотреть сообщение
и что это скомпилит? (даже если поисправлять вызов reset-handler'a) ))
Обычный arm-none-eabi-gcc вполне скомпилил, только исправлять надо не reset handler, а отсутствие main и _exit. Плюс, естественно, прописать пути к инклюдникам.
Правда, как заставить его работать, я так и не понял. Вроде бы компилируется, вроде бы прошивается. Но вот мигать - ни в какую.
0
2573 / 1165 / 152
Регистрация: 28.10.2011
Сообщений: 4,144
Записей в блоге: 6
16.06.2020, 14:40 29
Цитата Сообщение от Voland_ Посмотреть сообщение
и что это скомпилит?
GCC. https://www.cyberforum.ru/atta... 1540203354

Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
А в arm периферия вдруг стала самостоятельной и независимой от ядра?
Ядро компании ARM. Периферия от ST.

Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Ну давайте еще Куб возьмем или Ардуинский софт
Качество библиотеки SPL намного выше чем куба (HAL, LL) или библиотек ардуины. SPL только упрощает и стандартизирует настройку периферии чтобы не пришлось сверятся с даташитом при портировании на другую модель МК. Это упрощает и ускоряет разработку почти без накладных расходов.

Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
То есть о возможности системы вы судите по одному человеку? Интересная логика.
Не только. На другом форуме есть участник с ником Eddy_Em. Он закоренелый линуксоид и тоже как вы ругает IDE и отладчики и предпочитает makefile и отладку выводом строк в USART. Он топчется на месте в основном юзая F0 и считает что F4 слишком сложные. Но дело не в сложности, а в подходе к изучению.

Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Ну вот вы посмотрели и что вычитали?
Я уже писал об этом.
Цитата Сообщение от locm Посмотреть сообщение
Если речь про старт МК, он запускается от RC генератора 8 МГц или другой в зависимости от модели.
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Конечно нужно! Только не мне, а "учащимся".
Пусть это объясняют преподаватели или те что пишет статьи.

Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
А я что, где-то говорил что способ, по которому шел я - наилучший?
Я об этом пишу что способ не самый лучший из-за это вы думаете что STM32 сложные, не это не так.

Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Работа с makefile - это мне просто повезло что AVRStudio в свое время неправильно работала в wine, так что пришлось осваивать более низкоуровневые способы. О чем я, естественно, не жалею.
Никто не говорит что makefile плох, но он не для начинающих, а для тех у кого есть некоторый опыт и желание возиться с ручным созданием проекта.

Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
А вас, получается, учили сразу таблице умножения? Раз предлагаете начать со сложного (stm) вместо простого (avr).
Повторю, STM32 не на много сложнее AVR. Выше уже писал.

Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Я и говорю - просто не помните всех граблей, по которым прошлись.
Почему же, помню. Их было не много и отладчик свел их число к минимуму. Если что-то работало не так как должно, искал отладчиком сбойный участок и потом в сети искал причину. Поэтому быстро и без особых сложностей изучил пройдясь по минимуму граблей. Даже если "наступал на них", то без особых последствий в плане потери времени и сил.

Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Правда, как заставить его работать, я так и не понял. Вроде бы компилируется, вроде бы прошивается. Но вот мигать - ни в какую.
Мигает. Ссылка на проект в начале сообщения.
0
1779 / 1109 / 109
Регистрация: 04.01.2010
Сообщений: 3,892
16.06.2020, 16:02 30
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Правда, как заставить его работать, я так и не понял. Вроде бы компилируется, вроде бы прошивается. Но вот мигать - ни в какую.
глянул один из стартапов STM32:

Assembler
1
2
3
4
5
6
7
8
9
10
11
g_pfnVectors:
  .word  _estack
  .word  Reset_Handler
 
  .word  NMI_Handler
  .word  HardFault_Handler
  .word  MemManage_Handler
  .word  BusFault_Handler
  .word  UsageFault_Handler
  .word  0
  .word  0
Ну, то есть то, что пытался сделать locm, в виде
Цитата Сообщение от locm_ Посмотреть сообщение
C
1
(void*)StackTop, // Указатель на начало стека.
чтобы вставить указатель - возможно, не сработало или сработало неправильно

Добавлено через 5 минут
Цитата Сообщение от locm Посмотреть сообщение
да, наверное, я таки должен есть свою шляпу. не знаю как насчет оптимизации, но технически правильно
0
ValeryS
17.06.2020, 23:34
  #31
 Комментарий модератора 
рассуждения по поводу сред разработки перенесены сюда
IDE или консоль?
0
2514 / 1559 / 335
Регистрация: 09.09.2017
Сообщений: 6,301
18.06.2020, 12:25 32
Немножко лишнего отрезали. Восстановлю ссылку на исправленный проект locm: https://www.cyberforum.ru/atta... 1592322371
Добавлен makefile (из него можно при желании вытащить ключи gcc, это проще чем из файла проекта).
Исправлен баг с выкидыванием цикла оптимизатором (добавлено asm(""); ).
Мигалка перемещена с PC13 на PB6. Добавлены, но закомментированы, мои макросы pinmacro.h чтобы проще настраиваль линии ввода-вывода.
Размер увеличился на 12 байт за счет того что использовано изменение одного бита вместо прямого присваивания. Это во включении тактирования порта.
0
0 / 0 / 0
Регистрация: 14.06.2020
Сообщений: 5
18.06.2020, 23:09  [ТС] 33
Спасибо за желание помочь! Информацию к размышлению подкинули, буду сушить мозги. Удачи вам!
0
2514 / 1559 / 335
Регистрация: 09.09.2017
Сообщений: 6,301
19.06.2020, 10:23 34
ssvchsl, когда возникнут вопросы, обращайтесь! Здесь вам всегда рады насыпать противоречивую информацию с разных точек зрения!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.06.2020, 10:23

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Программирование микроконтроллеров
Можно- ли в lazarus программировать микроконтроллеры на паскале? Заранее благодарен за ответ.

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

Визуальное программирование микроконтроллеров
Создаю визуальную среду для построения алгоритмов работы будущих устройств. Данная среда использует...

программирование микроконтроллеров pic
подскажите полному нубу, с чего начать... какой софт поставить, как спаять программатор под пик,...

Программирование микроконтроллеров на базе STM32F407VET
Имеется плата...

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


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

Или воспользуйтесь поиском по форуму:
34
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.