STM32
直播中

李丽

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

systick中断打开有程序不执行了的原因?

void systick_config(void)
{
        /* SystemFrequency / 1000    1msÖжÏÒ»´Î
         * SystemFrequency / 100000         10usÖжÏÒ»´Î
         * SystemFrequency / 1000000 1usÖжÏÒ»´Î
         */
        if (SysTick_Config(SystemCoreClock / 1000))                 // ST3.5.0¿â°æ±¾
        {
                /* Capture error */
                while (1);
        }
                // ¹Ø±ÕµÎ´ð¶¨Ê±Æ÷  
        //SysTick->CTRL  = ~ SysTick_CTRL_ENABLE_Msk;
}
int main(void)
{  
        delay_init();         
  NVIC_Configuration();            
  usart_Init();         
  GPIO_config ();        
        GT811_RA8875_Reset();
        LCD_Initializtion();
        LCD_TEST();        
        GT811_Init();        
        systick_config();
        while(1)
        {chumo();}
}

以上是部分程序,systick_config(void)是打开systick中断,chumo();是一个触摸屏感应程序,奇怪的是只有屏蔽掉systick_config();触摸屏才能感应,也就是能触发触摸屏,打开systick中断就不能触发触摸屏,但是一直反复进入systick中断,请问只是说明原因,是不是systick中断太快了,触摸屏来不及反应。谢谢。


回帖(2)

夏日余晖

2024-5-10 17:09:46
SysTick中断打开但程序不执行可能有多种原因。以下是一些可能的原因和解决方法:

SysTick配置问题:首先,检查SysTick的配置是否正确。确保SysTick定时器的加载值、时钟源选择和中断使能等参数已正确设置。如果配置不正确,可能导致定时器无法正常工作或中断无法触发。
中断优先级冲突:如果系统中存在其他中断,并且这些中断的优先级与SysTick中断相同或更高,它们可能会抢占SysTick中断的处理器资源,导致SysTick中断无法执行。可以检查系统中其他中断的优先级设置,并调整它们以确保SysTick中断具有足够的优先级。
中断服务程序问题:SysTick中断服务程序(ISR)中的代码可能存在错误或异常,导致程序无法正常执行。可以检查ISR中的代码,并确保其逻辑正确且没有死循环或异常。
硬件问题:在某些情况下,硬件故障或损坏可能导致SysTick定时器无法正常工作。例如,如果处理器时钟源存在问题,SysTick定时器可能无法正确计时。此时,需要检查硬件连接和状态,并尝试更换可能损坏的部件。
其他软件问题:其他软件问题,如内存泄漏、堆栈溢出等,也可能导致SysTick中断无法正常执行。可以使用调试工具来检查程序的内存使用情况和堆栈状态,并查找潜在的软件问题。
针对上述可能的原因,以下是一些建议的解决方法:

重新检查SysTick的配置,并确保其参数设置正确。
调整中断优先级设置,确保SysTick中断具有足够的优先级。
检查SysTick中断服务程序中的代码,并修复任何错误或异常。
检查硬件连接和状态,并尝试更换可能损坏的部件。
使用调试工具来查找和修复潜在的软件问题。
请注意,这些建议仅供参考,具体解决方法可能因系统和应用程序的不同而有所差异。
举报

夏日余晖

2024-5-10 17:09:49
SysTick中断打开但程序不执行可能有多种原因。以下是一些可能的原因和解决方法:

SysTick配置问题:首先,检查SysTick的配置是否正确。确保SysTick定时器的加载值、时钟源选择和中断使能等参数已正确设置。如果配置不正确,可能导致定时器无法正常工作或中断无法触发。
中断优先级冲突:如果系统中存在其他中断,并且这些中断的优先级与SysTick中断相同或更高,它们可能会抢占SysTick中断的处理器资源,导致SysTick中断无法执行。可以检查系统中其他中断的优先级设置,并调整它们以确保SysTick中断具有足够的优先级。
中断服务程序问题:SysTick中断服务程序(ISR)中的代码可能存在错误或异常,导致程序无法正常执行。可以检查ISR中的代码,并确保其逻辑正确且没有死循环或异常。
硬件问题:在某些情况下,硬件故障或损坏可能导致SysTick定时器无法正常工作。例如,如果处理器时钟源存在问题,SysTick定时器可能无法正确计时。此时,需要检查硬件连接和状态,并尝试更换可能损坏的部件。
其他软件问题:其他软件问题,如内存泄漏、堆栈溢出等,也可能导致SysTick中断无法正常执行。可以使用调试工具来检查程序的内存使用情况和堆栈状态,并查找潜在的软件问题。
针对上述可能的原因,以下是一些建议的解决方法:

重新检查SysTick的配置,并确保其参数设置正确。
调整中断优先级设置,确保SysTick中断具有足够的优先级。
检查SysTick中断服务程序中的代码,并修复任何错误或异常。
检查硬件连接和状态,并尝试更换可能损坏的部件。
使用调试工具来查找和修复潜在的软件问题。
请注意,这些建议仅供参考,具体解决方法可能因系统和应用程序的不同而有所差异。
举报

更多回帖

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