Iar workbench — ide для stm32

IAR Embedded Workbench for AVR. Быстрый старт.

IAR — это один из лучших компиляторов С/С++ для множества микроконтроллеров, начиная от 8051 и заканчивая продвинутыми ARMами. Про создание проектов для ARM уже писали в учебном курсе имени этого же контроллера, я же напишу про создание проекта для AVR, особенностей работы и отладки в нем.

Настройка среды.Tools->Options.MessagesShow build messagesAllTools->Configure Tools.Initial DirectoryRedirect to Output Window

Создание проекта. Запускаем IAR Embedded Workbench и видим главное окно программы:

Project->Create New Project.

Да, iar точно знает, что краткость сестра таланта:) Пользоваться этим пока не возможно, поэтому можно переходить к настройкам проекта.

Настройка проекта. Выбираем в меню — Project->Options. или жмем Alt+F7 и видим первое окно настроек:

Plain ‘char’ isOptimizationListLinkerOutputExtra OutputExtra Options

В результате получим на выходе 3 файла:

  • *.d90 — для отладки
  • *.eeprom.hex — для прошивки eeprom
  • *.flash.hex — сама прошивка

На этом настройку проекта можно считать законченной и переходить к написанию программы.

Написание Hello World. На самом деле писать программу мигающую чем-то я не буду;) А только опишу особенности реализации С в применении к iar. Итак, сразу включаем в самое начало программы следующее:

Без определения *1 не будут доступны битовые поля регистров. Почему так сделано мне самому не понятно:) В *2 идет как раз описание регистров. Без *3 не будет некоторых макроопределений.

Задержки в iar сделаны через количество тактов, однако в 99% случаев гораздо удобней указывать время задержки в микро или миллисекундах. Поэтому добавим следующие определения:

Теперь задержку можно сделать так:

Для размещения констант во флеш используется модификатор __flash:

Для переменных в eeprom соответственно модификатор __eeprom.

Как читать и писать такие переменные компилятор разберется сам, при этом для чтения не нужны извращения типа pgm_read_byte. Все переменные этих типов могут быть только глобальными и запись во флеш не поддерживается. Т.е. команд типа SPM нет. Как пример запись в eeprom константы из flash:

Прерывания объявляются следующим образом:

Где TIMER2_OVF_vect тип прерывания, имена прерываний можно посмотреть в файле описания конкретного процессора. Для mega16 — это C:\\Program Files (x86)\\IAR Systems\\Embedded Workbench 5.4\\avr\\inc\\iom16.h TIMER2_interrupt — просто имя прерывания, можно написать что угодно. В остальном тут такой же С как и в любой другой среде.

Отладка в IAR Отлаживать программу можно в железе, через любые аппаратные отладчики. JtagIce и Dragon самые известные и доступные из них. При этом показывается содержимое регистров, переменные, снимаются/устанавливаюся аппаратные флаги и срабатывают прерывания. Причем в отличие от gcc + студия переменные показываются вне зависимости от ее типа и расположения. В общем отладка в железе в iar проста и приятна. Тип отладчика выбирается в свойствах проекта. Там же он и настраивается. У кого отладчиков нет можно использовать симулятор. Тут уже не так радостно. IAR, в отличие от студии, не эмулирует работу процессора. Это означает, что таймеры в симуляторе не считают, флаг готовности аппаратного i2c не устанавливается и так далее. И установка флага нужного прерывания вручную не приведет к вызову этого прерывания. Но переменные все равно показываются правильно. После gcc это неимоверно доставляет. Итак, отладка в iar. Для запуска отладчика нажимаем зеленый треугольник на правом панеле.

ViewПеременныеWatch, Auto, Statics и Locals.Окно РегистрыдизасемблерапрограммыSimulator->Interrups.

источник

Программные средства разработки

IAR Embedded Workbench — комплексная среда разработки, многочисленные версии которой поддерживают большинство микроконтроллеров от различных производителей. Прежде всего, необходимо пояснить, что IAR EW является не просто программой, а именно комплексной средой разработки, поскольку состоит из целого комплекса программных и аппаратных инструментов. И хотя, как правило, аппаратные отладчики не поставляются в случае покупки только лицензии на пакет, так как в среду включена поддержка J‑TAG-адаптеров различных фирм, тем не менее компания IAR рекомендует использовать в комплекте аппаратное обеспечение, выпускаемое ею. Многие инновационные функции, например появившиеся в 6‑й версии EWARM функции, позволяющие измерить потребляемый устройством ток в зависимости от исполняемого кода, наиболее полно будут поддерживаться при применении собственных аппаратных отладчиков I‑Jet и I‑Scope.

