[ZLG-MCU] 定时器例子程序

[复制链接]
3454|4
 楼主| x_han 发表于 2008-4-10 15:19 | 显示全部楼层 |阅读模式
请问zlg能发一份定时器定时的例子程序吗?用delay()函数不准确。
jdwang 发表于 2008-4-11 07:06 | 显示全部楼层

定时器实验程序

#include&nbsp;&quot;hw_memmap.h&quot;<br />#include&nbsp;&quot;hw_types.h&quot;<br />#include&nbsp;&quot;ssi.h&quot;<br />#include&nbsp;&quot;gpio.h&quot;<br />#include&nbsp;&quot;sysctl.h&quot;<br />#include&nbsp;&quot;systick.h&quot;<br />#include&nbsp;&quot;timer.h&quot;<br />#include&quot;interrupt.h&quot;<br />#define&nbsp;BitRate&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;9600&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;设定波特率<br />#define&nbsp;DataWidth&nbsp;&nbsp;&nbsp;8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;设定数据宽度<br />#define&nbsp;PINS1&nbsp;&nbsp;GPIO_PIN_4<br />#define&nbsp;PINS2&nbsp;&nbsp;GPIO_PIN_5<br />//&nbsp;此表为7段数码管显示0~F的字模<br />unsigned&nbsp;char&nbsp;DISP_TAB[16]&nbsp;=&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;0xC0,&nbsp;0xF9,&nbsp;0xA4,&nbsp;0xB0,&nbsp;0x99,&nbsp;0x92,&nbsp;0x82,&nbsp;0xF8,<br />&nbsp;&nbsp;&nbsp;&nbsp;0x80,&nbsp;0x90,&nbsp;0x88,&nbsp;0x83,&nbsp;0xC6,&nbsp;0xA1,&nbsp;0x86,&nbsp;0x8E};<br />int&nbsp;i;<br />//------------------------------------------------------------------------------------<br />//&nbsp;函数名称&nbsp;&nbsp;Timer0A<br />//&nbsp;函数功能&nbsp;&nbsp;定时器0中断处理程序。工作在32位单次触发模式下。<br />//&nbsp;输入参数&nbsp;&nbsp;无。<br />//&nbsp;输出参数&nbsp;&nbsp;无。<br />//------------------------------------------------------------------------------------<br />void&nbsp;Timer0A(void)<br />{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;TimerIntClear(TIMER0_BASE,&nbsp;TIMER_TIMA_TIMEOUT);&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;清除定时器0中断。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;TimerLoadSet(TIMER0_BASE,&nbsp;TIMER_A,&nbsp;SysCtlClockGet());&nbsp;&nbsp;//&nbsp;重载定时器的值。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;GPIOPinWrite(GPIO_PORTB_BASE,&nbsp;PINS1,GPIOPinRead(GPIO_PORTB_BASE,&nbsp;PINS1)&nbsp;^&nbsp;PINS1);<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;翻转GPIO&nbsp;B4&nbsp;端口。<br />&nbsp;&nbsp;&nbsp;&nbsp;TimerEnable(TIMER0_BASE,&nbsp;TIMER_A);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;使能定时器0。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;循环输出&nbsp;0~F&nbsp;的字模<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;SSIDataPut(SSI_BASE,&nbsp;DISP_TAB);<br />&nbsp;&nbsp;&nbsp;&nbsp;i=i+1;<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(i==16)i=0;<br /><br />}<br /><br />//------------------------------------------------------------------------------------<br />//&nbsp;函数名称&nbsp;&nbsp;Timer1A<br />//&nbsp;函数功能&nbsp;&nbsp;定时器1中断处理程序。工作在32位周期触发模式下。<br />//&nbsp;输入参数&nbsp;&nbsp;无。<br />//&nbsp;输出参数&nbsp;&nbsp;无。<br />//------------------------------------------------------------------------------------<br />void&nbsp;Timer1A(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;TimerIntClear(TIMER1_BASE,&nbsp;TIMER_TIMA_TIMEOUT);&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;清除定时器1中断。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;GPIOPinWrite(GPIO_PORTB_BASE,&nbsp;PINS2,GPIOPinRead(GPIO_PORTB_BASE,&nbsp;PINS2)&nbsp;^&nbsp;PINS2);<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;翻转GPIO&nbsp;B5&nbsp;端口<br />}<br /><br />//------------------------------------------------------------------------------------<br />//<br />//&nbsp;该范例程序演示了如何使用定时器产生周期性中断。其中一个定时器被设置为每秒产生一次中<br />//&nbsp;断,另一个定时器设置为每秒产生两次中断;每个中断处理器在每一次中断时都翻转一次相应<br />//&nbsp;的GPIO(B4和B5端口);同时,LED指示灯会指示每次中断以及中断的速率。数码管也会在每次<br />//中断时依次从0~F翻数字<br />//&nbsp;在本范例中,定时器0被设置为32位的可编程单次触发模式,定时器1则设置为32位的可编<br />//&nbsp;程周期触发模式。<br />//这个程序是在EASYARM101实验板上做的<br />//------------------------------------------------------------------------------------<br />int&nbsp;&nbsp;main(void)<br />{&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;SysCtlClockSet(&nbsp;SYSCTL_SYSDIV_1&nbsp;|&nbsp;SYSCTL_USE_OSC&nbsp;|&nbsp;SYSCTL_OSC_MAIN&nbsp;|<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SYSCTL_XTAL_6MHZ&nbsp;);&nbsp;&nbsp;&nbsp;&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;SysCtlPeripheralEnable(&nbsp;SYSCTL_PERIPH_TIMER0&nbsp;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;使能定时器0外设。<br />&nbsp;&nbsp;&nbsp;&nbsp;SysCtlPeripheralEnable(&nbsp;SYSCTL_PERIPH_TIMER1&nbsp;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;使能定时器1外设。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;SysCtlPeripheralEnable(&nbsp;SYSCTL_PERIPH_GPIOB&nbsp;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;使能GPIO&nbsp;B口外设。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;IntMasterEnable();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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 />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;使能&nbsp;SSI<br />&nbsp;&nbsp;&nbsp;&nbsp;SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI);<br />&nbsp;&nbsp;//&nbsp;使能&nbsp;GPIO&nbsp;A,B&nbsp;口<br />&nbsp;&nbsp;&nbsp;&nbsp;SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA|SYSCTL_PERIPH_GPIOB);<br />&nbsp;&nbsp;//SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);<br />&nbsp;&nbsp;//&nbsp;配置&nbsp;SSI<br />&nbsp;&nbsp;&nbsp;&nbsp;SSIConfig(SSI_BASE,&nbsp;SSI_FRF_MOTO_MODE_0,&nbsp;SSI_MODE_MASTER,&nbsp;BitRate,&nbsp;DataWidth);<br />&nbsp;&nbsp;//&nbsp;使能&nbsp;SSI<br />&nbsp;&nbsp;&nbsp;&nbsp;SSIEnable(SSI_BASE);<br />&nbsp;&nbsp;//&nbsp;设定&nbsp;GPIO&nbsp;A&nbsp;2~5&nbsp;引脚为使用外设功能(管脚由硬件控制)<br />&nbsp;&nbsp;&nbsp;&nbsp;GPIODirModeSet(GPIO_PORTA_BASE,&nbsp;(GPIO_PIN_2&nbsp;|&nbsp;GPIO_PIN_3&nbsp;|&nbsp;GPIO_PIN_4&nbsp;|<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GPIO_PIN_5),&nbsp;GPIO_DIR_MODE_HW);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;GPIODirModeSet(GPIO_PORTB_BASE,&nbsp;PINS1&nbsp;|&nbsp;PINS2,GPIO_DIR_MODE_OUT);<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;GPIO&nbsp;B4和B5为输出口。<br />&nbsp;&nbsp;&nbsp;&nbsp;GPIOPinWrite(&nbsp;GPIO_PORTB_BASE,&nbsp;PINS1&nbsp;|&nbsp;PINS2,&nbsp;0&nbsp;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;初始化IO口。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;TimerConfigure(TIMER0_BASE,&nbsp;TIMER_CFG_32_BIT_OS);&nbsp;&nbsp;//&nbsp;设置定时器0为单次触发模式。<br />&nbsp;&nbsp;&nbsp;&nbsp;TimerConfigure(TIMER1_BASE,&nbsp;TIMER_CFG_32_BIT_PER);&nbsp;//&nbsp;设置定时器1为周期触发模式。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;TimerLoadSet(TIMER0_BASE,&nbsp;TIMER_A,&nbsp;2*SysCtlClockGet());&nbsp;&nbsp;//&nbsp;设置定时器装载值。定时1秒。<br />&nbsp;&nbsp;&nbsp;&nbsp;TimerLoadSet(TIMER1_BASE,&nbsp;TIMER_A,&nbsp;SysCtlClockGet()/2);&nbsp;//&nbsp;设置定时器装载值。定时0.5秒。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;TimerIntRegister(TIMER0_BASE,TIMER_A,Timer0A);<br />&nbsp;&nbsp;&nbsp;&nbsp;TimerIntRegister(TIMER1_BASE,TIMER_A,Timer1A);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;TimerIntEnable(TIMER0_BASE,&nbsp;TIMER_TIMA_TIMEOUT);&nbsp;&nbsp;&nbsp;//&nbsp;使能定时器0为溢出中断。<br />&nbsp;&nbsp;&nbsp;&nbsp;TimerIntEnable(TIMER1_BASE,&nbsp;TIMER_TIMA_TIMEOUT);&nbsp;&nbsp;&nbsp;//&nbsp;使能定时器1为溢出中断。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;TimerEnable(TIMER0_BASE,&nbsp;TIMER_A);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//使能定时器0<br />&nbsp;&nbsp;&nbsp;&nbsp;TimerEnable(TIMER1_BASE,&nbsp;TIMER_A);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//使能定时器1<br />&nbsp;&nbsp;&nbsp;&nbsp;i=0;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;while(1);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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 />}
 楼主| x_han 发表于 2008-4-11 11:41 | 显示全部楼层

