项目遇到大困难!定时器为什么会停止计数?请高手指点一

[复制链接]
3352|5
 楼主| ccjgalaxy 发表于 2009-7-21 10:55 | 显示全部楼层 |阅读模式
我现在使用DM642开发板做实验<br />在bios中单独的网络通信程序,以及单独的定时器程序都运行正常,但是如果把这两个程序合在一块,定时器运行一瞬间就不运行了,不知怎么回事?<br /><br />下面的程序是我用LOG_printf在bios中用message&nbsp;log输出定时器的计数情况,在message&nbsp;log中只能输出几行,后面的就输不出来了,这是怎么回事?<br />这是我的定时程序:<br />#include&nbsp;&ltstd.h&gt<br />#include&nbsp;&ltlog.h&gt<br />#include&nbsp;&lttsk.h&gt&nbsp;&nbsp;<br />#include&nbsp;&ltsem.h&gt&nbsp;&nbsp;&nbsp;<br />#include&nbsp;&ltgio.h&gt<br />#include&nbsp;&ltcsl.h&gt<br />#include&nbsp;&ltcsl_emifa.h&gt<br />#include&nbsp;&ltcsl_timer.h&gt<br />#include&nbsp;&ltcsl_irq.h&gt<br /><br />#include&nbsp;&quot;appData.h&quot;<br />#include&nbsp;&quot;scom.h&quot;<br />#include&nbsp;&quot;seeddm642.h&quot;<br />#include&nbsp;&quot;Tcpip_loopbackcfg.h&quot;&nbsp;<br />static&nbsp;TIMER_Handle&nbsp;hTimer1;<br /><br />static&nbsp;Uint32&nbsp;TimerEventId;<br /><br />static&nbsp;int&nbsp;cnt&nbsp;=&nbsp;0;<br />static&nbsp;Uint32&nbsp;TimerControl&nbsp;=&nbsp;<br /><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;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TIMER_CTL_RMK<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TIMER_CTL_SPND_EMUSTOP,<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TIMER_CTL_INVINP_NO,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;TINP&nbsp;inverter&nbsp;control(INVINP)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TIMER_CTL_CLKSRC_CPUOVR8,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Timer&nbsp;input&nbsp;clock&nbsp;source&nbsp;(CLKSRC)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TIMER_CTL_CP_PULSE,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Clock/pulse&nbsp;mode(CP)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TIMER_CTL_HLD_YES,&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;Hold(HLD)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TIMER_CTL_GO_NO,&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;Go&nbsp;bit(GO)-<br /><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;&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;resets&nbsp;&&nbsp;starts&nbsp;timer&nbsp;counter<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TIMER_CTL_PWID_ONE,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Pulse&nbsp;width(PWID)-<br /><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;&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;used&nbsp;only&nbsp;in&nbsp;pulse&nbsp;mode<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TIMER_CTL_DATOUT_0,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Data&nbsp;output&nbsp;(DATOUT)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TIMER_CTL_INVOUT_NO,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;TOUT&nbsp;inverter&nbsp;control&nbsp;(INVOUT)&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TIMER_CTL_FUNC_GPIO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Function&nbsp;of&nbsp;TOUT&nbsp;pin(FUNC)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />main()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TIMER_Config&nbsp;myTimConfig;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CSL_init();<br />/*.................网络通信部分.......................*/<br />&nbsp;&nbsp;&nbsp;&nbsp;CACHE_enableCaching(CACHE_EMIFA_CE00);<br />&nbsp;&nbsp;&nbsp;&nbsp;CACHE_enableCaching(CACHE_EMIFA_CE01);<br />&nbsp;&nbsp;&nbsp;&nbsp;DAT_open(DAT_CHAANY,&nbsp;DAT_PRI_LOW,&nbsp;DAT_OPEN_2D);<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;SCOM_init();<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;CACHE_setL2Queue(0x3,&nbsp;0x7);<br />&nbsp;&nbsp;&nbsp;&nbsp;CACHE_setL2Queue(0x1,&nbsp;0x7);<br />&nbsp;&nbsp;&nbsp;&nbsp;CACHE_setPriL2Req(CACHE_L2PRIHIGH);<br />&nbsp;&nbsp;//&nbsp;create&nbsp;all&nbsp;SCOM&nbsp;and&nbsp;message&nbsp;objects&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;SCOM_create(&quot;NETOK&quot;,&nbsp;NULL);&nbsp;<br />&nbsp;&nbsp;/*..............................定时器部分............*/<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hTimer1&nbsp;=&nbsp;TIMER_open(TIMER_DEV1,&nbsp;0);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TimerEventId&nbsp;=&nbsp;TIMER_getEventId(hTimer1);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IRQ_globalDisable();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IRQ_nmiDisable();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IRQ_globalEnable();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IRQ_nmiEnable();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IRQ_map(TimerEventId,&nbsp;15);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IRQ_reset(TimerEventId);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myTimConfig.cnt&nbsp;=&nbsp;0x0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myTimConfig.ctl&nbsp;=&nbsp;TimerControl;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myTimConfig.prd&nbsp;=&nbsp;0x00124f8;//1ms定时,即每1ms,cnt计数增1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TIMER_config(hTimer1,&nbsp;&myTimConfig);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IRQ_enable(TimerEventId);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TIMER_start(hTimer1);<br />}<br />void&nbsp;CLK_cnt()<br />{<br />&nbsp;&nbsp;&nbsp;cnt++;<br />&nbsp;&nbsp;&nbsp;LOG_printf(&trace,&quot;cnt&nbsp;VAL&nbsp;is&nbsp;%d
&quot;,&nbsp;cnt);<br />}<br /><br />在message&nbsp;log里输出的结果:<br />0&nbsp;&nbsp;&nbsp;cnt&nbsp;VAL&nbsp;is&nbsp;1<br /><br />1&nbsp;&nbsp;&nbsp;cnt&nbsp;VAL&nbsp;is&nbsp;2<br /><br />2&nbsp;&nbsp;&nbsp;cnt&nbsp;VAL&nbsp;is&nbsp;3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;为什么只有这三行呢?下面的就输不出来了,这是怎么回事?<br />
yxwsz 发表于 2009-7-21 13:50 | 显示全部楼层

