簡單寫一下失敗經歷。
用的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,但是在自動生成的代碼中把它加上了,導致單片機無法正常工作。看來排查Bug時,時鐘這一塊需要重點關注一下。
責任編輯人:CC
-
編譯
+關注
關注
0文章
676瀏覽量
33747 -
stm32cubemx
+關注
關注
5文章
286瀏覽量
15976
原文標題:STM32CubeMX+Hal庫教程-點亮Led
文章出處:【微信號:c-stm32,微信公眾號:STM32嵌入式開發】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
MotorControl Workbench 5.4.8和哪個版本的STM32CubeMX可以配合使用?
使用1.9.0版本時,stm32cubemx生成ETH+LWIP代碼,直接編譯出錯的原因?
在CubeMX V6.13.0版本上配置的CMake工程無法通過編譯怎么解決?
使用CubeMX自動生成工程編譯出錯
STM32CubeMx生成的代碼編譯出錯
編譯使用CubeMX生成的代碼時報錯怎么辦
為什么無法使用CubeMx成功生成代碼?
CubeMx如何從命令行或使用腳本觸發代碼生成?
無法從CubeMX生成的項目中編譯代碼咋辦
CubeMX如何為代碼生成選擇特定的MCU包版本?
如何指示STM32CubeMX生成可使用ARM/Keil Compiler Version 6編譯的代碼?
STM32CubeMX——搭建環境、編譯燒寫

stm32cubeMX+vscode開發編譯調試stm32程序

Tengine從入門到放棄 第1篇-Tengine Android版本編譯

評論