Учебник По Stm32

Posted on  by  admin
Учебник По Stm32 Average ratng: 3,7/5 7867 reviews

В целом книга будет очень даже полезна как учебник и справочник. Семейство stm32. Инициализация gpio на hal + keil5 или Учебник по hal arm. Именно под плату на 407ом stm32 сейчас. Оказалось, что программировать STM32 — это вам не PIC'и прошивать! Его лучше как справочник использовать, а не как учебник. Viktor2312, Я набросал по просьбе zst пару уроков Сразу предупреждаю - писатель из меня никакой.

  1. Учебник По Stm32
  2. Учебник По Микроконтроллерам Stm32

Роман Попов (КОМПЭЛ) Компания STMicroelectronics одной из первых вывела на рынок семейство микроконтроллеров на ядре ARM Cortex-M3 и на сегодняшний день по праву занимает лидирующее место среди производителей микроконтроллеров на этом ядре. Все началось в 2007 году с двух семейств — Performance Line (STM32F103) и Access Line (STM32F101). Компания постоянно работает как над расширением номенклатуры семейства, так и над улучшением характеристик, не забывая при этом также пополнять программную составляющую продукта. На сегодняшний момент уже состоит из 10 линеек (рис.

1) для всевозможных применений — микроконтроллеры с высокой производительностью, недорогие микроконтроллеры общего применения, микроконтроллеры с ультранизким энергопотреблением, микроконтроллеры со встроенным радиомодулем для беспроводных решений, и все это — на одном ядре ARM Cortex-M3! Нельзя не отметить pin-to-pin и программную совместимость по всем линейкам. Для более подробной информации по семейству следует посетить официальный сайт компании 1. Семейство STM32 Для начала работы и изучения любого микроконтроллера разработчику необходимы три инструмента — программная среда разработки, программатор-отладчик и оценочная плата от производителя или от сторонних производителей.

Выбор программного инструментария для разработки Под ARM-архитектуру существует довольно широкий выбор программных средств разработки. Приведем лишь основные и самые популярные программные пакеты на российском рынке (табл. 1) Таблица 1. Оценочный набор STM32VLDiscovery В основе платы — микроконтроллер линейки «Value Line» STM32F100RBT6, программатор-отладчик ST-Link с выведенным разъемом SWD, механические кнопки, светодиоды и обвязка. Свободные ножки микроконтроллера выведены на внешние разъемы. Выбор программатора-отладчика для разработки В качестве программатора-отладчика производитель каждой среды разработки, как правило, предоставляет собственное решение, но поддерживаются устройства и других производителей. В таблице 1 можно увидеть среды разработки и поддерживаемые программаторы-отладчики.

Stm32

Большинство сред разработки поддерживают ST-Link — самый дешевый вариант на сегодняшний день. Нужно признать, что «родные» программаторы отладчика предоставляют большие возможности по отладке ПО, хотя разница в цене также ощутима. Добавим, что при выборе программаторов-отладчиков существует несколько вариантов от одного производителя: как более простые с поддержкой основных отладочных функций, так и профессиональные версии с поддержкой полного спектра функций отладки и трассировки. Например, программаторы-отладчики для IAR Embedded Workbench — J-Link и J-Trace, для Keil uVision — ULink и ULink-Pro.

В нашем же случае, как писалось выше, ST-Link интегрирован в отладочную плату, так что дальше мы будем пользоваться именно этим инструментом и отладочной платой STM32VLDiscovery. Установка среды разработки На данном этапе мы уже определились с программным и аппаратным обеспечением. Теперь переходим на официальный сайт IAR Systems 3, далее — на вкладку «Downloads». Должна появиться страница со списком всего доступного ПО.

Нас интересует поле «Processor or core», строка «ARM», тут видно, что для загрузки доступны два варианта ПО. Первая версия — с ограничением по времени, но без ограничения по функциональности (30-day evaluation edition). Вторая версия — без ограничения по времени, но с ограничением 32Кб по загружаемому в микроконтроллер коду (Kickstart edition).

Для загрузки необходимо заполнить форму на сайте, затем вам на почту должна прийти ссылка, и уже по этой ссылке можно скачать установочный файл ПО. Но при этом необходимо сохранить ключ активации и лицензионный номер, которые понадобятся при установке ПО. Загружаем второй вариант и устанавливаем. Процесс установки ПО ничем не отличается от стандартных программ, поэтому подробно на этом пункте мы заострять внимание не будем. Стандартная библиотека периферии STM32 STMicroelectronics для облегчения труда разработчиков предоставляет бесплатные стандартные библиотеки периферии для своих микроконтроллеров и, в частности, для семейства. Вначале мы рассмотрим библиотеку, разберемся, как с ней работать, и далее на основе этой библиотеки обсудим небольшой пример на отладочной плате STM32VLDiscovery. Структура библиотеки представлена на рисунке 3.

