0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

CubeMX版本編譯代碼的教程

STM32嵌入式開發(fā) ? 來源:搜狐網(wǎng) ? 作者:搜狐網(wǎng) ? 2020-10-10 10:32 ? 次閱讀

簡單寫一下失敗經(jīng)歷。

用的CubeMX版本是4.20.0如下圖,用的Keil5編譯代碼,編譯結(jié)果0 Error(s),0 Warning(s)。

Hex文件也可以正常下載單片機,但是LED不亮。

在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,但是在自動生成的代碼中把它加上了,導(dǎo)致單片機無法正常工作。看來排查Bug時,時鐘這一塊需要重點關(guān)注一下。
責(zé)任編輯人:CC

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 編譯
    +關(guān)注

    關(guān)注

    0

    文章

    646

    瀏覽量

    32664
  • stm32cubemx
    +關(guān)注

    關(guān)注

    5

    文章

    278

    瀏覽量

    14618

原文標(biāo)題:STM32CubeMX+Hal庫教程-點亮Led

文章出處:【微信號:c-stm32,微信公眾號:STM32嵌入式開發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    MotorControl Workbench 5.4.8和哪個版本的STM32CubeMX可以配合使用?

    我的MotorControl Workbench一直不能創(chuàng)建代碼,版本是V5.4.8,cubemx版本是最新的,代碼老是generation
    發(fā)表于 03-08 07:22

    使用1.9.0版本時,stm32cubemx生成ETH+LWIP代碼,直接編譯出錯的原因?

    時,stm32cubemx生成ETH+LWIP代碼,直接編譯出錯。使用V1.10.0版本時,ETH+LWIP代碼能正常
    發(fā)表于 03-25 08:10

    使用CubeMX自動生成工程編譯出錯

    ,也包含進來了使用keil 或者iar結(jié)果都是一樣的,以前是有 v4.16是沒有這個問題CubeMX版本是:CubeMX設(shè)置:提示錯誤: 提示的這些明明是都已經(jīng)包含了的產(chǎn)生工程代碼時的
    發(fā)表于 11-27 09:01

    STM32CubeMx生成的代碼編譯出錯

    不那么兼容,出現(xiàn)一些莫名其妙的錯誤。我的情況是:我的原工程是使用4.27.0版本的STM32CubeMx,以及1.21.0的HAL庫代碼包創(chuàng)建的;于是我把STM32CubeMx更新到了
    發(fā)表于 01-05 07:21

    編譯使用CubeMX生成的代碼時報錯怎么辦

    編譯使用CubeMX生成的代碼時報錯:Error: L6218E: Undefined symbol HAL_PWREx_DisableUCPDDeadBattery (referred from
    發(fā)表于 02-15 06:51

    為什么無法使用CubeMx成功生成代碼?

    我正在關(guān)注 STM32WB55 的本教程在我嘗試生成代碼之前一切都很好。它在“正在復(fù)制庫文件...”時卡住了。我嘗試過的是不在 Root 下生成代碼。但是這樣做之后的問題是我無法編譯項目。并返回給我
    發(fā)表于 12-12 07:17

    CubeMx如何從命令行或使用腳本觸發(fā)代碼生成?

    。目前需要手動構(gòu)建:關(guān)閉工程,復(fù)制替換文件,打開工程,觸發(fā)代碼生成,編譯?,F(xiàn)在我正在嘗試自動化。在腳本中替換這些文件并調(diào)用編譯器(無頭構(gòu)建)是比較容易的部分。當(dāng)代碼已使用
    發(fā)表于 12-13 07:52

    無法從CubeMX生成的項目中編譯代碼咋辦

    無法從 CubeMX 生成的項目編譯代碼。我得到:undefined reference to `touchgfx_init'我已經(jīng)從 cubeMX 生成
    發(fā)表于 12-26 08:11

    CubeMX如何為代碼生成選擇特定的MCU包版本?

    MCU 包。出于兼容性原因,我需要使用 MCU 包的 1.0.0 版(較新的版本不適合我)在代碼生成期間,CubeMX 會自動將 MCU 包升級到最新的可用版本 (1.2.0)。為了
    發(fā)表于 12-27 06:00

    如何指示STM32CubeMX生成可使用ARM/Keil Compiler Version 6編譯代碼

    可以使用 ARM/Keil 編譯版本 6 編譯代碼)?我目前必須將 STM32CubeMX 為 MDK-ARM V5.27(或 V5)生成
    發(fā)表于 01-13 07:13

    編譯代碼與源代碼的比較算法

    編譯代碼與源代碼
    發(fā)表于 02-09 15:19 ?10次下載

    Android源代碼編譯

    Android源代碼編譯
    發(fā)表于 10-24 09:30 ?5次下載
    Android源<b class='flag-5'>代碼</b><b class='flag-5'>編譯</b>

    STM32CubeMX——搭建環(huán)境、編譯燒寫

    STM32CubeMX生成工程文件(一)選擇MCU和封裝(二)配置時鐘(三)配置調(diào)試模式(四)配置GPIO(五)代碼生成三、填寫main函數(shù)四、編譯與仿真運行五、燒寫與硬件實現(xiàn)六、總結(jié)七、參考文章一、STM32
    發(fā)表于 12-07 10:21 ?22次下載
    STM32<b class='flag-5'>CubeMX</b>——搭建環(huán)境、<b class='flag-5'>編譯</b>燒寫

    stm32cubeMX+vscode開發(fā)編譯調(diào)試stm32程序

    stm32cubeMX+vscode開發(fā)編譯調(diào)試stm32程序安裝vscode安裝make工具安裝交叉編譯工具鏈安裝openocd安裝clang llvm生成并編譯
    發(fā)表于 12-24 19:31 ?6次下載
    stm32<b class='flag-5'>cubeMX</b>+vscode開發(fā)<b class='flag-5'>編譯</b>調(diào)試stm32程序

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

    Tengine Android版本編譯環(huán)境System: Ubuntu18.04CMAKE: 3.15.3下載Android NDK {代碼...} 克隆Tengine源碼 {代碼..
    發(fā)表于 01-26 18:28 ?0次下載
    Tengine從入門到放棄 第1篇-Tengine Android<b class='flag-5'>版本</b><b class='flag-5'>編譯</b>