主题中讨论的其他器件:SysConfig、 C2000WARE、
您好、专家!
我是代表客户发布此帖子。 它在下面。
我尝试在 CLA 上读取 ADC 值、然后求平均值、然后通过共享 CLA/CPU 变量将平均值传递给 CPU。 我将稍后分享我如何在.c、.cla 和 shared.h 中声明变量。
但首先、我遇到的编译问题是、当我尝试对新的 ADC 值求平均值时
tempDouble = HWREGH (ADCCRESULT_BASE + 0x0U + lastRRPointer_s);
tempDoble =(0.1 * tempDouble)+(C28CLA_secondary.ac target="_blank">secondary.AC2DCMON * 0.9);
C28CLA_secondary.AC2DCMON = tempDouble;
给出编译错误:错误#99923:"../CLA1.CLA"、第352行:CLA 不允许在后台任务中进行函数调用。 尝试内联函数。
编译错误声称发生在第352行(HWREGH 宏的第一行代码)上 顺便说一下-该错误仅在最后一行存在时出现-如果它只是前2行代码、则不存在编译错误
以下是我的可变声明代码、以防它们有用;
main.c 是;
#ifdef _cplusplus
#pragma DATA_SECTION ("CLADataLS0")
#else
#pragma DATA_SECTION (C28CLA_secondary、"CLADataLS0")
#endif //__ cplusplus
struct C28CLA_secondary_struct C28CLA_secondary;//从 CLA 发出的辅助信号。 由于这些信号的速度特性不是高速的、它们被组合在一起为"次要"信号。 此组表示以发射环路速度以更新的信号。
shared.h 是;
结构 C28CLA_secondary_struct{
Volatile Double AC1DCMON;
Volatile Double AC2DCMON;
}extern C28CLA_secondary;
嗯、实际上.CLA 中没有任何内容(因为它在.h 中声明了。 我希望这是正确的 LOL)
我没有使用函数调用。
我使用 TI 的函数宏来访问硬件寄存器。 不过–即使我删除了用于访问硬件寄存器的宏函数调用、并将该代码替换为硬编码值、仍然会得到相同的编译错误。
原始代码行;(HWREGH 是一个宏函数)
C28CLA_secondary.AC1DCMON =(0.9 * C28CLA_secondary.AC1DCMON)+(0.1 * HWREGH (ADCCRESULT_BASE + 0x0U + lastRRPointer_s));
删除了宏函数的代码、但仍然出现编译错误
C28CLA_secondary.AC1DCMON =(0.9 * C28CLA_secondary.AC1DCMON)+(0.1 * 123);
提前感谢您!
此致、
乔纳森