Помигаем светодиодом на TM4C

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



Сперва я скачал гигабайт Code Composer Studio (CCS) и установил. Это оказался неповоротливый эклипс, который напомнил мне черные времена разработки на Java — грузится долго, компилирует медленно. Не люблю я такой софт.

Кроме того, надо поставить TivaWare. TivaWare — это фирменная библиотека периферии и графическая библиотека. Из списка файлов я выбрал SW-TM4C-2.0.1.11577.exe, ответил на странные вопросы TI не собираюсь ли я делать военные девайсы, скачал и запустил. Честно говоря думал не дадут скачать из-за страны проживания — какие-то у них там терки с санкциями. )) В папке examples лежат примеры и файлы проектов под разные среды. Кликнув на blinky.uvproj, внезапно шустро запустился ранее установленный Keil uVision. Ради интереса запустил отладку и… запустилось, отладилось, помигало. Похоже судьба CCS решена окончательно — два гигабайта на диске никогда не лишние.

Для линуксов какое-то решение здесь, но линуксы не моя стихия.

Стоит ознакомиться с воркшопом Getting Started with the TIVA™ C Series TM4C123G LaunchPad. Там видео на доступном английском, мануал и архив с примерами. Но в целом кортекс как кортекс, все они одинаковые. Кстати вот хорошая книга, если кто еще не читал — Ю.Джозеф. Ядро Cortex-M3 компании ARM. Полное руководство. Информации и туториалов о TM4C катастрофически мало, видимо не очень популярный в народе процессор. Да чего уж там жаловаться, я и сам собираюсь преимущественно жить с STM32, как с недорогим и доставабельным решением. ))

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

Выбираем процессор.


На вопрос отвечаем «нет» — мне не удалось подружить startup_TM4C123.s с TivaWare. Если кто-то скажет как, буду рад узнать.


Вместо startup_TM4C123.s ищем startup_rvmdk.S в примерах TivaWare и копируем в папку своего проекта. Не забудьте добавить файл в проект.

main.c возьмем из второй лабы воркшопа и так же добавим в проект. Программа мигает по очереди светодиодами.
#include <stdint.h>
#include <stdbool.h>
#include "inc/hw_types.h"
#include "inc/hw_memmap.h"
#include "driverlib/sysctl.h"
#include "driverlib/gpio.h"

int main(void)
{
	uint8_t ui8LED = 2;

        // настроим тактирование системы
	SysCtlClockSet(SYSCTL_SYSDIV_4|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHZ|SYSCTL_OSC_MAIN);

        // включим тактирование порта F
	SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
        // настроим пин на выход
	GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3);
	while(1)
	{
		// включить светодиод
		GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3, ui8LED);
		// задержка
		SysCtlDelay(2000000);
		// выбрать следующий светодиод
		if (ui8LED == 8) {ui8LED = 2;} else {ui8LED = ui8LED*2;}
	}
}




Можете нажать F7 и убедиться что ничего не собирается )) Будем настраивать проект. Жмите Alt-F7.

Укажите папку в которую устанавливали TivaWare. Я устанавливал в дефолтную.


Теперь проект соберется, но не слинкуется. Осталось немного ))


Для успешной линковки надо подключить билиотеку driverlib.lib. Нужный нам вариант находится в папке driverlib\rvmdk\driverlib.lib (аналогично подключается графическая библиотека и прочие).

Добавим библиотеку в проект и соберем его.

Лучше конечно создать папку Libs и добавить в нее, а «Source Group 1» обозвать более красиво, но это будет в качестве самостоятельной работы ))

Теперь все собирается. Если нет — значит что-то пропустили.

Настроими отладку, чтобы работать на плате, а не в симуляторе.


Про настройку uVision почерпнуто из фирменного мануала, стоит почитать.

На этом вроде все. Критиков прошу учесть что данный МК вижу впервые в жизни и с uVision практически не работал.
  • +3
  • 06 января 2014, 16:51
  • aliaksei

Комментарии (5)

RSS свернуть / развернуть
Спасибо за мануал тоже помигал светодиодом, правда у меня EK-LM4F120XL (Rev. A), toolchain и Keil uVision взял отсюда.
0
  • avatar
  • xpeh
  • 06 января 2014, 21:33
Поставил, согласно докам MDK454, потом на него накатил 5.1, потом Legasy Support (иначе не будет ни одного Texas Instrument МК).
Ни в какую не работает в симуляторе (ни в 4.5.4, ни в 5.1), пишет ошибки на чтение/запись в порты (например, GPIO_PORTF_DATA_R), в смысле пишет, что не разрешен доступ на чтение и запись. Даже если открываю пример из TivaWare_C-2.0.1.11577, те же грабли.
Стартап — пофигу какой, главное включить Use MicroLIB на вкладке Target (пока просто повезло, еще до конца не понял), а для startup_TM4C123.s нужно определить void SystemInit(void) {} где нибудь (после этого всё компилируется и в симуляторе запускается).
Вполне допускаю, что симулятор «кривой» и не поддерживает эти МК. Копаюсь.
Да, смотрел разницу между стартапами, практически одно и то же, только в Reset_Handler вызывается SystemInit, а в TivaWare — включается FPU (чего, кстати, нет в startup_TM4C123.s).
Железа нет, проверить, увы, не на чем.
0
Полагаю, этого нет в стартапе, потому что это теперь в файле /Keil/ARM/Startup/TI/TM4C123/system_TM4C123.c — и именно в функции SystemInit()… почему файл не добавляется в проект автоматически — не знаю.
0
Про стартап — спасибо, подключил.
Решение проблемы с access violation в симуляторе можно найти здесь www.keil.com/support/docs/814.htm
Я создал файл с содержимым:
MAP 0x40000000, 0x400FFFFF READ WRITE
Теперь в симуляторе нет ошибок.
Есть проблемы с ROM_ функциями (это отчасти понятно почему), но без них по коду ходит.
0
Ничего не дают скачать )
Хоть прислали два образца (tm4c1237H6), а скачать библиотеки невозможно )
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.