我最近开始着手编写 AVR 微控制器,以此来提高我的 C 编程能力。现在我正在尝试检查两个按钮的状态,这是我在 main.c 文件的开头所做的。我将它们放入一个单独的 C 文件中,并尝试调用此函数。
我有两个问题:
第一个与头文件和 .c 文件有关。我已经阅读了几个关于如何编写头文件并链接它们的示例,但这对我来说似乎违反直觉。头文件调用对应的c文件中的函数,对应的c文件和主文件都包含头文件。头文件如何调用.c文件中的函数但该c文件必须包含头文件?
第二个问题是关于在结构中引用变量。我已经按照示例制作了一个结构,但我不确定如何在 main.c 文件中调用它。我的代码如下:
这是我的头文件:
//Check_Touch_Inputs.h
#ifndef Check_Touch_Inputs_H_
#define Check_Touch_Inputs_H_
int Check_Touch_Inputs(uint8_t topPadState, bottomPadState);
#endif
这是我对应的 C 文件:
//Check_Touch_Inputs.c
#include <avr/io.h>
#include "Check_Touch_Inputs.h"
struct touchPads{
uint8_t topPadState, bottomPadState;
}
struct touch Pads padStates(){
struct touchPads result;
if (PINC & 1<<PC1)
{
result.topPadState = 1;
}
else
{
result.topPadState = 0;
}
if (PINC & 1<<PC3)
{
result.bottomPadState = 1;
}
else
{
result.bottomPadState = 0;
}
return result;
}
最后,这是我在主文件中返回按钮状态的尝试。我知道这是错误的并且失败了:
uint8_t topPadState = Check_Touch_Inputs(topPadState);
uint8_t bottomPadState = Check_Touch_Inputs(bottomPadState);
非常感谢您的帮助。抱歉,如果这些是初学者问题。这些问题可能已经得到解答,但我没有遇到真正满足我理解的答案。