查看: 4276|回复: 6

亮点STM32开发板跑纯汇编流水灯源码

[复制链接]
  • TA的每日心情
    开心
    2018-1-8 15:51
  • 签到天数: 22 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    发表于 2013-11-20 13:26:29 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 亮点 于 2013-11-20 17:02 编辑

    ;亮点STM32汇编语言跑马灯,只有1个程序
    ;LED端口在GPIOC6,7,8,9
    ;#define led_gpio GPIOC
    ;#define led1 GPIO_Pin_6  //led1 连接在GIIOC_6
    ;#define led2 GPIO_Pin_7  //led2 连接在GIIOC_7
    ;#define led3 GPIO_Pin_8  //led3 连接在GIIOC_8
    ;#define led4 GPIO_Pin_9  //led4 连接在GIIOC_9  

    LED_GPIO   EQU 0x40011000  ;GPIOC地址
    GPIOC_CRL  EQU 0x40011000  ;低配置寄存器
    GPIOC_CRH  EQU 0x40011004  ;高配置寄存器
    GPIOC_ODR  EQU 0x4001100C  ;输出,偏移地址0Ch
    GPIOC_BSRR EQU 0X40011010  ;低置位,高清除偏移地址10h
    GPIOC_BRR  EQU 0X40011014  ;清除,偏移地址14h
    IOPCEN     EQU 0X00000010  ;GPIOC使能位 在APB2的位5
    RCC_APB2ENR EQU 0x40021018 ;APB2使能寄存器的地址
    STACK_TOP EQU 0X20002000   ;堆栈的栈顶在0X20002000
        AREA RESET,CODE,READONLY ;这里开始是中断向量表
    DCD STACK_TOP ;MSP主堆栈指针
    DCD START   ;复位,PC初始值,复位后从START开始运行
    ENTRY         ;入口,指示开始执行
    START
    ;与在这里观察 RCC_CR=0x00005283  8M内时钟
        ;(1) 使能GPIOC
    LDR    R1,=RCC_APB2ENR
    LDR    R0,[R1]     ;读RCC->APB2ENR内容 RO=RCC->APB2ENR;
    LDR    R2,=IOPCEN ;
    ORR    R0,R2  ;置位R0位2
    STR    R0,[R1]  ;写RCC->APB2ENR,使能GPIOC时钟
    ;(2) 设置GPIOC端口寄存器CRL和CRH,使每个引脚都是推挽输出 CNF[1:0]=00  MODE[1:0]=11
    LDR    R0,=0x33333333
    LDR    R1,=GPIOC_CRL
    STR    R0,[R1]
       LDR    R1,=GPIOC_CRH
    STR    R0,[R1]       C[0..15] 16个引脚均设置成推挽式输出
        ;(3) 初始的时候
    LDR    R1,=GPIOC_ODR
    LDR    R0,=1<<9   ;初始时LED4点亮 ,因为LED4是PC9,对应ODR寄存器BIT9
    LOOP
    STR    R0,[R1]
    PUSH   {R0}
    MOV    R0,#300
    BL.W   DELAY_NMS ;延时300ms
    POP    {R0}
    BL.W   ByteRor1  ;状态位右循环移一位
    B      LOOP   
    ;子程序,将R0右移动,
    ;0000 0010 0000 0000 led4亮  1<<9
    ;0000 0001 0000 0000 led3亮  1<<8
    ;0000 0000 1000 0000 led2亮  1<<7
    ;0000 0000 0100 0000 led1亮  1<<6
    ;0000 0000 0010 0000 就越界了,要赋值1<<9
    ByteRor1
    LSR R0,R0,#1  ;R1=RO>>1
    CMP R0,#0X00000020  ;只有4个灯,移动到这里就移出去了
    BEQ OutB
    BX LR
    OutB
    LDR    R0,=1<<9  ;如果移出去了就回到LED4亮
        BX  LR

    ;以下代码拷贝自网络未删改,只做补充说明
    ;延时R0(us),误差0.5us
    ;延时超过100us时,误差0.5/R0小于0.5%
    DELAY_NUS
    SUB    R0,#1
    NOP
    NOP
    NOP
    CMP    R0,#0
    BNE    DELAY_NUS  ;跳时3个周期 8M内时钟,8个周期1US
    BX     LR    ;3个周期
    ;延时R0(ms),误差((R0-1)*4+12)/8us
    ;延时较长时,误差小于0.1%
    DELAY_NMS
    PUSH   {R1}   ;2个周期
    DELAY_NMSLOOP
    SUB    R0,#1
    MOV    R1,#1000  ;R1循环1000次,1MS
    DELAY_ONEUS
        SUB    R1,#1
    NOP
    NOP
    NOP
    CMP    R1,#0
    BNE    DELAY_ONEUS ;R1循环结束
    CMP    R0,#0
    BNE    DELAY_NMSLOOP ;R0循环N次,N毫秒
    POP    {R1}
    BX     LR
      END
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2020-9-28 10:10
  • 签到天数: 1018 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2013-11-20 13:59:54 | 显示全部楼层
    顶亮点老师~~~{:soso_e179:}
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2018-3-23 09:05
  • 签到天数: 518 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2013-11-20 14:06:05 | 显示全部楼层
    搞上汇编了。。哈哈
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2017-5-12 10:32
  • 签到天数: 295 天

    连续签到: 1 天

    [LV.8]以坛为家I

    发表于 2013-11-20 14:31:36 | 显示全部楼层
    顶一个~~~~~~~~~~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2020-2-7 11:49
  • 签到天数: 2193 天

    连续签到: 33 天

    [LV.Master]伴坛终老

    发表于 2013-11-20 15:38:01 | 显示全部楼层
    顶!!!!!!!!!!!!!!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2022-7-20 11:45
  • 签到天数: 1650 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    发表于 2013-11-20 20:03:01 | 显示全部楼层
    {:soso_e179:}有一种时光倒流的感觉!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2013-5-19 18:14
  • 签到天数: 7 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2013-11-20 20:03:53 | 显示全部楼层
    汇编必须要懂的!!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-12-12 07:50 , Processed in 0.193681 second(s), 27 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.