社区助手 发表于 2017-6-10 21:27:24

STM32CubeMX生成的工程时钟安全保护措施





如题,在配置了使用外部晶振后,有个可选项,实际情况是,不管你选不选那个保护,生成的代码时钟配置都是一样的

/** System Clock Configuration
*/
void SystemClock_Config(void)
{

RCC_OscInitTypeDef RCC_OscInitStruct;
RCC_ClkInitTypeDef RCC_ClkInitStruct;

    /**Configure the main internal regulator output voltage
    */
__HAL_RCC_PWR_CLK_ENABLE();

__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);

    /**Initializes the CPU, AHB and APB busses clocks
    */
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI|RCC_OSCILLATORTYPE_HSE;
RCC_OscInitStruct.HSEState = RCC_HSE_ON;
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
RCC_OscInitStruct.PLL.PLLM = 25;
RCC_OscInitStruct.PLL.PLLN = 336;
RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
RCC_OscInitStruct.PLL.PLLQ = 7;
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_DIV4;
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2;

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

    /**Configure the Systick interrupt time
    */
HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);

    /**Configure the Systick
    */
HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);

/* SysTick_IRQn interrupt configuration */
HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);
}

不管是否勾选安全时钟保护措施,生成的代码红色部分都是一样的,实际上那样的代码是跑不动的,需要改成RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;才行,这是否是软件的bug???原来的版本没有这个问题,配置好使用外部晶振后,直接编译运行即可,现在的情况是需要手动的去修改下

zhao.zhao 发表于 2017-6-11 13:12:20

楼主看得很仔细!我也看了看我生成的代码,也是和楼主改的一样的。是个BUG。
想想也有道理,一个芯片,要么是内部HSI提供时钟,要么是外部HSE提供时钟,但是不能两者都提供时钟,要不就会打架了,是吧?:lol

feiante 发表于 2017-6-11 16:08:31

你的是哪个版本的STM32CubeMX

社区助手 发表于 2017-6-11 18:09:25

feiante 发表于 2017-6-11 16:08
你的是哪个版本的STM32CubeMX

最新的

wolfgang2015 发表于 2017-6-12 09:41:07

看不全整个时钟图,应该不是这个原因,时钟配置还是有讲究的.
页: [1]
查看完整版本: STM32CubeMX生成的工程时钟安全保护措施