Учебник По Stm32

Функциональная структура стандартной библиотеки периферии Стандартная библиотека периферии написана в соответствии со стандартом ANSI C и может использоваться с любым компилятором. Структура библиотеки не так сложна, как кажется на первый взгляд, и состоит из двух взаимодополняющих составляющих.

Первая составляющая — заголовочные файлы и файлы реализации всей периферии микроконтроллеров — STM32F10xStdPeriphDriver. Вся функциональность периферийных модулей описана в заголовочных файлах и файлах реализации. Например, для портов ввода-вывода это два файла — stm32f10xgpio.h и stm32f10xgpio.c. Вторая составляющая — заголовочные файлы и файлы реализации самого ядра ARM Cortex-M3 от компании ARM — CMSIS (ARM® Cortex TM Microcontroller Software Interface Standard). Ядро ARM Cortex-M3 выходит за рамки обычного понятия ядра микроконтроллера и представляет собой мини-микроконтроллер с периферией — встроенные системный таймер, контроллер прерываний и т.д. CMSIS предоставляет собой константы и определения, функции доступа к регистрам и периферийным модулям ядра, независимый интерфейс для операционных систем реального времени (RTOS).

Учебник По Микроконтроллерам Stm32

CMSIS состоит из трех файлов:. corem3.h — вспомогательные функции доступа к регистрам ядра;. startupstm32f10xxx.s- набор файлов для каждой линейки семейства, обеспечивающие инициализацию стека и таблицу векторов прерываний;.

systemstm32f10x.h- файл начальной инициализации тактовой частоты микроконтроллера. Для использования стандартной библиотеки периферии необходимо в файл основной программы (обычно это main.c) включить файл #include «stm32f10x.h» и прописать определенные константы в свойствах проекта. Настройка проекта более подробно будет рассмотрена в приведенном ниже примере. Также библиотекой предоставляются три файла, доступные для модификации пользователем — файл конфигурации библиотеки stm32f10xconf.h и файлы прерываний stm32f10xit.h и stm32f10xit.c. Для использования определенных модулей периферии в проект необходимо добавить файлы реализации и сконфигурировать файл stm32f10xconf.h. Под конфигурацией файла stm32f10xconf.h подразумевается раскомментирование строчек с названием периферийного модуля, предполагаемого для использования. В нашем случае это строчка #include «stm32f10xgpio.h».

Обработка прерываний происходит в заголовочном файле и файле реализации stm32f10xit.h и stm32f10xit.c. Функции обработчиков прерывания не должны содержать параметров — void function(void). Если посмотреть файл stm32f10xit.h, то можно увидеть, что в нем уже написаны пустые обработчики прерывания, но тут имеются не все функции.

Дополнительные имена функций обработчиков прерывания — это фактически адреса обработчиков прерывания. Их придется прописывать вручную, и эти имена уже объявлены в файле начальной инициализации. Этот файл мы рассмотрим далее более подробно. Вся периферия описана в структурах данных языка Си, которые и используются для конфигурации периферийного модуля.

Функции и константы для периферийных модулей начинаются с префиксов, совпадающих с именем периферийного модуля. Например, имена функций для портов ввода-вывода — GPIOInit, GPIOSetBits, GPIOReadInputData и константы — GPIOA, GPIOSpeed50MHz, GPIOPin0. Для конфигурации периферийного модуля необходимо заполнить все поля структуры и далее передать структуру функции инициализации периферийного модуля. Например, для инициализации портов ввода-вывода необходимо объявить и заполнить поля структуры GPIOInitTypeDef и передать объявленное имя функции инициализации GPIOInit(, ). Все доступные функции для работы с периферийным модулем можно посмотреть в справке на библиотеку или в заголовочном файле. Для портов ввода-вывода это файл stm32f10xgpio.h.

Большинство периферийных модулей имеют одинаковый набор функций, например (PPP — имя периферийного модуля):. PPPDeInit — установка всех регистров в начальное(после сброса) состояние;. PPPInit — установка параметров через структуры данных;. PPPCmd(ENABLE/DISABLE) — разрешение/запрещение работы (не тактирование!);. PPPITConfig — конфигурация источников прерываний;. PPPGetFlagStatus — чтение флагов периферийного модуля;. PPPClearFlag — очищение флагов периферийного модуля;.

