Thread 中讨论的其他器件:SysBIOS、 SysConfig
尊敬的 TI 团队:
我们有一个正常工作的 SYS/BIOS 应用程序、我们将使用 CLB 添加一个新功能(这是我们第一次使用此部件)。
应用程序将 GPIO24配置为连接到 XINT1信号的输入引脚。
我们在 sysbios.cfg 文件上连接 XINT1中断、如下所示:
var hwi2Params = new Hwi.Params(); hwi2Params.instance.name = "EXTERNAL_FAULT_ISR"; hwi2Params.enableInt = true; hwi2Params.enableAck = true; Program.global.EXTERNAL_FAULT_ISR = Hwi.create(35, "&xint1ISR", hwi2Params);
然后、在启动 BIOS 之前、我们从 main.c 中按如下方式配置此引脚:
#define EXTERNAL_FAULT_INTERRUPT_GPIO_NUM GPIO24
// Configure GPIO pin for inverter fault as input
GPIO_setPadConfig(EXTERNAL_FAULT_INTERRUPT_GPIO_NUM, GPIO_PIN_TYPE_STD); // Disable pull-up on GPIO Pin
configureGPIO(EXTERNAL_FAULT_INTERRUPT_GPIO_NUM, GPIO_DIR_MODE_IN);
// Tie this pin to the external interrupt signal 1 = XINT1, active low and enable it
GPIO_setQualificationMode(EXTERNAL_FAULT_INTERRUPT_GPIO_NUM, GPIO_QUAL_3SAMPLE); // TODO experiment more samples 4 or 6
GPIO_setInterruptPin(EXTERNAL_FAULT_INTERRUPT_GPIO_NUM, GPIO_INT_XINT1);
GPIO_setInterruptType(GPIO_INT_XINT1, GPIO_INT_TYPE_FALLING_EDGE);
GPIO_enableInterrupt(GPIO_INT_XINT1);
每当我们将 GPIO24拉为低电平时、我们的 ISR 都会执行必要的保护步骤。 这按预期工作。
此应用是几年前开发的、使用 driverlib 直接调用来配置引脚。
现在、我们刚刚在初始化序列期间添加了以下代码、以配置 CLB 相关引脚并设置该器件。 这些 函数是使用 CLB 配置工具和 SysConfig 工具生成的(我们以前从未使用过这些函数)。
因此、我们将这些函数称为:
Board_init();
initTILE1 (CLB1_base);
initTILE1 (clb2_base);
initTILE1 (CLB3_base);
CLB 功能似乎正常工作、但是在我们调用 Board_init()、特别是 void INPUTXBAR_init ()函数(如下)之后、连接到引脚24的 ISR 将停止工作。 如果我将此函数注释掉、则 ISR 正常工作、但 CLB 停止工作。
void INPUTXBAR_init(){
//myINPUTXBAR0 initialization
XBAR_setInputPin(XBAR_INPUT1, 56);
XBAR_lockInput(XBAR_INPUT1);
XBAR_setInputPin(XBAR_INPUT2, 57);
XBAR_lockInput(XBAR_INPUT2);
XBAR_setInputPin(XBAR_INPUT3, 11);
XBAR_lockInput(XBAR_INPUT3);
XBAR_setInputPin(XBAR_INPUT4, 33);
XBAR_lockInput(XBAR_INPUT4);
XBAR_setInputPin(XBAR_INPUT5, 13);
XBAR_lockInput(XBAR_INPUT5);
XBAR_setInputPin(XBAR_INPUT6, 12);
XBAR_lockInput(XBAR_INPUT6);
}
我们缺少什么?
我们有什么问题?
旧的 driverlib 调用和这个新的 SysConfig 自动生成文件的混合是否不是一个好的组合?