发 帖  
张飞软硬开源基于STM32 BLDC直流无刷电机驱动器开发视频套件, 👉戳此立抢👈
[问答] 关于STC8A8K64S4A12开发板外部中断问题
248 单片机 外部中断
分享
买了一块 STC8A8K64S4A12 开发板测试外部中断,感觉是不是芯片有些问题?
如图,图片左边是串口输出信息,按理来说 输出应该是 0 和 1 交替输出,
连续输出 1 或者 0 都是不对的,但是实际测试就是有连续输出1,有时候连续输出0,为什么会这样呢?

我是用一个按键测试外部中断1,引脚默认是高电平,
按键按下,把引脚拉低,应该触发下降沿,应该输出 0;
松开按键,引脚恢复高电平,应该触发上升沿,应该输出 1;

代码如下:

void INT1_Init(void)
{
     IE1 = 0;          //将INT1中断请求标志位清"0"
     EX1 = 1;          //使能INT1中断允许位
    IT1 = 0;          //选择INT1为上升沿或下降沿触发方式   
}

/**************************************
功能描述:外部中断服务程序
入口参数:无
返回值:无
***************************************/
void INT1_int (void) interrupt 2
{
     IF (1 == KEY) // 上升沿
    {
         RED_LED = 1;
         Uart1_Send_String("1");
     }
     else          // 下降沿
    {
         RED_LED = 0;
         Uart1_Send_String("0");
     }
}


再补充一些信息:在我实际应用中,板子有把低压变成高压,接了负载才容易会出现这种奇怪的现象,
不接负载就基本没什么问题,我在想是不是电路板中有大电流,或者芯片中的电流过大造成芯片不正常了

这个问题我已经在软件层面做了处理,保证业务逻辑正常。
现在只是好奇为什么硬件会出现这种情况,看看有没有哪位大侠知道原因。
9.png





0
2019-5-23 10:02:37   评论 分享淘帖 邀请回答
9个回答
按键按下有接触不良问题,造成前一个中断没处理完,后一个中断又来了的问题,所以出现了你提的问题。
2019-5-23 10:03:21 评论

举报

有这种可能,不过在我的实际应用中,奇怪的现象是,我并没有按键,也会连续来一些上升沿中断,按理只有按键按下才会拉低引脚,所以我想不明白为什么引脚会自己有一个瞬间拉低又恢复高电平的动作。
2019-5-23 10:03:38 评论

举报

按键有机械触点,接通、断开时会有抖动,出现多次信号引起中断。
如果怀疑MCU的中断又问题,你可以用信号来测试,比如用100KHZ的信号发1000000个脉冲送中断,中断函数里计数,然后显示比较。我经常如此测各家MCU的中断。
或者你中断口对地接104电容,IO串100欧姆电阻接按键(串电阻是避免电容放电很快烧坏按键)。
2019-5-23 10:05:08 评论

举报

“在我实际应用中,板子有把低压变成高压,接了负载才容易会出现这种奇怪的现象”考虑到这种情况,干扰可能从电源引入,最好把两个电源隔离。
2019-5-23 10:05:34 评论

举报

感谢建议!回头有空测试一下它的中断
2019-5-23 10:05:43 评论

举报

下一版硬件确实要考虑一下电源的隔离...  
2019-5-23 10:08:58 评论

举报

用按键做中断源时,是需要做防抖,消抖动处理的。
2019-5-23 11:04:49 评论

举报


用按键状态机消除抖动
2019-5-23 12:32:31 评论

举报

你没有做按键去抖动处理啊!抖动会产生多次中断的!你可以看一下串口输出的数的频率,是不是一按下就会有一串的的数字输出啊

撰写答案

你正在撰写答案

如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。

高级模式
您需要登录后才可以回帖 登录 | 注册

我要提问
课程
    关闭

    站长推荐 上一条 /8 下一条

    快速回复 返回顶部 返回列表