TI中文支持网
TI专业的中文技术问题搜集分享网站

TMS320C6678: 串口中断初始化后,调用stdlib.h文件一些函数出现卡死现象。

Part Number:TMS320C6678

最近在使用6678开发板,串口、GPIO、Timer等中断都已经完成,但是遇到一个问题,在进行中断初始化的时候,要使用CSL_intcInit()函数初始化,这句代码是中断初始化过程中必须调用的,调用了这句代码之后,再调用stdlib.h文件里面的一些函数比如malloc()和rand()函数,出现卡死,执行到次行之后不再往下执行。如果在中断初始化之前调用malloc()或者rand()是可以运行的不会卡死,一旦调用CSL_intcInit()函数之后再调用这些函数就会卡死。

代码如下:

正常执行:

异常执行:

Gary Lu:

您好,

这个问题可能是因为在调用CSL_intcInit()函数后,中断优先级被设置为了较高的级别,导致在执行malloc()或rand()函数时,有更高优先级的中断不断触发,从而导致卡死。

解决这个问题的方法是,在调用CSL_intcInit()函数之前,将中断优先级设置为较低的级别。你可以使用CSL_intcSetCpuInt0Priority()函数来设置中断优先级,将其设置为一个较低的值,然后再调用CSL_intcInit()函数进行中断的初始化。

,

liang jehu:

谢谢解答

,

Gary Lu:

不客气,有问题随时交流,谢谢!

,

liang jehu:

您好,请教一下,在CSL库并未找到CSL_intcSetCpuInt0Priority()函数,请问是哪个PDK包中才会有呢。目前使用的是pdk_C6678_1_1_2_6

,

Gary Lu:

您好,我需要查阅一下资料,这需要一些时间,谢谢!

,

liang jehu:

好的,谢谢,期待您的解答

,

Gary Lu:

您好,

根据您提供的 PDK 版本信息 pdk_C6678_1_1_2_6,我检查了相关文档和资料,确认在该版本的 PDK 中没有找到名为 CSL_intcSetCpuInt0Priority() 的函数。

根据您的需求,如果您想要设置 CPU 中断 0 的优先级,您可以尝试使用 CSL_intcSetCpuIntPriority() 函数来实现。该函数的原型如下:

void CSL_intcSetCpuIntPriority(CSL_IntcHandlehIntc,Uint32intNum,Uint32priority
);

其中,hIntc 是中断控制器的句柄,intNum 是中断号,priority 是中断的优先级。您可以将 intNum 设置为 0,表示设置 CPU 中断 0 的优先级。

,

liang jehu:

非常感谢,这边尝试一下。Thumbsup

,

Gary Lu:

不客气,有问题随时交流,谢谢!

,

liang jehu:

您好,关于您前几天提到的CSL_intcSetCpuIntPriority函数,我在pdk_C6678_1_1_2_6包中的csl库中也未查询到。

,

Gary Lu:

您好,我查看一下资料

赞(0)
未经允许不得转载:TI中文支持网 » TMS320C6678: 串口中断初始化后,调用stdlib.h文件一些函数出现卡死现象。
分享到: 更多 (0)