우리는 프로젝트를 수행하고 있으며 p30f3013 마이크로 칩 (PIC30 칩 제품군)을 사용하고 있습니다. 지금 우리는 우리 칩을위한 소프트웨어를 작성하고 있습니다. 우리가 사용하고있는 운영 시스템은 Linux Ubuntu 12.04입니다. 아래에 몇 가지 기능이있는 작은 파일이 있습니다.Linux에서 PIC 컨트롤러 프로그램을 작성하는 방법은 무엇입니까?
#include "p30f3013.h"
#include "hardware.h"
//SPI connects the display with the U2A1
void init_lcd()
{
//after any reset wait 500 milliseconds
SPI1BUF = 0; //buffer displayed
SPI1STATbits.SPIEN = 1; //SPI enable
SPI1CONbits.MSTEN = 1;
SPI1CONbits.SSEN = 1;
SPI1CONbits.PPRE = 0;
}
void write_char(char character)
{
//wait 5 milliseconds between writing two successive char in first row
//wait 250 microseconds between writing two successive char in second row
SPI1BUF=character;
}
void write_int(int num)
{
//wait 5 milliseconds between writing two successive char in first row
//wait 250 microseconds between writing two successive char in second row
if (num >= '0' && num <= '9')
{
SPI1BUF = '0' + num;
}
else
{
SPI1BUF = '!';
}
}
void move_cursor(int hexadecimal)
{
//first row: from 0x80 to 0x8F
//first row: from 0xC0 to 0xCF
//wait 250 microseconds before writing an address byte
//cannot move cursor and write a char in the same cycle
SPI1BUF=hexadecimal;
}
void init_led()
{
_TRISB0=0;
_TRISB1=0;
}
일부 매크로, 버퍼, 레지스터 등이 포함 된 p30f3013.h 헤더를 추가합니다. 우리는 우리가 얻을 코드를 컴파일 할 때
#ifndef __dsPIC30F3013__
#error "Include file does not match processor setting"
#endif
#ifndef __30F3013_H
#define __30F3013_H
/* ------------------------- */
/* Core Register Definitions */
/* ------------------------- */
/* W registers W0-W15 */
extern volatile unsigned int WREG0 __attribute__((__sfr__,__deprecated__,__unsafe__));
extern volatile unsigned int WREG1 __attribute__((__sfr__,__deprecated__,__unsafe__));
extern volatile unsigned int WREG2 __attribute__((__sfr__,__deprecated__,__unsafe__));
extern volatile unsigned int WREG3 __attribute__((__sfr__,__deprecated__,__unsafe__));
extern volatile unsigned int WREG4 __attribute__((__sfr__,__deprecated__,__unsafe__));
extern volatile unsigned int WREG5 __attribute__((__sfr__,__deprecated__,__unsafe__));
extern volatile unsigned int WREG6 __attribute__((__sfr__,__deprecated__,__unsafe__));
extern volatile unsigned int WREG7 __attribute__((__sfr__,__deprecated__,__unsafe__));
extern volatile unsigned int WREG8 __attribute__((__sfr__,__deprecated__,__unsafe__));
extern volatile unsigned int WREG9 __attribute__((__sfr__,__deprecated__,__unsafe__));
extern volatile unsigned int WREG10 __attribute__((__sfr__,__deprecated__,__unsafe__));
extern volatile unsigned int WREG11 __attribute__((__sfr__,__deprecated__,__unsafe__));
extern volatile unsigned int WREG12 __attribute__((__sfr__,__deprecated__,__unsafe__));
extern volatile unsigned int WREG13 __attribute__((__sfr__,__deprecated__,__unsafe__));
extern volatile unsigned int WREG14 __attribute__((__sfr__,__deprecated__,__unsafe__));
extern volatile unsigned int WREG15 __attribute__((__sfr__,__deprecated__,__unsafe__));
......
것은 우리가 오류 다음과 같습니다 : 여기 이 헤더의 짧은 부분
#ifndef __dsPIC30F3013__
#error "Include file does not match processor setting"
#endif
:이 때문에 처리기 derectives의 apperas
#error "Include file does not match processor setting"
우리는 아직 옵션이없는 간단한 gcc 컴파일러를 사용하고 있습니다. 우리는 pic30-gcc와 -mcpu 키를 같이 사용해야한다고 가정합니다. 그러나 우리는 qtcreator를 사용하고 있으며이 옵션을 지정하는 방법이나 컴파일러를 변경하는 방법을 알지 못합니다. pic30-coff-gcc-4.0.3 컴파일러를 시스템에 설치했습니다.
제안 사항?
'sdcc '로 컴파일 해보십시오. –
하지만 질문 - qtcreator에서 sdcc에 대한 컴파일러를 변경하는 방법은 무엇입니까? –
마이크로 프로세서에서 QT를 사용하고 있습니까? O_o ... 나는 항상 가장 간단한 방법은 makefile을 손으로 작성하는 것이라고 생각 해왔다. 그리고 어떤 도서관도 사용하지 마십시오. –