- /*************题目:助学板定时器的应用******************/
- /*************功能:LED2灯的闪烁间隔10S***********************/
- #include "NUC1xx.h"
- #include "DRVTIMER.h"
- #include "DRVGPIO.h"
- #include "DrvSYS.h"
- static uint8_t EGPADATA=0xf7;
- static uint8_t IntFlag=0;
- /*************函数声明***********/
- void InitSYS(void);
- void InitGPIO(void);
- void InitTIMER(void);
- void TMR_CALLBACK() //回调函数;
- {
- DrvTIMER_ClearIntFlag (E_TMR0); //清楚中断标志;
- IntFlag=~IntFlag;
- }
- int main()
- {
- InitSYS(); //初始化系统时钟;
- InitGPIO(); //设定GPA3端口为普通端口;
- InitTIMER(); //初始化定时器;
- DrvTIMER_Start (E_TMR0); //指定定时器通道开始计数;
- while (1)
- {
- if(IntFlag)
- DrvGPIO_SetPortBits(E_GPA,0xff);
- else
- DrvGPIO_SetPortBits(E_GPA,EGPADATA);
- }
- }
- void InitSYS()
- {
- UNLOCKREG();
- DrvSYS_SetOscCtrl(E_SYS_XTL12M, 1); //使能外部12M
- DrvSYS_Delay(5000);
- LOCKREG();
- }
- void InitGPIO()
- {
- DrvGPIO_Open(E_GPA, 2, E_IO_OUTPUT); //设置GPA2为输出模式;
- DrvGPIO_Open(E_GPA, 12, E_IO_INPUT);
- }
- void InitTIMER()
- {
- DrvTIMER_Init(); //在配置定时器寄存器时,必须要执行这步;
- DrvTIMER_SetEXTClockFreq (12000000); //选择外部时钟源12M,作为定时器的时钟源;
- DrvTIMER_Open( E_TMR0, 1, E_PERIODIC_MODE ); //选择TMR0,1S中断一次,周期性模式;
- DrvTIMER_SetTimerEvent(E_TMR0, 10,(TIMER_CALLBACK)TMR_CALLBACK, 0 ); //中断达到10次再分配回调函数;
- DrvTIMER_EnableInt (E_TMR0); //使能指定的定时器中断;
- DrvTIMER_GetCounters (E_TMR0); //获取指定通道当前计数值;
- }
|