一、stm32的三種boot模式
所謂啟動,一般來說就是指我們下好程式後,重啟晶元時,sysclk的第4個上公升沿,boot引腳的值將被鎖存。使用者可以通過設定boot1和boot0引腳的狀態,來選擇在復位後的啟動模式。
4、開發boot模式選擇。
1、通常使用程式**儲存在主快閃儲存器儲存器,配置方式:boot0=0,boot1=x;
2、flash鎖死解決辦法:
開發除錯過程中,由於某種原因導致內部flash鎖死,無法連線swd以及jtag除錯,無法讀到裝置,可以通過修改boot模式重新刷寫**。
修改為boot0=1,boot1=0即可從系統儲存器啟動,st出廠時自帶bootloader程式,swd以及jtag除錯介面都是專用的。重新燒寫程式後,可將boot模式重新更換到boot0=0,boot1=x即可正常使用。
二、2.基於mdk建立純組合語言的stm32工程
1、建立工程
2、配置環境
3、程式**
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
4、設定**
5、設定埠
6、除錯**
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
7、檢視hex檔案
三、閃爍led的程式
1、程式**
led0 equ 0x40010c00
rcc_apb2enr equ 0x40021018
gpioa_crh equ 0x40010804
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
require8
preserve8
entry
reset_handler
bl led_init
mainloop bl led_on
bl delay
bl led_off
bl delay
b mainloop
led_init
push
ldr r0,=rcc_apb2enr
orr r0,r0,#0x04
ldr r1,=rcc_apb2enr
str r0,[r1]
ldr r0,=gpioa_crh
bic r0,r0,#0x0f
ldr r1,=gpioa_crh
str r0,[r1]
ldr r0,=gpioa_crh
orr r0,r0,#0x03
ldr r1,=gpioa_crh
str r0,[r1]
mov r0,#1
ldr r1,=led0
str r0,[r1]
pop
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
cmp r0,#330
bcc delayloop0
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
; nop
end
2、燒錄程式,效果圖如下
STM彙編程式設計
所謂啟動,一般來說就是指我們下好程式後,重啟晶元時,sysclk的第4個上公升沿,boot引腳的值將被鎖存。使用者可以通過設定 boot1 和 boot0 引腳的狀態,來選擇在復位後的啟動模式。啟動模式 內建sram embedded memory flash system memory和sram的...
STM32彙編程式設計
1.實驗環境 1.野火stm32指南者 stm32f103vet6 2.keil5 2.環境搭建新建工程 新增原始檔 s 連線開發板,開始debug 生成的hex檔案 原始碼led0 equ 0x40010c00 rcc apb2enr equ 0x40021018 gpioa crh equ 0x...
幾個簡單的stm32匯程式設計序
例1,用組合語言完成1 10的加法 stack top equ 0x00002000 sp初始值,常數 area reset,code dcd stack top 棧頂 msp的 dcd start 復位向量 entry 指示程式從這裡開始執行start 初始化暫存器 mov r0,10 載入迴圈變...