Microprocessor/Code Composer Studio DSP 기본 Code 설명
  • 728x90
    반응형

    초기화 코드

     
    
                    
    #include "DSP28x_Project.h"
    static void InitInt(void);
    Uint16 Loop_status;
    void main(void)
    {
    Loop_status = 0;
    /* Disable Global Interrupt */
    DINT;
    /* 고속 CLOCK 설정 */
    EALLOW;
    /* HSPCLK = SYSCLKOUT/(HISPCP*2)
    * HSPCLK = 150MHz/(1*2) = 75MHz */
    SysCtrlRegs.HISPCP.bit.HSPCLK = 1;
    EDIS;
    /* 시스템 컨트롤 초기화 */
    InitSysCtrl();
    InitInt();
    EINT; /* Enable Global interrupt INTM */
    ERTM; /* Enable Global realtime interrupt DBGM */
    for(;;)
    {
    Loop_status++;
    }
    }
    static void InitInt(void)
    {
    /* 인터럽트 초기화 */
    InitPieCtrl(); /* PIE reg 개별 인터럽트 설정 초기화 */
    IER = 0x0000; /* Core Inturrupts Enable Register 초기화 */
    IFR = 0x0000; /* Core Inturrupts Flag Register 초기화 */
    InitPieVectTable(); /* 개별 인터럽트 확장 함수 */
    }

    EINT : 전역 인터럽트 스위치 On

    DINT : 전역 인터럽트 스위치 Off

    ERTM : 리얼타임 전역 인터럽트 가동

    DRTM : 리얼타임 전역 인터럽트 해제

    EALLOW : Protected 영역에 쓰기를 위해 보호영역 해제

    EDIS : Protected 영역 보호

    ESTOP0 : 에뮬레이션 스탑 

     

    HISPCP(High-Speed Peripheral Clock Prescaler) Register

    저속회로에 고속클럭이 필요하거나 고속회로에 저속클럭이 필요한경우 HSPCLK 와 LSPCLK의 주파수 조정 레지스터를 사용하며, 각각 HISPCP 와 LOSPCP 로 구분된다.

     

    void InitSysCtrl (void)

    Step.1 와치독을 OFF 한다.

    Step.2 PLLCR 레지스터를 설정하여 SYSCLKOUT을 생성한다.

    Step.3 pre-scaler 를 설정하여 고속 주변장치 클럭과 저속  주변장치 클럭을 조정한다.

    Step.4 클럭을 ON 하여 주변장치에 공급한다.

     

    Interrupt 초기화 

    Step.1 InitPieCtrl : 개별 인터럽트 설정플래그 비트를 모두 클리어한다.

    Step.2 IER(Iterrupt Enable Register) : CPU 인터럽트 활성화 레지스터를 클리어한다.

    Step.3 IFR(Interrupt Flag Register) : CPU 인터럽트 플래그 레지스터를 클리어한다.

    Step.4 InitPieVectTable : PIE(Peripheral Interrupt Expansion) 벡터 테이블을 초기화 한다. 

     

    System Control and Interrupt Data Sheet :    

    sprufb0d(PIE).pdf
    다운로드

     

     

    728x90
    반응형
상단으로