Программная составляющая среды состоит из следующих программных компонентов:

  • C/C++ компилятор;
  • компилятор ассемблера;
  • компоновщик;
  • библиотечный модуль;
  • редактор;
  • менеджер проектов;
  • C‑Spy-отладчик;
  • сервер лицензий.

Внешний вид EWARM в режиме отладки представлен на рис. 1.

Рис. 1. Внешний вид окна программы EWARM в режиме отладки

Среда разработки обеспечивает все этапы создания программного обеспечения — от написания программы до загрузки отлаженного кода микропрограммы в целевой микроконтроллер. Ее достоинствами являются высокоэффективные компиляторы и удобный пользовательский графический интерфейс ко всем приложениям, входящим в пакет, наличие плагинов, поддерживающих различные операционные системы реального времени, и импорт данных из пакетов разных производителей. Эти функции позволяют легко использовать драйверы, сгенерированные для периферийных модулей (так называемые HAL, Hardware Abstraction Layer), например в CodeWarrior, Dave3 или Atmel Studio, и импортировать библиотеки, полученные с помощью этих программ. Компания IAR постоянно совершенствует свои продукты не только за счет поддержки новых кристаллов различных производителей, но и добавляя инновационные функции, которые способствуют повышению качества создаваемого кода. Из недавних улучшений можно отметить новое дополнение к пакету, предназначенному для разработки программного обеспечения на основе ARM-процессоров. Технология, получившая название C‑Run, интегрирована в данный пакет и позволяет автоматически находить ошибки во время выполнения кода.

Основные возможности анализатора C‑RUN:

  • Анализ программы, написанной как на C, так и на C++.
  • Легкие в использовании и интуитивно понятные элементы управления.
  • Подробная информация об ошибках во время выполнения программы.
  • Информация о состоянии и вызовах стека для каждой обнаруженной ошибки.
  • Связь с исполняемым кодом и указание места появления ошибки в редакторе.
  • Гибкость управления фильтром ошибок для остановки процесса выполнения программы и возможность игнорирования ошибок с выводом информации о событиях в файл.
  • Определение недопустимых преобразований между типами переменных.
  • Проверка на переполнение и циклические переносы во время выполнения математических операций.
  • Обнаружение потери битов во время битовых операций.
  • Проверка границ для определения доступности элементов массивов и других объектов.
  • Определение переполнения буфера.
  • Проверка кучи (heap) и утечек памяти.

На рис. 2 представлено окно выбора опций C‑RUN.

Рис. 2. Вид окна установки опций C RUN

На данный момент эти улучшения доступны в новых версиях пакета для ARM-архитектуры, но в ближайшее время такие же возможности получат и другие, наиболее востребованные версии пакета.

IAR VisualSTATE — это отдельный программный продукт для высокоэффективной разработки программ — система, в которой применены принципы визуального программирования. Основной концепцией создания программного обеспечения является принцип описания автомата конечных состояний (State machine). Визуальное конструирование графа таких состояний позволяет ускорить разработку проекта, упрощает понимание его структуры, значительно сокращает время для создания и отладки, а также обеспечивает автоматическую генерацию исполняемого кода и документирование проекта. Последние версии IAR VisualSTATE позволяют легко переносить части существующего проекта в новые разработки. В комплексе с IAR Embedded Workbench данное решение обеспечивает полный цикл разработки и отладки программы. Вид программы представлен на рис. 3.

Рис. 3. Вид программы VisualState

__________________синтаксис цикла while_____________________________

