MSP430. Начало работы. Создание проекта. Первая программа

Автор: | 13.08.2017

Привет. Сегодня рассмотрим азы работы с микроконтроллерами MSP430, начнем работу с MSP430F55x.

Для работы нам понадобится:

Итак, начнем.

Для начала пару слов о сабже. Микроконтроллер MSP430F5529 является самым мощным в линейке MSP430F552x, имеет 128 кб Flash-памяти, 10 кб ОЗУ (8 кб, если используется аппаратный USB-модуль), 63 порта ввода/вывода, по 2 модуля USCI_A и USCI_B, 12-разрядное 14-канальное АЦП, 4 16-разрядных таймера.

Первым делом необходимо установить и настроить IAR. Здесь сложностей быть не должно, единственное — для приобретения бесплатной лицензии потребуется регистрация.

Далее идем на сайт TI и скачиваем юзергайд на Launchpad, даташит на микроконтроллер, примеры кода и, пожалуй самое важное, юзергайд на семейства F5x, F6x, к сожалению только на английском, а для второго и четвертого семейства есть переведенная книга. User’s Guide на семейство включает в себя описание всех аппаратных модулей, список и описание регистров, поэтому рекомендую распечатывать отдельные главы в процессе написания программ.

Все это будет пригождаться в будущих уроках. Полную информацию об МК можно подчерпнуть на странице.

Создание проекта

Запускаем IAR. Выбираем Project -> Create New Project -> Empty project -> OK. Предлагает сохранить проект. Создаем новую папку для проекта, вводим название, например, test_project.

IAR создание проекта MSP430

 

Проект появился в списке панели Workspace. Заходим в опции.

workspace options

На основном экране меняем Device с «Generic MSP430 device» на «MSP430F5529». Переходим в категорию Debugger, вкладка Setup. Меняем Driver с «Simulator» на «FET Debugger. Выходим нажатием на OK.

Создаем новый файл, сохраняем в папке проекта как «main.c». Добавляем его в проект. Для этого кликаем правой кнопкой по проекту, Add -> Add «main.c»:

add main.c to project iar msp430

Вводим следующий код:

#include <msp430f5529.h>

void main()
{
  WDTCTL = WDTPW + WDTHOLD;  // Останавливаем сторожевой таймер
  
  P1DIR |= BIT0;             // Настраиваем ногу P1.0 на выход
  P1OUT &= ~BIT0;            // Выставляем на P1.0 лог.0
  
  while (1)                  // Бесконечный цикл
  {
    __delay_cycles(500000);  // Ждем ~0,5 сек
    P1OUT ^= BIT0;           /* Переключаем состояние P1.0 (если был 0, станет 1 и наоборот) */
  }
}

Тривиальная программа, которая будет моргать светодиодом, подключенным к ноге P1.0 Launchpad’а.

Не забываем подключить лончпад к свободному USB-порту компьютера и заливаем программу в контроллер нажатием сочетания Ctrl+D. IAR предложит сохранить Workspace, сохраняем под любым именем.

После завершения компиляции и загрузки, запускаем отладку нажатием F5. Светодиод на лончпаде начнет мигать с частотой приблизительно 1 Гц.

Разбор программы

В первой строке подключается заголовочный файл с описаниями регистров и битов для МК MSP430F5529. Лежит он в папке C:\Program Files (x86)\IAR Systems\Embedded Workbench 7.3\430\inc. Крайне рекомендую его открыть и изучить.

Далее идет объявление функции main() — точка входа в программу (в C/C++ так принято).

Следующей строкой останавливается сторожевой таймер. Сторожевой таймер (WatchDog Timer) необходим для перезагрузки микроконтроллера при зависании, но мы эту фичу использовать не будем.

Далее настраиваем ногу P1.0 на выход, используя побитовую операцию ИЛИ. Аналогично можно было бы записать P1DIR = P1DIR | BIT0 или P1DIR = P1DIR | 0x01. Да, при программировании MSP430 мы очень часто будем использовать битовые операции, потому необходимо самостоятельно изучить эту тему, а также двоичную и шестнадцатеричную арифметику.

Для выставления лог. 0 на ноге P1.0 необходимо обнулить соответствующий бит в регистре P1OUT. Для этого используем побитовую операцию И и перемножаем регистр P1OUT на число 0xFE (~BIT0 = 0b11111110).

Затем выполняем бесконечный цикл,  __delay_cycles выполняет команду NOP указанное количество раз, в нашем случае 500 000. Дело в том, что MSP430 по умолчанию запускается на частоте ~1 МГц.

И наконец, переключение состояния осуществляется побитовой операцией исключающее ИЛИ.

Резюме

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

В следующем уроке детально разберем работу с GPIO (портами ввода/вывода), познакомимся с прерываниями и таймерами.

Добавить комментарий