폰트 탭 사이즈 조정
디버깅 에뮬레이터 수정
새로 추가 후 연결된 프로브 선택
디버깅 환경설정
SCI (UART)설정
코드
float 처리가 안됨. 하기 옵션 다 조정했는데..stack 사이즈가 문제인가.. 더 키우면 될것 같은데..
0x800 (2048) 로 적용하면..float 도 정상 출력됨.
링커 파일에 스택 램 영역을 RAMLS0로 수정 필요.
void SetupSCI(void)
{
// SCI setting
EALLOW;
GpioCtrlRegs.GPAGMUX2.bit.GPIO28 = 0; // Configure GPIO28 for SCIRXDA operation
GpioCtrlRegs.GPAMUX2.bit.GPIO28 = 1;
GpioCtrlRegs.GPAGMUX2.bit.GPIO29 = 0; // Configure GPIO29 for SCITXDA operation
GpioCtrlRegs.GPAMUX2.bit.GPIO29 = 1;
EDIS;
// Low Speed Clock Prescaler 설정
// EALLOW;
// ClkCfgRegs.LOSPCP.bit.LSPCLKDIV = 2; // LOSCLK = SYSCLKOUT/(LOSPCP*2)
// EDIS; // LOSCLK = 200MHz/(2*2) = 50MHz
// SCI 주요설정 Bypass PLL InitSysPll
SciaRegs.SCICTL1.bit.SWRESET = 0; // SCI Reset
SciaRegs.SCICCR.all = 0x07;
SciaRegs.SCICTL1.all = 0x03;
SciaRegs.SCICTL2.all = 0x02;
// SciaRegs.SCIHBAUD.all = 0x02; // 9600bps. @LSPCLK = 50 MHz (200 MHz SYSCLK) HBAUD = 0x02 and LBAUD = 0x8B.
// SciaRegs.SCILBAUD.all = 0x8A;
// SciaRegs.SCIHBAUD.all = 0x01; // 19200bps. @LSPCLK = 50 MHz (200 MHz SYSCLK) HBAUD = 0x02 and LBAUD = 0x8B.
// SciaRegs.SCILBAUD.all = 0x44;
SciaRegs.SCIHBAUD.all = 0x00; // 230400bps. @LSPCLK = 50 MHz (200 MHz SYSCLK) HBAUD = 0x02 and LBAUD = 0x8B.
SciaRegs.SCILBAUD.all = 0x1B;
SciaRegs.SCICTL1.bit.SWRESET = 1; // SCI Enable
// SciaRegs.SCICCR.bit.LOOPBKENA = 1;
}
char scia_Rx(void)
{
char data;
while(!(SciaRegs.SCIRXST.bit.RXRDY));
data = SciaRegs.SCIRXBUF.bit.SAR;
return data;
}
void scia_Tx(char data)
{
while(!(SciaRegs.SCICTL2.bit.TXRDY));
SciaRegs.SCITXBUF.bit.TXDT = data & 0x00FF;
}
// 이것만 쓰면 오버됨..그냥 printf로 씀.
#if 0
int d_msg(const char *fmt,...)
{
int i = 0;
va_list args;
unsigned int n;
char buffer[128];
va_start(args,fmt);
n = vsprintf(buffer,fmt,args);
for(i = 0;i < n;i ++)
{
sc_Tx(buffer[i]);//use uart to send string
}
va_end(args);
return n;
}
#endif
// printf 쓸때..
int fputc(int _c, register FILE *_fp)
{
while(!(SciaRegs.SCICTL2.bit.TXRDY));
SciaRegs.SCITXBUF.bit.TXDT = _c & 0x00FF;
return(_c);
}
int fgetc(register FILE *_fp)
{
int data;
while(!(SciaRegs.SCIRXST.bit.RXRDY));
data = SciaRegs.SCIRXBUF.bit.SAR;
return data;
}
int fputs(const char *_ptr, register FILE *_fp)
{
int i, len;
len = strlen(_ptr);
for(i=0 ; i<len ; i++)
{
while(!(SciaRegs.SCICTL2.bit.TXRDY));
SciaRegs.SCITXBUF.bit.TXDT = _ptr[i];
}
return len;
}
//Tx
scia_Tx('a'); scia_Tx('b'); scia_Tx('c'); scia_Tx('\n');
// float 처리가 안됨.
d_msg("cell %ld\n", (int32)(fcell*1000));
printf("cell %ld\n", (int32)(fcell*1000));
신규 프로젝트 생성
1. 기본 프로젝트 생성
- 폴더 지정하고 생성
1. C2000Ware f2837xs 코드 복사
cmd, source, include 폴더 생성
1) cmd 복사 2개의 파일 복사. (총2개)
c:\ti\c2000\C2000Ware_4_00_00_00\device_support\f2837xs\headers\cmd\
F2837xS_Headers_nonBIOS.cmd 복사
c:\ti\c2000\C2000Ware_4_00_00_00\device_support\f2837xs\common\cmd\
2837xS_RAM_lnk_shared_cpu1.cmd 복사
2) include 파일복사 (총121개)
c:\ti\c2000\C2000Ware_4_00_00_00\device_support\f2837xs\common\include\ 모두 복사
c:\ti\c2000\C2000Ware_4_00_00_00\device_support\f2837xs\headers\include\ 모두복사
c:\ti\c2000\C2000Ware_4_00_00_00\driverlib\f2837xs\driverlib\ c, h 파일 모두 복사..
음..c파일만..source로 넣어도 됨?? (확인필요..)
CCS(Lib) 폴더로 컴파일시 경고발생되므로...필요없으면 제외
그냥 driverlib.lib파일만 추가하고 컴파일 하는 건가??
3) source 파일복사 (총28개)
c:\ti\c2000\C2000Ware_4_00_00_00\device_support\f2837xs\common\source\ 모두복사
c:\ti\c2000\C2000Ware_4_00_00_00\device_support\f2837xs\headers\source\\
F2837xS_GlobalVariableDefs.c 복사
4) include 추가.
하기 2개 파일 빌드 제외 안하면..
#20 identifier "DmaRegs" is undefined F2837xS_Dma.c /Test01/source line 59 C/C++ Problem 에러남..
=> CPU1을 추가하면 에러 안남.
5) 타겟 다운로드 추가.
신규 만들던가 다른 프로젝트 복사.
상기 프로젝트 코드
C2000Ware 다운 받으면 device_support / driverlib 폴더가 있는데,
device_support는 기본 라이브러리, driverlib 는 기본 라이브러리에 한번더 수정한 보드 라이브러리로 추정됨.
다운로드 옵션
램, 플래시 선택 배제하면서 다운하면 됨.
시스템 클럭 수정.
InitSysPll(XTAL_OSC,IMULT_40,FMULT_0,PLLCLK_BY_2);
(10Mhz * 40) / 2 = 200Mhz
UART float 출력
printf full 설정.
스택 사이즈 0x200 --> 0x400
스택 섹션에 RAMD1 추가.
텍스트 섹션에 RAMGS14 추가.
램 다운로드때문에 RAMGS15 추가.