使用C语言(四)



从汇编跳入C语言,我们需要设置一下堆栈,才能正常使用。

除此之外,硬件上还有一些东西需要初始化一下。
1.关闭看门狗
2.初始化时钟
3.初始化内存 
然后才是初始化堆栈。

我们设置为Nand启动,开机会把前4k拷贝到片内内存SRAM中运行。
如果是NOR启动,直接就在Nor上运行了,NOR不太清楚原理就先放弃。

那么我们
1.关闭看门狗,默认居然是开的
2.时钟启动的时候是40M,我们先不管他了
3.据说SDRAM不需要初始化,SRAM应该也不需要我们做什么吧

4.初始化堆栈

├── c_led
│   ├── led_on_c.c
│   └── Makefile
├── startc.S



.text
.global _start
_start:
        //1.关闭看门狗

        ldr  r0,=0x53000000
        mov  r1,#0x0
        str  r1,[r0]
        //2.初始化时钟
        //3.初始化SDRAM
        //4.给C程序准备堆栈
        ldr  sp,=1024*4
        //跳入C main()
        bl   main

HALT:
        b    HALT

Makefile:

#define GPBCON      (*(volatile unsigned long *)0x56000050)
#define GPBDAT      (*(volatile unsigned long *)0x56000054)

int main()
{
    GPBCON = 0x00000100;    // 设置GPB4为输出口, 位[8:7]=0b01
    GPBDAT = 0x00000000;    // GPB4输出0,LED1点亮

    return 0;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值