汇编之启动代码
发布日期:2021-05-26 20:04:58
浏览次数:11
分类:技术文章
本文共 2367 字,大约阅读时间需要 7 分钟。
DISABLE_IRQ_ALL EQU (1<<6 :OR: 1<<7) ;把IRQ中断和FIQ GET 2440addr.inc IMPORT main IMPORT PLL_init IMPORT BANK_Init IMPORT STACK_init IMPORT RORWZI_init PRESERVE8 AREA boot, CODE, READONLY ;定义启动代码区域 ENTRY CODE32vector ;异常向量入口 B ResetHandler ;复位异常,程序一上电就进入该模式 B UndefHandler ;未定义异常,程序出现未知异常的时候进入 B SVIHandler ;软中断异常,操作系统里系统调试使用 B PAbortHandler ;预取指异常,当取指令有问题的时候进入进行修复 B DAbortHandler ;取数据异常,当CPU取数据的时候发生问题时进入修正 B . ;保留,ARM公司预留没用的异常 B IRQHandler ;普通中断 B FIQHandler ;快中断 ResetHandler PROC ;关闭看门狗 LDR R0,=WTCON ;定义一个指针 *pwtcon LDR R1,=0x0 ;初始化R1,也就是看门狗的配置值,0表示关闭看门狗功能 STR R1,[R0] ;*pwrcon = R1 ;屏蔽中断 MRS R0,CPSR ;先读取CPSR内容,R0=CPSR ORR R0,#DISABLE_IRQ_ALL ;把R0的6 7位置1,也就是屏蔽IRQ和FIQ MSR CPSR_c,R0 ;把R0的第八位写回到CPSR第八位,实现屏蔽中断 ;配置时钟 BL PLL_init ;内存配置 BL BANK_Init ;配置堆栈 BL STACK_init ;配置RORWZI初始数据 BL RORWZI_init ;打开中断 MRS R0,CPSR ;先读取CPSR内容,R0=CPSR BIC R0,#DISABLE_IRQ_ALL ; 把R0的6 7清0,也就是屏蔽IRQ和FIQ MSR CPSR_c,R0 ;把R0的第八位写回到CPSR第八位,实现打开中断 BL main ENDPBeep_init PROC;蜂鸣器 LDR R0,=GPBCON LDR R1,[R0] ORR R1, R1,#(1 << 0) BIC R1, R1,#(1 << 1) STR R1,[R0] BX LR ;子函数返回 ENDPBeep_set PROC LDR R4, =GPBDAT LDR R1, [R4] CMP R0,#0 BICEQ R1, #(1 << 0) ORRNE R1, #(1 << 0) STR R1,[R4] BX LR ENDPdelay_ms PROC LDR R1, =12000loop_delay SUB R1,R1,#1 CMP R1,#0 BHI loop_delay SUB R0,#1 CMP R0,#0 BHI delay_ms BX LR ENDPUndefHandler PROC B UndefHandler ENDPSVIHandler PROC B SVIHandler ENDPPAbortHandler PROC B PAbortHandler ENDPDAbortHandler PROC B DAbortHandler ENDP IMPORT irq_dispatch ;IMPORT key_irq ;IMPORT key_ledIRQHandler PROC ;压栈过程 SUB LR,LR, #4 STMFD SP!,{R0-R12,LR};入栈,!表示SP指针自动变 ;中断处理过程 ;BL key_irq ;BL key_led BL irq_dispatch ;出栈 LDMFD SP!,{R0-R12,PC}^ ;出栈,同时调回断点,^表示同时恢复中断的SP SR值到SVC模式的CPSR ENDPFIQHandler PROC B FIQHandler ENDP END
转载地址:https://blog.csdn.net/Gaodes/article/details/81737990 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2024年03月11日 22时13分57秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
html贝塞尔曲线在线,贝塞尔曲线的一些事情_html/css_WEB-ITnose
2019-04-21
Java前台显示近20天的东西_第十次课:前台首页设计及显示商品信息
2019-04-21
java开发web网站的路由设计_理解Web路由(浅谈前后端路由与前后端渲染)
2019-04-21
excel如何把顺序倒过来_在excel中怎么使文字颠倒顺序反过来显示呢?
2019-04-21
脚本语言php是什么意思,PHP脚本语言
2019-04-21
matlab数学规划模型,数学规划模型
2019-04-21
视频提取音频php,如何提取视频中的音频,从视频文件中提取出音频输出成MP3格式...
2019-04-21
diy.php添加验证码,织梦dedecms自定义表单中加入验证码
2019-04-21
c语言 无错 但只运行一半,求哈夫曼编码时程序运行到一半就终止了,编译无错...
2019-04-21
android 限速工具,Android下载器之限速篇
2019-04-21
html刷新ajax实现原理,AJAX的原理—如何做到异步和局部刷新
2019-04-21
html中列表菜单加文字请选择,html中下拉菜单
2019-04-21
读书郎平板中android,读书郎学生平板电脑怎么用 使用方法详解【图文】
2019-04-21
html5 调用摄像头 支持IE,JS调用本地摄像头拍照(兼容各大浏览器及IE8+)
2019-04-21