This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC2650MODA:启动 HWI 时出现问题

Guru**** 666710 points
Other Parts Discussed in Thread: CC2650MODA, CC2650STK
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1109574/cc2650moda-problem-initiating-a-hwi

器件型号:CC2650MODA
主题中讨论的其他器件: CC2650STK

我使用的是通过 SPI 连接到外部传感器的 CC2650MODA。 我想创建一个保持在空闲循环中的程序、直到传感器上的一个中断引脚被拉至高电平、以指示其传输缓冲区已准备好读取。 然后、这个硬件中断将发布一个信号量来唤醒蓝牙任务、从而通过蓝牙传输这个传感器数据、所以我将添加到 TI 提供的简单外设示例中。 我遇到的问题很简单-它是如何启动 HWI 的。 文件似乎是分散和不完整的。 例如、SYS/BIOS 用户指南说要在 main()函数中使用以下部分代码;但是、我看不到您告诉程序 GPIO 引脚是什么引起中断、在什么边沿触发中断的位置。   

Hwi_Handle hwi0;
Hwi_Params hwiParams;
Error_Block eb;

Error_init(&eb);
Hwi_Params_init(&hwiParams);

hwiParams.arg = 5;
hwi0 = Hwi_create(id, hwiFunc, &hwiParams, &eb);
if (hwi0 == NULL) {
    System_abort("Hwi create failed");
}

然后、在给定的 SensorTag 示例中、不调用上述代码、而是在 sensortag_lp.c 文件(其中定义了任务)中、使用以下代码片段启动 Hwi 中断:  

static void SensorTag_init(void)
{
  // Handling of buttons, LED, relay
  hGpioPin = PIN_open(&pinGpioState, SensortagAppPinTable);
  PIN_registerIntCb(hGpioPin, SensorTag_callback);
  ...
}

SensorTagAppPinTable 包含有关如何定义 GPIO 引脚的信息(输入、正缘触发等)。  

那么、这两种方法是否相互冲突、因为它们都不起作用? 我是否需要向我的*。cfg 文件添加内容? 如果是、我要添加什么内容? 如何初始化一个 Hwi 并将其与一个中断服务例程相关联、有什么更详细的说明?  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Alex:

    我建议遵循 SimplePeripheral 模块进行引脚控制(用于板载按钮)、并为 GPIO 中断添加另一个实例。  请注意、此方法不需要.cfg 更改、但您可能需要修改 Board.h 和 CC2650STK.h/c、同时确保项目内的其他外设尚未使用您指定的引脚。

    此致、
    Ryan