#include "hh_uart.h" <br />#include "hh_led.h"<br />#include "hh_watchdog.h"<br />#include "hh_timer.h"<br /><br />void SoftTimerFunction1(void);<br /><br />int main(void)<br />{<br /> unsigned char len,cmd[16];<br /> unsigned long ulResetCause;<br /> <br /> SysCtlClockSet(SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN | SYSCTL_XTAL_6MHZ);<br /> //分频系数为1,使用外部晶体作为主振荡器,且晶体的频率为6M<br /> delay(2000000);<br /> LEDInit();<br /> WDTInit();<br /> IntEnable(INT_GPIOA); //允许GPIOA中断<br /> UART0Init();<br /> <br /> TimerInit();<br /> InitSoftTimer();/* 初始化软定时器模块 */<br /> SoftTimerRun(0,TICKS_PER_SEC / 2,SoftTimerFunction1); /* 运行两个软定时器 */ <br /> <br /> <br /> while(1){<br /> ulResetCause=SysCtlResetCauseGet();<br /> SysCtlResetCauseClear(ulResetCause);<br /> <br /> if(ulResetCause & SYSCTL_CAUSE_SW){//软件复位<br /> LED4On();<br /> UART0_put_str("SYSCTL_CAUSE_SW\r\n\r\n");<br /> }else if(ulResetCause & SYSCTL_CAUSE_WDOG){<br /> LED5On();<br /> UART0_put_str("SYSCTL_CAUSE_WDOG\r\n\r\n");<br /> }else if(ulResetCause & SYSCTL_CAUSE_EXT){<br /> LED6On();<br /> UART0_put_str(">----------\r\n");<br /> UART0_put_str(">请选择:\r\n");<br /> UART0_put_str(">1 软复位\r\n");<br /> UART0_put_str(">2 将看门狗中断等级提高到最高\r\n");<br /> UART0_put_str(">3 将看门狗中断等级降低到最低\r\n");<br /> UART0_put_str(">4 停止外设定时器0\r\n");<br /> UART0_put_str(">5 启动外设定时器0\r\n");<br /> UART0_put_str(">6 软件触发GPIOA中断,进入死循环\r\n");<br /> UART0_put_str(">----------\r\n\r\n");<br /> UART0_put_str("SYSCTL_CAUSE_EXT\r\n\r\n");<br /> }else if(ulResetCause & SYSCTL_CAUSE_POR){<br /> UART0_put_str("SYSCTL_CAUSE_POR\r\n\r\n");<br /> }<br /> <br /> <br /> if((len=UART0_get_line(cmd,13))>0){<br /> if(len>3) {<br /> UART0_put_str("> command you entered is: ");<br /> UART0_put_str(cmd);<br /> UART0_put_str("> this is too long! \r\n");<br /> }else{<br /> switch(cmd[0]){<br /> case '1':<br /> UART0_put_str(">the command is soft reset\r\n");<br /> delay(2000000);<br /> SysCtlReset();<br /> break;<br /> case '2':<br /> UART0_put_str("promote watchdog interrupt priority to top 1\r\n");<br /> IntPrioritySet(INT_WATCHDOG,1<<5);//最高优先级<br /> break;<br /> case '3':<br /> UART0_put_str("bring down watchdog interrupt priority to lowest\r\n");<br /> IntPrioritySet(INT_WATCHDOG,7<<5);//最低优先级<br /> break;<br /> case '4':<br /> UART0_put_str("the command is stop timer0 Peripheral\r\n");<br /> TimerDisable(TIMER0_BASE, TIMER_A);<br /> break;<br /> case '5':<br /> UART0_put_str("the command is restart timer0 Peripheral\r\n");<br /> TimerEnable(TIMER0_BASE, TIMER_A);<br /> break;<br /> case '6':<br /> UART0_put_str("the command is soft GPIOA endless loop\r\n");<br /> HWREG(NVIC_SW_TRIG)=INT_GPIOA-16;<br /> break;<br /> default :<br /> UART0_put_str(">unkown command\r\n");<br /> break;<br /> }<br /> }<br /> }<br /> }<br />}<br /><br />void SoftTimerFunction1(void)<br />{<br /> GPIOPinWrite(GPIO_PORTB_BASE,LED3,GPIOPinRead(GPIO_PORTB_BASE,LED3)^LED3);/*翻转*/<br /> SoftTimerRun(0,(TICKS_PER_SEC + 1) / 2,SoftTimerFunction1);<br />}<br /><br />void GPIOA_ISR(void)<br />{<br /> while(1);<br />}<br /> |
|