Blankfin 531

weicheichei 2011-03-03 08:17:51
我的Blankfin 531DSP写的定时器中断程序怎么编译没有错误,就是不能执行中断,请大家给帮个忙啊!谢谢
// 头文件包含
#include <ccblkfn.h>
#include <cdefBF531.h>
#include <sysreg.h>
#include <sys\exception.h>

// LED操作地址定义
#define pLed (volatile unsigned char *)0x203D0000
#define pSEG_8_0 (volatile unsigned char *)0x203C4000
#define pSEG_8_1 (volatile unsigned char *)0x203CC000
#define pSEG_8_2 (volatile unsigned char *)0x203C8000
#define pSEG_8_3 (volatile unsigned char *)0x203C0000

// 宏定义


// 常量定义
const unsigned char NumberData[13] = {
0x24, 0x7D, 0x16, 0x54, 0x4D, 0xC4, 0x84, 0x75, 0x04, 0x44, 0xFB,
// 0 1 2 3 4 5 6 7 8 9 .
0x00, 0xFF};
// 全亮 全灭
unsigned int i=0,j,m,n,Dings=0;
int led = 0x01;

/********************************************************
*
* 函数名 : Init_PLL
* 函数功能 : 初始化配置BF531的PLL寄存器
* 函数输入参数 : 无
* 函数输出 : 无
* 说明 : 无
*
********************************************************/
void Init_PLL(void)
{
sysreg_write(reg_SYSCFG, 0x32); //Initialize System Configuration Register

*pSIC_IWR = 0x0101; // Enable only PLL wakeup interrupt

*pPLL_CTL = 0x0200; // MSEL is 14, which gives: VCO of 378 MHz (27*14=378)

*pPLL_DIV = 0x0003; // SSEL is 3, which gives: SCLK of 126 MHz (378/3=126)
// CSEL is 0, which gives: CCLK of 378 MHz (378/1=378)
ssync();

idle();
}

/********************************************************
*
* 函数名 : Delay
* 函数功能 : 延时
* 函数输入参数 : 时长参数
* 函数输出 : 无
* 说明 : 无
*
********************************************************/
void Delay(unsigned long time)
{
unsigned long i,j;
for(i=0; i<time; i++)
for(j=0; j<10; j++)
{;}
}
/********************************************************
*
* 函数名 : Init_EBIU
* 函数功能 : 配置BF531的EBIU
* 函数输入参数 : 无
* 函数输出 : 无
* 说明 : 无
*
********************************************************/
void Init_EBIU(void)
{
*pEBIU_AMBCTL0 = 0x7BB07BB0;//<--|Write access time = 7 cycles, read access time = 11 cycles, no ARDY
*pEBIU_AMBCTL1 = 0x7BB07BB0;// |Hold time = 2 cycles, setup time = 3 cycles, transition time = 4 cycles
*pEBIU_AMGCTL = 0x000F ;// |Enable all memory banks
}
void Init_TIMER(void)
{
*pTIMER0_CONFIG = 0x001A;
*pTIMER0_PERIOD = 0x007FFFFF;
*pTIMER0_WIDTH = 0x00400000;
*pTIMER_ENABLE = 0x0001;
}
EX_INTERRUPT_HANDLER(Timer0_ISR)
{printf("789");
Dings++;
if(Dings==9999)
{
*pTIMER_ENABLE= 0x0000;
i=Dings;
*pSEG_8_3 = NumberData[i/1000];
Delay(0x99999);
j = (i%1000)/100;
*pSEG_8_2 = NumberData[j];
Delay(0x99999);
j = (i%100)/10;
*pSEG_8_1 = NumberData[j];
Delay(0x99999);
j = i%10;
*pSEG_8_0 = NumberData[j];
Delay(0x99999);
Delay(0x2000);
if((led = led << 1) == 0x100) led = 0x01;
*pLed = ~led;
Delay(0x200);

}
}
void Init_Interrupts(void)
{
*pSIC_IAR0 = 0xFFFFFFFF;

*pSIC_IAR1 = 0xFFFFFFFF;

*pSIC_IAR2 = 0xFFFFFFF4;
register_handler(ik_ivg11, Timer0_ISR);
}
/********************************************************
*
* 函数名 : main
* 函数功能 : 测试数码管和LED显示
* 函数输入参数 : 无
* 函数输出 : 无
* 说明 : 无
*
********************************************************/
void main(void)
{
Init_PLL();
Init_EBIU();
Init_Interrupts();
Init_TIMER();
while(1);

}

...全文
102 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
91program 2011-03-03
  • 打赏
  • 举报
回复
不能中断,先要查硬件的中断源是否有信号
guoyu_bo 2011-03-03
  • 打赏
  • 举报
回复
应该是blackfin

19,503

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