黄瓜与什么相克| 天天吃玉米有什么好处和坏处| 熬夜伤什么器官| 黄疸挂什么科| 下嘴唇发紫是什么原因| 鸡毛信是什么意思| 醋酸是什么面料| 各就各位是什么意思| 机智如你是什么意思| 年轻人能为世界做什么| mi什么意思| 医学上是什么意思| maga是什么意思| 手上长水泡是什么原因| 缺钾是什么原因| 屁臭是什么原因造成的| 海参吃什么| 什么是18k金| 七月与安生讲的是什么| 麦冬是什么| 姜薯是什么| 什么是结肠炎| 八月十一号是什么星座| 核辐射是什么意思| 老公生日送什么礼物好| 女性阴部潮湿是什么原因| 辰龙是什么意思| 冷暖自知是什么意思| 什么忙什么乱| 右下腹疼挂什么科| 天蝎是什么动物| 拔罐有什么作用和功效| 作怪是什么意思| 宫腔分离是什么意思| ec什么意思| 月亮是什么生肖| 重阳节干什么| yet什么意思| 什么男什么女| 梦见朋友死了是什么意思| 病毒性感冒咳嗽吃什么药效果好| 检查怀孕要做什么检查| rng是什么意思| 八月三十日是什么星座| 胎记是什么| 红薯不能和什么一起吃| 养鱼为什么养单不养双| 驱动精灵是干什么用的| 三个龙念什么| 经血逆流的症状是什么| 经血颜色淡是什么原因| 尿毒症有什么症状| 8月6日是什么星座| 腹股沟疝气挂什么科| 8月29日是什么星座| 夏季摆摊卖什么好| 果酸是什么东西| 85年什么命| 甲醛闻多了有什么症状| 哺乳期妈妈感冒了可以吃什么药| 噩梦是什么意思| 当所有的人离开我的时候是什么歌| 双侧腋下见淋巴结什么意思| 什么发色显白| 赭石色是什么颜色| 桦树茸有什么功效| 为什么感冒药吃了想睡觉| 猜忌是什么意思| 化疗后吃什么排毒最快| 慧外秀中什么意思| 3月什么星座| 把你的心我的心串一串是什么歌| 网监是干什么的| elisa是什么检测方法| 磨牙挂什么科| 血钾低吃什么| 青岛啤酒节什么时候| 妇科和妇产科有什么区别| 耕的左边读什么| 罄竹难书什么意思| 淳字五行属什么| hushpuppies是什么牌子| 淡然自若的意思是什么| 眼睛有异物感是什么原因| 2月2日什么星座| 两个方一个土是什么字| 什么是缘分| 举不胜举的举是什么意思| 异想天开什么意思| 生殖器疱疹是什么| 女人绝经后靠什么排毒| 一次不忠终身不用什么意思| 主理人是什么意思| 一个虫一个离念什么| 53岁属什么| 平板是什么| 最机灵的动物是什么生肖| 猫是什么动物| 七月份出生是什么星座| aki医学上是什么意思| 儿童尿频什么原因引起的| 东莞有什么区| 7.14日是什么日子| 狗吐了是什么原因| 无精打采是什么生肖| 2016年属什么生肖| cp是什么| 耳朵里面疼用什么药| absolutvodka什么酒| rap什么意思| 咳嗽两个月了一直不好是什么原因| 白居易是诗什么| 什么叫释怀| 控制血糖吃什么食物| 梦见自己杀人了是什么意思| 甲状腺球蛋白抗体高是什么原因| 鼓目念什么| 肌酐是检查什么的| 身上冷是什么原因| 去海边穿什么衣服拍照好看| 天蝎座的幸运色是什么| 吃什么hcg翻倍快| 眉骨疼是什么原因| uma是什么意思| 四月十七号是什么星座| 喝蜂蜜水有什么好处| 呆小症是缺乏什么激素| 孙悟空是个什么样的人| 能戒烟的男人什么性格| 女生经常手淫有什么危害| 癫痫是什么| 藏海花是什么花| 胆结石有什么治疗方法| 崖柏是什么| 长胸毛的男人代表什么| 清炖鸡放什么调料| 查微量元素挂什么科| 牙疼吃什么水果好| 肺炎吃什么药有效| ox什么意思| 大盘是什么意思| 吃什么减肥快| polo villae是什么档次| deep是什么意思| 血压和血糖有什么关系| 什么不能带上高铁| 知府相当于现在什么官| 夜宵吃什么| 尿酸高是什么症状| 怀孕两个星期有什么反应| 炖鸡汤放什么材料| 毫不犹豫的意思是什么| 百分比是什么意思| 10度左右穿什么衣服合适| 总胆固醇高是什么原因| 分泌物豆腐渣状是什么原因| 孕妇有血窦要注意什么| 过敏性紫癜有什么危害| 下肢动脉闭塞吃什么药| 苦瓜有什么作用| 什么是银屑病| 胆管堵塞有什么症状| 银杏属于什么植物| 儿童口腔疱疹吃什么药| 9月什么星座| 夏季吃什么水果| 什么药止血效果最快| 什么是终端| 抗缪勒氏管激素是检查什么的| 水煎服是什么意思| 腊肉配什么菜炒好吃| 毒枭是什么意思| dxm是什么药| 胃酸分泌过多吃什么药| bhp是什么单位| 下蛊是什么意思| 治疗湿疹吃什么药| 张韶涵什么星座| 活塞是什么| 三角梅什么时候开花| 为什么打死不吃骡子肉| 燕窝有什么功效| 七月份什么星座| 骨髓瘤是什么原因引起的| 一什么新月| 脑干堵塞什么症状| 抛锚是什么意思| 尿细菌高是什么原因| 3月6号是什么星座的| 一句没事代表什么意思| 扬长避短什么意思| 厘米为什么叫公分| thr是什么氨基酸| 什么是肉桂| cco是什么意思| 被电击后身体会有什么后遗症| 美团是干什么的| 天干地支是什么意思| 小孩肚子痛挂什么科| 胃病烧心吃什么药好| 尤甚是什么意思| 大男子主义什么意思| 鼓风机是干什么用的| 脑电图是检查什么的| 游字五行属什么| 如你所愿是什么意思| 国家栋梁指的是什么官| 不止是什么意思| nuxe是什么牌子护肤品| 康庄大道是什么意思| 歌字五行属什么| 红霉素软膏有什么作用| 老年人缺钾是什么原因引起的| hpv什么意思| 前列腺按摩什么感觉| 花生不能和什么食物一起吃| 海参是补什么| 什么时候开始数伏| 57是什么意思| 黄猫来家里有什么预兆| 枸杞泡水喝有什么好处| 女人为什么不会怀孕| 胃糜烂吃什么药最好| 墨菲定律是什么| 反流性食管炎吃什么药最有效| 打三个喷嚏代表什么| 王晶为什么不娶邱淑贞| 青梅是什么水果| 脸上长痘痘是什么原因| 八月一号是什么星座| 今天出生的男宝宝取什么名字好| 眼睛过敏用什么眼药水| 两个月没来月经是什么原因| 过期酸奶有什么用| 子宫肌瘤有什么危害| 肚子疼恶心想吐吃什么药| 衣冠禽兽什么意思| 绒毛膜促性腺激素是什么意思| 吃什么才能提高免疫力| newbee什么意思| 吃什么可以增加免疫力| 帕金森是什么原因引起的| 胡萝卜补充什么维生素| 亲亲抱抱举高高什么意思| move什么意思| 什么血型可以生出o型血| 萧墙是什么意思| 颈动脉斑块看什么科| 300分能上什么大学| 音字五行属什么| 性是什么| 社论是什么| 帕金森病是什么原因引起的| 膀胱炎吃什么药最见效| 膝关节积液吃什么药| 芦荟有什么功效| 人棉是什么面料| 罗锅是什么意思| 心律不齐吃什么药好| 皮肤痒是什么病的前兆| 睡觉后腰疼是什么原因引起的| 糖宝是什么意思| 肚子胀恶心想吐是什么原因| 狐狸狗是什么品种| 百度
这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 ? 论坛首页 ? 嵌入式开发 ? MCU ? LPC2100 启动代码心得与大家分享!

