STM32
直播中

康桃花

7年用户 925经验值
私信 关注
[问答]

用STM8S003f3p6的PD3和PB5做外部中断,仿真关掉后,PD3一直唤醒不了的原因?

我用STM8S003f3p6的PD3和PB5做外部中断,下降沿触发,用来唤醒睡眠,在仿真的状态下,没有问题,两个都可以唤醒,仿真关掉后,芯片在工作的状态下,只有PB5可以唤醒,PD3不管怎么搞,都唤醒不了,有没有哪位朋友遇到过这种问题

回帖(2)

王超

2024-5-13 15:05:13
中断触发开了没有  寄存器配置 重新开一下 。


  •   //KEY1 PD3
  •   PD_DDR  = ~0x08;  //PC5 PC6为输入
  •   PD_CR1 |= 0x08;  //PC5 PC6为上拉输入
  •   PD_CR2 |= 0x08;   //外部中断触发



举报

张超

2024-5-13 18:07:46
STM8S003F3P6是一款基于8051内核的8位微控制器,具有多种功能和外设。在您的问题中,您提到使用PD3和PB5作为外部中断,以下降沿触发的方式唤醒睡眠状态。在仿真状态下,两个引脚都可以正常唤醒,但在实际硬件中,只有PB5可以唤醒,而PD3无法唤醒。这种情况可能有以下几个原因:

1. 硬件连接问题:请检查PD3引脚的硬件连接是否正确。确保PD3引脚与外部中断源之间的连接没有问题,例如焊接、跳线等。

2. 引脚配置问题:请检查PD3引脚的配置是否正确。在STM8S003F3P6中,需要配置PD3引脚为外部中断功能,并设置触发方式为下降沿。请参考STM8S003F3P6的数据手册,确保PD3引脚的配置正确。

3. 中断优先级问题:STM8S003F3P6支持中断优先级设置。如果PD3和PB5的中断优先级设置不当,可能导致PD3的中断请求被PB5的中断请求覆盖。请检查PD3和PB5的中断优先级设置,确保PD3的优先级足够高,以便在触发时能够被正确处理。

4. 中断使能问题:请确保PD3的外部中断使能位已经设置。在STM8S003F3P6中,需要设置相应的寄存器位以使能外部中断。请检查您的代码,确保PD3的中断使能位已经正确设置。

5. 电源和时钟问题:STM8S003F3P6的电源和时钟设置可能影响外部中断的触发。请检查您的电源和时钟配置,确保它们满足STM8S003F3P6的工作要求。

6. 软件问题:请检查您的中断服务程序(ISR)是否正确处理了PD3的中断请求。确保在ISR中正确清除了PD3的中断标志,并执行了相应的唤醒操作。

7. 外部干扰问题:在实际硬件中,可能存在外部干扰导致PD3引脚的信号不稳定。请检查您的电路板布局和屏蔽,以减少外部干扰的影响。

8. 仿真与实际硬件差异:仿真软件可能无法完全模拟STM8S003F3P6的所有特性,导致在仿真中表现正常,而在实际硬件中出现问题。请仔细检查您的硬件设计和代码,确保它们符合STM8S003F3P6的规格要求。

综上所述,要解决PD3无法唤醒的问题,需要从硬件连接、引脚配置、中断优先级、中断使能、电源和时钟设置、软件处理、外部干扰和仿真与实际硬件差异等方面进行排查和调整。希望这些建议能帮助您解决问题。
举报

更多回帖

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