3016|2

8

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

求助一个中断问题 [复制链接]

    各位大侠,请帮我看下这个定时器中断程序吧,总是跑飞,也查不出什么问题~
    程序如下:
//=========================================
// NAME: main.c
// DESC: 内部定时器4LED灯延时
//=========================================
/* 头文件包含 */
#include "2440addr.h"
#include "def.h"
#include "mmu.h"

void led_init(void)
{
//板载LED为GPF[4:7]
rGPFCON = 0x5500;  //rGPFCON为01 配置为输出
rGPFUP  = rGPFUP  | (0xf<<4); //rGPBUP为1   禁止上拉
rGPFDAT = rGPFDAT | (0xf<<4); //LED灯全关
}

void led_display(unsigned char data)
{
//0x0全灭 0xf全亮 0x01 0x02 0x04 0x80 各自灯亮
rGPFDAT = (rGPFDAT & ~(0xf<<4)) | ((~data) <<4);
}

void timer4_init(void)
{
rSRCPND = rSRCPND | (0x1<<14);   //清空定时器4源请求
    rINTPND = rINTPND | (0x1<<14);    //清空定时器4中断请求
    rINTMSK =  rINTMSK & ~(0x1<<14);//打开定时器4中断     
    //定时器配制寄存器0  
    //定时器输入时钟频率 = PCLK / {预分频值+1} / {分频值} 
    //{预分频值} = 0~255 {分频值} = 2, 4, 8, 16 
    //25KHz:50MHz/(250*8)=50MHz/(2000)
    rTCFG0 = (rTCFG0 & ~(0xff<<8)) | (249<<8); // prescaler1:249 
    rTCFG1 = (rTCFG1 & ~(0xf<<16)) | (0x2<<16); //divider:8,0b0010
    
    rTCNTB4 = 25000;  //让定时器4每隔1秒中断一次 25000=1*25000
    rTCON = (rTCON & ~(0x7<<20)) | (0x7<<20); //自动重载、手动更新、启动定时器4
    rTCON = (rTCON & ~(0x2<<20));    //关闭手动更新
}

void __irq timer4_ISR(void)
{
static int count;
rSRCPND = rSRCPND | (0x1<<14);
rINTPND = rINTPND | (0x1<<14);
//每隔0.5秒LED灯亮一次
if (count == 0)
{
  led_display(0xf);       //LED亮
  count = 1;
}
else if (count == 1)
{
    led_display(0x0);       //LED灭
    count = 0;
}

void Main(void)
{
MMU_Init();
led_init();
timer4_init();
/* 中断函数入口地址 */
    pISR_TIMER4 = (U32)timer4_ISR;   
while(1);  
}


中断总是不进,麻烦各位大侠抽点时间帮我看看吧~周围也没个人可以问的,感激不尽啊~~~

此帖出自ARM技术论坛

最新回复

中断向量表设置了没?  详情 回复 发表于 2011-7-28 14:12
点赞 关注
 

回复
举报

4

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
中断向量表设置了没?
b reset   
b undefine
b ...
b irq          <---..........maybe check out
b firq
此帖出自ARM技术论坛
 
 
 

回复

6

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
中断向量表设置了没?
此帖出自ARM技术论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表