#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 :
DSP 개발 환경 설정 (2) | 2023.12.27 |
---|---|
TMS320F28x 의 C언어 특징 (0) | 2017.07.04 |
TI(TEXAS INSTRUMENTS) 에서 제공하는 CCS 라이브러리 구조 분석 (0) | 2017.06.30 |
CCS Debug 실행 및 프로그램 Load (0) | 2017.06.14 |
CCS Project 생성 (0) | 2017.06.14 |