天嵌 ARM开发社区

 找回密码
 注册
查看: 2273|回复: 5

跪求一个简单的定时器中断控制流水灯的,网上的事例都有问题。望大神赐教。

[复制链接]
珍珠奶茶超人 发表于 2014-3-6 11:17:58 | 显示全部楼层 |阅读模式
自己调个简单的流水灯中断程序,两天了,能进中断。但只执行一次。我本意是让LED隔4s钟亮一个的,谁知道只亮了第一个 。。。。。。。。。。。。求大神给我发一个,供我学习研究之用。。。。。。。。。。。拜谢了!!!!!!!!!!!
jayshzhang 发表于 2014-3-21 09:33:54 | 显示全部楼层
int main(void)
{
        // 初始化串口
        uart_init();
        // 中断相关初始化
        system_initexception();
        // 设置timer1       
        timer1_request();
        GPJ2CON = GPJ2_0_OUTPUT | GPJ2_1_OUTPUT | GPJ2_2_OUTPUT |GPJ2_3_OUTPUT;       
        while(1);
}
jayshzhang 发表于 2014-3-21 09:34:10 | 显示全部楼层
void timer1_request(void)
{
        printf("\r\n#############   timer1   Timer test############\r\n");

        // 禁止所有timer
        pwm_stopall();
        T1counter = 0;
        // 设置timer1中断的中断处理函数
        intc_setvectaddr(NUM_TIMER1,irs_timer1);       

        // 使能timer1中断
        intc_enable(NUM_TIMER1);
       
        // 设置timer1
        timer1_init(1,65,4,62500*5,0);
               
}
jayshzhang 发表于 2014-3-21 09:34:48 | 显示全部楼层

void irs_timer1()
{
        printf("---------------irs_timer1\r\n");
       
        //清timer1的中断状态寄存器
        TINT_CSTAT |= (1<<6);

        // 打印中断发生次数
        printf("Timer1  IntCounter = %d \r\n",T1counter++);
       
        GPJ2CON ^= (0x1111);  
        // vic相关的中断清除
        intc_clearvectaddr();
}

 楼主| 珍珠奶茶超人 发表于 2014-3-23 16:14:07 | 显示全部楼层
jayshzhang 发表于 2014-3-21 09:34
void irs_timer1()
{
        printf("---------------irs_timer1\r\n");

你用的编程平台不是ADS1.2吧。。。。。。。。
木瓜 发表于 2014-3-25 10:47:56 | 显示全部楼层
网上的稍微加以改造不就可以用了

void __irq Timer4_ISR(void)
{
        static int count;
        count ++;
        rSRCPND = rSRCPND | (0x1<<14);
        rINTPND = rINTPND | (0x1<<14);
        if(count == 2) count =0;
        if (count % 2 == 0)       
                rGPBDAT = ~0x1e1;   
        else if (count % 2 == 1)       
                rGPBDAT = 0x1e0;      
}
void timer4_init(void)
{                  
       rSRCPND = rSRCPND | (0x1<<14);
       rINTPND = rINTPND | (0x1<<14);
       rINTMSK = ~(0x1<<14);            

       rTCFG0 &= 0xFF00FF;
       rTCFG0 |= 0xf900;        
       rTCFG1 &= ~0xF0000;   
       rTCFG1 |= 0x20000;     
       rTCNTB4 = 25000;              

       rTCON &= ~0xF00000;
       rTCON |= 0x700000;
       rTCON &= ~0x200000 ;                  

       pISR_TIMER4 = (U32)Timer4_ISR;
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号 )

GMT+8, 2024-4-24 16:14 , Processed in 1.062500 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表