PPPClearITPendingFlag — сброс флага прерывания. Для большей наглядности кода и сокращения его визуального размера стандартные типы данных предопределены в файле stm32f10xtype.h, например:. u8 — unsigned char;. u16 — unsigned short;.

RESET/SET;. FALSE/TRUE;. DISABLE/ENABLE. Стандартную библиотеку периферии можно загрузить с официального сайта STMicroelectronics по ссылке 4.

Структура пакета библиотеки следующая:. Libraries:. STM32F10xStdPeriphLibV3.4.0ProjectSTM32F10xStdPeriphTemplate — шаблон «пустого» проекта для оценочных плат STM3210xx-EVAL. Utilities — драйвера для отладочных плат STMicroelectronics. STM32F10xStdPeriphLibV3.4.0stm32f10xstdperiphlibum.chm — файл справки. Для более простого старта создания и конфигурации проекта на основе отладочных плат STM3210xx-EVAL предлагается «пустой» шаблон проекта для разнообразных сред разработки.

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

Для прояснения картины пользования библиотекой перейдем к практической части статьи. Практическая часть: пример проекта На данном этапе мы загрузили и установили среду разработки IAR Embedded Workbench и получили общие знания по стандартной библиотеке периферии. Самое время приступить к практической части нашего материала. Для всех своих отладочных плат STMicroelectronics предоставляет на официальном сайте примеры работы и описание.

Полный список документации для STM32VLDiscovery можно посмотреть по ссылке 5, а кликнув по вкладке «Design Support», можно посмотреть всю доступную информацию по отладочной плате. С этой же страницы загружаем пакет «STM32VLDISCOVERY firmware package (AN3268)» по ссылке 3. В состав пакета входит стандартная библиотека периферийных устройств и примеры проектов для отладочной платы.

Рассмотрим структуру пакета более подробно:. Libraries:. Master Workspace — проект на примерах из Examples.

Utilities — драйвер для оценочной платы STM32VLDiscovery. Заходим в директорию ProjectMaster WorkspaceEWARMv5 и запускаем проект ValueLineDiscovery.eww. В рабочей области проектов (рис. 4) можно увидеть 13 различных проектов для работы с портами ввода-вывода, внешними прерываниями, контроллером DMA, таймерами, режимами низкого энергопотребления и т.д. Для работы с каждым конкретным проектом его необходимо сделать активным — наводим на имя проекта курсор мыши, кликаем правую кнопку мыши и в выпадающем меню выбираем поле Set as Active.

Далее можно вносить свои изменения, компилировать, загружать прошивку и отлаживать ПО. Проект EXTI — EXTI В качестве примера далее будем рассматривать проект EXTI-EXTI. В данном проекте происходит работа с портами ввода-вывода и внешними прерываниями. Для первого знакомства это вполне подходящий вариант. Делаем проект активным, как описывалось выше.

Как видно из рисунка, проект состоит из нескольких папок, разделяющих файлы проекта по смысловому значению:. CMSIS — библиотека ядра ARM Cortex-M3,. Декларант руководство аис мосдекларация. Doc — справка,. EWARMv5 — начальная инициализация микроконтроллера,.

StdPeriphDriver — библиотека периферии,. stm32vldiscovery — драйвер отладочной платы STM32VLDiscovery,. User — пользовательские файлы,. Output — файл прошивки. Как уже описывалось выше, папка CMSIS содержит файл библиотеки ядра ARM Cortex-M3 и файл начальной инициализации. Папка EWARMv5 содержит начальный файл инициализации, он выбирается для каждого объема памяти микроконтроллера.

Все доступные файлы для всех микроконтроллеров можно, в зависимости от микроконтроллера, используемого в проекте, выбрать по следующему пути: Х.stm32vldiscoverypackageLibrariesCMSISCM3DeviceSupportSTSTM32F10xstartuparm. Необходимый файл выбирается по окончанию файла. Настройка проекта — настройка путей доступа к библиотеке Над содержанием поля Additional include directories необходимо остановиться более подробно:. $PROJDIR$. $PROJDIR$.LibrariesCMSISCM3CoreSupport. $PROJDIR$.LibrariesCMSISCM3DeviceSupportSTSTM32F10x.

$PROJDIR$.LibrariesSTM32F10xStdPeriphDriverinc. $PROJDIR$.Utilities Тег $PROJDIR$ является отправной точкой и олицетворяет собой путь до имени файла проекта. В нашем примере это путь X:an3268stm32vldiscoverypackageProjectMaster WorkspaceEWARMv5, где X: означает метку жесткого диска в системе и путь до пакета.

