fun0 = Led1_on;
fun1 = Led2_off;
Вызов функции через указатель
Пишу:
void Led1_on(void); // прототип
void Led2_off(void); // прототип
void (*fun0)(void); // указатель
void (*fun1)(void); // указатель
int main(void)
{
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph, ENABLE);
fun0 = &Led1_on;
fun1 = &Led2_off;
/* Configure PA2 in output pushpull mode */ // этот блок пропускаю
while (1)
{
//Led1_on(); // этот вариант работает
//Led2_off(); // этот вариант работает
(*fun0); // а этот нет :(
(*fun1); // а этот нет :(
}
}
void Led1_on(void)
{
GPIOA->BSRRL = GPIO_Pin_2; // Включили светодиод
}
void Led2_off(void)
{
GPIOA->BSRRH = GPIO_Pin_2; // Выключили светодиод
}
Компилятор ошибок НЕ выдаёт... :(
Это потому, что не ты имеешь CODEBLOC и STM32F2, а они имеют тебя.
Спасибо. Очень ценно!
Что это - (*fun0); и это - (*fun1);, по твоему? А надо fun0(); и fun1();
Все просто. Вы пишите:
Код:
fun0 = &Led1_on;
fun1 = &Led2_off;
fun1 = &Led2_off;
Код:
Проверил, шо так, шо так - работает одинаково. :) (компилятор - gcc)
Ашипк была в том, что вместо (*fun0)() написал (*fun0).