while(condition){             statement1;     statement2;     statement3;}while – имеет условие выполнения (condition), оно записано в скобках () и тело цикла, оно заключено между фигурными скобками {}. В качестве условия цикла может выступать переменная, константа, выражение или функция,  возвращающая значение. Перед каждым выполнением цикла происходит проверка условия, если условие истинно, цикл выполняется, если условие ложно, цикл не выполняется. Любое ненулевое значение в скобках оператор воспримет как истину, и цикл будет выполняться.            while(1){    //этот цикл будет выполняться бесконечно     statement1;     statement2;     statement3;}

Discussion

Configuring the extension

To get started in VS Code, go to File>Open Folder and select the folder containing your IAR Embedded Workbench project. This extension uses the IAR Command Line Build Utility ( to perform its tasks, and the information about which source files to build, compilation flags to use, etc., is defined by the project file ().

The extension detects project configurations and IAR Embedded Workbench installations. You can choose the installation, compiler, project and configuration from the status bar at the bottom of the VS Code window.

Specifying IAR Embedded Workbench install location(s)

If the extension does not find your IAR Embedded Workbench installation(s), you will need to manually point to them. To do this:

  1. Go to File>Preferences>Settings.
  2. Search for .
  3. Change Iar Install Directories to include your IAR Embedded Workbench install location(s).

Using the extension

Once the extension has been configured, it will provide language features such as autocompletion, diagnostics and code navigation.

You can build the project from VS Code using the provided tasks. To do this, go to Terminal>Run Task>iar>Iar Build. You may configure this as the default build task by going to Terminal>Configure Default Build Task. You can then press Ctrl+Shift+B to build the project.

The extension also includes tasks for running C-STAT. To do this, go to Terminal>Run Task>iar-cstat>Run C-STAT Analysis. This will output any C-STAT warnings in the Problems panel.

Open VS Code from the IAR Embedded Workbench IDE

To use VS Code together with the IAR Embedded Workbench IDE, you may add a menu option inside the IDE to open the current file in VS Code. To do this, go to Tools>Configure Tools… and add a new entry called Open in VS Code. 

By default, VS Code is installed under:

Based on this, set the Command field to your VS Code executable like this (using a Windows standard environment variable): 

The Argument field should be . 

Example:

Press OK. You can now open the current file and line in VS Code at any time by selecting the menu item Tools>Open in VS Code.

Open IAR Embedded Workbench IDE from the VS Code

It is possible to open the IAR Embedded Workbench IDE from VS Code. This is done by running the iar: Iar Open task. This will open the current project in the IDE.

Limitations

  • The VS Code extension does not support modifying project settings or adding project files. This means that files created in VS Code will not be built by the IAR compiler, and should instead be added in the IAR Embedded Workbench IDE to be stored in the project file ().
  • The extension currently does not include support for IAR C-SPY debugging.
  • The extension is not owned by IAR Systems. Issues can be reported on GitHub.

How to edit and run example code in IAR

To edit and run example code in IAR Workbench follow these steps:

  1. Download the AD5940 SDK from the the GitHub repository:
  1. Navigate to the examples folder
  2. Double click on ADICUP3029.eww file. This opens all the example projects in the IAR Workspace
  3. On first time opening the project, the IAR CMSIS pack manager will open with a screen like this
  4. Click on Packs and expand the Device Specific option.
  5. Install the AnalogDevices.ADuCM302x_DFP as highlighted below
  6. Once installed exit the Pack Manager window and display the main IAR Workbench program.
  7. All the example projects are shown in the Workspace view
  8. To select a project to run, right click on it and select “Set as Active”
  9. Expand the project to see the structure. It is divided into 4 sub sections:
    • AD5940Lib — This conatins the AD5940.c source file which has all the AD5940 library functions. This file is common to all examples. The ADICUP3029Port.c file is located here also and contains port functions for the ADuCM3029 microcontroller.
    • Application — This sub section contains the application code and main.c file.
    • CMSIS-Pack — This pack contains the necessary files for the ADuCM3029 to function including the startup.c and system.c files
    • Output — This contains the c.out file. This file should not be changed.
  10. Double click on AD5940_ADCPolling.c to open the file in the editor.
  11. Modify code as required.
  12. To compile and build the project go to Project→Rebuild All. IT may take a couple fo seconds to fully compile all the source code.
  13. To download the code to the evaluation boards first ensure the boards are connected to the PC or laptop. Then click on the green “Play” button on the top toolbar. Note, if the “play” button is greyed out cloise IAR Workbench and re-open it.
  14. To set breakpoints click to the left of the line of code. A red dot will appear as in above screenshot.
  15. The code will be loaded onto the ADuCM3029 microcontroller. To begin executing press the blue “Go” button.

________________________________________________________

   Для каждого типа микроконтроллера есть свой заголовочный файл. Для ATMega8535 этот файл называется iom8535.h, для ATMega16 – iom16.h. По идее мы должны в начале каждой программы подключать заголовочный файл того микроконтроллера, который мы используем.  Умные люди немного облегчили нам жизнь и написали заголовочный файл ioavr.h. Препроцессор обрабатывает этот файл и в зависимости от настроек проекта включает в нашу программу нужный заголовочный файл. Итак, следущая строчка программы #include <ioavr.h>    В нашей программе мы будем использовать задержку. Задержку можно реализовать программно и аппаратно. Сейчас нас интересует программная задержка. IAR содержит библиотеку, в которой уже есть готовая функция задержки. Нам нужно подключить к нашей программе эту библиотеку. Как это сделать? Каждая библиотека имеет свой заголовочный файл в котором описано какие фукции она содержит. Этот файл мы и должны включить в программу. Делается это, как вы догадались с помощью директивы #include.#include <intrinsics.h>       Основу любой сишной программы составляют функции, и любая  программа на Си имеет хотя бы одну функцию – main().Вообще-то на примере main() не хотелось бы объяснять синтаксис функций, потому что main() хоть и является функцией, но вызывается не как обычно, а автоматически. С этой функции микроконтроллер начинает выполнение написанной нами программы. Вызовы всех других функций, наших или библиотечных, должны быть записаны в коде. Как вызывается функция, мы увидим дальше.У функции есть заголовок – int main(void) и тело – оно ограниченно фигурными скобками {}. В тело функции  мы и будем добавлять наш код.

Собираем «HelloWorld»

Скопируем в наш файл main.c код из проекта Hello World — светодиод. В этом коде используются библиотечные файлы управления портами и тактовой частотой. Давайте их так же добавим в проект.

Добавляем файлы:
  IAR_CODE\SPL\MDR32F9Qx_StdPeriph_Driver\src\
    MDR32F9Qx_port.c
    MDR32F9Qx_rst_clk.c  

Подключать *.h файлы не будем, пути у нас прописаны и они найдутся сами. Компилируем проект через кнопку в меню или F7. Проект должен успешно скомпилироваться.

Для того, чтобы прошить получившуюся программу в микроконтроллер выбираем в меню Project — Download — Download active application. В Debug Log окне выскакивают некоторые «ворнинги», но прошивка заканчивается успешно и микроконтроллер приветствует Мир!

В случае использования программаторов Segger, при загрузке в устройство подключенное впервые, драйвера Segger запрашивают какое ядро Cortex подключено.

Выбор должен быть таким:

  • 1986ВЕ9х — «Unspecified Cortex-M3».
  • 1986ВЕ1Т, 1986ВЕ3Т — «Unspecified Cortex-M1»,
  • 1986ВЕ4У — «Unspecified Cortex-M0»

Установка IAR Embeded Workbench

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

При первом запуске среды IAR открывается приветственное окно с выбором лицензии. Лицензионного ключа я нас нет, поэтому выбираем пункт с ознакомительной лицензией.

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

Использование среды разработки IAR Ebedded Workbench IDE

Введение

Используя разные микроконтроллеры, возникает необходимость выбрать удобную среду разработки. Нам есть из чего выбирать – будь то IAR или Keil µVision, или, даже Code Composer Studio. Ниже пойдет речь об IAR Embedded Workbench IDE на примере STM32F10x. Эта среда разработки достаточно мощная. Имеются всякие вкусняшки.

Настройка IAR

В первую очередь нужно настроить IAR.

Настройки проекта

Допустим, создавать новый проект мы умеем (если нет, то Project->Create New Project…). После создания проекта нам доступны две конфигурации проекта – Debug и Release. Переключаться между ними можно в окне Workspace:

Рис. 1 – Окно Workspace

Удобно использовать несколько конфигураций. В конфигурации Debug можно выбрать симулятор программатора, а в Release – конкретный программатор (к примеру, J-Link). Что позволит сначала отлаживать в симуляторе, не теряя время на прошивку микроконтроллера, а потом уже прошивать под конфигурацией Release. Добавлять новые конфигурации можно через меню: Project->Edit Configurations. Опции самого проекта – Project->Options… (Alt+F7). Для открытия окна опций проекта нужно выделить сам проект в окне Workspace, иначе откроются опции того файла, который был выделен. Настройки буду приводить для конфигурации Debug (в скобках – для Release). Открываем опции (Alt+F7)

  1. General Options. Вкладка Target. Выбираем Device – например, ST STM32F100xB (у меня STM32VLDISCOVERY с STM32F100RBT6 на борту).
  2. С/C++ Compiler. Вкладка Optimizations. Выбираем LevelNone (для ReleaseHigh). Вкладка Preprocessor. В поле Additional include directories вводим все пути заголовочных файлов, имеющих расширение *.h. Например: $PROJ_DIR$\..\Lib\include\ Остальные переменные, на подобии $PROJ_DIR$, можете посмотреть в хелпе по F1, введя в поиске Argument variables. В этой же вкладке, в поле Defined symbols вписываем нужные дефайны. Это аналог обычной директивы #define. Для нашей отладочной платки нужно ввести STM32F10X_MD_VL, если мы хотим использовать библиотеки от криворуких STM’овцев. Так же для конфигурации Debug можно завести дефайн DEBUG. Это удобно, если использовать, к примеру, конструкцию: #ifndef DEBUG Delay(100 часов); #endif Зачем же нам ждать это время при отладке, правда же?
  3. Linker. Вкладка Config. Здесь можно выбрать конфигурационный файл для линковщика, если это необходимо (если у вас не 8-ми битный микроконтроллер). Если необходимо перераспределить память микроконтроллера по-своему, то нужно ковырять файл *.icf. Об этом можно прочитать в Help->C/C++ Development Guide страница 81 Linking your application. Если эта тема сложная, то можно написать об этом отдельно. Спрашивайте, если что.
  4. Debugger. Вкладка Setup. В поле Driver выбираем Simulator (для Release – свой программатор. Для моей платы – ST-LINK. В настройках для него нужно выбрать интерфейс SWD).
    Рис. 2 – Дерево проекта

И, напоследок, создайте дерево проекта на ваш вкус.

Некоторые приемы

Горячие клавиши
Поиск:

Обычный поиск – Ctrl+F Найти дальше – F3 Поиск по файлам проекта – Ctrl+Shift+F Шагать по найденному (или по ошибкам/ворнингам) – F4

Навигация по проекту:

Перейти к объявлению переменной (даже, если она в другом файле) – F12 — очень полезная функция! Навигация вперед – Alt+Right Навигация назад – Alt+Left

Разное:

Открыть header/source – Ctrl+Shift+H (или П.К.М в редакторе, и в контекстном меню выбрать Open Header/Source File) Закомментировать выделенный блок – Ctrl+K Разкомментировать – Ctrl+Shift+K Выделить содержимое скобок – Ctrl+B Автовыравнивание – Ctrl+T Поставить/убрать Breakpoint – F9 Вставить шаблон – Ctrl+Shift+Space – тоже интересная штука.

Чтобы добавить свой шаблон, нужно открыть файл CodeTemplates.ENU.txt через меню Edit->Code Templates->Edit Templates Теперь можно ввести примерно следующее:

Знак «&» нужен для быстрого доступа (буква будет подчеркнута). Можно использовать знак «>» для создания подменю. Все интуитивно понятно.

Сохраним файл и вызовем Template menu (Ctrl+Shift+Space). В нем выберем Warning:

Рис. 3 – Вызов меню Template

Введем необходимый текст:

Рис. 4 – Шаблон Warning

Жмякаем по кнопке OK. В результате, появится строчка:

Рис. 5 – Результат использования шаблона

При компиляции все ворнинги и ерроры (#error ) будут выводиться в окне Build.

Заключение

В этой статье были приведены основные возможности IAR, позволяющие достаточно быстро ориентироваться в проекте. Рекомендую использовать горячие клавиши. Это значительно сокращает время работы над проектом. Буду признателен, если читатель дополнит или поправит меня.

источник

Организация папок проекта и SPL

Проект организован таким образом, что Strartup-файлы запуска микроконтроллера — в папке Startup, файлы драйверов — в папке Driver, что аналогично папкам, создаваемым средой Keil uVision. Также создана отдельная папка src, в которой будут храниться файлы программы, в данном случае файл main.c.

Теперь необходимо подключить библиотечные файлы SPL, позволяющие работать с периферией микроконтроллера. Библиотечные функции для работы с микроконтроллерами находятся в директории SPL_CODE\SPL, или же их можно скачать на официальном сайте во вкладке «Standard Peripherals Library + software pack для Keil MDK 5» -> «Standard Peripherals Library».

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

Итоговая организация файлов в директории: в общей папке IAR_CODE лежит папка SPL, и по папке для каждого микроконтроллера, внутри которых создаются отдельные проекты. Проекты используют библиотечные файлы SPL, которые подключаются относительными путями от папки проекта. Использование абсолютных путей сделает проект непереносимым в другое место, поэтому лучше использовать относительные пути. При переносе или копировании проекта куда-то, необходимо будет скопировать проект и папку SPL, сохраняя их относительное расположение. Тогда проект будет успешно собираться из другого места.

Ниже приведена организация директорий и файлов, которые будут использоваться в проекте.

Чтобы получилась такая организация, вот что нужно скопировать из архива с SPL (стоит отметить, что в IAR Installer уже осуществлена данная организация, поэтому проще будет скопировать эту папку целиком):

Файл MDR32F9Qx_config.h в стандартном архиве с SPL требуется настроить для выбора микроконтроллера. Для этого необходимо открыть этот файл в любом текстовом редакторе (например, в блокноте или Notepad) и раскомментировать МК 1986ВЕ9x как показано ниже:

В папке SPL_CODE из архива IAR Installer эти изменения не требуются.

Теперь, чтобы среда IAR могла находить файлы SPL в текущей раскладке, необходимо указать ей пути для поиска при сборке. Для этого в дереве проекта нужно нажатием левой кнопкой мыши выбрать самый верхний пункт «HelloWorld — Debug», чтобы он был активен, и открыть опции проекта (сочетания клавиш Alt+F7, или в меню «Project->Options…»). Если не выбрать верхний пункт проекта, а будет активен какой-то другой файл из групп в дереве проекта, то при нажатии Alt+F7 откроются опции этой группы. Так как в данном случае нужно указать пути для всех групп в проекте, нужно выбрать самый верхний узел в дереве.

В категории «С/С++ Compiler» нужно выбрать вкладку Preprocessor. В этой вкладке в поле  «Additional include directories» необходимо добавить сформированные пути. После добавления путей директорий их следует заменить на относительные пути (так как при добавлении они являются абсолютными).

Вот пути до нужных файлов относительно папки проекта:

При расположении прочих проектов по данной раскладке, эти пути останутся правильными.

При добавлении путей через диалоговое окно необходимо следующее:

  1. Добавить путь до директории через диалоговое окно

  2. Путь получился абсолютным

  3. Нажать на кнопку с треугольником

  4. В выпавшем меню выбрать вариант с путем относительно директории проекта

_____________________________________________________________________

   Мы хотим, чтобы светодиод моргал с частотой видимой нашему глазу. Это единицы, десятки герц. Допустим, мы выбрали 1 Гц. Мой микроконтроллер работает на частоте 8 МГц, длительность одного такта =1/8000000 Гц = 125 нс. Сигнал частотой 1 Гц имеет период повторения 1 c. Светодиод будет гореть только половину периода — 0,5с. Делим 0,5 с на 125 нс и получаем искомое число тактов – 4000000. Это число укладывается в диапазон типа unsigned long int. Следующая строчка нашей программы – вызов функции:__delay_cycles(4000000);Далее – гасим светодиод и снова вызываем функцию задержки:PORTC = 255;__delay_cycles(4000000);5 шаг алгоритма – вернуться на шаг 2. По сути дела нам нужно повторить кусок программы, зациклить его. Для этих целей в Си существуют три типа циклов: for, while и do. Мы используем while.

Возможно, вам также будет интересно

Все статьи цикла: AVR-контроллеры: развитие семейства. Часть 1 AVR-контроллеры: развитие семейства. Часть 2 Развивая успех, норвежское отделение компании Atmel начало освоение 32-разрядного рыночного сегмента, выпустив микросхемы на базе собственного ядра AVR32. Одной из особенностей этих микроконтроллеров является набор команд, включающий как стандартные «контроллерные» инструкции, так и специфические DSP-команды. Такой комплексный набор команд в совокупности с

Фазовая автоподстройка частоты (ФАПЧ) широко используется в радиотехнических устройствах и системах связи. На основе генераторов, управляемых напряжением (ГУН), и схем ФАПЧ строят синтезаторы частоты, которые позволяют получить сетку стабильных частот. Одним из применений синтезаторов является использование их в качестве опорных генераторов в преобразователях радиочастотных сигналов. В статье рассматриваются принципы ФАПЧ и структура синтезаторов на их

Фенолоформальдегидные смолы представляют собой продукты реакции конденсации фенолов или его гомологов (крезолов, ксиленолов) формальдегидом. Реакция конденсации протекает в присутствии катализаторов, которе могут быть как кислотного (НСl, H2SO4), так и щелочного типа (NH4OH, Ba(OH)2, NaOH).