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:
非常感谢,这边尝试一下。
,
Gary Lu:
不客气,有问题随时交流,谢谢!
,
liang jehu:
您好,关于您前几天提到的CSL_intcSetCpuIntPriority函数,我在pdk_C6678_1_1_2_6包中的csl库中也未查询到。
,
Gary Lu:
您好,我查看一下资料