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

TMS320F280039C: CANA模块程序配置

Part Number:TMS320F280039COther Parts Discussed in Thread:C2000WARE, SYSCONFIG

根据官方的例程,对CANA模块进行配置,通过中断进行外部数据接收处理。

官方例程使用的是中断线0( INT_CANA0 ),我想更改为中断线1( INT_CANA1 )重新测试一下,结果发现无法触发中断,想求教一下程序配置哪里出错了?

我的中断程序:

void InitCAN_Interrupt() //<> CAN 中断初始化配置
{
CAN_enableInterrupt(CANA_BASE, CAN_INT_IE0 | CAN_INT_ERROR | CAN_INT_STATUS);
Interrupt_register(INT_CANA0, &canaRX_isr);
Interrupt_enable(INT_CANA0);
CAN_enableGlobalInterrupt(CANA_BASE, CAN_GLOBAL_INT_CANINT0);
}

将中断线0更改为1无法正常运行。

Ben Qin:

你好,您这边使能了中断线1吗?

,

Light:

你好,不清楚你所说的中断线使能指的是哪个部分

void InitCAN_Interrupt() //<> CAN 中断初始化配置{CAN_enableInterrupt(CANA_BASE, CAN_INT_IE1 | CAN_INT_ERROR | CAN_INT_STATUS);Interrupt_register(INT_CANA1, &canaRX_isr);Interrupt_enable(INT_CANA1);CAN_enableGlobalInterrupt(CANA_BASE, CAN_GLOBAL_INT_CANINT1);}

这个是直接更改后的程序。

CAN_enableInterrupt(uint32_t base, uint32_t intFlags){ // // Check the arguments. // ASSERT(CAN_isBaseValid(base)); ASSERT((intFlags & ~(CAN_INT_ERROR | CAN_INT_STATUS | CAN_INT_IE0 | CAN_INT_IE1)) == 0U);

// // Enable the specified interrupts. // HWREG_BP(base + CAN_O_CTL) |= intFlags;}

这个函数使能了 CAN_CTL->bit17,即 CANINT1 已经开启。

,

Ben Qin:

您这边有配置相关的中断服务函数吗?

您参考的是哪个例程?在C2000ware中的路径是?

,

Light:

我使用的是 can_ex2_loopback_interrupts

路径:C:\ti\c2000\C2000Ware_5_01_00_00\driverlib\f28003x\examples\can

该程序使用的是中断线0,中断配置部分在上面的回答中

测试方法:在 for 循环中做删减,当前为

for(;;) {

{ CAN_sendMessage(CANA_BASE, TX_MSG_OBJ_ID, MSG_DATA_LENGTH, txMsgData); }

}

通过can输出进行验证测试。例程是正常运行的,但是更改中断线后无输出

,

Ben Qin:

我查看下相关资料后回复您。

,

Ben Qin:

你好,这个例程中使用了sysconfig工具,请问您是在该工具中对程序进行更改的吗?

,

Light:

我是自己新建的工程,复制了官方的例程< can_ex2_loopback_interrupts >进行的测试,在尝试修改中断线时发生的故障。

没有使用sysconfig工具。

,

Ben Qin:

Light 说:我是自己新建的工程,复制了官方的例程< can_ex2_loopback_interrupts >进行的测试,

对于使用了sysconfig工具的工程建议不要这样做。因为有些设置是在sysconfig中完成的。所以建议您不要复制,直接导入工程,然后再利用sysconfig工具进行修改。

赞(0)
未经允许不得转载:TI中文支持网 » TMS320F280039C: CANA模块程序配置
分享到: 更多 (0)

© 2024 TI中文支持网   网站地图 鲁ICP备2022002796号-1