请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:DK-TM4C129X 主题中讨论的其他器件: TM4C1294KCPDT、 TM4C129XKCZAD
我在 DK-TM4C129x 开发套件的 TM4C129系列处理器上使用 UDMA。 代码执行软件存储器到存储器的散聚/聚传输、然后在传输后在中断例程中进行一些清理。
我可以使用此代码、但在开发过程中、我注意到 udma.h 为 UDMA_INT_SW 提供的值为62。 正确的值似乎是60。 我的工作代码的相关部分为:
tDMAControlTable sUnpackTaskList[kMaxChan];
void UnpackSamples()
{...
}
空 DMAManager::SetupSampleTransfer()
{...
//注意 udma.h 中的 UDMA_INT_SW 似乎不正确(62)
uDMAIntRegister (60, UnpackSamples);
uDMAChannelAttributeEnable (UDMA_CHANGE_SW,0);
}
void DMAManager::TransferSamples (...)
{
...
uDMAChannelScatterGatherSet (UDMA_CHANGE_SW、8、sUnpackTaskList、0);
uDMAChannelEnable (UDMA_CHANGE_SW);
uDMAChannelRequest (UDMA_CHANGE_SW);
}
TM4C1294kcpdt 微控制器数据表将"UDMA 软件通道传输"中断列为44、该中断与图2-6 (60 = 44 + 16)所示矢量表中的60作为异常编号一致。
似乎不可能忽略 udma.h 头文件中的此类错误。 我在这里错过了什么愚蠢的东西吗?