1.初始化栈 2.初始化堆 3.实现异常向量表 4.处理各个异常的代码 其中复位异常中 ----- 初始化一些基本硬件(时钟,SRAM,FLASH...),调用主函数 |
消抖的代码 if(按下){ //延时10ms if(按下){ //真实按键事件 } } |
typedef struct { uint32_t EXTI_Line; /*!< 中断线 @ref EXTI_Lines */ EXTIMode_TypeDef EXTI_Mode; /*!< 中断or事件 @ref EXTIMode_TypeDef */ EXTITrigger_TypeDef EXTI_Trigger; /*!< 触发边沿 @ref EXTITrigger_TypeDef */ FunctionalState EXTI_LineCmd; /*!< 使能/禁止 ENABLE or DISABLE */ }EXTI_InitTypeDef; |
typedef struct { uint8_t NVIC_IRQChannel; /*!< 中断通道(中断号) */ uint8_t NVIC_IRQChannelPreemptionPriority; /*!< 抢占优先级(不能超过分配的位数) */ uint8_t NVIC_IRQChannelSubPriority; /*!< 响应优先级(不能超过分配的位数) */ FunctionalState NVIC_IRQChannelCmd; /*!< 使能/禁止 ENABLE or DISABLE */ } NVIC_InitTypeDef; |
void EXTI0_IRQHandler(void) { //.......... //清除中断标识 EXTI_ClearITPendingBit(EXTI_Line0);// } |
更多回帖