使用IAR软仿的时候无法进入SysTick中断,很郁闷,
代码如下
void TaskBaseTime(void)
{
/* Setup SysTick Timer for 0.2 msec interrupts */
//SysTick .时钟 96MHZ ,1/96MHZ*SystemCoreClock / 1000 =0.2ms
SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK); //SysTick时钟源
// SysTick_Config的参数就是重装载值
if (SysTick_Config(SystemCoreClock / 1000))
{
/* Capture error */
while (1);
}
/*
NVIC_SetPriority(SysTick_IRQn, n);
n=0x00~0x03 设置Systick为抢占优先级0
n=0x04~0x07 设置Systick为抢占优先级1
n=0x08~0x0B 设置Systick为抢占优先级2
n=0x0C~0x0F 设置Systick为抢占优先级3
*/
/* Configure the SysTick handler priority */
NVIC_SetPriority(SysTick_IRQn, 0x0);
}
void SysTick_Handler(void)
{
static u8 uTimeMs=0;
if(uTimeMs<5) //0.2MS执行一次
{
uTimeMs++;
}
else //1MS执行一次
{
uTimeMs=0;
if(g_BeepOnTime!=0) g_BeepOnTime--;
if(IOFir_stru.ScanTime!=0) IOFir_stru.ScanTime--;
}
}
在中断你设置断点,发现无法进入中断,
我使用的是IAR6.7,芯片是STM32F407的,在IAR里进行软仿。
此外仿真是查看寄存器也没有找到关于SysTick的寄存器,
网上有的说关于在RAM启动和在FLASH启动的方式不同,可能导致不能进入中断,请高人指点
|