DSPBIOS中怎么在HWI中调用软件中断.

DSPBIOS中怎么在HWI中调用软件中断.,第1张

回复

whzbest

的帖子看来你没有好好读TI的文档资料啊。在使用DSP/BIOS,调用硬件中断时,一定要去掉main函数中的while(1)循环,这样,DSP/BIOS内核才能进行进程的调度。你的硬件中断之所以没有检测到,可能是因为你对中断的配置没有配置好。另外,要想在HWI中触发SWI,直接在HWI

ISR中使用SWI_post()即可。若要在HWI中调用TSK,需要使用SEM_post(&semaphore)

最简单的情况,拿溢出中断来说吧。当你设置的值超过计数值后,就会产生溢出中断,贴个程序你看一下。

#include "DSP281x_Device.h"

Uint16 Number_10ms = 0

#pragma CODE_SECTION(User_T3PINT_Isr, "ramfuncs")

interrupt void User_T3PINT_Isr(void)// EV-A

{

Number_10ms = (Number_10ms + 1) % 188

if(Number_20ms==0)

{

/////此处写你自己想要在中断中执行的函数。因为这个时中弊候就会产生中断。

}

EvbRegs.EVBIFRA.bit.T3PINT=1

PieCtrlRegs.PIEACK.all |= PIEACK_GROUP4

PieCtrlRegs.PIEIER2.bit.INTx4=1

IER|=M_INT2

}

void main(void)

{

InitSysCtrl()

DINT

InitPieCtrl()

IER = 0x0000

IFR = 0x0000

InitPieVectTable()

EALLOW

PieVectTable.T3PINT = &User_T3PINT_Isr

EDIS

MemCopy(&RamfuncsLoadStart,&RamfuncsLoadEnd,&RamfuncsRunStart)

EnT3PINT()

EINT // Enable Global interrupt INTM

ERTM // Enable Global realtime interrupt DBGM

while(1)

{}//循环,等待中断

}

好了,大概就是老培拍这样了,中断有很多种的,还是需要自己去慢慢侍羡弄的哦


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12335606.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-22
下一篇2023-05-22

发表评论

登录后才能评论

评论列表(0条)

    保存