簡單寫一下失敗經歷。
用的CubeMX版本是4.20.0如下圖,用的Keil5編譯代碼,編譯結果0 Error(s),0 Warning(s)。
在CubeMX中配置了時鐘,如下圖。
CubeMX生成的main.c中Clock代碼是這樣的:
/** System Clock Configuration*/void SystemClock_Config(void){ RCC_OscInitTypeDef RCC_OscInitStruct; RCC_ClkInitTypeDef RCC_ClkInitStruct; /**Initializes the CPU, AHB and APB busses clocks *//*其中,OscillatorType這里自動生成的代碼有問題*/RCC_OscInitStruct.OscillatorType=RCC_OSCILLATORTYPE_HSI|RCC_OSCILLATORTYPE_HSE; RCC_OscInitStruct.HSEState = RCC_HSE_ON; RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1; RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; 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_DIV2; RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != 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);}
問題在哪兒呢?LED掛在PC0上,時鐘路線圖如下。
第14行代碼寫成下面這樣驗證OK。
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
實際上在實驗中沒有用到HSI,但是在自動生成的代碼中把它加上了,導致單片機無法正常工作??磥砼挪锽ug時,時鐘這一塊需要重點關注一下。
責任編輯人:CC
-
編譯
+關注
關注
0文章
657瀏覽量
32871 -
stm32cubemx
+關注
關注
5文章
283瀏覽量
14809
原文標題:STM32CubeMX+Hal庫教程-點亮Led
文章出處:【微信號:c-stm32,微信公眾號:STM32嵌入式開發】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論