stm32上升沿和下降沿
时间: 2023-11-13 21:51:23 浏览: 144
stm32 外部上升沿触发ADC采集
4星 · 用户满意度95%
引用[1]:在STM32单片机中,每一个GPIO都可以被设置为外部中断输入。根据引脚序号的不同,可以将外部中断分为不同的组,共有16组。每一组中同一个时刻只能有一个中断源工作,所以STM32单片机最多允许同时有16个外部中断。[1]
引用[2]:在D触发器中,约定的时钟是上升沿敏感(postedge),而重置(reset)是下降沿敏感(negedge)。这是一种约定俗称的规定。如果时钟改成下降沿敏感,就是反向D触发器。在绝大多数场景下,上升沿和下降沿互换是没有问题的,但在一些特殊场景下可能不建议使用。同时,建议尽量不要使用双沿触发,即对于时钟的触发最好同步设置为上升沿或下降沿触发。[2]
引用[3]:在使用STM32F4的UCOSIII操作系统中,有人发现当触发了相应的外部输入中断时,会多次进入外部中断处理函数。通过检查变量的变化情况,发现每次外部中断输入,变量会有多次变化。为了解决这个问题,他们改变了思路,不再使用外部中断检测上升沿或下降沿,而是采用检测变量前后变化的方式来检测上升沿或下降沿。具体的代码如下所示:[3]
```c
while(1) {
//检测外部下降沿
switch_flag_pa1 = GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_1);
if((switch_flag_pa1 == 0) && (switch_flag_old_pa1 == 1)) {
//处理逻辑
}
switch_flag_old_pa1 = switch_flag_pa1;
//检测外部上升沿
switch_flag_pb1 = GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_1);
if((switch_flag_pb1 == 1) && (switch_flag_old_pb1 == 0)) {
//处理逻辑
}
switch_flag_old_pb1 = switch_flag_pb1;
}
```
这段代码通过检测变量的前后变化来判断是否发生了上升沿或下降沿。如果变量在前后两次读取中发生了变化,就说明发生了相应的边沿触发事件。[3]
阅读全文