新人求助TIM1中断

2019-07-19 20:55发布

TIM1配置如下,进不了中断程序。求教各位前辈,哪里出了问题?
仿真数据TIM1_SR1寄存器UIF被硬件置1.这个时候是不是应该产生中断了?
但是进不了中断程序。

void TIM1_INIT(void)
{
TIM1_IER=0X00;  //设置时禁止所有中断产生
TIM1_CR1=0X20;  //0 01中央对齐向下计数 0000 0禁止计数
TIM1_CNTRH=0X00; //
TIM1_CNTRL=0XFF;
TIM1_ARRH=0X00;
TIM1_ARRL=0XFF;
TIM1_CR1|=0X01; //开启计数
TIM1_IER=0X01; //开启中断
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
Electronic
1楼-- · 2019-07-20 01:36
需要打全局中断
正点原子
2楼-- · 2019-07-20 03:18
帮顶
操作系统
3楼-- · 2019-07-20 04:48
 精彩回答 2  元偷偷看……
liukexin520
4楼-- · 2019-07-20 08:29
 精彩回答 2  元偷偷看……
liukexin520
5楼-- · 2019-07-20 11:06
volatile _Bool LED_ON3 @PD_ODR:0;
volatile _Bool LED_ON4 @PD_ODR:1;

void GpioInit(void)
{
    //LED
    PD_DDR = 0x03;  
    PD_CR1 = 0x00;  
    PD_CR2 = 0x00;
   
    //
}
void Tim1Init(void)
{
TIM1_EGR |= 0x01;
    TIM1_ARRH=1100/256;
    TIM1_ARRL=1100%256;
    TIM1_PSCRH=0;
    TIM1_PSCRL=127;
    TIM1_IER |=0X01;
    TIM1_BKR |= 0x80;        
    TIM1_CR1 |=0X81;

}
void main()
{
    //initial
    _asm("sim");
   
    ClockInit();
    GpioInit();
    Tim1Init();
   
    _asm("rim");
    //infiniti loop
    while (1)
    {
        if(flag1ms)
        {
            flag1ms=0;
            
            Led4Flash();
        }
    }
}

void Led4Flash(void)
{
    unsigned int i=0;
    u16 flag=0;
    if(++i > 1000) // 1s led flash
    {
        flag=!flag;
        if(flag)
            PD_ODR &= ~0x02;
        else
            PD_ODR |= 0x02;
    }
   
}
void Led3Flash(void)
{
    unsigned int i=0;
    u16 flag=0;
    if(++i > 1000) // 1s led flash
    {
        flag=!flag;
        if(flag)
            PD_ODR &= ~0x01;
        else
            PD_ODR |= 0x01;
   
    }
   
}
@far @interrupt void TIM1_Interrupt(void)
{
    flag1ms=1;
   
   
    TIM1_SR1 &= ~0x01;
}
这个程序灯为什么不闪啊,总是一直亮着,求指点
螃蟹爱虫
6楼-- · 2019-07-20 12:39
 精彩回答 2  元偷偷看……

一周热门 更多>