打印
[开发工具]

STM32能用汇编开发吗

[复制链接]
2311|48
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
捉虫天师|  楼主 | 2024-4-19 17:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
见过51的汇编,见过MSP430的汇编,见过PIC的汇编,不知道STM32有没有汇编开发的历史

使用特权

评论回复
沙发
天灵灵地灵灵| | 2024-4-19 17:22 | 只看该作者
是的,你可以使用汇编语言来开发STM32微控制器。事实上,一些特定的任务或者对于性能和资源的要求可能需要使用汇编语言编写代码。然而,大多数开发者选择使用高级语言如C或C++来编写STM32的应用程序,因为这样更容易理解和维护,并且具有更好的可移植性。ASM语言通常被保留用于特定的优化或者对于底层硬件的直接控制。

使用特权

评论回复
板凳
天灵灵地灵灵| | 2024-4-19 17:23 | 只看该作者
以下是一个简单的汇编程序,用于在STM32F103微控制器上实现流水灯效果。这个程序使用了汇编语言来直接控制GPIO口以控制LED的亮灭。

; STM32F103 LED Blinking Assembly Program
; Author: ChatGPT
; Date: April 2024

; Define STM32F103 register addresses
GPIOC_BASE    equ 0x40011000    ; GPIOC base address
RCC_APB2ENR   equ 0x40021018    ; RCC APB2 Enable Register address

; Define GPIOC registers offsets
GPIOC_CRL     equ 0x00    ; GPIOC Port Configuration Register Low
GPIOC_CRH     equ 0x04    ; GPIOC Port Configuration Register High
GPIOC_ODR     equ 0x0C    ; GPIOC Output Data Register

; Define bit masks
GPIOC13       equ (1 << 13)    ; GPIOC Pin 13

; Define delay subroutine
Delay:
    ldr r0, =0x3FFFFF    ; Load delay value
Loop:
    subs r0, #1          ; Decrement delay counter
    bne Loop             ; Repeat until zero
    bx lr                ; Return

; Main program
.section .text
.global _start
_start:
    ; Enable GPIOC clock
    ldr r1, =RCC_APB2ENR    ; Load RCC_APB2ENR address into r1
    ldr r0, [r1]            ; Load RCC_APB2ENR value into r0
    orr r0, r0, #(1 << 4)   ; Set bit 4 (IOPCEN) to enable GPIOC clock
    str r0, [r1]            ; Write back to RCC_APB2ENR

    ; Configure GPIOC Pin 13 as output
    ldr r1, =GPIOC_BASE    ; Load GPIOC base address into r1
    ldr r0, [r1, #GPIOC_CRH]    ; Load GPIOC_CRH value into r0
    bic r0, r0, #(0xF << 20)    ; Clear bits 20-23 to configure PC13 as output
    orr r0, r0, #(0x3 << 20)    ; Set bits 20-23 to configure PC13 as output push-pull
    str r0, [r1, #GPIOC_CRH]    ; Write back to GPIOC_CRH

Loop:
    ; Turn on LED (set PC13 high)
    ldr r0, =GPIOC13    ; Load GPIOC13 bitmask into r0
    ldr r1, =GPIOC_BASE    ; Load GPIOC base address into r1
    ldr r2, [r1, #GPIOC_ODR]    ; Load GPIOC_ODR value into r2
    orr r2, r2, r0        ; Set PC13 to high
    str r2, [r1, #GPIOC_ODR]    ; Write back to GPIOC_ODR

    ; Delay
    bl Delay

    ; Turn off LED (set PC13 low)
    ldr r0, =GPIOC13    ; Load GPIOC13 bitmask into r0
    ldr r1, =GPIOC_BASE    ; Load GPIOC base address into r1
    ldr r2, [r1, #GPIOC_ODR]    ; Load GPIOC_ODR value into r2
    bic r2, r2, r0        ; Set PC13 to low
    str r2, [r1, #GPIOC_ODR]    ; Write back to GPIOC_ODR

    ; Delay
    bl Delay

    ; Repeat forever
    b Loop

; End of program

使用特权

评论回复
地板
呐咯密密| | 2024-4-19 17:26 | 只看该作者
可以用汇编,但是项目大起来很麻烦

使用特权

评论回复
5
sdlls| | 2024-5-4 21:31 | 只看该作者
是的,STM32微控制器(MCU)完全可以用汇编语言进行开发。

使用特权

评论回复
6
sesefadou| | 2024-5-6 16:03 | 只看该作者
使用汇编语言, 可以直接操纵寄存器和内存,这对于编写操作系统、设备驱动程序或其他需要紧密耦合到硬件的软件非常有用。

使用特权

评论回复
7
saservice| | 2024-5-6 18:46 | 只看该作者
可以通过编写汇编代码来精确控制STM32的启动流程,或者在需要极高实时性的场合中,使用汇编来编写关键部分的逻辑。

使用特权

评论回复
8
mikewalpole| | 2024-5-7 12:04 | 只看该作者
汇编语言编写的代码不需要运行时库支持,这可以减少代码大小和运行时开销。

使用特权

评论回复
9
kkzz| | 2024-5-7 15:35 | 只看该作者
默认情况下,STM32启动后会自动进入C文件的main函数。要使用汇编开发,需要修改启动文件,例如startup_stm32f103xe.s,这是STM32的汇编启动代码,它负责初始化堆栈指针和程序计数器,然后跳转到用户程序的入口点。

使用特权

评论回复
10
mollylawrence| | 2024-5-7 19:19 | 只看该作者
使用IDE的编译器将汇编代码编译成机器码,并通过调试工具进行调试,确保代码按预期工作。

使用特权

评论回复
11
wengh2016| | 2024-5-8 16:17 | 只看该作者
进行性能调优或解决特定硬件问题时,汇编语言也是非常有用的。

使用特权

评论回复
12
jkl21| | 2024-5-8 19:48 | 只看该作者
虽然在实际的工程项目中,由于汇编语言的复杂性和开发效率的问题,通常较少直接使用汇编语言来编写STM32的程序。

使用特权

评论回复
13
Henryko| | 2024-5-8 21:47 | 只看该作者
现在应该不会有人再用汇编写了吧

使用特权

评论回复
14
jonas222| | 2024-5-9 18:41 | 只看该作者
汇编语言允许你对硬件资源进行非常精确的控制,这对于需要优化性能或访问特定硬件功能的应用程序非常有用。

使用特权

评论回复
15
kkzz| | 2024-5-9 23:03 | 只看该作者
汇编语言是一种非常接近硬件的语言,它允许开发者直接对硬件寄存器和内存地址进行操作,从而实现对硬件的精细控制。

使用特权

评论回复
16
louliana| | 2024-5-10 11:46 | 只看该作者
使用C语言或其他高级语言通常更为常见

使用特权

评论回复
17
uiint| | 2024-5-10 16:28 | 只看该作者
STM32微控制器是支持使用汇编语言进行开发的。

使用特权

评论回复
18
1988020566| | 2024-5-10 22:18 | 只看该作者
ST提供了详细的文档,包括数据手册、参考手册和应用笔记,这些文档包含了有关STM32硬件和汇编编程的信息。

使用特权

评论回复
19
mnynt121| | 2024-5-12 13:00 | 只看该作者
STMicroelectronics(ST)为STM32系列提供了多种汇编语言开发资源和工具,以支持汇编语言编程。

使用特权

评论回复
20
Bowclad| | 2024-5-12 20:35 | 只看该作者
现在应该不会用纯汇编写的了吧

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

195

主题

3117

帖子

7

粉丝