这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » I2C 求助,各位大侠帮我看看这个 I2C 中的中断问题,谢谢!

共2条 1/1 1 跳转至

I2C 求助,各位大侠帮我看看这个 I2C 中的中断问题,谢谢!

院士
2006-09-17 18:14:16     打赏
I2C 求助,各位大侠帮我看看这个 I2C 中的中断问题,谢谢!



关键词: 求助     各位     大侠     帮我     看看     这个     中的     中断         

院士
2006-12-22 22:43:00     打赏
2楼
问 //主模式 I2C 初始化示列

/***************************************
名称;I2C_Init()
功能:I2C 初始化,包括初始化其中中断向量 IRQ 中断
入口参数:初始化 I2C 总线速率,最大值为 400K
出口参数:无
*****************************************/

void I2C_Init(uint32 fi2c)
{
if (fi2c>400000) fi2c = 400000;

PINSEL0 = (PINSEL0&0xFFFFFF0F) | 0x50 ; //设置 I2C 控制口有效

I2SCLH = (Fpclk/fi2c + 1) / 2;
I2SCLL = (Fpclk/fi2c) / 2 ;
I2CONCLR = 0x2C;
I2CONSET = 0x40;

/* 设置 I2C 中断允许 */
VICIntSelect = 0x00000000;    //设置所有通道为 IRQ 中断
VICVectCntl0 = 0x29;          //I2C 通道分配 IRQ slot 0 ,即优先级最高
VICVectAddr0 = (int)IRQ_I2C;  //设置 I2C 中断向量地址
VICIntEnable = 0x0200;        //使能 I2C 中断
}


有两个问题向各位大哥请教:

问题1:
      VICVectCntl0 = 0x29;    //I2C 通道分配 IRQ slot 0 ,即优先级最高
      为什么  VICVectCntl0 = 0x29 就使 I2C 分配到了 slot 0 呢?

问题2:
     VICIntEnable = 0x0200;        //使能 I2C 中断
     
    这句话为什么 使能 I2C 中断呢? 它只是给 积存器 VICIntEnable 的
    第 9 位  写了一个 1 啊?

    如果我设置
   
    VICIntEnable = 0x0001   ;我向积存器 VICIntEnable 的
    第 1 个位 写入 1  ,那结果又是怎样呢?

谢谢!
1: re:哪位大侠来 SAVE ME?
2: 最好去看一下有关VICIntEnable这个寄存器的规格书这个规格书一般就是你所用到的芯片的datasheet. 3: re:VICIntEnable = 0x0200;
是不是
向中断允许寄存器 第 9 位写 1.
就表示允许某个外设的中断请求 啊?

谢谢!

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]