ARM笔记:汇编和C语言程序详解1

发布者:考古专家最新更新时间:2017-11-12 来源: eefocus关键字:ARM  汇编  C语言 手机看文章 扫描二维码
随时随地手机看文章

本文纯属原创,为arm子程序模块,包含了汇编和C语言两种写法,后续将陆续完善。
ON1、关闭WATCHDOG,否则CPU会不断重启:
汇编:
disable_watch_dog:
       @往WATCHDOG寄存器写0
       mov r1,#0x53000000
       mov r2,#0x0
       str r2,[r1]
       mov pc,lr     //返回
C语言:
#define WTCON (*(volatile unsigned long *)0x53000000)
void disable_watch_dog(void)
{
      WTCON=0;
}
ON2、存储控制器的使用
汇编:
.equ MEM_CTL_BASE,0x48000000
memsetup:
    @ 设置存储控制器以便使用SDRAM等外设

    mov r1,     #MEM_CTL_BASE       @ 存储控制器的13个寄存器的开始地址
    adrl    r2, mem_cfg_val         @ 这13个值的起始存储地址
    add r3,     r1, #52             @ 13*4 = 54
1: 
    ldr r4,     [r2], #4            @ 读取设置值,并让r2加4
    str r4,     [r1], #4            @ 将此值写入寄存器,并让r1加4
    cmp r1,     r3                  @ 判断是否设置完所有13个寄存器
    bne 1b                          @ 若没有写成,继续
    mov pc,     lr                  @ 返回


.align 4
mem_cfg_val:
    @ 存储控制器13个寄存器的设置值
    .long   0x22011110      @ BWSCON
    .long   0x00000700      @ BANKCON0
    .long   0x00000700      @ BANKCON1
    .long   0x00000700      @ BANKCON2
    .long   0x00000700      @ BANKCON3 
    .long   0x00000700      @ BANKCON4
    .long   0x00000700      @ BANKCON5
    .long   0x00018005      @ BANKCON6
    .long   0x00018005      @ BANKCON7
    .long   0x008C07A3      @ REFRESH
    .long   0x000000B1      @ BANKSIZE
    .long   0x00000030      @ MRSRB6
    .long   0x00000030      @ MRSRB7
C语言:
#define MEM_CTL_BASE 0X48000000
//设置存储控制器以使用SDRAM
void memsetup(void)
{
   
    unsigned long  const    mem_cfg_val[]={ 0x22011110,     //BWSCON
                                            0x00000700,     //BANKCON0
                                            0x00000700,     //BANKCON1
                                            0x00000700,     //BANKCON2
                                            0x00000700,     //BANKCON3 
                                            0x00000700,     //BANKCON4
                                            0x00000700,     //BANKCON5
                                            0x00018005,     //BANKCON6
                                            0x00018005,     //BANKCON7
                                            0x008C07A3,     //REFRESH
                                            0x000000B1,     //BANKSIZE
                                            0x00000030,     //MRSRB6
                                            0x00000030,     //MRSRB7
                                    };
    int     i = 0;
    volatile unsigned long *p = (volatile unsigned long *)MEM_CTL_BASE;
    for(; i < 13; i++)
        p[i] = mem_cfg_val[i];
}

分享: 


关键字:ARM  汇编  C语言 引用地址:ARM笔记:汇编和C语言程序详解1

上一篇:ARM笔记: 裸机实验之存储控制器
下一篇:stm32学习之复位和时钟

推荐阅读最新更新时间:2024-03-16 15:44

