У меня есть МК CH582M и мне нужно использовать прерывания. К сожалению, в моем коде прерывания не заработали. Привожу исходный код:
Кто-нибудь может подсказать, что не так? В функцию прерывания не заходит, на пине уровень меняется (проверял пулом), основной код работает. Примеров работы с прерываниями от GPIO для данного МК не нашел.
Код:
#define INT_PIN GPIO_Pin_18
int main()
{
SetSysClock(CLK_SOURCE_PLL_80MHz);
// LED init
GPIOB_ModeCfg(GPIO_Pin_4, GPIO_ModeOut_PP_20mA);
GPIOB_SetBits(GPIO_Pin_4);
// Input GPIO init
GPIOB_ModeCfg(INT_PIN, GPIO_ModeIN_PU);
GPIOB_ITModeCfg(INT_PIN, GPIO_ITMode_FallEdge);
// Interrupt init
PFIC_ClearPendingIRQ(GPIO_B_IRQn);
PFIC_EnableIRQ(GPIO_B_IRQn);
while(1);
}
// Interrupt handler
__INTERRUPT __HIGH_CODE void GPIOB_IRQHandler()
{
GPIOB_ClearITFlagBit(INT_PIN);
}
Кто-нибудь может подсказать, что не так? В функцию прерывания не заходит, на пине уровень меняется (проверял пулом), основной код работает. Примеров работы с прерываниями от GPIO для данного МК не нашел.