[STM32F1] 触发不稳定

[复制链接]
232|52
手机看帖
扫描二维码
随时随地手机跟帖
chuxh|  楼主 | 2022-4-7 19:47 | 显示全部楼层 |阅读模式
STM32F1短路断路针脚实现外部中断,触发不稳定

使用特权

评论回复
juventus9554| | 2022-4-7 19:57 | 显示全部楼层
楼主详细说说怎么回事啊,这么说太笼统了

使用特权

评论回复
chuxh|  楼主 | 2022-4-7 20:06 | 显示全部楼层
因为产品需要,要短路2个针脚,一个针脚设置为推挽输出,50MZ。一个针脚设置为浮空输入,并设置为捕捉上升沿和下降沿的外部中断位。然后用杜邦线将两个针脚插一起。这个时候应该是触发上升沿,然后拔掉一个针脚,应该是触发下降沿的。结果非常不好用。有时拔掉以后,也不触发下降沿。有时插上不触发上升沿,有时杜邦线活动一下,就不断的进中断

使用特权

评论回复
jiajs| | 2022-4-7 20:10 | 显示全部楼层
加软件消抖了吗

使用特权

评论回复
chuxh|  楼主 | 2022-4-7 20:12 | 显示全部楼层
已经加了软件消抖。

使用特权

评论回复
llljh| | 2022-4-7 20:14 | 显示全部楼层

楼主程序可以公开吗?贴程序看下吧,这么说看不出什么原因

使用特权

评论回复
chuxh|  楼主 | 2022-4-7 20:17 | 显示全部楼层
#define LOCK_EXIT_GPIO_CLK                                         RCC_APB2Periph_GPIOA

#define LOCK_EXIT_GPIO_PORT                                         GPIOA

#define LOCK_EXIT_GPIO_PIN                                         GPIO_Pin_4

#define LOCK_EXIT_GPIO_PORTSOURCE          GPIO_PortSourceGPIOA

#define LOCK_EXIT_GPIO_PINSOURCE          GPIO_PinSource4

#define LOCK_EXIT_LINE                                                  EXTI_Line4

#define LOCK_EXIT_IRQN                                                        EXTI4_IRQn

#define LOCK_EXIT_IRQHANDLER                                EXTI4_IRQHandler



#define LOCK_STA GPIO_ReadInputDataBit(LOCK_EXIT_GPIO_PORT, LOCK_EXIT_GPIO_PIN)



#define LOCK_OUT_GPIO_CLK                                         RCC_APB2Periph_GPIOA

#define LOCK_OUT_GPIO_PORT                                 GPIOA

#define LOCK_OUT_GPIO_PIN                                         GPIO_Pin_5

使用特权

评论回复
chuxh|  楼主 | 2022-4-7 20:19 | 显示全部楼层
lock_gpio.GPIO_Pin = LOCK_EXIT_GPIO_PIN;

        lock_gpio.GPIO_Mode = GPIO_Mode_IN_FLOATING;

        GPIO_Init(LOCK_EXIT_GPIO_PORT, &lock_gpio);

      

        lock_gpio.GPIO_Pin = LOCK_OUT_GPIO_PIN;   

        lock_gpio.GPIO_Mode = GPIO_Mode_Out_PP;      

        lock_gpio.GPIO_Speed = GPIO_Speed_50MHz;

        GPIO_Init(LOCK_OUT_GPIO_PORT, &lock_gpio);



        RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO , ENABLE);

      

        GPIO_EXTILineConfig(LOCK_EXIT_GPIO_PORTSOURCE, LOCK_EXIT_GPIO_PINSOURCE);

        lock_exti.EXTI_Line = LOCK_EXIT_LINE;

        lock_exti.EXTI_Mode = EXTI_Mode_Interrupt;

        lock_exti.EXTI_Trigger = EXTI_Trigger_Rising_Falling;

        lock_exti.EXTI_LineCmd = ENABLE;

      

        EXTI_Init(&lock_exti);

      

        GPIO_SetBits(LOCK_OUT_GPIO_PORT, LOCK_OUT_GPIO_PIN);

使用特权

评论回复
chuxh|  楼主 | 2022-4-7 20:21 | 显示全部楼层
char lockStatus;

char isUnLock;

void LOCK_EXIT_IRQHANDLER(void)

{

         if(EXTI_GetITStatus(LOCK_EXIT_LINE) != RESET){

                        

                 if(LOCK_STA != lockStatus){

                                delay_ms(10);

                         if(LOCK_STA != lockStatus){

                                if(!isUnLock){

                                        lockStatus = LOCK_STA;

                                        isUnLock = 1;

                                 }

                         }

                 }

         }

         delay_ms(100);

         EXTI_ClearITPendingBit(LOCK_EXIT_LINE);

}

使用特权

评论回复
chuxh|  楼主 | 2022-4-7 20:24 | 显示全部楼层
我的代码有问题吗?如果没问题,那我是不是要加电容解决?

使用特权

评论回复
renyaq| | 2022-4-7 20:29 | 显示全部楼层
加多少,怎么加合适?

使用特权

评论回复
chuxh|  楼主 | 2022-4-7 20:32 | 显示全部楼层
如果不建议这种方式,那怎么做能判断一个线路是通路还是短路呢?

使用特权

评论回复
spark周| | 2022-4-7 20:34 | 显示全部楼层
两个管脚不能直接连,用个1~5K的电阻

使用特权

评论回复
chenjun89| | 2022-4-7 20:35 | 显示全部楼层
怎么个不稳定法?

使用特权

评论回复
wyjie| | 2022-4-7 20:36 | 显示全部楼层
当然你可以直接杜邦线连

使用特权

评论回复
llljh| | 2022-4-7 20:38 | 显示全部楼层
不过你就要多烧香估计可行,输出用上拉,输入用下拉,80%的几率是高

使用特权

评论回复
pengf| | 2022-4-7 20:41 | 显示全部楼层
检测到H马上翻转入下降检测,不需要电容,用“滴答”1mS为基准延时,50Mhz不现实,会成神经病的

使用特权

评论回复
heweibig| | 2022-4-7 20:43 | 显示全部楼层
什么叫插上上升沿,拔下下降沿?

使用特权

评论回复
chuxh|  楼主 | 2022-4-7 20:51 | 显示全部楼层
你那个配置为输入的管脚没接外部电路的话,电平就是不定的

使用特权

评论回复
chuxh|  楼主 | 2022-4-7 20:53 | 显示全部楼层
没接外部电路,难道不能使用stm32的针脚供电,必须由外部供电?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则