Thread 中讨论的其他器件:SysConfig、 C2000WARE
工具/软件:
您好、我在尝试将此代码用于下面的 PI 控制器示例时遇到错误、由于代码缺少输出文件、它一直提供此错误输出。 我尝试运行 LED 闪烁代码来查看 LED 是否会与控制器一起闪烁、但调试 XDS 100 问题、由于驱动程序而无法连接。 我只需要获得代码来识别控制器并进行干净调试而不会出现任何问题方面的帮助。 

//###########################################################################
//! \file pi_test.c
//!
//!
//! 此示例演示了如何将 DCL 的 PI 控制器与 SysConfig 配合使用
//! 消息
//
//组:c2000
//目标系列:F28P55X
//
//###########################################################################
//
//
//版权所有:(C) 2024 Texas Instruments Incorporated -
// http://www.ti.com/ 保留所有权利$
//###########################################################################
//************************************************************************************************
//包括
//************************************************************************************************
#include “driverlib.h"</s>“
#include “device.h"</s>“
#include “board.h"</s>“
#include “c2000ware_libraries.h"</s>“
#include “stdio.h"</s>“
包含“pi_test.h"</s>“
//!
//! \addtogroup DCL_examples PI 控制器示例
//@{
Uint16_t currIdx = 0;
uint16_t 已完成= 0;
int16_t 错误=–1;
void Init_DCL_Logger (void)
{
//
//初始化指向数据缓冲区的日志指针
//
DCL_initLog (&rkLog、(float32_t *) rkLogArr、data_length);
DCL_initLog (&ykLog、(float32_t*) ykLogArr、data_length);
DCL_initLog (&ctlLog、(float32_t*) ctlLogArr、data_length);
DCL_initLog (&outLog、(float32_t *) outLogArr、data_length);
//同时重置 PI 控制器
DCL_resetPI (&myController0);
}
Int Run_PI_Logger ()
{
//
// rk =目标引用值
// YK =电流反馈值
// UK =产量控制力
//
float32_t rk、YK、UK;
//
//读取输入数据缓冲区
//
RK = DCL_freadLog (&rkLog);
YK = DCL_freadLog (&ykLog);
//
//运行控制器
//等效于 UK = DCL_runpi_series (ctrl_handle、rk、yk);
//
UK = DCL_runPI_C1 (&myController0、rk、YK);
//
//将结果写入输出缓冲区
//
DCL_fwriteLog (&outLog、UK);
返回 1;
}
内部 Compare_Results ()
{
int i;
//
//重置日志指针、使其从开头开始
//
DCL_resetLog (&outLog);
//
//根据具有公差的预期输出检查输出 (1e-06)
//
INT 错误= 0;
对于 (I = 0;I < NUM_Elements;I++)
{
float32_t 输出= DCL_freadLog (&outLog);// outLogArr[i]
float32_t = DCL_freadLog (&ctlLog);// ctlLogArr[i]
float32_t error = fabsf (output - expected);
如果(错误> Epsilon)
{
错误++;
printf(“在样本%d 失败、输出%f、应为%f\n“、i、output、 预期);
}
}
返回错误;
}
//
//主要
//
void main (void)
{
//
//初始化器件时钟和外设
//
设备初始化 ();
//
//禁用引脚锁定并启用内部上拉。
//
device_initGPIO();
//
//初始化 PIE 并清除 PIE 寄存器。 禁用 CPU 中断。
//
interrupt_initModule();
//
//使用指向 shell 中断的指针初始化 PIE 向量表
//服务例程 (ISR)。
//
Interrupt_initVectorTable();
//
// PinMux 和外设初始化
//
BOARD_INIT ();
//
// C2000Ware 库初始化
//
C2000Ware_libraries_init();
//
// DCL Logger 初始化
//
init_DCL_Logger ();
//
//启用全局中断 (INTM) 和实时中断 (DBGM)
//
EINT;
ERTM;
while (1)
{
If(已完成)
{
错误= Compare_Results ();
printf(“PI 测试生成%d 错误\n“,错误);
DCL_BREAK_POINT;
}
}
}
//在 sysconfig 中初始化 CPU timer0
中断无效 CONTROL_ISR (void)
{
if (currIdx < NUM_elements)
{
Run_PI_Logger ();
currIdx++;
}
暴露
{
已完成= 1;
INTERRUPT_DISABLE (INT_myCPUTIMER0);
}
interrupt_clearACKGroup (INT_myCPUTIMER0_INTERRUPT_ACK_GROUP);
}
// main 结尾
//@}// addtogroup
//文件结尾