RE

LOG_printf在DSP的空闲周期(idle)工作,如果DSP负载较重的话,没有输出是正常的。
 楼主| ccjgalaxy 发表于 2009-7-21 14:06 | 显示全部楼层

谢谢yxwsz,非常感谢您!

不过我觉得,我的程序只不过是用网口向电脑传几个数而已,这也会造成DSP负载过重吗?<br />那如果不用LOG_printf,还有什么办法知道我的定时器在正常计数吗?
 楼主| ccjgalaxy 发表于 2009-7-21 17:38 | 显示全部楼层

仿真看变量可以吗?

仿真时程序在运行,变量&nbsp;cnt&nbsp;在中断函数中,我用了Add&nbsp;to&nbsp;watch&nbsp;window,发现在watch&nbsp;window&nbsp;中变量的值根本不变。<br />请问你仿真的时候是怎么观察变量值的?
xj803 发表于 2009-7-21 17:39 | 显示全部楼层

真相

  
 楼主| ccjgalaxy 发表于 2009-7-22 10:58 | 显示全部楼层

哎,我发现原因还是定时器会停止计数

我又用串口来检验定时器计数的cnt值,发现电脑上的串口调试助手只能接收到<br />前面三个cnt的值,后面的就收不到了。<br />#include&nbsp;&ltstd.h&gt<br />#include&nbsp;&ltlog.h&gt<br />#include&nbsp;&lttsk.h&gt&nbsp;&nbsp;<br />#include&nbsp;&ltsem.h&gt&nbsp;&nbsp;&nbsp;<br />#include&nbsp;&ltgio.h&gt<br />#include&nbsp;&ltcsl.h&gt<br />#include&nbsp;&ltcsl_emifa.h&gt<br />#include&nbsp;&ltcsl_timer.h&gt<br />#include&nbsp;&ltcsl_irq.h&gt<br /><br />#include&nbsp;&quot;appData.h&quot;<br />#include&nbsp;&quot;scom.h&quot;<br />#include&nbsp;&quot;seeddm642.h&quot;<br />#include&nbsp;&quot;Tcpip_loopbackcfg.h&quot;&nbsp;<br />static&nbsp;TIMER_Handle&nbsp;hTimer1;<br /><br />static&nbsp;Uint32&nbsp;TimerEventId;<br /><br />static&nbsp;int&nbsp;cnt&nbsp;=&nbsp;0;<br />static&nbsp;Uint32&nbsp;TimerControl&nbsp;=&nbsp;<br /><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;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TIMER_CTL_RMK<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TIMER_CTL_SPND_EMUSTOP,<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TIMER_CTL_INVINP_NO,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;TINP&nbsp;inverter&nbsp;control(INVINP)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TIMER_CTL_CLKSRC_CPUOVR8,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Timer&nbsp;input&nbsp;clock&nbsp;source&nbsp;(CLKSRC)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TIMER_CTL_CP_PULSE,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Clock/pulse&nbsp;mode(CP)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TIMER_CTL_HLD_YES,&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;Hold(HLD)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TIMER_CTL_GO_NO,&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;Go&nbsp;bit(GO)-<br /><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;&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;resets&nbsp;&&nbsp;starts&nbsp;timer&nbsp;counter<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TIMER_CTL_PWID_ONE,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Pulse&nbsp;width(PWID)-<br /><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;&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;used&nbsp;only&nbsp;in&nbsp;pulse&nbsp;mode<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TIMER_CTL_DATOUT_0,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Data&nbsp;output&nbsp;(DATOUT)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TIMER_CTL_INVOUT_NO,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;TOUT&nbsp;inverter&nbsp;control&nbsp;(INVOUT)&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TIMER_CTL_FUNC_GPIO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Function&nbsp;of&nbsp;TOUT&nbsp;pin(FUNC)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />main()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TIMER_Config&nbsp;myTimConfig;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CSL_init();<br />/*.................网络通信部分.......................*/<br />&nbsp;&nbsp;&nbsp;&nbsp;CACHE_enableCaching(CACHE_EMIFA_CE00);<br />&nbsp;&nbsp;&nbsp;&nbsp;CACHE_enableCaching(CACHE_EMIFA_CE01);<br />&nbsp;&nbsp;&nbsp;&nbsp;DAT_open(DAT_CHAANY,&nbsp;DAT_PRI_LOW,&nbsp;DAT_OPEN_2D);<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;SCOM_init();<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;CACHE_setL2Queue(0x3,&nbsp;0x7);<br />&nbsp;&nbsp;&nbsp;&nbsp;CACHE_setL2Queue(0x1,&nbsp;0x7);<br />&nbsp;&nbsp;&nbsp;&nbsp;CACHE_setPriL2Req(CACHE_L2PRIHIGH);<br />&nbsp;&nbsp;//&nbsp;create&nbsp;all&nbsp;SCOM&nbsp;and&nbsp;message&nbsp;objects&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;SCOM_create(&quot;NETOK&quot;,&nbsp;NULL);&nbsp;<br />&nbsp;&nbsp;/*..............................定时器部分............*/<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hTimer1&nbsp;=&nbsp;TIMER_open(TIMER_DEV1,&nbsp;0);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TimerEventId&nbsp;=&nbsp;TIMER_getEventId(hTimer1);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IRQ_globalDisable();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IRQ_nmiDisable();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IRQ_globalEnable();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IRQ_nmiEnable();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IRQ_map(TimerEventId,&nbsp;15);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IRQ_reset(TimerEventId);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IRQ_reset(IRQ_EVT_EXTINT5);<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SEEDuartHandleA&nbsp;=&nbsp;SEEDDM642_UART_open(SEEDDM642_UARTA,&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;&nbsp;SEEDDM642_UART_BAUD9600,&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;&nbsp;&UartConfig);<br />&nbsp;&nbsp;&nbsp;/*&nbsp;Open&nbsp;UARTB*/<br />&nbsp;&nbsp;&nbsp;&nbsp;SEEDuartHandleB&nbsp;=&nbsp;SEEDDM642_UART_open(SEEDDM642_UARTB,&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;&nbsp;SEEDDM642_UART_BAUD9600,&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;&nbsp;&UartConfig);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myTimConfig.cnt&nbsp;=&nbsp;0x0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myTimConfig.ctl&nbsp;=&nbsp;TimerControl;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myTimConfig.prd&nbsp;=&nbsp;0x00124f8;//1ms定时,即每1ms,cnt计数增1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TIMER_config(hTimer1,&nbsp;&myTimConfig);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IRQ_enable(TimerEventId);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IRQ_enable(IRQ_EVT_EXTINT5);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TIMER_start(hTimer1);<br />}<br />void&nbsp;CLK_cnt()<br />{<br />&nbsp;&nbsp;&nbsp;cnt++;<br />&nbsp;&nbsp;&nbsp;&nbsp;SEEDDM642_UART_putChar(0,cnt);//在串口调试助手中只能接收到前三个cnt的值,不知为什么?<br />}<br /><br />&nbsp;void&nbsp;Uart_isr(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Uint16&nbsp;Data_Temp;&nbsp;&nbsp;&nbsp;&nbsp;//Int16&nbsp;status;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Data_Temp&nbsp;=&nbsp;SEEDDM642_UART_rget(SEEDuartHandleA,0);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SEEDDM642_UART_putChar(0,&nbsp;Data_Temp);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

37

帖子

0

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