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