STM32
直播中

青sky

9年用户 1323经验值
擅长:模拟技术
私信 关注
[问答]

STM8AF6226TCSS仿真一直SWIM复位怎么解决?

大家有没碰STM8AF6226TCSS仿真时一直SWIM复位,外围只接复位电位路。
   另外定时器也进不了中断,时间设很短也不行。
void main(void)
{
    u32 i;
   
    WWDG->CR = 0X7F;       //关闭看门狗
    /* Clock Configuration */
    CLK_Config();
      
    /* GPIO Configuration */
    GPIO_Config();
    /* Check if the system has resumed from IWDG reset */
temp = RST->SR;

if (RST_GetFlagStatus(RST_FLAG_EMCF) != RESET)
{
  RST_ClearFlag(RST_FLAG_EMCF);
}
else if (RST_GetFlagStatus(RST_FLAG_SWIMF) != RESET)
{
  RST_ClearFlag(RST_FLAG_SWIMF);
}
else if (RST_GetFlagStatus(RST_FLAG_ILLOPF) != RESET)
{
  RST_ClearFlag(RST_FLAG_ILLOPF);
}
else if (RST_GetFlagStatus(RST_FLAG_IWDGF) != RESET)
{
  RST_ClearFlag(RST_FLAG_IWDGF);
}
else if (RST_GetFlagStatus(RST_FLAG_WWDGF) != RESET)
{
  RST_ClearFlag(RST_FLAG_WWDGF);
}
// /* Get measured LSI frequency */
// LsiFreq = LSIMeasurment();  
/* IWDG Configuration */
// IWDG_Config();

    TIM6_DeInit();
    TIM6_TimeBaseInit(TIM6_PRESCALER_2, 124);
    TIM6_ARRPreloadConfig(ENABLE);
    TIM6_ITConfig(TIM6_IT_UPDATE, ENABLE);
    TIM6_ClearITPendingBit(TIM6_IT_UPDATE);
    TIM6_Cmd(DISABLE);
    LED_OFF;
   
    enableInterrupts();
    /* Infinite loop */
    while (1)
    {
        /* Reload IWDG counter */
//     IWDG_ReloadCounter();
//     WWDG_SWReset();
     
//  for(i=0; i<20000; i++)
        nop();
//        LED_ON;
//        for(i=0; i<20000; i++)
        nop();
//        LED_OFF;
    }
}

回帖(2)

李义坤

2024-4-23 14:54:58
检查一下optionbyte 中的独立看门狗启动选项是否使能。另外窗口看门狗不用去配置,默认就是关闭的。
定时器6 的 “TIM6_Cmd(DISABLE);”,看起来是关闭状态,打开使能试试看
举报

郭大

2024-5-9 16:51:20
首先,我们需要了解STM8AF6226TCSS是一款STM8系列的微控制器,它具有多种功能和接口。在这个问题中,您提到了两个主要问题:SWIM复位和定时器中断问题。下面我将分别针对这两个问题提供可能的解决方案。

1. SWIM复位问题:

SWIM(Serial Wire Interface Mode)复位是指微控制器在调试模式下,通过串行线接口(SWIM)进行复位。要解决这个问题,您可以尝试以下步骤:

a. 确保您的仿真器或调试器正确连接到微控制器,并且仿真器/调试器的固件是最新的。

b. 检查您的仿真器/调试器设置,确保SWIM复位选项已禁用。

c. 在您的代码中,确保没有调用SWIM复位相关的函数,例如`__asm("sim");`。

d. 如果问题仍然存在,尝试使用其他仿真器/调试器,以排除硬件故障的可能性。

2. 定时器中断问题:

定时器中断问题可能由多种原因导致,以下是一些可能的解决方案:

a. 确保您的定时器配置正确。检查定时器的预分频器、自动重载寄存器、计数器等设置。

b. 确保您已经正确设置了定时器的中断优先级和中断使能位。例如,对于STM8AF6226TCSS,您需要设置`ITC_SPRx`寄存器和定时器的`IER`寄存器。

c. 在您的中断服务例程(ISR)中,确保正确处理了定时器中断。例如,您需要清除定时器的中断标志位,以避免重复触发中断。

d. 如果您的定时器中断仍然无法触发,尝试使用其他定时器通道或模式,以排除硬件故障的可能性。

e. 如果问题仍然存在,检查您的编译器设置,确保没有优化选项导致中断服务例程被省略。

f. 最后,您可以尝试在STM8的官方论坛或社区寻求帮助,看看是否有其他开发者遇到过类似的问题。

希望这些建议能帮助您解决STM8AF6226TCSS仿真时的SWIM复位和定时器中断问题。如果问题仍然存在,建议您联系STM8的技术支持或参考STM8的官方文档,以获取更详细的解决方案。
举报

更多回帖

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