Я новичок в плате stm32f427 и копаю немного глубже.
Я думаю, что в Интернете, особенно stackoverflow, люди вроде бы согласились с этим, просто пример:
void EXTI9_5_IRQHandler(void) {
/* Make sure that interrupt flag is set */
if (EXTI_GetITStatus(EXTI_Line5) != RESET) {
/* Do your stuff when PB5 is changed */
/* Clear interrupt flag */
EXTI_ClearITPendingBit(EXTI_Line5);
}
}
Этот обработчик, как все объяснили, должен делать все, что вам нужно внутри, и должен сбрасывать флаг ожидания при выходе из прерывания, и люди утверждают, что бит ожидания является флагом прерывания.
Однако, в моем случае и во многих случаях, таких как здесь , они сначала очищают этот бит, но многие люди утверждают, что выполнение этого убьет вашу функциональность прерывания, так как вы очистите бит, как только получите его , Однако это не так, и, более того, это совершенно противоположно. Если я сначала не сделаю очистку, мой код никогда не будет работать.
Я хочу выяснить причину этого. Может ли кто-нибудь любезно объяснить?