国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Linux 下交叉編譯實戰:跑起來你的第一個 STM32 程序

信盈達 ? 2025-11-24 19:04 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

很多開發者第一次接觸 STM32,總會被“交叉編譯”、“燒錄程序”等概念繞暈。其實方法很簡單:在 Linux 下配置交叉編譯環境,編寫簡單程序,然后燒錄到 STM32,就可以看到成果了。本文帶你從零開始跑起來你的第一個 STM32 程序。

一、準備工作

在開始之前,需要準備:

1、Linux 開發環境

Ubuntu、Debian 或其他主流發行版都可以。

2、ARM GCC 交叉編譯工具鏈

  1. sudo apt update
  2. sudo apt install gcc-arm-none-eabi gdb-arm-none-eabi

2.1 STM32 開發板

例如 STM32F103C8T6(“藍板”)或 Nucleo 系列。

2.2 調試工具

ST-LINK、JTAG/SWD 調試器。

2.3 串口線或 USB 連接線

用于打印輸出或燒錄程序。

小貼士:如果你的開發板自帶 ST-LINK,可以省去額外購買調試器的麻煩。

二、創建工程

  1. 新建工程目錄:
  1. mkdir stm32_demo
  2. cd stm32_demo
  1. 創建最簡單的main.c文件:
  1. #include"stm32f1xx.h"
  2. intmain(void){
  3. // 1. 初始化 LED GPIO
  4. RCC->APB2ENR|=RCC_APB2ENR_IOPCEN;// 使能 GPIOC 時鐘
  5. GPIOC->CRH&=~GPIO_CRH_MODE13;
  6. GPIOC->CRH|=GPIO_CRH_MODE13_0;// 輸出模式
  7. GPIOC->CRH&=~GPIO_CRH_CNF13;// 通用推挽
  8. while(1){
  9. GPIOC->ODR^=GPIO_ODR_ODR13;// 翻轉 LED
  10. for(inti=0;i<500000;i++);// 簡單延時
  11. }
  12. }

小貼士:STM32F103C8T6 板載 LED 在 PC13 引腳,通過翻轉寄存器可以直接點亮/熄滅。

三、編寫 Makefile

Makefile 可以簡化編譯流程:

  1. CC=arm-none-eabi-gcc
  2. CFLAGS=-mcpu=cortex-m3-mthumb-O2-Wall
  3. LDFLAGS=-T stm32f103c8t6.ld-nostartfiles
  4. all:main.elf
  5. main.elf:main.c
  6. $(CC)$(CFLAGS)$^-o $@ $(LDFLAGS)
  7. clean:
  8. rm-f*.elf*.bin
  9. flash:main.elf
  10. st-flash write main.bin0x8000000
  11. main.bin:main.elf
  12. arm-none-eabi-objcopy-O binary main.elf main.bin

小貼士:Makefile 的flash目標可以直接把程序燒錄到 STM32,無需手動輸入命令。

四、交叉編譯

在工程目錄執行:

  1. make

如果沒有報錯,會生成main.elfmain.bin

小貼士:

  • .elf文件是可調試的二進制文件,可以在調試器中使用。
  • .bin是裸機燒錄文件,用于 ST-LINK 或其他燒錄工具。

五、燒錄程序

使用 ST-LINK 燒錄:

  1. make flash

或者直接使用 st-flash 工具:

  1. st-flash write main.bin0x8000000

程序燒錄完成后,板載 LED 將開始閃爍。

小貼士:

  • 確認開發板供電和連接正確,否則燒錄失敗。
  • 對于 Nucleo 板,板載 ST-LINK 也能直接通過 USB 下載。

六、串口調試(可選)

如果希望觀察程序運行狀態,可以在main.c中加入 UART 打印:

  1. #include"stm32f1xx_hal.h"
  2. #include
  3. UART_HandleTypeDef huart1;
  4. intfputc(intch,FILE*f){
  5. HAL_UART_Transmit(&huart1,(uint8_t*)&ch,1,HAL_MAX_DELAY);
  6. returnch;
  7. }
  8. intmain(void){
  9. HAL_Init();
  10. MX_USART1_UART_Init();
  11. printf("STM32 is running...\r\n");
  12. while(1){
  13. printf("Looping...\r\n");
  14. HAL_Delay(1000);
  15. }
  16. }

在 Linux 終端查看:

  1. screen/dev/ttyUSB0115200

小貼士:

  • 打印日志會占用 CPU,注意不要打印過多影響實時性。
  • 可用串口觀察 LED 翻轉計數或程序狀態,方便調試。

七、總結

通過以上步驟,你已經完成了:

  1. Linux 下安裝 ARM 交叉編譯工具鏈
  2. 編寫第一個 STM32 程序
  3. 使用 Makefile 編譯并生成.elf.bin
  4. 燒錄程序到 STM32 開發板
  5. (可選)通過串口調試程序狀態

