问题原因:
程序卡死在B处说明有中断没有处理,导致程序进入中断后无法跳出。
之后查看程序发现,程序中定义了一个中断,但是之前一次偶然把中断处理程序屏蔽了,导致没有中断处理函数
问题解决:
代码卡死在SysTick_Init()处
int main(void)
{
BASIC_TIM_Init(); //基本定时器初始化
GENERAL_TIM_Init(); //通用定时器初始化
SysTick_Init(); //系统定时器初始化
DEBUG_USART_Config(); //串口初始化
FSMC_SRAM_Init(); //外部SRAM初始化
debug时进入函数SysTick_Init()内,卡在if (SysTick_Config(SystemCoreClock / 100000))处
/**
* @brief 启动系统滴答定时器 SysTick
* @param 无
* @retval 无
*/
void SysTick_Init(void)
{
/* SystemFrequency / 1000 1ms中断一次
* SystemFrequency / 100000 10us中断一次
* SystemFrequency / 1000000 1us中断一次
*/
//if (SysTick_Config(SystemFrequency / 100000))// ST3.0.0库版本
if (SysTick_Config(SystemCoreClock / 100000))// ST3.5.0库