[ZLG-MCU] 32位周期触发定时器

[复制链接]
1859|1
 楼主| x_han 发表于 2008-4-30 16:17 | 显示全部楼层 |阅读模式
#include&nbsp;&quot;hw_memmap.h&quot;<br />#include&nbsp;&quot;hw_types.h&quot;<br />#include&nbsp;&quot;hw_ints.h&quot;<br />#include&nbsp;&quot;gpio.h&quot;<br />#include&nbsp;&quot;sysctl.h&quot;<br />#include&nbsp;&quot;timer.h&quot;<br />#include&nbsp;&quot;interrupt.h&quot;<br />#define&nbsp;&nbsp;&nbsp;&nbsp;PINS1&nbsp;&nbsp;GPIO_PIN_7<br /><br />void&nbsp;Timer0A_ISR&nbsp;(void)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;TimerIntClear(TIMER0_BASE,&nbsp;TIMER_TIMA_TIMEOUT);//&nbsp;清除定时器0中断<br />&nbsp;&nbsp;&nbsp;&nbsp;GPIOPinWrite(GPIO_PORTD_BASE,&nbsp;PINS1,GPIOPinRead(GPIO_PORTD_BASE,&nbsp;PINS1)&nbsp;^&nbsp;PINS1);&nbsp;//&nbsp;翻转GPIO&nbsp;D7&nbsp;端口&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(LED不停的翻转闪烁)<br />&nbsp;&nbsp;&nbsp;&nbsp;TimerEnable(TIMER0_BASE,&nbsp;TIMER_A);&nbsp;//&nbsp;使能定时器0<br />}<br /><br />int&nbsp;&nbsp;main(void)<br />{<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;&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;&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;SysCtlPeripheralEnable(&nbsp;SYSCTL_PERIPH_GPIOD&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;<br />&nbsp;&nbsp;&nbsp;&nbsp;GPIODirModeSet(GPIO_PORTD_BASE,&nbsp;PINS1,GPIO_DIR_MODE_OUT);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;GPIOPinWrite(&nbsp;GPIO_PORTD_BASE,&nbsp;PINS1,&nbsp;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;<br />&nbsp;&nbsp;&nbsp;&nbsp;TimerConfigure(TIMER0_BASE,&nbsp;&nbsp;&nbsp;&nbsp;TIMER_CFG_32_BIT_PER);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;TimerLoadSet(TIMER0_BASE,&nbsp;TIMER_A,&nbsp;SysCtlClockGet()/2);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;TimerIntEnable(TIMER0_BASE,&nbsp;&nbsp;&nbsp;&nbsp;TIMER_TIMA_TIMEOUT);&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(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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;IntEnable(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;<br />&nbsp;&nbsp;&nbsp;&nbsp;while(1);<br />}<br /><br />上述实验使LED每秒2次的频率不停的闪烁,比如我想要LED闪烁10秒中以后就不闪烁,不知该怎样利用定时器产生,希望Zlg指点。
立体几何 发表于 2008-4-30 16:32 | 显示全部楼层

这种事儿还要麻烦ZLG呀,我来

你在定时器中断里计数,既然是半秒进一次,你在中断里计20次不是OK了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

5

帖子

0

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