我用的是stm32f100,调试SysTick_Handler()时,用以下配置
if (SysTick_Config(SystemCoreClock / 1000))
{
/* Capture error */
while (1);
} 周期为1ms,
/*******************************************************
**功能:Delay()延时函数
**输入:TimeI,为TimeI个ms;
********************************************************/
void Delay(u32 TimeI)
{
u32 TimeJ;
TimeNum = TimeI;
while(TimeNum);
}
/*******************************************************
**功能:DelayCount()计数函数,放入滴答中断中自减
**输入:无
********************************************************/
void DelayCount(void)
{
if(TimeNum)TimeNum--;
}
void SysTick_Handler(void)
{
while(TimeNum);
}
调用Delay(10);发现一直死在while(TimeNum);中,调试时看见TimeNum值是可以一直在减小的,真是搞不懂。。。。。
在使用STM32F100调试SysTick_Handler时,配置周期为1ms,但在调用Delay(10)后,程序死在while(TimeNum)循环中,尽管TimeNum值在滴答中断中不断减小。问题可能涉及到中断处理和延时函数的同步问题。

4万+


被折叠的 条评论
为什么被折叠?



