如何将变量从main.c转换为另一个文件(中断处理程序)

时间:2014-08-15 09:34:10

标签: c variables embedded global

我正在开发一个新项目,我想编写自己的协议。因此,我必须将变量(从main.c)转换为中断处理程序文件。

这是我的IRQHandler.h文件:

#include <stdlib.h>
#include <stdio.h>
#include <string.h>

#ifndef stm32f4xx_EXTI0_IRQHAndler_H 
#define stm32f4xx_EXTI0_IRQHAndler_H 
void EXTI0_IRQHandler(void);
#endif

这是我的IRQHandler.C文件:

    void EXTI0_IRQHandler(void)
{
  if(GPIOA->IDR & 0x0001){

        USART_SendData(USART1, ConvertedValue);

              // GPIO_ToggleBits(GPIOD, GPIO_Pin_12);

    EXTI_ClearFlag(EXTI_Line0);
    // EXTI_ClearITPendingBit(EXTI_Line0);
  }

  EXTI_ClearITPendingBit(EXTI_Line0);
}

必要的变量是转换值,主文件中的内容......我无法转换......我知道这是一个非常简单的问题...但我不能现在解决它..

感谢您的帮助! :)

1 个答案:

答案 0 :(得分:2)

在IRQHandler.c中

#include "IRQHandler.h"

volatile uint8_t ConvertedValue ;

void EXTI0_IRQHandler(void)
{
    ...
}

然后用:

创建IRQHandler.h
#if !defined IRQHandler_INCLUDE
#define IRQHandler_INCLUDE

extern volatile uint8_t ConvertedValue ;

#endif

然后在main.c

#include "IRQHandler.h"

int main()
{
    ConvertedValue = getValue() ; // or whatever - Converted value is visible/accessible here.
}

当然,您可以在main.c中定义ConveretedValue并在IRQHandler.c中将其声明为外部(无论是直接还是通过头文件是您的选择 - 我使用的头文件是优选的它允许编译器执行类型检查。