본문 바로가기
임베디드 개발/TMS320F2838x (C28x)

TMS320F28388D ] 예제파일 불러오는방법 (LED Blink)

by eteo 2022. 9. 3.

C2000ware 설치

 

Texas Instruments 사가 개발자들을 대상으로 칩에 대해 제공하는 각종 자료들(데이터시트, 칩 매뉴얼, 기본 예제 및 소스, 라이브러리 등)이 담긴 C2000ware 를 다운로드해 설치한다. (설치 folder path : C:\ti\c2000)

 

https://www.ti.com/tool/C2000WARE

 

 

첫번째 방법

Project explorer 에서 import - CCS Projects

 

 

 

Browse 클릭 - C2000ware가 설치된 폴더 안의 driverlib - 디바이스명 폴더를 선택한다.

 

참고로 driverlib 폴더에는 HAL(Hardware Abstraction Layer) driver를 사용한 예제, device_support 폴더에는 레지스터를 조작해 제어하는 예제가 들어있다. 그 안의 device 또는 board명으로 된 폴더를 선택하면 하위 폴더에 들어있는 모든 예제를 확인 할 수 있다.

 

 

 

원하는 예제를 선택후 Finish를 누르면 된다. 참고로 TI사의 GUI툴인 .syscfg를 포함한 예제를 선택하면 편하다.

 

 

두번째 방법

 

메뉴의 View 또는 Getting Started 화면에서 Resource Explorer를 켜고 보드명과 키워드로 원하는 예제를 찾는다.

 

GPIO 예제를 찾는다면 이런식

 

 

예제를 선택하고 import 한다.

 

 

 

 

예제 import 끝.

 

일반적인 예제 불러오는 건 첫번째 방법이 낫고, 매뉴얼이나 있을지도 모르는 자료를 검색으로 찾아보는 건 두번째 방법이 나은 것 같다.

 

 

 

 

main.c 파일

 

#include "driverlib.h"
#include "device.h"

//
// Defines
//
# define LOOP_COUNT 10

//
// Main
//
void main(void)
{
    //
    // Initialize device clock and peripherals
    //
    Device_init();

    //
    // Initialize GPIO and configure the GPIO pin as a push-pull output
    //
    Device_initGPIO();
    GPIO_setPadConfig(DEVICE_GPIO_PIN_LED1, GPIO_PIN_TYPE_STD);
    GPIO_setDirectionMode(DEVICE_GPIO_PIN_LED1, GPIO_DIR_MODE_OUT);

    //
    // Initialize PIE and clear PIE registers. Disables CPU interrupts. 
    //
    Interrupt_initModule();

    //
    // Initialize the PIE vector table with pointers to the shell Interrupt
    // Service Routines (ISR).
    //
    Interrupt_initVectorTable();

    //
    // Enable Global Interrupt (INTM) and realtime interrupt (DBGM)
    //
    EINT;
    ERTM;

    //
    // Loop Forever
    //
    for(;;)
    {
        //
        // Turn on LED
        //
        GPIO_writePin(DEVICE_GPIO_PIN_LED1, 0);

        //
        // Delay for a bit.
        //
        DEVICE_DELAY_US(500000);

        //
        // Turn off LED
        //
        GPIO_writePin(DEVICE_GPIO_PIN_LED1, 1);

        //
        // Delay for a bit.
        //
        DEVICE_DELAY_US(500000);
    }
}

 

 

망치를 눌러 빌드하고 벌레를 눌러 디버그하면 main함수 바로 아래서 멈추는데 F8로 resume 하면 아래와 같이 G31이라고 써있는 LED가 Blink 하는 것을 볼 수 있었다.

 

 

 

 

device.h 파일에 GPIO34가 DEVICE_GPIO_PIN_LED1라고 정의되어 있다.

 

 

GPIO_setPadConfig() 의 두번째 매개변수인 pinType 은 gpio.h 파일에 정의되어 있다.

 

GPIO_setDirectionMode() 의 두번째 매개변수로 input/output을 설정한다.

 

그 아래에 있는건 STM32로 치면 NVIC Init 하고 Interrupt Enable 하는것 같은데 단순히 LED Blink하는데 왜 있는진 모르겠다..

 

그 다음 Loop 안에서 0.5초 간격으로 LED를 토글한다.

 

근데 위에 Turn on LED 와 Turn off LED라고 주석처리되어있는 부분은 반대로 되었다.

 

LED 회로도