我是使用基于ARM Cortex M3的STM32f100RB的新手。我试图使用递归来处理GPIO输入,但它没有工作。任何人都可以告诉我为什么? 代码如下。 它应该设置GPIOc引脚9,当GPIOa引脚0是1.但它只是不工作..我可以使用递归来处理GPIO吗?
我不知道我是否可以发布这样的问题。如果它不正确,让我知道,谢谢。
void detect_input(void);
void main()
{
init_ports();
detect_input();
while(1)
{
GPIO_WriteBit(GPIOC, GPIO_Pin_9, Bit_SET);//turn on the green led
}
}
void detect_input()
{
if(!GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0))
{
detect_input();
}
}
这可能是一个坏主意,因为嵌入式系统没有太多的堆栈,并且你可以很容易地导致堆栈溢出这样的代码。 – 2013-04-21 11:24:54
谢谢! @Joachim Pileborg它一定是原因。 – 2013-04-21 11:40:35
嵌入或不嵌入,如果没有输入,你的代码会自行进入* infinity *,所以它基本上是一个非常糟糕的主意。我会考虑使用一个中断引脚,然后代码不需要做任何事情,直到发生一些输入,它可以花费所有时间来完成其他事情。 – 2013-05-02 09:17:02