stm32
一、外部中断
只要我们使用到外部中断,就必须打开 SYSCFG 时钟。
第一个函数是判断某个中断线上的中断是否发生(标志位是否置位):
ITStatus EXTI_GetITStatus(uint32_t EXTI_Line);
这个函数一般使用在中断服务函数的开头判断中断是否发生。另一个函数是清除某个中断线上的中断标志位:
void EXTI_ClearITPendingBit(uint32_t EXTI_Line);
二、独立看门狗
1.关键字寄存器 IWDG_KR。
在关键字寄存器(IWDG_KR)中写入 0xCCCC,开始启用独立看门狗;此时计数器开始从其复位值 0xFFF 递减计数。当计数器计数到末尾 0x000 时,会产生一个复位信号(IWDG_RESET)。
2.预分频寄存器(IWDG_PR)。该寄存器用来设置看门狗时钟的分频系数
3.重装载寄存器 IWDG_RLR。该寄存器用来保存重装载到计数器中的值。
三、窗口看门狗
1.控制寄存器(WWDG_CR)。
这里我们的 WWDG_CR 只有低八位有效,T[6:0]用来存储看门狗的计数器值,随时更新的,每个窗口看门狗计数周期(4096×2^ WDGTB)减 1。
2.配置寄存器(WWDG_CFR)。
该位中的 EWI 是提前唤醒中断,也就是在快要产生复位的前一段时间(T[6:0]=0X40)来提醒我们,需要进行喂狗了,否则将复位!
3.状态寄存器(WWDG_SR),该寄存器用来记录当前是否有提前唤醒的标志。
WWDG 不同于 IWDG,IWDG 有自己独立的 32Khz 时钟,不存在使能问题。而 WWDG使用的是 PCLK1 的时钟,需要先使能时钟。
方法是: RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG, ENABLE); // WWDG 时钟使能
浙公网安备 33010602011771号