注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
jinghong21的个人空间 https://home.eeworld.com.cn/space-uid-331324.html [收藏] [复制] [分享] [RSS]
日志

大虾们,帮忙看看我的定时器程序!

已有 1198 次阅读2011-5-30 21:06

为什么我的程序在板子上没有效果,我调试的,到  IntEnable(INT_TIMER0A);   //使能定时器0外设   这一句就走不了了!

我是刚刚才自学的,是不是定时器要设置什么?

#include<hw_types.h>
#include<hw_memmap.h>
#include<hw_ints.h>
#include<interrupt.h>
#include<sysctl.h>
#include<gpio.h>
#include<timer.h>

#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long

#define LED_PERIPH  SYSCTL_PERIPH_GPIOB
#define LED_PORT  GPIO_PORTB_BASE
#define LED_PINS  GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7

#define WD_PERIPH  SYSCTL_PERIPH_GPIOA
#define WD_PORT   GPIO_PORTA_BASE
#define WELA   GPIO_PIN_5|GPIO_PIN_4

//  定义全局的系统时钟变量
ulong TheSysClock=12000000UL;

uchar table[]=
{
 0x3f,0x06,0x5b,0x4f,
 0x66,0x6d,0x7d,0x07,
 0x7f,0x6f,0x77,0x7c,
 0x39,0x5e,0x79,0x71
};
void delay(int a)
{
 for(;a>0;a--);
}

uint s,s1,s2; 
 
void clockInit(void)
{
    SysCtlLDOSet(SYSCTL_LDO_2_50V);                         //  设置LDO输出电压
    SysCtlClockSet(SYSCTL_USE_OSC |                         //  系统时钟设置
                   SYSCTL_OSC_MAIN |                        //  采用主振荡器
                   SYSCTL_XTAL_6MHZ |                       //  外接6MHz晶振
                   SYSCTL_SYSDIV_1);                        //  不分频
    TheSysClock = SysCtlClockGet();                         //  获取当前的系统时钟频率
}
 void init()
 {
  clockInit();
 SysCtlPeripheralEnable(LED_PERIPH);     //使能数码管 段 管脚外设
 GPIOPinTypeGPIOOutput(LED_PORT,LED_PINS);  //

 SysCtlPeripheralEnable(WD_PERIPH);   //使能数码管 位 段  锁存段外设
 GPIOPinTypeGPIOOutput(WD_PORT,WELA);

  SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER0);   //使能定时器0外设
 TimerConfigure(TIMER0_BASE,TIMER_CFG_32_BIT_PER); //设置定时器0为周期触发模式
 TimerLoadSet(TIMER0_BASE,TIMER_A,6000000);     //定时1S
 TimerIntEnable(TIMER0_BASE,TIMER_TIMA_TIMEOUT);  //设置定时器为溢出中断
 IntEnable(INT_TIMER0A);   //使能定时器0外设
 IntMasterEnable();    //使能处理器
 TimerEnable(TIMER0_BASE,TIMER_A);  //启动定时器0
 s=0;
 }

 void disp()
 {
  s1=s/10;
 s2=s%10;
 GPIOPinWrite(WD_PORT,WELA,0xDf);   //开段选,关位选  
 GPIOPinWrite(LED_PORT,LED_PINS,table[s1]); //送段码 
 GPIOPinWrite(WD_PORT,WELA,0XEF);    //开位选,关段选   
 GPIOPinWrite(LED_PORT,LED_PINS,0xEf);  //送位码

 delay(5000);
 GPIOPinWrite(LED_PORT,LED_PINS,0xfF);  //消隐
 
 GPIOPinWrite(WD_PORT,WELA,0xDf);   //开段选,关位选  
 GPIOPinWrite(LED_PORT,LED_PINS,table[s2]); //送段码 
 GPIOPinWrite(WD_PORT,WELA,0XEF);    //开位选,关段选   
 GPIOPinWrite(LED_PORT,LED_PINS,0xDf);  //送位码

 delay(5000); 
 GPIOPinWrite(LED_PORT,LED_PINS,0xfF);  //消隐     
}                 
int main(void)
{
   init();
  while(1)
  {
   disp();
  }
}  

void TIMER0A_ISR(void)
{
 TimerIntClear(TIMER0_BASE,TIMER_TIMA_TIMEOUT);
 s++;
 if(s==60)
 {
  s=0;
 }
}                        

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章