Показаны различия между двумя версиями страницы.
ob:o7:stm32f103 [2016/08/23 04:44] иван_денисов |
ob:o7:stm32f103 [2020/10/29 07:08] |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | ====== Моя первая программа для STM32F103C8T6 ====== | ||
- | |||
- | Урок посвящен созданию простой программы на языке Оберон с помощью компилятора [[ob: | ||
- | |||
- | Для создания файла с прошивкой нам потребуется: | ||
- | |||
- | ===== 1 Написание простого модуля ===== | ||
- | |||
- | Компилятор [[ob: | ||
- | |||
- | Создайте новый документ для вашей программы через меню **File-> | ||
- | |||
- | <code oberon> | ||
- | |||
- | END MicroBlink.</ | ||
- | |||
- | Название начинается с прописной буквы и содержит две части. Первая часть, название подсистемы, | ||
- | |||
- | Чтобы использовать другие модули в вашей программе, | ||
- | |||
- | После секции импорта идет объявление констант `CONST`, глобальных переменных `VAR` (их нет в этом примере) и процедур. В примере ниже добавляется одна процедура, | ||
- | |||
- | После всех объявлений следует секция `BEGIN`, в которой описан код, выполняющийся при загрузке модуля. | ||
- | |||
- | <code oberon> | ||
- | MODULE MicroBlink; | ||
- | |||
- | IMPORT SYSTEM, MCU := MicroSTM32F10xxD, | ||
- | |||
- | CONST sleepTime = 800000; (* ~ 1 sec @ Thumb-16 *) | ||
- | |||
- | PROCEDURE Sleep (x: INTEGER); | ||
- | BEGIN REPEAT DEC(x) UNTIL x = 0 | ||
- | END Sleep; | ||
- | |||
- | BEGIN | ||
- | PinCfg.Configure(PinCfg.C, | ||
- | REPEAT | ||
- | Sleep(sleepTime); | ||
- | SYSTEM.PUT(MCU.GPIOCBSRR, | ||
- | Sleep(sleepTime); | ||
- | SYSTEM.PUT(MCU.GPIOCBSRR, | ||
- | UNTIL FALSE | ||
- | END MicroBlink.</ | ||
- | |||
- | Мы пользуемся готовым модулем **PinCfg** для настройки параметров вывода **PC13**. А затем идет бесконечный цикл, который формирует периодическую смену состояния вывода **PC13** путем записи 13-го и 29-го бита в управляющий регистр **BSRR** для порта **C**. | ||
- | |||
- | **BSRR** расшифровывается как Bit Set/Reset Register. Подробнее про все регистры вы найдете в файле [[http:// | ||
- | |||
- | Для записи значений используется команда **SYSTEM.PUT**, | ||
- | |||
- | Подробнее про работу с типом **SET** читайте в статье Витра «[[http:// | ||
- | |||
- | ===== 2 Компиляция ===== | ||
- | |||
- | Чтобы откомпилировать модуль, | ||
- | |||
- | Либо после окончания модуля удобно вставить такую команду. | ||
- | ^Q O7ARMv7MP.Compile @/s | ||
- | **^Q** тут обозначает специальный символ комма́ндера, | ||
- | |||
- | ===== 3 Сборка ===== | ||
- | |||
- | Для сборки надо указать целевой микроконтроллер в команде для сборки. | ||
- | ^Q O7ARMv7MLinker.Link STM32F103C8 MicroBlink | ||
- | |||
- | После нажатия на такой коммандер, | ||
- | |||
- | Про то, как прошить полученным файлом контроллер, | ||