您的位置: OpenADSP社区论坛 -> Blackfin专区 -> 新手上路 -> 求助:如何实现软中断,如何重新设置中断优... 
本帖共有669个阅读者
发表帖子 发表投票 回复主题
求助:如何实现软中断,如何重新设置中断优先级?
bh99(论坛新手)
bh99
头衔:社区公民
帮派:无帮无派
帖数:25
金钱:337
积分:41
注册时间:2012/4/24
楼主信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
求助:如何实现软中断,如何重新设置中断优先级?
1)如何软件触发一个中断呢?就像x86 int 21那样。搜了一下没搜到参考代码。

2)*pSIC_IARx中的中断源可以设置中断优先级,register_handler(ik_ivgx)又可以设置一次优先级,我想某个GPIO或PF的中断优先级高于PPI的,该怎么设置呢?


另外,能否给贴下 9325TP显示英文的函数和字库呢?例子程序是显示自定义汉字字库的,不方便使用。英文的用来显示debug信息比较方便。



「该帖子被 bh99 在 2013-05-02 00:45:54 编辑过」

这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2013/4/27 1:03:30
尊贵身份标志
夜色飘摇(论坛版主)
夜色飘摇
头衔:社区公民
帮派:无帮无派
帖数:350
金钱:1773
积分:332
注册时间:2011/6/8
1信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
1)可以在软件中设置进入中断的条件,比如下面这个例子,
void Init_Flags(void)
{
*pFIO_DIR |= PF0|PF1;
*pFIO_EDGE |= PF0|PF1;
*pFIO_MASKA_D |= PF0|PF1;
}
void Init_Interrupts(void)
{
*pSIC_IAR2 &= ~0x0000f000;
*pSIC_IAR2 |=  0x00005000;
register_handler(ik_ivg12, FlagA_ISR);
*pSIC_IMASK |= 0x00080000;
}

EX_INTERRUPT_HANDLER(FlagA_ISR)
{
if((*pFIO_FLAG_D&PF0) == PF0)
{
printf("interrupt is PF0!\n");
}
else if((*pFIO_FLAG_D&PF1) == PF1)
{
printf("interrupt is PF1!\n");
}
*pFIO_FLAG_C = PF0|PF1;
}
void main(void)
{
    Set_PLL(16,3);
    Init_EBIU();
    Init_SDRAM();
    Init_Flags();
    Init_Interrupts();
    while(1)
    {
     *pFIO_FLAG_S = PF0;
     delay(300);
    }
}
如果要进入中断的话,在程序加入*pFIO_FLAG_S = PF0;

2)初始化中断的时候直接设定GPIO的中断PPI的中断的中断等级就行了,ik_ivgX X越大优先级越低,比如在BF53X中要配置GPIO的中断高于PPI中断
GPIO中断
        *pSIC_IAR2 &= ~0x0000f000;
*pSIC_IAR2 |=  0x00003000;
register_handler(ik_ivg10, FlagA_ISR);
*pSIC_IMASK |= 0x00080000;
PPI中断
        *pSIC_IAR1 &= ~0x0000000f;
*pSIC_IAR1 |=  0x00000004;
register_handler(ik_ivg11, DMA0_PPI_ISR);
   *pSIC_IMASK |= 0x00000100;


里面的子函数在程序中有,属于底层函数,这里就不贴出来。
void LCD_PutChar8x16(unsigned short x, unsigned short y, char c, unsigned int fColor, unsigned int bColor)
{
unsigned int i,j;
LCD_SetPos(x,x+8-1,y,y+16-1);
for(i=0; i<16;i++) {
unsigned char m=Font8x16[c*16+i];
for(j=0;j<8;j++) {
if((m&0x80)==0x80) {
Write_Data_U16(fColor);
}
else {
Write_Data_U16(bColor);
}
m<<=1;
}
}
}


英文字库8*16的
上传的附件
   20135213525184.rar [ 1.87 KB ]


我要成为勇敢的海上战士!
等级:论坛版主 参考IP地址:*.*.*.*
2013/5/2 13:54:22
bh99(论坛新手)
bh99
头衔:社区公民
帮派:无帮无派
帖数:25
金钱:337
积分:41
注册时间:2012/4/24
2信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

多谢版主!豁然开朗啊!


这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2013/5/2 20:27:04
Powered by OpenADSP Copyright © 2010 www.Openadsp.com. All rights reserved.159230 Call, 1 Queries, Processed in 0.015625 second(s),