共8条 1/1 1 跳转至

LPC2100 启动代码心得与大家分享!

菜鸟
2025-08-04 23:47:54     打赏
百度 ”在本次书展的简体馆中,华品文创出版公司总编辑陈秋玲告诉记者,简体馆自2013年在台北书展上设立,至今已是第6年,所展示的简体书一直都很受欢迎。

1、将寄存器定义到ARM_LPC2000,并用 INCLUDE ARM_LPC2000.INC 包含到主程序文件开头,注意INCLUDE要顶格。

2、设置Targets Settings中Post-linker要选择 ARM fromELF,并在 ARM fromELF设置中使用二进制 plain binary.

3、设置Targets Settings中ARM Linker的Output页的Linktype为simple,并设 RO Base = 0x0, RW Base = 0x40000000

4、建立工程时要不要选择周立功的向导,直接用最上面第一项

以下是代码:

INCLUDE ARM_LPC2000.INC
GBLL TargetDowload
GBLL DebugTesting
; GBLL SecurePretect
GBLL PhaseLockLoop

;;===========================================================================================
u0_baud EQU 115200 ; 115200 = 0x1C200; 11059200 = 0xA8C000;
Fosc EQU 11059200 ; Crystal frequence:11059200/27648000/55296000。
Fcclk EQU (Fosc * 4 ) ; 系统频率,必须为Fosc的整数倍(1~32),且<=60MHZ。
Fcco EQU (Fcclk * 4) ; CCO频率,必须为Fcclk的2、4、8、16倍,范围为156MHz~320MHz。
Fpclk EQU (Fcclk / 4) * 1 ; VPB时钟频率,只能为(Fcclk / 4)的1、2、4倍。
; ===========================================================================================
SVC_STACK_LEGTH EQU 0
FIQ_STACK_LEGTH EQU 0
IRQ_STACK_LEGTH EQU 256
ABT_STACK_LEGTH EQU 0
UND_STACK_LEGTH EQU 0

