请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:LAUNCHXL-F28379D主题:C2000WARE 中讨论的其他器件
尊敬的专家:
您能为下面的查询提供帮助吗?
我尝试在 F28379D 上运行基本的 CLA 任务 1(软件触发)以切换 LED (GPIO 31)。 CPU 控制的 LED (GPIO 34) 正确切换、确认主循环正在运行、但 CLA 控制的 LED 不会、表明 CLA 任务未成功执行。
我正在使用 CCS 和 C2000Ware(版本 5.02.00 或者类似版本)。
我当前的代码设置包含用于 CLA 执行的所有标准修复:
CLA 程序加载:我已经验证了链接器文件 (.cmd) 将 Cla1Prog 放置在 FLASHD (LOAD) 和 LS0RAM (RUN) 中、并使用 main () 中的 memcpy 将代码从闪存复制到 LS0RAM。
内存配置:LS0RAM 配置用于 CLA 程序、LS1RAM 配置用于 CLA 数据。
CLA 任务:任务 1 是软件触发的、并尝试在完成时设置共享标志 (cla_led_flag = 1)。
中断处理:PIE 组 11 (INT_CLA1_1) 已启用并注册到 CLA_HaltTask1 ISR。
我正在使用 CCS 和 C2000Ware(版本 5.02.00 或者类似版本)。
我当前的代码设置包含用于 CLA 执行的所有标准修复:
CLA 程序加载:我已经验证了链接器文件 (.cmd) 将 Cla1Prog 放置在 FLASHD (LOAD) 和 LS0RAM (RUN) 中、并使用 main () 中的 memcpy 将代码从闪存复制到 LS0RAM。
内存配置:LS0RAM 配置用于 CLA 程序、LS1RAM 配置用于 CLA 数据。
CLA 任务:任务 1 是软件触发的、并尝试在完成时设置共享标志 (cla_led_flag = 1)。
中断处理:PIE 组 11 (INT_CLA1_1) 已启用并注册到 CLA_HaltTask1 ISR。
SK
这是我的代码,#include “driverlib.h"</s>“
#include “device.h"</s>“
//从 CLA 切换 LED 的全局标志
#pragma DATA_SECTION (Cla1Result、“CLADataLS1")“)
浮动 Cla1Result;
pragma DATA_SECTION (CLA_led_flag、“CLADataLS1")“)
易失性 uint32_t cla_led_flag = 0;
__ interrupt void Cla1Task1 (void);
__ interrupt void CLA_HaltTask1 (void);
//将任务放置在 CLA 程序存储器中
pragma CODE_SECTION (Cla1Task1、“Cla1Prog")“)
__interrupt void Cla1Task1 (void)
{
//设置 LED 标志
cla_led_flag = 1;
Cla1Result = 1.234f; //只是为了确认 CLA 写入数据
//清除 CLA 中断标志
CLA_clearTaskFlags (CLA1_BASE、CLA_TASKFLAG_1);
}
__ interrupt void CLA_HaltTask1 (void)
{
INTERRUPT_CLEARACKGROUP (INTERRUPT_ACK_group11);
}
void initCLA (void)
{
EALLOW;
//启用 CLA1 时钟
SysCtl_enablePeripheral (SYSCTL_PERIPH_CLK_CLA1);
//可选择复位 CLA(如果需要)
// SysCtl_resetPeripheral (SYSCTL_PERIPH_RES_CPU1CLA1);
//可选择清除中断标志
// Interrupt_clearACKGroup (INTERRUPT_ACK_group11);
MemCfg_setLSRAMControllerSel (MEMCFG_sect_LS0、MEMCFG_LSRAMCONTROLLER_CPU_CLA1);
MemCfg_setCLAMemType (MEMCG_sect_LS0、MEMCG_CLA_MEM_PROGRAM);
MemCfg_setLSRAMControllerSel (MEMCFG_sect_LS1、MEMCFG_LSRAMCONTROLLER_CPU_CLA1);
MemCfg_setCLAMemType (MEMCFG_sect_LS1、MEMCFG_CLA_MEM_DATA);
cla_mapTaskVector (CLA1_BASE、CLA_MVECT_1、(uint16_t)&Cla1Task1);
CLA_setTriggerSource (CLA_TASK_1、CLA_TRIGGER_SOFTWARE);
CLA_enableTasks (CLA1_BASE、CLA_TASKFLAG_1);
CLA_setTaskInterruptMode (CLA1_BASE、CLA_TASKFLAG_1、CLA_INTERRUPT_ENABLED);
INTERRUPT_CLEARACKGROUP (INTERRUPT_ACK_group11);
EDIS;
} void main{ Interrupt_register (INT_CLA1_1、&CLA_HaltTask1);// CLA 任务 1 中断处理程序
initcla();
INTERRUPT_ENABLE (INT_CLA1_1);// CLA 任务 1 while (1){CLA_forceTasks (CLA1_BASE、CLA_TASKFLAG_1);if (cla_led_flag)
{
GPIO_togglePin (DEVICE_GPIO_PIN_LED1);
cla_led_flag = 0;}
}}
#include “device.h"</s>“
//从 CLA 切换 LED 的全局标志
#pragma DATA_SECTION (Cla1Result、“CLADataLS1")“)
浮动 Cla1Result;
pragma DATA_SECTION (CLA_led_flag、“CLADataLS1")“)
易失性 uint32_t cla_led_flag = 0;
__ interrupt void Cla1Task1 (void);
__ interrupt void CLA_HaltTask1 (void);
//将任务放置在 CLA 程序存储器中
pragma CODE_SECTION (Cla1Task1、“Cla1Prog")“)
__interrupt void Cla1Task1 (void)
{
//设置 LED 标志
cla_led_flag = 1;
Cla1Result = 1.234f; //只是为了确认 CLA 写入数据
//清除 CLA 中断标志
CLA_clearTaskFlags (CLA1_BASE、CLA_TASKFLAG_1);
}
__ interrupt void CLA_HaltTask1 (void)
{
INTERRUPT_CLEARACKGROUP (INTERRUPT_ACK_group11);
}
void initCLA (void)
{
EALLOW;
//启用 CLA1 时钟
SysCtl_enablePeripheral (SYSCTL_PERIPH_CLK_CLA1);
//可选择复位 CLA(如果需要)
// SysCtl_resetPeripheral (SYSCTL_PERIPH_RES_CPU1CLA1);
//可选择清除中断标志
// Interrupt_clearACKGroup (INTERRUPT_ACK_group11);
MemCfg_setLSRAMControllerSel (MEMCFG_sect_LS0、MEMCFG_LSRAMCONTROLLER_CPU_CLA1);
MemCfg_setCLAMemType (MEMCG_sect_LS0、MEMCG_CLA_MEM_PROGRAM);
MemCfg_setLSRAMControllerSel (MEMCFG_sect_LS1、MEMCFG_LSRAMCONTROLLER_CPU_CLA1);
MemCfg_setCLAMemType (MEMCFG_sect_LS1、MEMCFG_CLA_MEM_DATA);
cla_mapTaskVector (CLA1_BASE、CLA_MVECT_1、(uint16_t)&Cla1Task1);
CLA_setTriggerSource (CLA_TASK_1、CLA_TRIGGER_SOFTWARE);
CLA_enableTasks (CLA1_BASE、CLA_TASKFLAG_1);
CLA_setTaskInterruptMode (CLA1_BASE、CLA_TASKFLAG_1、CLA_INTERRUPT_ENABLED);
INTERRUPT_CLEARACKGROUP (INTERRUPT_ACK_group11);
EDIS;
} void main{ Interrupt_register (INT_CLA1_1、&CLA_HaltTask1);// CLA 任务 1 中断处理程序
initcla();
INTERRUPT_ENABLE (INT_CLA1_1);// CLA 任务 1 while (1){CLA_forceTasks (CLA1_BASE、CLA_TASKFLAG_1);if (cla_led_flag)
{
GPIO_togglePin (DEVICE_GPIO_PIN_LED1);
cla_led_flag = 0;}
}}
此致、
Marvin