這套流程是 STM32 項目開發的基礎,熟練掌握后,可以快速開發更復雜功能,如 RTOS、多外設驅動、傳感器數據采集等。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    88

    文章

    11641

    瀏覽量

    218195
  • STM32
    +關注

    關注

    2307

    文章

    11128

    瀏覽量

    371487
  • 編譯
    +關注

    關注

    0

    文章

    689

    瀏覽量

    34972
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    智能車淺談——手把手讓車跑起來(電磁篇)

    前言電磁尋跡小車之前智能車系列已經做了比較詳細的解析,但是美中不足是知識點被拆的太零散,可能對于新手來說不太友好,所以借著有空就再寫點能讓車跑起來的方案。當然,也就僅僅限于可以
    的頭像 發表于 05-22 19:32 ?2542次閱讀
    智能車淺談——手把手讓車<b class='flag-5'>跑起來</b>(電磁篇)

    STM32芯片用KEIL4程序后要按復位鍵才能跑起來

    STM32芯片用KEIL4程序后要按復位鍵才能跑起來?大神可否詳細截圖解說下怎么設置一下
    發表于 12-14 08:45

    如何讓的ESP32跑起來

    ESP32是了國內樂鑫科技推出的Wifi&藍牙物聯網MCU,而最近項目正好在用ESP32,所以我們今天就來分享,如何讓的ESP32跑起來,并應用于更多實際項目。1ESP32簡...
    發表于 07-16 06:57

    怎樣讓自己編譯的uboot跑起來

    小目標:讓自己編譯的uboot跑起來參考:wiki.friendlyarm.com/wiki/index.php/NanoPi_NEO首先熟悉一下板子和開發流程。維基主要參考《使用全志原廠BSP
    發表于 11-08 06:37

    程序跑起來就是很好的c代碼嗎

    程序跑起來并不見得的代碼就是很好的c代碼了,衡量代碼的好壞應該從以下幾個方面來添加鏈接描述看:海風教育投訴1,代碼穩定,沒有隱患。2,執行效率高。3,可讀性高。4,便于移植。
    發表于 11-23 08:00

    STM32如何區分程序跑起來用的是HSE還是HSI呢?

    本人用過f103和f030,為了取功耗低的方案,內部外部晶振都試過。但是有很多情況,配置錯了,程序貌似會自己跑內部晶振去了;般單片機如果外部晶振跑起來應該在晶振那兩
    發表于 05-05 10:47

    讓NPU跑起來迅為RK3588開發板設置交叉編譯

    讓NPU跑起來迅為RK3588開發板設置交叉編譯編譯器下載地址是網盤資料“iTOP-3588 開發板\\\\02_【iTOP-RK3588 開發板】開發資料 \\\\12_NPU 使
    發表于 09-14 09:42

    Zynq 7015 linux跑起來之導入之BOOT.bin生成詳解

    本文主要介紹Zynq 7015 linux跑起來之導入之BOOT.bin生成,具體的跟隨小編一起來了解一下
    的頭像 發表于 06-27 10:01 ?8385次閱讀

    如何在鴻蒙OS上跑起來第一個hello world

    咱們一起來跟著位網友學習一下如何跑起來第一個hello world,原文如下: 前序 1.1 官網: https://www.harmon
    的頭像 發表于 09-28 10:55 ?2339次閱讀
    如何在鴻蒙OS上<b class='flag-5'>跑起來</b><b class='flag-5'>第一個</b>hello world

    windows安裝ubuntu并讓pioneer1應用程序跑起來的過程

    本文介紹在windows安裝ubuntu并且讓pioneer1的應用程序跑起來的全過程。雖然安裝ubuntu不是本文重點,但是還是啰嗦地寫遍吧。
    的頭像 發表于 10-23 10:41 ?2975次閱讀
    windows安裝ubuntu并讓pioneer1應用<b class='flag-5'>程序</b><b class='flag-5'>跑起來</b>的過程

    TI CC3200 WIFI實訓開發套件(OURS-SDK-WFB)IAR for ARM7.8調試2————對IAR for ARM的熟悉,并在開發板上跑起來第一個

    TI CC3200 WIFI實訓開發套件(OURS-SDK-WFB)IAR for ARM7.8調試2————對IAR for ARM的熟悉,并在開發板上跑起來第一個程序
    發表于 12-08 12:06 ?8次下載
    TI CC3200 WIFI實訓開發套件(OURS-SDK-WFB)IAR for ARM7.8調試2————對IAR for ARM的熟悉,并在開發板上<b class='flag-5'>跑起來</b><b class='flag-5'>第一個</b>

    寫的代碼是如何跑起來的?

    今天我們來思考簡單的問題,程序是如何在 Linux 上執行
    的頭像 發表于 12-08 15:50 ?1368次閱讀

    知道寫的代碼是怎樣跑起來的嗎(上)

    今天我們來思考簡單的問題,程序是如何在 Linux 上執行
    的頭像 發表于 05-05 14:36 ?879次閱讀
    <b class='flag-5'>你</b>知道<b class='flag-5'>你</b>寫的代碼是怎樣<b class='flag-5'>跑起來</b>的嗎(上)

    知道寫的代碼是怎樣跑起來的嗎(

    今天我們來思考簡單的問題,程序是如何在 Linux 上執行
    的頭像 發表于 05-05 14:36 ?866次閱讀
    <b class='flag-5'>你</b>知道<b class='flag-5'>你</b>寫的代碼是怎樣<b class='flag-5'>跑起來</b>的嗎(<b class='flag-5'>下</b>)

    Linux內核的編譯和運行

    想讓Linux內核代碼跑起來,得先搭建編譯和運行代碼的環境。
    發表于 06-23 11:56 ?2227次閱讀
    <b class='flag-5'>Linux</b>內核的<b class='flag-5'>編譯</b>和運行