[ZLG-MCU] 向hotpower求助

[复制链接]
2309|0
 楼主| cmanning 发表于 2007-3-2 15:51 | 显示全部楼层 |阅读模式
<br />hotpower&nbsp;前辈:<br /><br />&nbsp;&nbsp;看了你的分析&quot;非典架构&quot;,我也遇到了类似的情况,<br />&nbsp;&nbsp;各种条件正常时丢失中断。<br />&nbsp;&nbsp;尤其是硬件I2C的中断,稳定性较差。FIQ的外部中断2,丢失较严重。<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;我用的是LPC2138&nbsp;+&nbsp;ads1.2&nbsp;+&nbsp;ucos2&nbsp;+&nbsp;中断嵌套(几乎所有的外设中断IRQ)<br />&nbsp;&nbsp;由于没用过kail,不能直接应用你的文件。<br />&nbsp;&nbsp;不知如何使用你的&quot;非典架构&quot;,修改我目前的文件,来解决问题。<br /><br />我的<br />Startup.s文件<br />&nbsp;&nbsp;<br />;define&nbsp;the&nbsp;stack&nbsp;size<br />;定义堆栈的大小<br />FIQ_STACK_LEGTH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0<br />IRQ_STACK_LEGTH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;9*10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;every&nbsp;layer&nbsp;need&nbsp;9&nbsp;bytes&nbsp;stack&nbsp;,&nbsp;permit&nbsp;8&nbsp;layer&nbsp;.每层嵌套需要9个字堆栈,允许8层嵌套<br />ABT_STACK_LEGTH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0<br />UND_STACK_LEGTH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0<br /><br />NoInt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;0x80<br /><br />USR32Mode&nbsp;&nbsp;&nbsp;EQU&nbsp;0x10<br />SVC32Mode&nbsp;&nbsp;&nbsp;EQU&nbsp;0x13<br />SYS32Mode&nbsp;&nbsp;&nbsp;EQU&nbsp;0x1f<br />IRQ32Mode&nbsp;&nbsp;&nbsp;EQU&nbsp;0x12<br />FIQ32Mode&nbsp;&nbsp;&nbsp;EQU&nbsp;0x11<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;IMPORT&nbsp;__use_no_semihosting_swi<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />;The&nbsp;imported&nbsp;labels&nbsp;&nbsp;&nbsp;&nbsp;<br />;引入的外部标号在这声明<br />&nbsp;&nbsp;&nbsp;&nbsp;IMPORT&nbsp;&nbsp;FIQ_Exception&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;Fast&nbsp;interrupt&nbsp;exceptions&nbsp;handler&nbsp;快速中断异常处理程序<br />&nbsp;&nbsp;&nbsp;&nbsp;IMPORT&nbsp;&nbsp;__main&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;The&nbsp;entry&nbsp;point&nbsp;to&nbsp;the&nbsp;main&nbsp;function&nbsp;C语言主程序入口&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;IMPORT&nbsp;&nbsp;TargetResetInit&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;initialize&nbsp;the&nbsp;target&nbsp;board&nbsp;目标板基本初始化<br />&nbsp;&nbsp;&nbsp;&nbsp;IMPORT&nbsp;&nbsp;SoftwareInterrupt<br /><br />;The&nbsp;emported&nbsp;labels&nbsp;&nbsp;&nbsp;&nbsp;<br />;给外部使用的标号在这声明<br />&nbsp;&nbsp;&nbsp;&nbsp;EXPORT&nbsp;&nbsp;bottom_of_heap<br />&nbsp;&nbsp;&nbsp;&nbsp;EXPORT&nbsp;&nbsp;StackUsr<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;EXPORT&nbsp;&nbsp;Reset<br />&nbsp;&nbsp;&nbsp;&nbsp;EXPORT&nbsp;&nbsp;__user_initial_stackheap<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;CODE32<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;AREA&nbsp;&nbsp;&nbsp;&nbsp;vectors,CODE,READONLY<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ENTRY<br /><br />;interrupt&nbsp;vectors<br />;中断向量表<br />Reset<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PC,&nbsp;ResetAddr<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PC,&nbsp;UndefinedAddr<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PC,&nbsp;SWI_Addr<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PC,&nbsp;PrefetchAddr<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PC,&nbsp;DataAbortAddr<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0xb9205f80<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PC,&nbsp;[PC,&nbsp;#-0xff0]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PC,&nbsp;FIQ_Addr<br /><br />ResetAddr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ResetInit<br />UndefinedAddr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Undefined<br />SWI_Addr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SoftwareInterrupt<br />PrefetchAddr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PrefetchAbort<br />DataAbortAddr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DataAbort<br />Nouse&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0<br />IRQ_Addr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0<br />FIQ_Addr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FIQ_Handler<br /><br />;未定义指令<br />Undefined<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Undefined<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />;取指令中止<br />PrefetchAbort<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PrefetchAbort<br /><br />;取数据中止<br />DataAbort<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DataAbort<br /><br />;快速中断<br />FIQ_Handler<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;STMFD&nbsp;&nbsp;&nbsp;SP!,&nbsp;{R0-R3,&nbsp;LR}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FIQ_Exception<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDMFD&nbsp;&nbsp;&nbsp;SP!,&nbsp;{R0-R3,&nbsp;LR}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SUBS&nbsp;&nbsp;&nbsp;&nbsp;PC,&nbsp;&nbsp;LR,&nbsp;&nbsp;#4<br /><br /><br />InitStack&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R0,&nbsp;LR<br /><br />;Build&nbsp;the&nbsp;SVC&nbsp;stack<br />;设置中断模式堆栈<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MSR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CPSR_c,&nbsp;#0xd2<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SP,&nbsp;StackIrq<br />;Build&nbsp;the&nbsp;FIQ&nbsp;stack&nbsp;&nbsp;&nbsp;&nbsp;<br />;设置快速中断模式堆栈<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MSR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CPSR_c,&nbsp;#0xd1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SP,&nbsp;StackFiq<br />;Build&nbsp;the&nbsp;DATAABORT&nbsp;stack<br />;设置中止模式堆栈<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MSR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CPSR_c,&nbsp;#0xd7<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SP,&nbsp;StackAbt<br />;Build&nbsp;the&nbsp;UDF&nbsp;stack<br />;设置未定义模式堆栈<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MSR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CPSR_c,&nbsp;#0xdb<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SP,&nbsp;StackUnd<br />;Build&nbsp;the&nbsp;SYS&nbsp;stack<br />;设置系统模式堆栈<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MSR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CPSR_c,&nbsp;#0xdf<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SP,&nbsp;=StackUsr<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PC,&nbsp;R0<br /><br /><br />ResetInit<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InitStack&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Initialize&nbsp;the&nbsp;stack&nbsp;初始化堆栈<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TargetResetInit&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Initialize&nbsp;the&nbsp;target&nbsp;board&nbsp;目标板基本初始化<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Jump&nbsp;to&nbsp;the&nbsp;entry&nbsp;point&nbsp;of&nbsp;C&nbsp;program&nbsp;跳转到c语言入口<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;__main<br /><br /><br />__user_initial_stackheap&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;r0,=bottom_of_heap&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;r1,=StackUsr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;&nbsp;&nbsp;pc,lr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />StackIrq&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IrqStackSpace&nbsp;+&nbsp;(IRQ_STACK_LEGTH&nbsp;-&nbsp;1)*&nbsp;4<br />StackFiq&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FiqStackSpace&nbsp;+&nbsp;(FIQ_STACK_LEGTH&nbsp;-&nbsp;1)*&nbsp;4<br />StackAbt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AbtStackSpace&nbsp;+&nbsp;(ABT_STACK_LEGTH&nbsp;-&nbsp;1)*&nbsp;4<br />StackUnd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UndtStackSpace&nbsp;+&nbsp;(UND_STACK_LEGTH&nbsp;-&nbsp;1)*&nbsp;4<br /><br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;IF&nbsp;:DEF:&nbsp;EN_CRP<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IF&nbsp;&nbsp;.&nbsp;&gt=&nbsp;0x1fc<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;INFO&nbsp;&nbsp;&nbsp;&nbsp;1,&quot;
The&nbsp;data&nbsp;at&nbsp;0x000001fc&nbsp;must&nbsp;be&nbsp;0x87654321.
Please&nbsp;delete&nbsp;some&nbsp;source&nbsp;before&nbsp;this&nbsp;line.&quot;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ENDIF<br />CrpData<br />&nbsp;&nbsp;&nbsp;&nbsp;WHILE&nbsp;.&nbsp;&lt&nbsp;0x1fc<br />&nbsp;&nbsp;&nbsp;&nbsp;NOP<br />&nbsp;&nbsp;&nbsp;&nbsp;WEND<br />CrpData1<br />&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x87654321&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;/*When&nbsp;the&nbsp;Data&nbsp;is&nbsp;为0x87654321,user&nbsp;code&nbsp;be&nbsp;protected.&nbsp;当此数为0x87654321时,用户程序被保护&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;ENDIF<br /><br />;/*&nbsp;分配堆栈空间&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AREA&nbsp;&nbsp;&nbsp;&nbsp;MyStacks,&nbsp;DATA,&nbsp;NOINIT,&nbsp;ALIGN=2<br /><br />IrqStackSpace&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SPACE&nbsp;&nbsp;&nbsp;IRQ_STACK_LEGTH&nbsp;*&nbsp;4&nbsp;&nbsp;;Stack&nbsp;spaces&nbsp;for&nbsp;Interrupt&nbsp;ReQuest&nbsp;Mode&nbsp;中断模式堆栈空间<br />FiqStackSpace&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SPACE&nbsp;&nbsp;&nbsp;FIQ_STACK_LEGTH&nbsp;*&nbsp;4&nbsp;&nbsp;;Stack&nbsp;spaces&nbsp;for&nbsp;Fast&nbsp;Interrupt&nbsp;reQuest&nbsp;Mode&nbsp;快速中断模式堆栈空间<br />AbtStackSpace&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SPACE&nbsp;&nbsp;&nbsp;ABT_STACK_LEGTH&nbsp;*&nbsp;4&nbsp;&nbsp;;Stack&nbsp;spaces&nbsp;for&nbsp;Suspend&nbsp;Mode&nbsp;中止义模式堆栈空间<br />UndtStackSpace&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SPACE&nbsp;&nbsp;&nbsp;UND_STACK_LEGTH&nbsp;*&nbsp;4&nbsp;&nbsp;;Stack&nbsp;spaces&nbsp;for&nbsp;Undefined&nbsp;Mode&nbsp;未定义模式堆栈<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AREA&nbsp;&nbsp;&nbsp;&nbsp;Heap,&nbsp;DATA,&nbsp;NOINIT<br />bottom_of_heap&nbsp;&nbsp;&nbsp;&nbsp;SPACE&nbsp;&nbsp;&nbsp;1<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AREA&nbsp;&nbsp;&nbsp;&nbsp;Stacks,&nbsp;DATA,&nbsp;NOINIT<br />StackUsr<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;END<br /><br />我的<br />初始化函数<br /><br />void&nbsp;TargetResetInit(void)<br />{<br />#ifdef&nbsp;__DEBUG_RAM&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;MEMMAP&nbsp;=&nbsp;0x2;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//remap<br />#endif<br /><br />#ifdef&nbsp;__DEBUG_FLASH&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;MEMMAP&nbsp;=&nbsp;0x1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//remap<br />#endif<br /><br />#ifdef&nbsp;__IN_CHIP&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;MEMMAP&nbsp;=&nbsp;0x1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//remap<br />#endif<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;PINSEL0&nbsp;=&nbsp;(PINSEL0&nbsp;&&nbsp;0xFFFF0000)&nbsp;|&nbsp;0x05&nbsp;|&nbsp;0x50;<br /><br />/*&nbsp;设置系统各部分时钟&nbsp;*/<br />/*&nbsp;Set&nbsp;system&nbsp;timers&nbsp;for&nbsp;each&nbsp;component&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;PLLCON&nbsp;=&nbsp;1;<br />#if&nbsp;(Fpclk&nbsp;/&nbsp;(Fcclk&nbsp;/&nbsp;4))&nbsp;==&nbsp;1<br />&nbsp;&nbsp;&nbsp;&nbsp;VPBDIV&nbsp;=&nbsp;0;<br />#endif<br />#if&nbsp;(Fpclk&nbsp;/&nbsp;(Fcclk&nbsp;/&nbsp;4))&nbsp;==&nbsp;2<br />&nbsp;&nbsp;&nbsp;&nbsp;VPBDIV&nbsp;=&nbsp;2;<br />#endif<br />#if&nbsp;(Fpclk&nbsp;/&nbsp;(Fcclk&nbsp;/&nbsp;4))&nbsp;==&nbsp;4<br />&nbsp;&nbsp;&nbsp;&nbsp;VPBDIV&nbsp;=&nbsp;1;<br />#endif<br /><br />#if&nbsp;(Fcco&nbsp;/&nbsp;Fcclk)&nbsp;==&nbsp;2<br />&nbsp;&nbsp;&nbsp;&nbsp;PLLCFG&nbsp;=&nbsp;((Fcclk&nbsp;/&nbsp;Fosc)&nbsp;-&nbsp;1)&nbsp;|&nbsp;(0&nbsp;&lt&lt&nbsp;5);<br />#endif<br />#if&nbsp;(Fcco&nbsp;/&nbsp;Fcclk)&nbsp;==&nbsp;4<br />&nbsp;&nbsp;&nbsp;&nbsp;PLLCFG&nbsp;=&nbsp;((Fcclk&nbsp;/&nbsp;Fosc)&nbsp;-&nbsp;1)&nbsp;|&nbsp;(1&nbsp;&lt&lt&nbsp;5);<br />#endif<br />#if&nbsp;(Fcco&nbsp;/&nbsp;Fcclk)&nbsp;==&nbsp;8<br />&nbsp;&nbsp;&nbsp;&nbsp;PLLCFG&nbsp;=&nbsp;((Fcclk&nbsp;/&nbsp;Fosc)&nbsp;-&nbsp;1)&nbsp;|&nbsp;(2&nbsp;&lt&lt&nbsp;5);<br />#endif<br />#if&nbsp;(Fcco&nbsp;/&nbsp;Fcclk)&nbsp;==&nbsp;16<br />&nbsp;&nbsp;&nbsp;&nbsp;PLLCFG&nbsp;=&nbsp;((Fcclk&nbsp;/&nbsp;Fosc)&nbsp;-&nbsp;1)&nbsp;|&nbsp;(3&nbsp;&lt&lt&nbsp;5);<br />#endif<br />&nbsp;&nbsp;&nbsp;&nbsp;PLLFEED&nbsp;=&nbsp;0xaa;<br />&nbsp;&nbsp;&nbsp;&nbsp;PLLFEED&nbsp;=&nbsp;0x55;<br />&nbsp;&nbsp;&nbsp;&nbsp;while((PLLSTAT&nbsp;&&nbsp;(1&nbsp;&lt&lt&nbsp;10))&nbsp;==&nbsp;0);<br />&nbsp;&nbsp;&nbsp;&nbsp;PLLCON&nbsp;=&nbsp;3;<br />&nbsp;&nbsp;&nbsp;&nbsp;PLLFEED&nbsp;=&nbsp;0xaa;<br />&nbsp;&nbsp;&nbsp;&nbsp;PLLFEED&nbsp;=&nbsp;0x55;<br /><br />/*&nbsp;设置存储器加速模块&nbsp;*/<br />/*&nbsp;Set&nbsp;memory&nbsp;accelerater&nbsp;module*/<br />&nbsp;&nbsp;&nbsp;&nbsp;MAMCR&nbsp;=&nbsp;0;<br />#if&nbsp;Fcclk&nbsp;&lt&nbsp;20000000<br />&nbsp;&nbsp;&nbsp;&nbsp;MAMTIM&nbsp;=&nbsp;1;<br />#else<br />#if&nbsp;Fcclk&nbsp;&lt&nbsp;40000000<br />&nbsp;&nbsp;&nbsp;&nbsp;MAMTIM&nbsp;=&nbsp;2;<br />#else<br />&nbsp;&nbsp;&nbsp;&nbsp;MAMTIM&nbsp;=&nbsp;3;<br />#endif<br />#endif<br />&nbsp;&nbsp;&nbsp;&nbsp;MAMCR&nbsp;=&nbsp;2;<br /><br />/*&nbsp;设置串行口&nbsp;*/<br />/*&nbsp;initialize&nbsp;UART*/<br />&nbsp;&nbsp;&nbsp;&nbsp;//InitialiseUART0(115200);<br /><br />/*&nbsp;设置实时时钟&nbsp;*/<br />/*&nbsp;initialize&nbsp;RTC*/<br />&nbsp;&nbsp;&nbsp;&nbsp;CCR&nbsp;=&nbsp;0x00;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;ILR&nbsp;=&nbsp;0x03;<br />&nbsp;&nbsp;&nbsp;&nbsp;//PREINT&nbsp;=&nbsp;Fpclk&nbsp;/&nbsp;32768&nbsp;-&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;//PREFRAC&nbsp;=&nbsp;Fpclk&nbsp;-&nbsp;(Fpclk&nbsp;/&nbsp;32768)&nbsp;*&nbsp;32768;<br />&nbsp;&nbsp;&nbsp;&nbsp;YEAR=YEAR%100+2000;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;CCR&nbsp;=&nbsp;0x12;<br />&nbsp;&nbsp;&nbsp;&nbsp;//CIIR&nbsp;=&nbsp;0x01;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;设置秒值的增量产生1次中断<br />&nbsp;&nbsp;&nbsp;&nbsp;ILR&nbsp;=&nbsp;0x03;<br />&nbsp;&nbsp;&nbsp;&nbsp;CCR&nbsp;&nbsp;=&nbsp;0x11;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;启动RTC<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />/*&nbsp;initialize&nbsp;VIC*/<br />&nbsp;&nbsp;&nbsp;&nbsp;VICIntEnClr&nbsp;=&nbsp;0xffffffff;<br />&nbsp;&nbsp;&nbsp;&nbsp;VICVectAddr&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;VICIntSelect&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;//T0IR&nbsp;=&nbsp;0xffffffff;<br />&nbsp;&nbsp;&nbsp;&nbsp;//T0TCR&nbsp;=&nbsp;0X02;<br />&nbsp;&nbsp;&nbsp;&nbsp;//T1IR&nbsp;=&nbsp;0xffffffff;<br />&nbsp;&nbsp;&nbsp;&nbsp;//T1TCR&nbsp;=&nbsp;0X02;<br />}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

6

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部