GCCを使用してUbuntuでSTM32プロジェクトをコンパイルします

  最近、GCCコンパイルツールを使用してUbuntuでSTM32プロジェクトをコンパイルしました。発生した問題と解決策の一部を以下に示します。この投稿は定期的な更新投稿です。後で新しい問題が発生した場合は、この投稿に追加してください。
GCCコンパイラバージョン:gcc-arm-none-eabi-9-2019-q4
Ubuntuシステムバージョン:Ubuntu 16.04 LTS
ハードウェアプラットフォーム:STM32F303CCT6

エラーⅠ:エラー:予期される '(' before'void '__ASM void xxx
  この種のエラーは、アセンブリの使用時にGCCでコンパイルするときに発生しますが、次の段落コードのように、Keil5でコンパイルするときは正常です。

__ASM void MSR_MSP(u32 addr)
{
    
    
	MSR MSP, r0
	BX r14
}

  変更方法は次のとおりです。__ASMvolatile()を使用してアセンブリステートメントをラップします。

void MSR_MSP(u32 addr)
{
    
    
	__ASM volatile("MSR MSP, r0");
	__ASM volatile("BX r14");
}

エラーⅡ:選択したプロセッサはThumbモードで `xxxxx 'をサポートしていません
  Makfileを変更し、ソフトウェア/ハードウェア浮動小数点パラメータのサポートを追加します(使用する特定のハードウェアプラットフォームと組み合わせる必要があります。このプロジェクトは、浮動小数点演算ユニットFPUを備えたSTM32F303CCT6に基づいています)

# fpu
FPU = -mfpu=fpv4-sp-d16

# float-abi
FLOAT-ABI = -mfloat-abi=hard

エラーⅢ:エラー:不明なタイプ名「uintx_t」;「wint_t」を意味しましたか?
解決策:
  次のヘッダーファイルを追加します

#include <stdint.h>

ERRORⅣ:交叉编译アームなし-EABI-gccの编译汇编文件(startup_stm32f10x_hd.S)出错
メイク[1]:ディレクトリを入力する/home/demo/testPrij/stm32lib/CMSIS/DeviceSupport' arm-none-eabi-gcc -c -mthumb -mcpu=cortex-m3 -mthumb-interwork -I. -x assembler-with-cpp -Wa,-adhlns=startup_stm32f10x_hd.lst,-ggdb startup_stm32f10x_hd.S -o startup_stm32f10x_hd.o startup_stm32f10x_hd.S: Assembler messages: startup_stm32f10x_hd.S:1: Error: junk at end of line, first unrecognized character is'
startup_stm32f10x_hd.S:2:エラー行の最後にジャンク、最初に認識されない文字がある*' startup_stm32f10x_hd.S:3: Error: junk at end of line, first unrecognized character is
'
startup_stm32f10x_hd。 S:4:エラー:行末のジャンク、最初の認識されない文字は*' startup_stm32f10x_hd.S:5: Error: junk at end of line, first unrecognized character is'
startup_stm32f10x_hd.S:6:エラー:行末のジャンク、最初の認識されない文字は*' startup_stm32f10x_hd.S:7: Error: junk at end of line, first unrecognized character is
'
startup_stm32f10x_hd.S:8:エラー:行末のジャンク、最初の認識されない文字は*' startup_stm32f10x_hd.S:9: Error: junk at end of line, first unrecognized character is'
startup_stm32f10x_hd.S:10:エラー:行末でジャンク、最初の認識されない文字は*' startup_stm32f10x_hd.S:11: Error: junk at end of line, first unrecognized character is
'
startup_stm32f10x_hd.S:12:エラー:行末でジャンク、最初の認識されない文字は*' startup_stm32f10x_hd.S:13: Error: junk at end of line, first unrecognized character is'
startup_stm32f10x_hd.S:14:エラー:行末にジャンク、最初の認識されない文字は*' startup_stm32f10x_hd.S:15: Error: junk at end of line, first unrecognized character is
'
startup_stm32f10x_hd.S:16:エラー:行末にジャンク、最初の認識されない文字は*' startup_stm32f10x_hd.S:17: Error: junk at end of line, first unrecognized character is'
startup_stm32f10x_hd.S:18:エラー:最後にジャンク行、最初の認識されない文字は*' startup_stm32f10x_hd.S:19: Error: junk at end of line, first unrecognized character is
'
startup_stm32f10x_hd.S:20:エラー:行末にジャンク、最初の認識されない文字は `*'

変更方法:

将后缀.s改为.S

  後で他の問題が発生した場合は更新します...

おすすめ

転載: blog.csdn.net/qq_33475105/article/details/107888902