Yue*_*ang 1 c embedded stm32 gpio
我是使用基于ARM Cortex M3的STM32f100RB的新手.我试图使用递归来处理GPIO输入,但它不起作用.任何人都可以告诉我为什么?代码如下.它应该设置GPIOc引脚9,当GPIOa引脚0为1.但它只是不起作用..
我不确定我是否可以发布这样的问题.如果不合适,请告诉我.谢谢.
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();
}
}
Run Code Online (Sandbox Code Playgroud)
使用您的代码,您可能会得到一个stackoverflow.
正如我所看到的,在你的代码中,如果没有输入,那么你将调用该函数detect_input(),并且没有其他停止条件.因此,根据使用的频率和堆栈大小,您将使用所有允许的堆栈内存.
因此,这一般不是一个好主意.
对于这个简单的情况,你应该使用简单的while循环:
void detect_input() {
while(!GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0));
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,您将在收到输入时退出循环.
| 归档时间: |
|
| 查看次数: |
441 次 |
| 最近记录: |