单片机
返回首页

jz2440裸机开发与分析: 点亮LED灯之C语言3

2021-09-13 来源:eefocus

对于之前提出了栈这一概念下面我们要提出问题:

1.为何要使用栈

答:c函数要用

2.如何使用栈

答:a.保存局部变量 b.保存lr等寄存器

3.调用者如何传参数给被调用者


start.s

.text

.global _start


_start:


/* 设置内存: sp 栈 */

ldr sp, =4096  /* nand启动 */

// ldr sp, =0x40000000+4096  /* nor启动 */


mov r0, #4

bl led_on


ldr r0, =100000

bl delay


mov r0, #5

bl led_on


halt:

b halt

c代码

void delay(volatile int d)

{

while (d--);

}

int led_on(int which)

{

unsigned int *pGPFCON = (unsigned int *)0x56000050;

unsigned int *pGPFDAT = (unsigned int *)0x56000054;

if (which == 4)

{

/* 配置GPF4为输出引脚 */

*pGPFCON = 0x100;

}

else if (which == 5)

{

/* 配置GPF5为输出引脚 */

*pGPFCON = 0x400;

}

/* 设置GPF4/5输出0 */

*pGPFDAT = 0;

return 0;

}


传参数mov r0, #4或 mov r0, #5 注意:r0-r3 为参数/结果寄存器

4.被调用者如何传参数给调用者

5.如何从栈中恢复那些寄存器


进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • 家用电源无载自动断电装置的设计与制作

  • 用数字电路CD4069制作的万能遥控轻触开关

  • 使用ESP8266从NTP服务器获取时间并在OLED显示器上显示

  • 开关电源的基本组成及工作原理

  • 用NE555制作定时器

  • 带有短路保护系统的5V直流稳压电源电路图

    相关电子头条文章