我有当前的代码,我试图添加一个toggle_speed()函数,这个函数将在主函数的if语句中被调用。else if (button_pushed() == 2)
. 我试图完成的是,当按钮被按下时,它的速度增加了一倍,但如果它被再次按下,速度将恢复到正常。这是我的代码,所有的帮助是感激的,IM相当新的。我们正在编程到AVR与ATmega324A工作。基本上,我需要帮助构建一个有效的toggle_speed函数,因为我所做的是最certai。
你基本上想要这样的东西。
volatile uint32_t background_speed, alien_speed, projectile_speed;
...
void toggle_speed(void){
static int doublespeedactive;
doublespeedactive = !doublespeedactive;
if (doublespeedactive)
{
background_speed = 600;
alien_speed = 400;
projectile_speed = 300;
}
else
{
background_speed = 600 / 2;
alien_speed = 400 / 2;
projectile_speed = 300 / 2;
}
}
doublespeedactive
是一个状态变量。如果它是1,那么双倍速度是激活的,如果它是0,那么正常速度是激活的。
doublespeedactive = !doublespeedactive;
切换值的 doublespeedactive
从1到0或从0到1。
阅读关于 !
运营商。
然而你不叫 toggle_speed
的任何地方,所以这个答案可能不完整。
请注意 volatile
关键字是必要的,如果你想调用 toogle_speed
从一个ISR。