chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

Linux 下交叉編譯實(shí)戰(zhàn):跑起來你的第一個(gè) STM32 程序

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

掃碼添加小助手

加入工程師交流群

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

一、準(zhǔn)備工作

在開始之前,需要準(zhǔn)備:

1、Linux 開發(fā)環(huán)境

Ubuntu、Debian 或其他主流發(fā)行版都可以。

2、ARM GCC 交叉編譯工具鏈

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

2.1 STM32 開發(fā)板

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

2.2 調(diào)試工具

ST-LINK、JTAG/SWD 調(diào)試器。

2.3 串口線或 USB 連接線

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

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

二、創(chuàng)建工程

  1. 新建工程目錄:
  1. mkdir stm32_demo
  2. cd stm32_demo
  1. 創(chuàng)建最簡(jiǎn)單的main.c文件:
  1. #include"stm32f1xx.h"
  2. intmain(void){
  3. // 1. 初始化 LED GPIO
  4. RCC->APB2ENR|=RCC_APB2ENR_IOPCEN;// 使能 GPIOC 時(shí)鐘
  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;// 翻轉(zhuǎn) LED
  10. for(inti=0;i<500000;i++);// 簡(jiǎn)單延時(shí)
  11. }
  12. }

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

三、編寫 Makefile

Makefile 可以簡(jiǎn)化編譯流程:

  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目標(biāo)可以直接把程序燒錄到 STM32,無需手動(dòng)輸入命令。

四、交叉編譯

在工程目錄執(zhí)行:

  1. make

如果沒有報(bào)錯(cuò),會(huì)生成main.elfmain.bin。

小貼士:

  • .elf文件是可調(diào)試的二進(jìn)制文件,可以在調(diào)試器中使用。
  • .bin是裸機(jī)燒錄文件,用于 ST-LINK 或其他燒錄工具。

五、燒錄程序

使用 ST-LINK 燒錄:

  1. make flash

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

  1. st-flash write main.bin0x8000000

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

小貼士:

  • 確認(rèn)開發(fā)板供電和連接正確,否則燒錄失敗。
  • 對(duì)于 Nucleo 板,板載 ST-LINK 也能直接通過 USB 下載。

六、串口調(diào)試(可選)

如果希望觀察程序運(yùn)行狀態(tài),可以在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

小貼士:

  • 打印日志會(huì)占用 CPU,注意不要打印過多影響實(shí)時(shí)性。
  • 可用串口觀察 LED 翻轉(zhuǎn)計(jì)數(shù)或程序狀態(tài),方便調(diào)試。

七、總結(jié)

通過以上步驟,你已經(jīng)完成了:

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

這套流程是 STM32 項(xiàng)目開發(fā)的基礎(chǔ),熟練掌握后,可以快速開發(fā)更復(fù)雜功能,如 RTOS、多外設(shè)驅(qū)動(dòng)、傳感器數(shù)據(jù)采集等。

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

    關(guān)注

    88

    文章

    11621

    瀏覽量

    217801
  • STM32
    +關(guān)注

    關(guān)注

    2305

    文章

    11118

    瀏覽量

    370868
  • 編譯
    +關(guān)注

    關(guān)注

    0

    文章

    685

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

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

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

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

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

    如何讓的ESP32跑起來

    ESP32是了國內(nèi)樂鑫科技推出的Wifi&藍(lán)牙物聯(lián)網(wǎng)MCU,而最近項(xiàng)目正好在用ESP32,所以我們今天就來分享,如何讓的ESP32跑起來,并應(yīng)用于更多實(shí)際項(xiàng)目。1ESP32簡(jiǎn)...
    發(fā)表于 07-16 06:57

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

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

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

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

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

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

    讓NPU跑起來迅為RK3588開發(fā)板設(shè)置交叉編譯

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

    Zynq 7015 linux跑起來之導(dǎo)入之BOOT.bin生成詳解

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

    如何在鴻蒙OS上跑起來第一個(gè)hello world

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

    windows安裝ubuntu并讓pioneer1應(yīng)用程序跑起來的過程

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

    TI CC3200 WIFI實(shí)訓(xùn)開發(fā)套件(OURS-SDK-WFB)IAR for ARM7.8調(diào)試2————對(duì)IAR for ARM的熟悉,并在開發(fā)板上跑起來第一個(gè)

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

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

    今天我們來思考個(gè)簡(jiǎn)單的問題,個(gè)程序是如何在 Linux 上執(zhí)行
    的頭像 發(fā)表于 12-08 15:50 ?1333次閱讀

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

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

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

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

    Linux內(nèi)核的編譯和運(yùn)行

    想讓Linux內(nèi)核代碼跑起來,得先搭建編譯和運(yùn)行代碼的環(huán)境。
    發(fā)表于 06-23 11:56 ?2184次閱讀
    <b class='flag-5'>Linux</b>內(nèi)核的<b class='flag-5'>編譯</b>和運(yùn)行