我正在开发一个新项目,我想编写自己的协议。因此,我必须将变量(从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);
}
必要的变量是转换值,主文件中的内容......我无法转换......我知道这是一个非常简单的问题...但我不能现在解决它..
感谢您的帮助! :)
答案 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中将其声明为外部(无论是直接还是通过头文件是您的选择 - 我使用的头文件是优选的它允许编译器执行类型检查。