借力ARM强大生态系统从容迎接IoT时代
电子报道:AI正从遥远的云端缓步走向尘世,IoT则是已经渗透到人类生活的各个层面并发挥其影响力;要加速IoT发展,就必须从装置管理、云端介面,以及健全的开发者社群与伙伴关系着手。 一年一度的台北国际电脑展(Computex 2017)在月初圆满落幕,在会中最热门的两大技术议题,非人工智慧(AI)与物联网(IoT)莫属;AI正从遥远的云端缓步走向尘世,IoT则是已经渗透到人类生活的各个层面并发挥其影响力。 专为IoT应用量身打造的平台 而如同ARM物联网事业群总裁Dipesh Patel在Computex期间CPX论坛专题演说中所提,虽然全球物联网装置估计到2035年可达到2,750亿台,庞大市场商机可期,但基础建设成本
[半导体设计/制造]
基于ARM-LPC2368的网络接口的设计与实现
1 引言 随着Internet技术的迅速发展,人们对信息共享的要求也不断提高。目前,嵌入式系统已经渗透到我们生活的每个角落,它与网络的完美结合,为我们共享信息提供了很大的便利。PHILIPS公司的LPC2368是一款优秀的微处理器,基于它的嵌入式系统如果没有以太网接口,那么其应用价值也就会大打折扣。因此,就整个系统而言,以太网接口电路应是必不可少的,但同时也是相对较复杂的。 以太网接口电路主要由MAC控制器和物理层接口(Physical Layer,PHY)两大部分构成。LPC2368内嵌一个以太网控制器,支持精简的媒体独立接口(Reduced Media Independent Interface,RMII)和带缓冲DM
[单片机]
基于<font color='red'>ARM</font>-LPC2368的网络接口的设计与实现
嵌入式arm学习总结(七)--中断-基于S3C2440
1.中断执行过程 1)保存中断前PC值 2)保持中断前CPSR到spsr 3)修改CPSR的相应值,进入相应异常模式 4)执行异常 5)现将SPSR还原到CPSR 6)还原PC ARM硬件不支持相同异常中断嵌套 如果相同异常嵌套,必须通过软件来保存CPSR和PC的值 不同异常中断硬件支持嵌套 2.s3c2440的中断 共60个终端源,有五种中断触发方式 3.ARM中断响应过程--详细过程 中断初始化总共分为7步,只要初始化后,只要触发中断,那么程序直接跳入中断服务函数 第一步:配置I/O口为中断功能 第二步:配置外部中断触发模式 第三步: EINTPEND外中断挂起寄存器,清除时要写1相当于为0,清除中断
[单片机]
单片机中C语言延时函数
单片机C语言延时程序计算2009-11-02 22:15单片机C语言延时程序用C语言写出来程序非常的简练,它是一种模块化的语言,一种比汇编更高级的语言,但是就是这样一种语言也还是有它不足之处:它的延时很不好控制,我们常常很难知道一段延时程序它的精确延时到底是多少,这和汇编延时程序没法比。但有时后写程序又不得不要用到比较精确的延时,虽然说可以用混合编程的方式解决,但这种方式不是每个人都能掌握,且写起来也麻烦。所以,通过测试我给大家提供一个延时子程序模块,并以此给一个出我们经常用到的延时的数据表格。(注意:表格中的数据只适合我的延时模块,对其他的延时程序不适用,切忌!!!!!!!!别到时候延时不对来骂我) 延时模块:其中问号代
[单片机]
ARM裸板程序及引申_点亮LED
第001节_辅线1_硬件知识_LED原理图 当我们学习C语言的时候,我们会写个Hello程序。那当我们写ARM程序,也该有一个简单的程序引领我们入门,这个程序就是点亮LED。 我们怎样去点亮一个LED呢? 分为三步: 1.看原理图,确定控制LED的引脚; 2.看主芯片的芯片手册,确定如何设置控制这个引脚; 3.写程序; 先来讲讲怎么看原理图: LED样子有很多种,像插脚的,贴片的。 它们长得完全不一样,因此我们在原理图中将它抽象出来。 点亮LED需要通电源,同时为了保护LED,加个电阻减小电流。 控制LED灯的亮灭,可以手动开关LED,但在电子系统中,不可能让人来控制开关,通过编程,利用芯片的引脚去控制开关。
[单片机]
<font color='red'>ARM</font>裸板程序及引申_点亮LED
单片机的c语言教程 第二课 初步认识51芯片
上一课我们的第一个项目完成了,可能有懂C语言的朋友会说, 这和PC机上的C语言没有多大的区别呀 。的确没有太大的区别,C语言只是一种程序语言的统称,针对不同的处理器相关的C语言都会有一些细节的改变。编写PC机的C程序时,如要对硬件编程你就必须对硬件要有一定的认识,51单片机编程就更是如此,因它的开发应用是不可与硬件脱节的,所以我们先要来初步认识一下51苾片的结构和引脚功能。MSC51架构的芯片种类很多,具体特点和功能不尽相同(在以后编写的附录中会加入常用的一些51芯片的资料列表),在此后的教程中就以Atmel公司的AT89C51和AT89C2051为中心对象来进行学习,两者是AT89系列的典型代表,在爱好者中使用相当的多,应用资料很
[单片机]
单片机的<font color='red'>c语言</font>教程 第二课 初步认识51芯片
ARM9_S3C2440学习(六)SDRAM内存分配
SDRAM内存分配
[单片机]
<font color='red'>ARM</font>9_S3C2440学习(六)SDRAM内存分配
基于DSP+ARM架构的协议转换器设计
  在测试飞行控制组件时,遥测接收设各离信息处理中心较远,而被测数据量又极大,如果采用传统的专线传输遥测数据,则传输时间需几个小时,无法满足快速处理的要求。因此,需要研制一种协议转换器,用来完成被测数据无损、实时、远距离地与远程上位机进行通信,并能接收上位机的控制指令,实现工作状态的远程交互,而测试人员通过上位机的人机界面就可以完成所有测试。   1、系统组成及工作原理   考虑到系统实时性和可靠性的要求,选择以太网口作为协议转换器与远程上位机的数据转发接口、以高速串口作为控制口的通信方式,采用DSP+ARM架构的硬件解决方案。系统框图如图1所示。基本工作原理:FPGA作为数据预处理器,完成并行数据到串行数据的转换等数据预处理
[单片机]
基于DSP+<font color='red'>ARM</font>架构的协议转换器设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
热门活动
换一批
更多
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多精选电路图
换一换 更多 相关热搜器件
更多每日新闻
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved