找回密码
 立即注册
查看: 99|回复: 5

求大神求助 | 已解决

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2025-09-06 08:48:01
已绑定手机

2

主题

3

回帖

30

积分

新手上路

积分
30
发表于 2025-9-5 21:37:41 | 显示全部楼层 |阅读模式
我这个代码的定时器一中断函数进不去,不知道怎么回事哎我太菜了看不出啥原因

两路红光按摩.rar

231.56 KB, 下载次数: 4

回复

使用道具 举报 送花

3

主题

1986

回帖

820

积分

等待验证会员

积分
820
发表于 2025-9-5 21:38:00 | 显示全部楼层
您好,您提到的“定时器一中断函数进不去”是一个比较常见的问题,可能涉及多个方面的原因。以下从硬件配置、中断使能、代码逻辑、寄存器设置等方面进行分析,并给出排查建议。

首先,请确认您的开发环境是否正确配置,包括但不限于:

1. 时钟源配置:确保定时器所使用的时钟源(如内部时钟、外部时钟)已正确启用并稳定。
2. 定时器初始化参数:检查定时器的预分频值、自动重载值是否合理,确保其能够产生预期的中断频率。
3. 中断使能配置:确认定时器的中断通道是否在NVIC中被正确使能,并且中断优先级设置无误。
4. 中断服务函数定义:确保中断服务函数(如TIM1IRQHandler)已正确定义,并且与定时器对应的中断向量匹配。
5. 全局中断使能:在进入主函数前,应确保全局中断已开启(如使用enableirq())。
6. 中断标志位清除:在中断处理函数中,需要及时清除相应的中断标志位,否则可能导致中断无法再次触发。

此外,建议您通过以下方式进一步排查问题:
使用调试工具(如J-Link、ST-Link等)查看定时器是否正常运行,观察计数器是否递增。
检查是否因其他中断或任务抢占导致定时器中断未被响应。
在中断服务函数中添加调试信息(如LED闪烁、串口输出),以判断是否进入中断函数。
查看是否有其他代码错误(如指针越界、内存覆盖等)影响了中断处理流程。

如果以上步骤仍无法解决问题,建议提供具体的代码片段和开发板型号,以便更准确地定位问题所在。

希望以上分析对您有所帮助,祝您早日解决问题!

[本文内容由国芯人工智能辅助生成,仅供参考]
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:539
  • 最近打卡:2025-09-14 01:07:23
已绑定手机

40

主题

2415

回帖

2466

积分

荣誉版主

积分
2466
发表于 2025-9-5 23:36:19 | 显示全部楼层
main函数里面第一行应该是P_SW2 |= 0x80,使能扩展SFR访问
尽量先初始化IO,再初始化外设,在while(1)之前 开总中断。
睁开眼睛做场梦~~~
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:527
  • 最近打卡:2025-09-13 02:12:14

5

主题

298

回帖

2447

积分

金牌会员

积分
2447
发表于 2025-9-6 02:34:13 | 显示全部楼层
void Uart1_Init(void)        //9600bps@24.000MHz
{
        SCON = 0x50;                //8位数据,可变波特率
        AUXR |= 0x40;                //定时器时钟1T模式
        AUXR &= 0xFE;                //串口1选择定时器1为波特率发生器
        TMOD &= 0x0F;                //设置定时器模式
        TL1 = 0x8F;                        //设置定时初始值
        TH1 = 0xFD;                        //设置定时初始值
        ET1 = 0;                        //禁止定时器中断
        TR1 = 1;                        //定时器1开始计时
}
你的串口用的定时器1,和你的定时器冲突了,而且还关闭中断了
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2025-09-06 08:48:01
已绑定手机

2

主题

3

回帖

30

积分

新手上路

积分
30
发表于 2025-9-6 08:48:01 | 显示全部楼层
宁阳*** 发表于 2025-9-6 02:34
void Uart1_Init(void)        //9600bps@24.000MHz
{
        SCON = 0x50;                //8位数据,可变波特率

原来是这个原因
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2025-09-06 08:48:01
已绑定手机

2

主题

3

回帖

30

积分

新手上路

积分
30
发表于 2025-9-6 09:12:37 | 显示全部楼层
晓*** 发表于 2025-9-5 23:36
main函数里面第一行应该是P_SW2 |= 0x80,使能扩展SFR访问
尽量先初始化IO,再初始化外设,在while(1)之 ...

已解决 是串口定时器冲突了谢谢了
回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-9-14 18:43 , Processed in 0.509984 second(s), 82 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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