系统时钟初始化卡死,rt_tick一直为0

发布于 2020-11-20 15:01:23

问题概述:
1,我用STM32F401RC,用studio和CUBEMX。将MX的sysclk函数复制过来放void system_clock_config(int target_freq_mhz)里面。
2,开机之后,就一直会卡死在时钟初始化,不能进入main。
3.尝试过用HSE/HSI也不行

PS:芯片是好的。

image.png

时钟配置代码:
void system_clock_config(int target_freq_mhz)
{

RCC_OscInitTypeDef RCC_OscInitStruct =
    { 0 };
RCC_ClkInitTypeDef RCC_ClkInitStruct =
    { 0 };

/** Configure the main internal regulator output voltage
 */
__HAL_RCC_PWR_CLK_ENABLE()
;
__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE2);
/** Initializes the CPU, AHB and APB busses clocks
 */
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
RCC_OscInitStruct.HSIState = RCC_HSI_ON;
RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI;
RCC_OscInitStruct.PLL.PLLM = 16;
RCC_OscInitStruct.PLL.PLLN = 192;
RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV6;
RCC_OscInitStruct.PLL.PLLQ = 4;
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
{
    Error_Handler();
}
/** Initializes the CPU, AHB and APB busses clocks
 */
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_PCLK1
        | RCC_CLOCKTYPE_PCLK2;
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV8;
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV8;

if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct,
                        FLASH_LATENCY_1) != HAL_OK)
{
    Error_Handler();
}

}

运行后卡在这里:
image.png

点击函数发现有两个同名函数(为什么编译不报错?两个文件都是系统自带的)
image.png

往里面扒,发现rttick为0
image.png

=============
困扰好久,求大佬帮帮眼~!拜谢!

查看更多

关注者
1
被浏览
84
2 个回答
JQRR_7669
JQRR_7669 认证专家 2020-11-20

初始化时钟前要先调用HAL_MspInit执行:

__HAL_RCC_SYSCFG_CLK_ENABLE();
__HAL_RCC_PWR_CLK_ENABLE();
张世争
张世争 2020-11-20

@阿伦向前冲
调试下:看看 void SysTick_Handler(void) 中断能进吗?

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览