主题中讨论的其他器件: 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 并将其与一个中断服务例程相关联、有什么更详细的说明?