STM32
直播中

算一挂

9年用户 962经验值
私信 关注
[问答]

求助,关于STM8S105全局中断的问题求解

环境是IAR 芯片stm8s105c6  没有使用库函数,而直接使用的寄存器。
      我在主函数main中先初始化系统时钟HSE 初始化了IO口和初始化了tiM1做基本的定时器。  为什么在完成这些外设初始化时,使用asm("rim"); 打开全局中断会出现问题  使用仿真单步运行,程序一致会卡在asm("rim");这里  无法往后执行,这是为什么呢?  试着去掉asm("rim");   程序就可以往后执行。

回帖(2)

李建

2024-5-15 10:24:13
去查找你代码里,哪里开了中断而没有中断处理
举报

张国厚

2024-5-15 16:56:27
在STM8S105C6芯片上使用IAR开发环境,直接使用寄存器进行操作时,如果在主函数main中初始化系统时钟、IO口和TIM1定时器后,使用asm("rim");打开全局中断会导致程序卡住,可能有以下几个原因:

1. 中断优先级配置问题:在使用全局中断之前,需要确保所有可能触发中断的外设的优先级已经正确配置。如果优先级配置不正确,可能会导致中断冲突,从而使程序卡住。

2. 中断向量表未正确初始化:在使用全局中断之前,需要确保中断向量表已经正确初始化。如果中断向量表未正确初始化,可能会导致程序在执行中断服务例程时出现问题。

3. 中断服务例程未正确实现:在使用全局中断之前,需要确保所有可能触发中断的外设的中断服务例程已经正确实现。如果中断服务例程未正确实现,可能会导致程序在执行中断服务例程时出现问题。

4. 中断使能状态问题:在使用全局中断之前,需要确保所有可能触发中断的外设的中断使能状态已经正确设置。如果中断使能状态未正确设置,可能会导致程序在执行中断服务例程时出现问题。

5. 编译器或开发环境问题:有时候,编译器或开发环境的设置可能导致程序在执行某些指令时出现问题。可以尝试更新编译器或开发环境,或者查看相关的文档和支持论坛,看是否有其他人遇到了类似的问题。

为了解决这个问题,你可以尝试以下步骤:

1. 检查中断优先级配置,确保所有可能触发中断的外设的优先级已经正确配置。

2. 检查中断向量表是否已经正确初始化。

3. 检查所有可能触发中断的外设的中断服务例程是否已经正确实现。

4. 检查所有可能触发中断的外设的中断使能状态是否已经正确设置。

5. 尝试更新编译器或开发环境,或者查看相关的文档和支持论坛,看是否有其他人遇到了类似的问题。

希望这些建议能帮助你解决问题。如果问题仍然存在,请提供更多详细信息,以便进一步分析。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分