STM32簡單彙編專案的建立

2021-10-13 11:48:39 字數 3558 閱讀 7431

1.新建工程

2.選擇配置

①選擇晶元型號,這裡我的晶元是f103c8t6

②選擇啟動檔案與核心**

3.新增彙編檔案

①右鍵source group新建彙編檔案

②複製下列**

area mydata, data

area mycode, code

entry

export __main

__main

mov r0, #10

mov r1, #11

mov r2, #12

mov r3, #13

;ldr r0,

=func01

bl func01

;ldr r1,

=func02

bl func02

bl func03

ldr lr,

=func01

ldr pc,

=func03

b .func01

mov r5, #05

bx lr

func02

mov r6, #06

bx lr

func03

mov r7, #07

mov r8, #08

bx lr

②編譯結果顯示

5.**測試

6.hex檔案檢視

第乙個位元組表示本行資料的長度;

第二、三位元組表示本行資料的起始位址;

第四位元組 表示資料型別;

建立專案過程與上面一樣(不需要新增啟動檔案和核心檔案配置時什麼都不勾選)

彙編檔案**

led0 equ 0x422201b4

rcc_apb2enr equ 0x40021018

gpioc_crh equ 0x40011004 ;預定義

stack_size equ 0x00000400

area stack, noinit, readwrite, align=3

stack_mem space stack_size

__initial_sp

area reset, data, readonly

__vectors dcd __initial_sp ; top of stack

dcd reset_handler ; reset handler

area |.text|, code, readonly ;開始**段

;支援thumb指令,**段按8位元組對齊

thumb

require8

preserve8

entry ;宣告整個程式的入口

reset_handler

bl led_init

mainloop bl led_on

bl delay

bl led_off

bl delay

b mainloop

led_init

push

;將r0,r1,lr入棧

ldr r0,=rcc_apb2enr

orr r0,r0,#0x04

ldr r1,=rcc_apb2enr

str r0,[r1]

ldr r0,=gpioc_crh

bic r0,r0,#0xff0fffff ;配置為模擬輸入模式

ldr r1,=gpioc_crh

str r0,[r1]

ldr r0,=gpioc_crh

orr r0,r0,#0x00300000 ;配置為通用推挽輸出模式,最大速度為50mhz

ldr r1,=gpioc_crh

str r0,[r1]

mov r0,#1 ;將立即數1送入r0.

ldr r1,=led0 ;將pc13 bit-bond的位址送入r1.

str r0,[r1]

;將r0的值,也就是1,送給r1中的值所指向的位址中

pop

;將r0,r1,pc出棧

led_on

push

mov r0,#0

ldr r1,=led0

str r0,[r1]

pop

led_off

push

mov r0,#1

ldr r1,=led0

str r0,[r1]

pop

delay

push

movs r0,#0

movs r1,#0

movs r2,#0

delayloop0

adds r0,r0,#1 ;加法,r0=r0+1

cmp r0,#330 ;計算r0-330的值,r0<330,則c=0;否則c=1。

bcc delayloop0 ;若是c=0,則跳到delayloop0,若是c=1,則不跳轉

movs r0,#0

adds r1,r1,#1

cmp r1,#330

bcc delayloop0

movs r0,#0

movs r1,#0

adds r2,r2,#1

cmp r2,#15

bcc delayloop0

pop

nopend

執行結果

參考文件

arm彙編基礎之基於mdk建立純彙編stm32專案

彙編專案實現點亮led燈

STM32彙編程式設計

1.實驗環境 1.野火stm32指南者 stm32f103vet6 2.keil5 2.環境搭建新建工程 新增原始檔 s 連線開發板,開始debug 生成的hex檔案 原始碼led0 equ 0x40010c00 rcc apb2enr equ 0x40021018 gpioa crh equ 0x...

STM32空白專案的搭建和燒錄

環境的重要性 安裝環境是開發者為開發產品的第一步,其過程是繁瑣枯燥的。長時間地專注於開發專案以及快速上手帶來的快樂會使我們忽視學習配置開發環境的重要性,但其實理解並記憶配置自己的環境會給我們的開發來帶更多的便利和意想不到的創造力。為了便於理解記憶,以下我以我建立的工程的目錄檔案樹做出解釋。上圖中,l...

STM32彙編LED工程

要移植作業系統,彙編是道不得不跨過去的坎。所以承接上篇的思路,我準備用彙編寫乙個簡單的閃爍led燈的程式。以此練習彙編,為作業系統做準備。第一步,還是和上篇一樣,建立乙個空的資料夾。第二步,因為是要用彙編來寫程式,所以不需要啟動 這裡選擇否。第三步,建立乙個.s檔案,並把檔案新增到工程中。第四步,在...