; ===========================================================================================
; 程序部分:初始化及中断向量
;
; ===========================================================================================
AREA Initialize,CODE,READONLY ; AREA 段名(独立) CODE|DATA| 属性
ENTRY
CODE32 ; CODE32: 以下为 ARM 指令;CODE16: 以下为 THUMB 指令
; ===========================================================================================
Reset
LDR PC, Reset_Address ;; 0x00-复位异常向量
LDR PC, Undefine_Address ;; 0x04-未定义指令异常
LDR PC, SWI_Address ;; 0x08-SWI 异常
LDR PC, PrefetchAbort_Address ;; 0x0C-指令预取中止异常
LDR PC, DataAbort_Address ;; 0x10-数据预取中止异常
DCD 0xb9205f88 ;; 为使向量表所有32位数据累加和为零而补数,LPC2000系列仅校验0x00~0x1F
LDR PC, [PC,#-0x0FF0] ;; 0x18-IRQ 异常 PC执行完本指令后指向0x20,此时PC-#0xFF0=0xFFFFF030,正是VICVectAddr地址
LDR PC, FIQ_Address ;; 0x1C-FIQ 异常

Reset_Address DCD Reset_Initialize ;; 返回:BL => MOV PC,LR
Undefine_Address DCD Undefine_Handler ;; 返回:MOVS PC,R14_und
SWI_Address DCD SWI_Handler ;; 返回:MOVS PC,R14_svc
PrefetchAbort_Address DCD PrefetchAbort_Handler ;; 返回:SUBS PC,R14_abt,#04
DataAbort_Address DCD DataAbort_Handler ;; 返回:SUBS PC,R14_abt,#08
FIQ_Address DCD FIQ_Handler ;; 返回:SUBS PC,R14_fiq,#04

; ===========================================================================================
Undefine_Handler B .
SWI_Handler B SWI_Exception
PrefetchAbort_Handler B .
DataAbort_Handler B .
FIQ_Handler
STMFA SP!, {R0-R3, LR}
BL FIQ_Exception
LDMFA SP!, {R0-R3, LR}
SUBS PC, LR, #4

;;*******************************************************************************************
;;=============== SWI 调用 ===============

; MOV R0,#0x12
; MOV R1,#0x31 ;; 调用0x12(R0)号软中断的0x31(R1)号子功能。
; SWI 0 ;; 相当于 mov r0,#0x31; swi #0x12

SWI_Exception ;; SWI: CPU Mode exchanging!
MOV PC,LR

FIQ_Exception ;; FIQ: Winthin 27 clock!
MOV PC,LR
; ===========================================================================================
; InitStack & InitTarget
; ===========================================================================================
InitStack
MOV R0,LR
MSR CPSR_c,#0x000000D3
LDR R1,=SvcStackSpace
MOV SP,R1

MSR CPSR_c,#0x000000D2
LDR R1,=IrqStackSpace
MOV SP,R1

MSR CPSR_c,#0x000000D1
LDR R1,=FiqStackSpace
MOV SP,R1

MSR CPSR_c,#0x000000D7
LDR R1,=AbtStackSpace
MOV SP,R1

MSR CPSR_c,#0x000000Db
LDR R1,=UndtStackSpace
MOV SP,R1

MSR CPSR_c,#0x0000005F ;#0x000000DF修改,打开中断
LDR SP,=StackUSR
MOV PC,R0

InitTarget
ldr r0,=0xe01fc000
;; /* Set Up ReMap */
mov r1,#1 ;;1->#0xe01fc040: image to Flash,Boot loader; ;;0x02: image to RAM,User program
str r1,[r0,#0x40]

if :def: PhaseLockLoop ;;/////////////
;; /* Set system timers for each component */
mov r1,#1 ;; 1-enable
strb r1,[r0,#0x80] ;; Step1:Enable PLL by PLLCON(0xe01fc080)

if (Fpclk/(Fcclk/4)) = 1 ;; Step2:Setup reg_VPBDIV
mov r2,#0
strb r2,[r0,#0x100]
endif
if (Fpclk/(Fcclk/4)) = 2
mov r2,#2
strb r2,[r0,#0x100]
endif
if (Fpclk/(Fcclk/4)) = 4
mov r2,#1 ;; MEMVALB VPBDIV,0x00010001
strb r2,[r0,#0x100] ;; Fcclk/Fpclk 比值: =1:00,=2:10,=4:01; b7~4=b3~0
endif

if (Fcco/Fcclk) = 2 ;; Step3:Setup reg_PLLCFG
MEMVALB PLLCFG,((Fcclk/Fosc) - 1)|(0<<5)
endif
if (Fcco/Fcclk) = 4
mov r1,#0x23 ;; MEMVALB PLLCFG,((Fcclk/Fosc) - 1)|(1<<5)
strb r1,[r0,#0x84]
endif
if (Fcco/Fcclk) = 8
MEMVALB PLLCFG,((Fcclk/Fosc) - 1)|(2<<5)
endif
if (Fcco/Fcclk) = 16
MEMVALB PLLCFG,((Fcclk/Fosc) - 1)|(3<<5)
endif

mov r3,#0xaa
strb r3,[r0,#0x8c] ;; PLLFEED = 0xAA;
mov r12,#0x55 ;; PLLFEED = 0x55;
strb r12,[r0,#0x8c]

ldrh r1,[r0,#0x88] ;;PLLSTAT
tst r1,#0x400 ;; Test PLLSTAT_bit10 = 1?
beq {PC} - 12 ;; Step5:waiting until LOCK signal.

mov r1,#3 ;;PLLCON 3-connect
strb r1,[r0,#0x80] ;; Step6:Connect PLL

strb r3,[r0,#0x8c]
strb r12,[r0,#0x8c] ;; Step7:Feedback 0xaa,0x55 once more to avalid setting!
endif ;;/////////////

if :def: TargetDowload ;;////####
;; /* Set memory accelerater module*/
MEMVALB MAMCR,0x0000 ;; Step1:disable MAM.
if Fcclk < 20000000
MEMVALB MAMTIM,0x0001
else
if Fcclk < 40000000
MEMVALB MAMTIM,0x0002
else
MEMVALB MAMTIM,0x0003
endif
endif
MEMVALB MAMCR,0x0000 ;; Step2: enable MAM.

;----------- Set Up VIC:
mvn r0,#0 ;; r0 = 0xffffffff
mov r2,#0
str r0,[r2,#-0xfec] ;;VICIntEnClr = 0xffffffff
str r2,[r2,#-0xfd0] ;;VICVectAddr = 0x0
str r2,[r2,#-0xff4] ;;VICIntSelect= 0x0
endif ;;////####

mov pc,lr
; ===========================================================================================
Reset_Initialize
BL InitStack
BL InitTarget
B InitSystem
; ===========================================================================================
__user_initial_stackheap
LDR r0,=bottom_of_heap
; LDR r1,=StackUSR
MOV pc,lr
; ===========================================================================================
if :def: SecurePretect
if :def: EN_CRP ;; 芯片加密:向地址0x1FC处写0x87654321 便实现了ARM7加密,只能ISP擦除。
if . >= 0x1FC
INFO 1,"\nThe data at 0x000001fc must be 0x87654321."
endif
CrpData
while . < 0x1FC
NOP
wend
CrpData1 ;; 对于LPC2100系列ARM7核:
DCD 0x87654331 ;; When the Data is 0x87654321 on address_0x1FC,user code be protected.
endif
endif
; ===========================================================================================
; 设置 ARM Linker 类型:Simple image 的 RO Base: 0x00000000; RW Base: 0x40000300。
; 或 Command Line:-info totals -entry 0x00000000 -ro-base 0x00000000 -rw-base 0x40000300

AREA MyStacks, DATA, NOINIT, ALIGN=2 ;ALIGN=2 表示代码是04字节对齐的。

SvcStackSpace % SVC_STACK_LEGTH * 4 ;Stack spaces for Administration Mode 管理模式堆栈空间
IrqStackSpace % IRQ_STACK_LEGTH * 4 ;Stack spaces for Interrupt ReQuest Mode 中断模式堆栈空间
FiqStackSpace % FIQ_STACK_LEGTH * 4 ;Stack spaces for Fast Interrupt reQuest Mode 快速中断模式堆栈空间
AbtStackSpace % ABT_STACK_LEGTH * 4 ;Stack spaces for Suspend Mode 中止义模式堆栈空间
UndtStackSpace % UND_STACK_LEGTH * 4 ;Stack spaces for Undefined Mode 未定义模式堆栈

AREA Variable, DATA

BufferTxd SPACE 100 ;
BufferRxd SPACE 100 ;
BufferCurTime SPACE 16 ;
BufferI2CSlaveAddress % 1 ;包含 bit=0/1 读写信息
BufferI2CNumber % 1 ;
BufferI2CData % 0x100 ;

AREA Heap, DATA, NOINIT
bottom_of_heap SPACE 1

AREA Stacks, DATA, NOINIT
StackUSR SPACE 100

;;===========================================================================================
AREA MainProgram,CODE,READONLY
CODE32 ; CODE32: 以下为 ARM 指令;CODE16: 以下为 THUMB 指令
;;===========================================================================================

;; 从这里开始写你自己的程序

本人450元买的EasyARM2131开发板子,现在300元低价格转让,并可以适当指导,需要者和我联系:13044125591,艾和荣。




关键词: LPC2100     启动     代码     心得     大家     分享     Fc    

菜鸟
2025-08-04 23:54:00     打赏
2楼

补充:

设置Targets Settings中ARM Linker的Output页的Linktype为 simple

代码优点:

1、可以将所有的代码写在同一文件里,不需要周立功模板里繁琐的包含文件

2、全透明。

3、设置简单。


菜鸟
2025-08-04 23:55:00     打赏
3楼

设置Targets Settings中ARM Linker的Output页的Linktype为

simple !


菜鸟
2025-08-04 23:56:00     打赏
4楼

设置Targets Settings中ARM Linker的Output页的Linktype为

simple


菜鸟
2025-08-04 23:57:00     打赏
5楼
设置Targets Settings中ARM Linker的Output页的Linktype为第二项

菜鸟
2025-08-04 00:39:00     打赏
6楼
支持楼主

菜鸟
2025-08-04 14:00:57     打赏
7楼
ARM编程:低价转让EasyARM2200开发板 [jianghy2008] 2006-7-20 17:50:31

低价转让EasyARM2200开发板
低价转让EasyARM2200开发板 650元
原价980元 无用过,无损伤,光盘,资料齐全

联系13167328210 只限北京


菜鸟
2025-08-04 12:19:06     打赏
8楼
超宏达科技是一家专业的电子元器件代理商(www.super-grand.net),主要是NXP、ATMEL、ST、FAIRCHILD、NS、MICROCHIP、Winbond、Rohm、JRC、SAMSUNG、IR、UTC的代理,公司强大的技术支持和电子商务平台,可以解决电子元器件BOM表一站式打样和在线询价。详细资料请登陆 www.super-grand.net 联系人:邱先生    电话:0755-83218602    传真:0755-83261186 QQ:952845901 MSN:ericqxz@hotmail.com

共8条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]
维密是什么意思 脂肪瘤应该挂什么科 ncf什么意思 舌头疼吃什么药好得快 病毒是什么生物
侄子是什么关系 congee是什么意思 羊胡子疮用什么药膏 没什么大不了 胃糜烂是什么原因引起的
什么人不适合吃榴莲 小孩不吃肉是什么原因 脱髓鞘疾病是什么病 什么属相不能挂山水画 氨糖有什么功效
晚上为什么睡不着 男人为什么离不开情人 2月23日什么星座 狼的天敌是什么动物 什么是安全感
漏斗胸为什么长不胖hcv8jop5ns3r.cn 大专什么专业好就业hcv8jop5ns8r.cn 掉头发多是什么原因hcv8jop0ns5r.cn 头顶痛是什么原因hcv9jop8ns1r.cn 参天大树什么意思hcv9jop0ns0r.cn
不全骨折是什么意思gangsutong.com 头出汗多是什么原因hcv7jop5ns0r.cn 人体最大器官是什么hcv7jop9ns6r.cn 高糖是什么hcv8jop3ns9r.cn 老舍被誉为什么称号creativexi.com
爬山是什么意思hcv8jop3ns1r.cn 长脸适合什么发型男hcv8jop9ns8r.cn 为什么长不高hcv7jop5ns5r.cn msa是什么hcv8jop9ns1r.cn 喜欢一个人是什么感觉hcv9jop5ns5r.cn
悠着点是什么意思hcv8jop5ns0r.cn 汗臭和狐臭有什么区别怎么辨别hcv8jop3ns6r.cn 可乐鸡翅需要什么材料hcv9jop6ns9r.cn 和尚代表什么生肖hcv9jop2ns1r.cn 颈动脉彩超能查出什么hcv9jop2ns6r.cn
百度