Подразумевает переход на один уровень вверх по файловой директории. Таким образом, во всех строчках вышеприведенного поля, с помощью тегов $PROJDIR$. Задаются пути ко всем директориям файлов проекта.

Например, во второй и третьей строке поля задаются пути к файлам библиотеки CMSIS, в четвертой — к стандартной библиотеке периферии, в пятой — к файлу драйвера отладочной платы STM32VLDiscovery. Также необходимо обратить внимание на поле Defined symbols:(one per line). В данном поле содержатся два макроопределения. Макроопределение USESTDPERIPHDRIVER необходимо указывать, если вы собираетесь пользоваться стандартной библиотекой периферии. Макроопределение STM32F10XMDVL указывает библиотеке, какой микроконтроллер используется в проекте.

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

Следующий шаг — необходимо указать линковщику файл с расширением.icf. В поле Category выбираем пункт Linker и далее в правом поле — вкладку Config (рис. Файлы этого типа используются для управления линкером, указывают области памяти, определяют размер памяти и так далее. Файлы с расширением.icf для различных вариаций настройки проекта, например, для размещения кода только в SRAM, деления памяти на разные области и так далее, можно найти в шаблонах проектов от STMicroelectronics или написать самим. Более подробно про самостоятельное создание этих файлов можно прочитать в разделе «Помощь» среды разработки IAR Embedded Workbench, вкладка «Help — C/C Development Guide» на основной форме программы. В нашем примере данный файл находится в корне проекта.

Настройка проекта — настройка линкера (часть 2) В первом окне рисунка 8 указывается адрес таблицы векторов прерывания. В нашем случае адрес равен 0х08000000, это начало внутренней flash-памяти. Во втором окне необходимо указать адреса flash- и SRAM-памяти. Начальные адреса начинаются с 0х08000000 и 0х02000000, это заложено при проектировании. А вот конечные адреса разные, т.к. Микроконтроллеры имеют разные объемы памяти.

В окнах необходимо указать правильные параметры, т.к. В случае выхода размера ПО за эти границы линкер должен выдать сообщение об ошибке во избежание непредсказуемых последствий. Для нашего микроконтроллера STM32F100RBT6 объем flash равен 128 Кбайт, а объем SRAM — 8 Кбайт. Соответственно, значение второго окна для поля ROM должно быть равно (128х1024) — 1 = 0х0801FFFF, и по такой же методике значение второго окна должно быть равно 0х02001FFF. На рисунке 8 отображены максимальные значения памяти для семейства. Не менее важным является третье окно, отвечающее за размер стека и кучи. Стек необходим для сохранения контекста при вызове функций, передачи параметров функций и так далее.

Куча необходима для функций работы с памятью С/С. Оставим эти параметры такими же, как на рисунке. Добавим лишь, что память для стека и кучи выделяется из SRAM, и, например, в случае неиспользования функции работы с памятью поле HEAP можно сделать нулевым, таким образом сэкономив оперативную память для нужд приложения. Следующим шагом является выбор программатора-отладчика. В поле Category выбираем пункт Debugger и далее в правом поле — вкладку Setup (рис.

Настройка проекта — выбор программатора В нашем случае нам необходимо выбрать программатор-отладчик компании STMicroelectronics ST-Link. Для этого выбираем категорию Linker. Следует обратить внимание на поле Run to main. Данный пункт указывает, с какого места будет начинаться отладка ПО. Если этот пункт активен, то процесс отладки начнется с функции main, и первоначальная инициализация микроконтроллера пропускается (она будет выполнена автоматически). Если же данный пункт не активен, то процесс отладки начнется с самого начала, а именно — с вектора сброса Reset Handler файла startupstm32f10xmdvl.s. На первоначальном этапе для более подробного изучения инициализации микроконтроллера лучше сделать этот пункт неактивным и посмотреть по шагам всю инициализацию микроконтроллера.

Учебник

И, наконец, последний пункт в настройках проекта — выбор интерфейса для отладки. В архитектуре ARM Cortex-M3 предусмотрено два альтернативных интерфейса для отладки микроконтроллера — двухпроводной интерфейс SWD и пятипроводной интерфейс JTAG. В STM32VLDiscovery реализован SWD, соответственно, убеждаемся в том, что выбран именно этот интерфейс — в поле Category выбираем пункт ST-Link и затем — SWD (рис. Настройка проекта — выбор интерфейса программатора После рассмотрения настроек проекта EXTI-EXTI переходим к более детальному рассмотрению самого проекта. Обычно точкой входа в программу является функция main.c, далее происходит инициализация периферии микроконтроллера.

Но в случае использования стандартной библиотеки периферии при входе в функцию main.c уже произведена первоначальная инициализация микроконтроллера. Полную инициализацию микроконтроллера можно посмотреть по шагам в отладочном режиме, если снять пункт Run to main на рисунке 9. Старт работы ПО микроконтроллера после включения питания или сброса происходит с адреса сброса (ResetHandler). Для начальной инициализации проекта мы уже добавили в проект файл начальной инициализации (в нашем случае это startupstm32f10xmdvl.s). При просмотре содержимого данного файла видно, что при первоначальном сбросе вызывается функция SystemInit. Это, по сути, и является первоначальной инициализацией микроконтроллера.

Далее управление передается этой функции, которая реализована в файле systemstm32f10x.c. Но отправной точкой работы любого микроконтроллера является его тактирование. В семействе доступны четыре источника тактирования:. HSI — внутренний высокоскоростной источник тактирования,. LSI — внутренний низкороскоростной источник тактирования,. HSE — внешний высокоскоростной источник тактирования,. LSE — внешний низкоскростной источник тактирования.

Для тактирования ядра микроконтроллера могут использоваться только высокочастотные источники HSI и HSE. После подачи или сброса питания микроконтроллеры STM32F1x по умолчанию тактируются от внутреннего источника, и системная частота тактирования после сброса равняется 8 МГц (SYSCLK = 8 МГц).

В файле systemstm32f10x.c в макроопределениях задается первоначальная частота тактирования микроконтроллера до входа в функцию main.c при помощи раскомментирования строк (рис. 11): #if defined (STM32F10XLDVL) (defined STM32F10XMDVL) /.

#define SYSCLKFREQHSE HSEValue./ #define SYSCLKFREQ24MHz 24000000 #else /. #define SYSCLKFREQHSE HSEValue./ /. #define SYSCLKFREQ24MHz 24000000./ /. #define SYSCLKFREQ36MHz 36000000./ /.

#define SYSCLKFREQ48MHz 48000000./ /. #define SYSCLKFREQ56MHz 56000000./ #define SYSCLKFREQ72MHz 72000000 #endif.

Основной файл проекта main.c Для использования стандартной библиотеки периферии необходимо прописать в основном файле проекта строку stm32f10x.h, раскомментировать используемые периферийные модули в файле stm32f10xconf.h и включить их исполняемые файлы в проект в папку StdPeriphDriver. В нашем проекте это файлы — misc.c — NVIC функции, stm32f10xexti.c — функции внешних прерываний портов ввода-вывода, stm32f10xgpio.c — функции настройки портов ввода-вывода и stm32f10xrcc.c — функции настройки тактирования модулей периферии (рис.

Вот это - лучшая книга для начинающих осваивать STM32, что я встречал Она написана преподавателем на основании реальных курсов по программированию в не последнем по рейтингу университете. Программирование STM32F1xx рассматривается с применением библиотек CMSIS (что только + для не имеющих опыта работы с более старыми архитектарами и тем более ARM, или вовсе делающих первые шаги на поприще embedded программирования).

Все примеры рабочие, изучена почти вся периферия. Правда, в первой главе много 'воды' - 'потребуются такие-то и такие-то средства разработки, отладочные платы'. Ничего этого, конечно же, не нужно. Достаточно программатора и микросхемы на макетной плате. Если не хочется паять - всё это есть и на популярной платформе.

В остальном рекомендую, книга стоящая. Если же говорить о русскоязычной литературе, то до недавних пор тема по STM32 была ахиллесовой пятой, если не считать тысяч разрозненных публикаций в блогах, наподобие. А также бесчисленное количество учебных курсов по ARM вообще и в частности, вроде.

Подскажите пожалуйста, как собрать схему управления электромагнитного двигателя, датчиком холла (биполярный) и полевиком IRFP2907 Владимир 38, как-то промахиваетесь с вопросами. С этим вопросом создайте отдельную тему с кратким, но исчерпывающим в Вашем понимании описанием задачи. Иначе ничего не понять. Вы хотите сделать управление заслонкой? Контроль местоположения?

Получить данные о скорости вращения? Одни догадки. Кажется, Вы уже спрашивали о датчиках Холла и как-то тоже невпопад. Поэтому отдельная тема и больше подробностей. А раз в этой ветке обсуждается литература, то рекомендую ознакомиться с книгой Это своего рода справочник.

Coments are closed

Архив

Scroll to top