菜农发布C5402CFG.H/C(结构及结构指针版)及应用演示包
/*---------------------------------------------------------------------------<br />文 件 名 : C5402CFG.H(结构及结构指针版)<br />创 建 人 : DSP菜鸟 <a href="mailto:HotPower@126.com">HotPower@126.com</a><br />创 建 日 期 : 2006.6.09 11:19<br />最近修改日期 : 2008.12.16 16:18 <br />创 建 地 点 : 西安大雁塔村队部(<a href="http://www.hotpower.org/" target=_blank>http://www.hotpower.org/</a>)<br />版 本 号 : V4.16<br />修 改 理 由 : 修正和增订内容<br /> 新增结构uVectorEntry以支持废除汇编启动代码(中断向量表),实现<br /> 程序代码全部由C/C++语言编写.<br /> 增加对通用寄存器物理地址的直接访问,达到汇编级的代码速度<br /> 新版本(SREGs结构型,优化)与老版本(SREG结构指针型,方便)高度兼容<br />备 注 : 由此文件出现的问题,DSP菜鸟不负任何责任<br /> 菜农将不断更新和完善本头文件。<br /> 必须在系统中同时加入C5402CFG.C<br />升 级 方 法 : 在父亲节版的基础上全面升级为统一结构指针<br /> 只需在旧版C5402DEF.H或C5402CFG.H的结构成员后加.Regs即可<br />应 用 举 例:<br /> SREG->ST0 &= ~(1 << ST0_C);<br /> 改为:<br /> SREG->ST0.Regs &= ~(1 << ST0_C);<br /> 或:<br /> SREG->ST0.Bits.C = 0;<br /> <br /> 父亲节版新旧版近似兼容使其更强大:<br /> SREG->ST1.Bits.XF = true;<br /> SREG->ST1.Bits.CPL = 1;<br /> SREG->ST1.Regs = (1 << ST1_XF) | (1 << ST1_CPL);<br /> TIMER0->TCR.Bits.TSS = 1;//关闭定时器0<br /> TIMER0->TIM = 62500 - 1;//设置定时计数器<br /> 或:<br /> SREG->TIMER0.TCR.Bits.TSS = 1;//关闭定时器0<br /> SREG->TIMER0.TIM = 62500 - 1;//设置定时计数器<br /> 结构的访问使代码更简洁更优化:<br /> SREGs.ST0.Bits.C = true;<br /> SREGs.ST1.Bits.XF = true;<br /> SREGs.ST1.Bits.CPL = 1;<br /> SREGs.ST1.Regs = (1 << ST1_XF) | (1 << ST1_CPL);<br /> SREGs.TIMER0.TCR.Bits.TSS = 1;//关闭定时器0<br /> SREGs.TIMER0.TIM = 62500 - 1;//设置定时计数器<br /> 对McBSP实现结构型位域汇编级代码访问:<br /> 指针型:McBSP1->SPSA = PCR;<br /> McBSP1->SPSD.PCR_Bits.FSXP= 1;<br /> McBSP0->DXR1 = 0x1234;<br /> 或:SREG->McBSPADDR1.SPSA = PCR;<br /> SREG->McBSPADDR1.SPSD.PCR_Bits.FSXP= 1;<br /> SREG->McBSPDATA0.DXR1 = 0x1234;<br /> 结构型:SREGs.McBSPADDR1.SPSA = PCR;<br /> SREGs.McBSPADDR1.SPSD.PCR_Bits.FSXP = 1;<br /> SREGs.McBSPDATA0.DXR1 = 0x1234;<br /> <br />注 意 事 项 : 用SREGs结构要比SREG结构指针代码优化,可达到汇编级.<br /> 但查看变量时由于CCS的问题, SREGs结构查看不到成员,<br /> 可在Watch窗口用SREG结构指针查看SREGs的结构成员.<br /> 用McBSP0/McBSP1结构指针查看McBSP更方便.<br />声 明 : 雁塔菜农拥有对本文件的最终解释和灌溉权。 <br />---------------------------------------------------------------------------*/<br /><br /><br /> <br />/*---------------------------------------------------------------------------<br />文 件 名 : C5402CFG.C(结构及结构指针版)<br />创 建 人 : DSP菜鸟 <a href="mailto:HotPower@126.com">HotPower@126.com</a><br />创 建 日 期 : 2006.6.09 11:19<br />最近修改日期 : 2008.12.16 16:18 <br />创 建 地 点 : 西安大雁塔村队部(<a href="http://www.hotpower.org/" target=_blank>http://www.hotpower.org/</a>)<br />版 本 号 : V4.16<br />修 改 理 由 : 修正和增订内容<br /> 新增结构uVectorEntry以支持废除汇编启动代码(中断向量表),实现<br /> 程序代码全部由C/C++语言编写.<br /> 增加对寄存器的直接物理地址的访问,最优化的速度<br /> 新版本(SREGs结构型,优化)与老版本(SREG结构指针型,方便)高度兼<br />容<br />备 注 : 由此文件出现的问题,DSP菜鸟不负任何责任<br /> 菜农将不断更新和完善本头文件。<br /> 必须在系统中同时加入C5402CFG.C<br />应 用 : 废除汇编的启动代码(中断向量表)<br />#pragma DATA_SECTION("vectors") <br />const uVectorEntry g_pfnVectors[] = {<br /> ISR_Reset(), //reset 0x0080 #0//软硬件复位nISR_REST<br /> ISR_Default(), //nmi 0x0084 #1//非屏蔽中断nISR_NMI<br /> ISR_Default(), //sint17 0x0088 #2//软件中断17 <br /> ISR_Default(), //sint18 0x008c #3//软件中断18<br /> ISR_Default(), //sint19 0x0090 #4//软件中断19<br /> ISR_Default(), //sint20 0x0094 #5//软件中断20<br /> ISR_Default(), //sint21 0x0098 #6//软件中断21<br /> ISR_Default(), //sint22 0x009c #7//软件中断22<br /> ISR_Default(), //sint23 0x00a0 #8//软件中断23<br /> ISR_Default(), //sint24 0x00a4 #9//软件中断24<br /> ISR_Default(), //sint25 0x00a8 #10//软件中断25<br /> ISR_Default(), //sint26 0x00ac #11//软件中断26<br /> ISR_Default(), //sint27 0x00b0 #12//软件中断27<br /> ISR_Default(), //sint28 0x00b4 #13//软件中断28<br /> ISR_Default(), //sint29 0x00b8 #14//软件中断29<br /> ISR_Default(), //sint30 0x00bc #15//软件中断30<br /> ISR(Eint0Isr), //int0 0x00c0 #16//外部中断0<br /> ISR(Eint1Isr), //int1 0x00c4 #17//外部中断1<br /> ISR(Eint2Isr), //int2 0x00c8 #18//外部中断2<br /> ISR(Timer0Isr),//tint 0x00cc #19//定时器中断0<br /> ISR(McBSPIsr), //rint0 0x00d0 #20//McBSP0接收中断<br /> ISR_Default(), //xint0 0x00d4 #21//McBSP0发送中断<br /> ISR_Default(), //rint1 0x00d8 #22//McBSP1接收中断<br /> ISR(Timer1Isr),//xint1 0x00dc #23//定时器中断1<br /> ISR(Eint3Isr), //int3 0x00e0 #24//外部中断3<br /> ISR_Default(), //hpint 0x00e4 #25//HPI中断<br /> ISR_Default(), // 0x00e8 #26//软件中断10<br /> ISR_Default(), // 0x00ec #27//软件中断11<br /> ISR_Default(), // 0x00f0 #28//软件中断12<br /> ISR_Default(), // 0x00f4 #29//软件中断13<br /> ISR_Default(), // 0x00f8 #30//保留0<br /> ISR_Default(), // 0x00fc #31//保留1<br />};<br />extern "C" interrupt void DefaultIsr(void)<br />{<br />}<br /><br />注 意 事 项 : 用SREGs结构要比SREG结构指针代码优化,但查看变量时由于CCS的问题<br /> SREGs结构查看不到成员,但可用SREG结构指针查看.<br />声 明 : 雁塔菜农拥有对本文件的最终解释和灌溉权。 <br />---------------------------------------------------------------------------*/<br /><br /> <br />应用演示包下载: <img src="http://www.**/images/FileIco/rarstop.gif"> (包内自带C5402cfg.h/C5402cfg.c/interrupt.h/cpp能文件)<br />本版本经过半年多的应用已非常稳定.它支持C/C++工程多文件系统,不象<br />C5402def.h只支持工程单文件系统<br />最大改动:<br />1.废除汇编的启动代码(中断向量表)<br />新增结构uVectorEntry以支持废除汇编启动代码(中断向量表),实现<br /> 程序代码全部由C/C++语言编写.<br />2.用SREGs结构要比SREG结构指针代码优化,可达到汇编级访问.<br />3.增设对McBSP的虚拟地址的位域访问.<br />4.升级后用旧版本C5402DEF.H编写的软件只需稍加更改即可.<br />#pragma DATA_SECTION(SREGs, ".registers") <br />//结构型,建议使用,可达到汇编级的访问速度和代码优化<br />TI_SREG SREGs;//定义全局结构变量SREGs(5402通用寄存器)<br />//结构指针型以后可能将被淘汰,目前只用于仿真时监视SREGs<br />const TI_PSREG SREG = TI_BASE_SREG;//定义全局结构指针变量SREG<br />const TI_PMcBSP0 McBSP0 = TI_BASE_McBSP0;//定义全局结构指针变量McBSP0<br />const TI_PMcBSP1 McBSP1 = TI_BASE_McBSP1;//定义全局结构指针变量McBSP1<br />const TI_PDMA DMA = TI_BASE_DMA;//定义全局结构指针变量DMA<br />const TI_PTIMER TIMER0 = TI_BASE_TIMER0;//定义全局结构指针变量TIMER0<br />const TI_PTIMER TIMER1 = TI_BASE_TIMER1;//定义全局结构指针变量TIMER1<br /><b>再次声明 : 雁塔菜农拥有对本文件的最终解释和灌溉权。</b><br /><b> 转载和提供下载请注明出处. 不久将会发布HotBios.</b><br /><b>多谢多年来大家对"C5402def.h"的厚爱,看到网上有众多网友应用很高兴.</b><br /><b>菜农很倒塌地说---本版本TI也很难超越~~~</b><br /><b><a href="mailto:HotPower@126.com">HotPower@126.com</a> 2008.12.16 与大雁塔菜地</b><br /> 相关链接:<a href='http://blog.**/hotpower/189385/message.aspx'>http://blog.**/hotpower/189385/message.aspx</a>1
占个1楼,哈哈~<br />用240X的默默漂~哈哈,很长时间没看到老哥哥了!
还以为经济危机,冬眠去了!哈哈~~~经济危机,冬眠之中~~~
:)
页:
[1]