stm32汇编程序--简单的LED闪烁

最近stm32的小项目弄的差不多了,无聊之余用arm9裸机程序的写法来写stm32,使得stm32 工程不再依赖库文件,只用一个.s运行,不过代码比较简单,随便写了个LED闪灯,喜欢汇编的朋友可以来一起"自找麻烦",呵呵

主要的代码如下:

;上面就是原来的向量表了

;下面是代码段          

      AREA    |.text|, CODE, READONLY

; Reset handler
Reset_Handler    PROC
                 EXPORT  Reset_Handler             [WEAK]
                
              ;   LDR     R0, =SystemInit ;这个函数不用,注释掉了
             ;    BLX     R0         ;现在程序运行在8M的时钟下,原始时钟
                  LDR    R3,=LED_INIT
                  BLX    R3
WHILE_LOOP          
                  LDR    R3,=LED_LIGHT
                  BLX    R3
                         
                  BL    mDELAY_xMS    ;这里适当的延时
                 
                  
                  BL    LED_OFF
                  BL    mDELAY_xMS
                 
                  
                  B        WHILE_LOOP  ;循环闪灯,led就闪烁起来了
           
                 ENDP

mDELAY_xMS      PROC
        ldr        R0,=0x00F4240        ;1000000
        MOV        R1,#1
LOOP            
        SUB        R0,R0,R1
        CMP        R0,#0
        BNE        LOOP
    
    ;    MOV        PC,LR
        BX        LR
        ENDP

LED_INIT    PROC            ;初始化LED,根据PA1初始化各寄存器,我的板子LED是接在PA1
        LDR    R0,=0x40021018
        mov    R1,#4
        str R1,[R0]                    
        LDR    R0,=0x40010800            
        MOV R1,#0x00000030            
        str    R1,[R0]
        LDR    R0,=0x40010810            
        mov    R1,#2
    ;    MOV        PC,LR
        BX    LR
    ENDP

LED_LIGHT    PROC
        ldr    R0,=0x40010810            ;led亮    
        mov    R1,#0x20000
        str    R1,[R0]
        ;MOV        PC,LR
        BX    LR
    ENDP

LED_OFF    PROC
        ldr    R0,=0x40010810            ;led 灭    
        mov    R1,#2
        str    R1,[R0]
    ;    MOV        PC,LR
        BX    LR
    ENDP

程序简单,就不贴闪灯的现象了,stm32和arm9都是arm核,指令还是有很多能通用的,这样写着玩还行,要是大一点的工程全用汇编来写那就是傻子了

 

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值