定时器例子程序

谢谢楼上的
zlgmcu 发表于 2008-4-11 13:56 | 显示全部楼层

我也发一个

定时器有多种用法:<br />&nbsp;&nbsp;&nbsp;&nbsp;32位单次/周期定时<br />&nbsp;&nbsp;&nbsp;&nbsp;32位RTC定时<br />&nbsp;&nbsp;&nbsp;&nbsp;16位单次/周期定时<br />&nbsp;&nbsp;&nbsp;&nbsp;16位边沿/定时捕获<br />&nbsp;&nbsp;&nbsp;&nbsp;16位PWM<br /><br /><br />下面是32位周期定时的例子<br /><br />#include&nbsp;&nbsp;&quot;hw_types.h&quot;<br />#include&nbsp;&nbsp;&quot;hw_memmap.h&quot;<br />#include&nbsp;&nbsp;&quot;hw_ints.h&quot;<br />#include&nbsp;&nbsp;&quot;hw_sysctl.h&quot;<br />#include&nbsp;&nbsp;&quot;hw_gpio.h&quot;<br />#include&nbsp;&nbsp;&quot;hw_timer.h&quot;<br />#include&nbsp;&nbsp;&quot;interrupt.h&quot;<br />#include&nbsp;&nbsp;&quot;sysctl.h&quot;<br />#include&nbsp;&nbsp;&quot;gpio.h&quot;<br />#include&nbsp;&nbsp;&quot;timer.h&quot;<br /><br />#define&nbsp;&nbsp;SysCtlPeriEn&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SysCtlPeripheralEnable<br />#define&nbsp;&nbsp;GPIOPinTypeIn&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GPIOPinTypeGPIOInput<br />#define&nbsp;&nbsp;GPIOPinTypeOut&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GPIOPinTypeGPIOOutput<br /><br />#define&nbsp;&nbsp;LED&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GPIO_PORTB_BASE&nbsp;,&nbsp;GPIO_PIN_0<br />#define&nbsp;&nbsp;T0_A&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TIMER0_BASE&nbsp;,&nbsp;TIMER_A<br />#define&nbsp;&nbsp;T0_CFG_32_PER&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TIMER0_BASE&nbsp;,&nbsp;TIMER_CFG_32_BIT_PER<br />#define&nbsp;&nbsp;T0_A_INT_TIMEOUT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TIMER0_BASE&nbsp;,&nbsp;TIMER_TIMA_TIMEOUT<br />#define&nbsp;&nbsp;KEY_JTAG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GPIO_PORTA_BASE&nbsp;,&nbsp;GPIO_PIN_2<br /><br />void&nbsp;&nbsp;waitJTAG&nbsp;(&nbsp;void&nbsp;)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;SysCtlPeriEn&nbsp;(&nbsp;SYSCTL_PERIPH_GPIOA&nbsp;)&nbsp;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;使能GPIOA端口&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;GPIOPinTypeIn&nbsp;(&nbsp;KEY_JTAG&nbsp;)&nbsp;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;设置按键所在的PA2管脚为输入&nbsp;&nbsp;&nbsp;&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(&nbsp;GPIOPinRead&nbsp;(&nbsp;KEY_JTAG&nbsp;)&nbsp;&nbsp;==&nbsp;&nbsp;0x00&nbsp;)&nbsp;{&nbsp;&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 />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(&nbsp;;&nbsp;;&nbsp;)&nbsp;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;死循环,以等待JTAG连接&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br />void&nbsp;&nbsp;Timer0Init&nbsp;(&nbsp;void&nbsp;)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;SysCtlPeriEn&nbsp;(&nbsp;SYSCTL_PERIPH_TIMER0&nbsp;)&nbsp;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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 />&nbsp;&nbsp;&nbsp;&nbsp;TimerConfigure&nbsp;(&nbsp;T0_CFG_32_PER&nbsp;)&nbsp;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;配置定时器为32位周期定时器&nbsp;&nbsp;&nbsp;&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;TimerLoadSet&nbsp;(&nbsp;T0_A&nbsp;,&nbsp;3000000UL&nbsp;)&nbsp;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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 />&nbsp;&nbsp;&nbsp;&nbsp;TimerIntEnable&nbsp;(&nbsp;T0_A_INT_TIMEOUT&nbsp;)&nbsp;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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 />&nbsp;&nbsp;&nbsp;&nbsp;IntEnable&nbsp;(&nbsp;INT_TIMER0A&nbsp;)&nbsp;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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 />&nbsp;&nbsp;&nbsp;&nbsp;IntMasterEnable&nbsp;(&nbsp;)&nbsp;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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 />&nbsp;&nbsp;&nbsp;&nbsp;TimerEnable&nbsp;(&nbsp;T0_A&nbsp;)&nbsp;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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 /><br />int&nbsp;&nbsp;main&nbsp;(&nbsp;void&nbsp;)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;waitJTAG&nbsp;(&nbsp;)&nbsp;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;防止JTAG失效&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;SysCtlPeriEn&nbsp;(&nbsp;SYSCTL_PERIPH_GPIOB&nbsp;)&nbsp;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;使能GPIOB端口&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;GPIOPinTypeOut&nbsp;(&nbsp;LED&nbsp;)&nbsp;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;设置LED所在管脚为输出&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;Timer0Init&nbsp;(&nbsp;)&nbsp;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;for&nbsp;(&nbsp;;&nbsp;;&nbsp;)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br />/*&nbsp;&nbsp;定时器的中断服务函数&nbsp;&nbsp;*/<br />void&nbsp;&nbsp;Timer0A_ISR&nbsp;(&nbsp;void&nbsp;)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;static&nbsp;&nbsp;unsigned&nbsp;char&nbsp;&nbsp;ucVal&nbsp;&nbsp;=&nbsp;&nbsp;0x00&nbsp;;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;TimerIntClear&nbsp;(&nbsp;T0_A_INT_TIMEOUT&nbsp;)&nbsp;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;清除定时器超时中断,重要!&nbsp;&nbsp;&nbsp;&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;GPIOPinWrite&nbsp;(&nbsp;LED&nbsp;,&nbsp;ucVal&nbsp;)&nbsp;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;反转LED&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 />&nbsp;&nbsp;&nbsp;&nbsp;ucVal&nbsp;&nbsp;^=&nbsp;&nbsp;0x01&nbsp;;<br />}<br /><br /><br />(zlgmcu_wdx)
Andy1990zx 发表于 2008-4-12 15:14 | 显示全部楼层

IAR

我发现用IAR在线调试的时候暂停后定时器计数值仍然在继续计数&nbsp;&nbsp;能不能让他们也停下来?我的意思也就是能不能让定时器只计算代码运行的时间,而不是一直在计算实际运行的时间?<br />&nbsp;&nbsp;&nbsp;&nbsp;好像用WAVE6000在51上可以这样的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

5

帖子

0

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