Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
ob:o7:stm32f103 [2016/08/22 21:55] иван_денисов [2 Компиляция] |
ob:o7:stm32f103 [2017/04/06 23:33] иван_денисов |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | ====== Моя первая программа для | + | ====== Моя первая программа для |
- | Урок посвящен созданию простой программы на языке | + | Урок посвящен созданию простой программы на языке |
- | Для создания файла с прошивкой нам потребуется: | + | Для этого урока используем плату с микроконтроллером **STM32F103C8T6** на основе архитектуры ARM Cortex M3. Этот микроконтроллер выбран в связи с доступностью очень недорогих отладочных плат на его основе ([[http:// |
+ | |||
+ | Для создания файла с прошивкой нам потребуется: | ||
+ | - написать код модулей нашей программы, | ||
+ | - скомпилировать модули, | ||
+ | - собрать | ||
+ | |||
+ | Рассмотрим эти действия по порядку. | ||
===== 1 Написание простого модуля ===== | ===== 1 Написание простого модуля ===== | ||
- | Компилятор [[ob: | + | Создайте новый документ для вашей программы через меню **File-> |
- | Чтобы использовать другие модули в вашей программе их необходимо указать в секции `IMPORT`. При этом возможно присвоить более удобное короткое альтернативное имя через знак присваивания **:=**. | + | < |
+ | |||
+ | END MyBlink.</ | ||
+ | |||
+ | Название модуля начинается с заглавной буквы и содержит две части. Первая часть --- название подсистемы, | ||
+ | |||
+ | Чтобы использовать другие модули в вашей программе, их необходимо указать в секции `IMPORT`. При этом | ||
После секции импорта идет объявление констант `CONST`, глобальных переменных `VAR` (их нет в этом примере) и процедур. В примере ниже добавляется одна процедура, | После секции импорта идет объявление констант `CONST`, глобальных переменных `VAR` (их нет в этом примере) и процедур. В примере ниже добавляется одна процедура, | ||
- | После всех объявлений | + | После всех объявлений |
- | < | + | < |
- | MODULE | + | MODULE |
- | IMPORT SYSTEM, MCU := MicroSTM32F10xxD, | + | IMPORT SYSTEM, MCU := MicroSTM32F10xxD, |
- | + | ||
- | CONST sleepTime = 800000; (* ~ 1 sec @ Thumb-16 *) | + | |
- | PROCEDURE Sleep (x: INTEGER); | + | CONST sleepTime = 800000; (* ~ 1 sec @ Thumb-16 *) |
- | BEGIN REPEAT DEC(x) UNTIL x = 0 | + | |
- | END Sleep; | + | PROCEDURE Sleep (x: INTEGER); |
+ | BEGIN REPEAT DEC(x) UNTIL x = 0 | ||
+ | END Sleep; | ||
BEGIN | BEGIN | ||
Строка 34: | Строка 47: | ||
SYSTEM.PUT(MCU.GPIOCBSRR, | SYSTEM.PUT(MCU.GPIOCBSRR, | ||
UNTIL FALSE | UNTIL FALSE | ||
- | END MicroSTM32F103x8Test1.</ | + | END MyBlink.</ |
- | Мы пользуемся готовым модулем **PinCfg** для настройки параметров вывода **PC13**. А затем идет бесконечный цикл, который формирует периодическую смену состояния вывода **PC13** путем записи 13-го и 29 бита в управляющий регистр **BSRR** для порта **C**. | + | Мы пользуемся готовым модулем **PinCfg** для настройки параметров вывода **PC13**. А затем идет бесконечный цикл, который формирует периодическую смену состояния вывода **PC13** путем записи 13-го и 29-го бита в управляющий регистр **BSRR** для порта **C**. |
- | **BSRR** расшифровывается как Bit Set/Reset Register. Подробнее про все регистры вы найдете в файле [[http:// | + | **BSRR** расшифровывается как Bit Set/Reset Register. Первые 16 битов отвечают за подачу напряжения на пин, а с 16 по 31 — за сброс |
- | Для записи значений используется команда **SYSTEM.PUT**, | + | Для записи значений используется команда **SYSTEM.PUT**, |
- | + | ||
- | Подробнее про работы с ним читайте в статье Витра | + | |
===== 2 Компиляция ===== | ===== 2 Компиляция ===== | ||
Строка 49: | Строка 60: | ||
Либо после окончания модуля удобно вставить такую команду. | Либо после окончания модуля удобно вставить такую команду. | ||
- | ⬤ O7ARMv7MP.Compile @/s | + | ^Q O7ARMv7MP.Compile @/s |
- | Черный кружок | + | **^Q** |
===== 3 Сборка ===== | ===== 3 Сборка ===== | ||
Для сборки надо указать целевой микроконтроллер в команде для сборки. | Для сборки надо указать целевой микроконтроллер в команде для сборки. | ||
- | ⬤ O7ARMv7MLinker.Link STM32F103C8 | + | ^Q O7ARMv7MLinker.Link STM32F103C8 |
+ | |||
+ | После нажатия на такой коммандер, | ||
+ | |||
+ | Файлы исходных кодов прошивок также лучше хранить в папке **My/ | ||
+ | |||
+ | Про то, как прошить полученным файлом микроконтроллер, | ||
+ | |||
+ | {{ : | ||
- | После нажатия на такой коммандер в папке **Micro/ | ||
- | Про то, как прошить полученным файлом контроллер, | + | ---- |
+ | Автор заметки: |