你好,
我现在用nhet的边沿中断,nhet有多个中断源,代码用edge0和edge1;可是代码生成器里面初始化函数
void het1HighLevelInterrupt(void)
{
uint32 vec = hetREG1->OFF1;
if (vec < 18U)
{
if ((vec & 1U) != 0U)
{
pwmNotification(hetREG1,(vec >> 1U) – 1U, pwmEND_OF_PERIOD);
}
else
{
pwmNotification(hetREG1,(vec >> 1U) – 1U, pwmEND_OF_DUTY);
}
}
else
{
edgeNotification(hetREG1,vec – 18U);
}
}都是这个,我想问如果我用了两个nhet中断,那怎么区分是哪个中断源呢,现在这个初始化函数都是edgeNotification(hetREG1,vec – 18U);求指教
Jay:
你好。
这两个中断进来时vec是不一样的,edge0进来vec是18,edge1进来vec是19.
所以,你在edgeNotification函数里,判断传过去的(vec-18)的值就可以区分了。
meng zhang3:
回复 Jay:
谢了,还有个问题,我现在edge0和edge1都配置了也使能了,可是中断只响应edge0不响应edge1是什么原因?vec一直是18没变过
meng zhang3:
回复 meng zhang3:
我把edge0的中断关了,只开edge1vec也显示是18,求指教
Jay:
回复 meng zhang3:
edge0和edge1分别选了哪两个引脚?
是否使用了Share功能?
meng zhang3:
回复 Jay:
分别配置了5和17管脚,share功能在哪里配置?
Jay:
回复 meng zhang3:
5和17的话应该没有Share的问题。
Share可以在Halcogen里面配置,如下图。
附件里有我做的一个测试工程。
edge0选择了HET6,edge1选择了HET7.
用HET1来发送下降沿,触发中断。
测试时,把HET1接到HET6,就会产生edge0中断,在edgeNotification中看到传递过来的edge变量值为0;
把HET1接到HET7,就会产生edge1中断,在edgeNotification中看到传递过来的edge变量值为1。
你可以与你的程序对比测试一下。
hualin zhao:
回复 Jay:
你好,有没有tms470关于edge中断的例程,470的没有产生中断,而570可以,不知道哪里出现了问题,非常感谢。