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

2019-03-24 16:11发布

为什么我的程序在板子上没有效果,我调试的,到  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;
 }
}                         此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
7条回答
missforever
2019-03-25 11:29
要是keil的话 要注册中断 如楼上所说的

一周热门 更多>

相关问题

    相关文章