我是使用基於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