Моя программа содержит несколько глобальных переменных, значения которых устанавливаются во время выполнения процедуры обработки прерывания (USCI_A0_ISR ()).
После выполнения USCI_A0_ISR () глобальные переменные будут содержать назначенное значениеили будет установлен обратно в void / 0. ????
//Global variables
int ptr = 0;
char rxBuffer[16];
int flag = -1;
int check[2];
void __set_flag(void)
{
if (strcmp(rxBuffer,"OK") == 0) flag = 0;
else if (strcmp(rxBuffer,"CONNECT") == 0) flag = 1;
else if (strcmp(rxBuffer,"NO CARRIER") == 0) flag = 3;
else if (strcmp(rxBuffer,"ERROR") == 0) flag = 4;
}
void __GSM_client(void)
{
while (flag == -1);
if (flag == 0) check[0] = buflen(rxBuffer);
}
void main(void)
{
__Buffer_init();
__low_level_init(); //WDT
__UART0_init(); //UART
__bis_SR_register(GIE); //interrupts enabled
__delay_cycles(1000); // wait till UART intial
__GSM_client();
__no_operation(); // For debugger
}
#pragma vector=USCI_A0_VECTOR
__interrupt void USCI_A0_ISR(void)
{
char byte;
while (!(UCA0IFG&UCTXIFG));
byte= UCA0RXBUF;
UCA0TXBUF = byte;
if (byte == '\r') {
//push_char(byte);
ptr = 0;
__set_flag();
//__Buffer_init();
}
else{
push_char(byte);
}
}
Вот фрагмент кода того, что я делаю.Я устанавливаю "flag"
на основе полученного ответа.Когда я вижу представление регистра в Code Composer Studio, значение "flag"
устанавливается правильно, но если попытаться использовать значение "flag"
, в другом месте значение "flag "
не отражается.
Любые указатели наПонятия подпрограммы обработки прерываний или когда оценены лазейки в моем методе кодирования Спасибо заранее AK