BASIC4MCU | 질문게시판 | 인터럽트와 기초 C언어에 대한 질문 드립니다.
페이지 정보
작성자 몽규 작성일2018-02-04 16:58 조회4,962회 댓글0건본문
IAR HAL 드라이버 환경에서 STM32f103 보드를 사용하고 있습니다.
다음과 같이 IR신호를 받기위해 세팅한 후에
<main.c>
typedef struct RemByteStr
{
unsigned short head ;
unsigned char data ;
unsigned char inv ;
} RemByte ;union RemoconData
{
unsigned long fData ;
RemByte rByte ;
} remData ;--------------------------------
아래 main문에서와 같이 리모컨 입력을 인식하고 While 문에서 다음과 같은 Auto(); 라는 함수를 돌리고있습니다.
int main(void)
{IR_Init();
int bret ;Timer3_Init();
while (1)
{bret = IR_Check() ;
if(!bret) continue ;Auto();
}
}
void Autot(){ //자동 스텝 이동 모드 - 리모컨 입력(1)을 5번 누르면 Auto가 5가 되어 for문이 실행 됩니다.
if(remData.rByte.data==1){
Auto++;
if(Auto>=5){
Target_CNT=0;
for(ii=0;ii<=1600;ii+=40){Delay_ms(1000);
Target_CNT=ii;
if(Curr_CNT!=Target_CNT){MT();} //MT는 스텝 모터를 움직이는 함수입니다.
if(ii==1600)ii=0; //for문 무한 반복
}
}
}
}이러한 상황에서 for문을 나가기 위해 인터럽트를 사용하고 싶습니다. 제생각엔
<stm32fxx_it.c> 의
void TIM3_IRQHandler(void)
{
HAL_TIM_IRQHandler(&TimHandle3);
timerCount3++ ;
}안에 위의 main 함수처럼 리모컨 입력을 받을 수 있게 하여 특정 입력이 들어오면 Auto=0이 되게 하여 for문을 중단 시킬수 있지 않을까 생각하는데
그러려면 main.c에서의 함수를 사용하기 위해 extern 변수를 사용 하는 것이 맞는지 궁금합니다.
만약 아니라면 인터럽트가 아니더라도 for문을 특정 키 입력시에 나가는 방법에 어떤것이 있는지 질문 드립니다. 감사합니다.
댓글 0
조회수 4,962등록된 댓글이 없습니다.