[STM32F1] 请问下问什么设置定时器就不能进入外部中断了?

[复制链接]
1928|28
jcky001 发表于 2024-2-19 12:35 | 显示全部楼层
检查中断优先级设置,并确保外部中断的优先级高于或至少等于定时器中断。
两只袜子 发表于 2024-2-19 12:36 | 显示全部楼层
检查外部中断的触发方式(上升沿、下降沿或低电平有效)是否正确设置。如果设置不正确,那么即使外部信号存在,中断也可能不会被触发。
elephant00 发表于 2024-2-19 12:36 | 显示全部楼层
可能是硬件问题
和下土 发表于 2024-2-27 19:41 | 显示全部楼层
在定时器中断服务程序中重置了中断使能寄存器
和下土 发表于 2024-2-27 19:41 | 显示全部楼层
外部中断的开启了么?
Henryko 发表于 2024-2-29 23:07 | 显示全部楼层
你是不没有对应的中断函数
裤脚口感好 发表于 2024-3-31 00:55 | 显示全部楼层
您在主函数中开启了定时器中断(ET0=1),但是没有提供相应的定时器中断服务程序。因此,当定时器中断发生时,系统试图执行不存在的中断服务程序,可能会导致程序出错或无法进入外部中断。
裤脚口感好 发表于 2024-3-31 00:59 | 显示全部楼层
对于8051系列单片机,中断优先级通常由中断服务程序的排列顺序决定,排在前面的中断服务程序优先级更高。
裤脚口感好 发表于 2024-3-31 02:15 | 显示全部楼层
需要看看你是不是正确的定时器中断服务程序,或者在关闭定时器中断的情况下进行测试。给你一个修正后的代码示例:
#include <reg52.h> // 导入51单片机的寄存器定义

void main(void) {
    EA = 1;    // 允许中断
    EX0 = 1;   // 设定接收INT0的中断
    TMOD = 0x01; // 定时器初始化为模式1
    TH0 = 0xFF;
    TL0 = 0xF6;
    TR0 = 1;   // 启动定时器
    ET0 = 0;   // 关闭定时器中断,如果不需要定时器中断,可以设置为0

    while (1);
}

void decode(void) interrupt 0 using 2 { // 外部中断函数,内容为红外遥控器解码函数
    // 这里是红外遥控器解码的相关代码
}


在这个修正后的代码中,我将ET0设置为0,即关闭了定时器中断。这样,在主函数中就不会触发定时器中断了,从而不会影响到外部中断的执行。
Clyde011 发表于 2024-6-16 07:16 | 显示全部楼层

要把纹波电流平均分布
公羊子丹 发表于 2024-6-16 08:09 | 显示全部楼层

发射出过量的电磁干扰(EMI)
万图 发表于 2024-6-16 09:12 | 显示全部楼层

典型的转换时间大约是50ns
Uriah 发表于 2024-6-16 10:15 | 显示全部楼层

这种方法可以使散热体积和表面面积增大两倍多
帛灿灿 发表于 2024-6-16 12:11 | 显示全部楼层

负载环能以直流方式汲取能量
Bblythe 发表于 2024-6-16 13:14 | 显示全部楼层

功率开关漏极(或集电极)
周半梅 发表于 2024-6-16 15:10 | 显示全部楼层

输出整流器交流电流环路
Pulitzer 发表于 2024-6-16 16:13 | 显示全部楼层

在其他的交流电流环路都布置好后再放置
童雨竹 发表于 2024-6-16 18:09 | 显示全部楼层

任何与多条功率线相连的功率器件要尽可能紧挨在一起,以减短连线长度
Wordsworth 发表于 2024-6-16 19:12 | 显示全部楼层

工作时的电压降低了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部