Thread 中讨论的其他器件:EK-TM4C1294XL
工具/软件:TI-RTOS
通过.cfg 文件设置 HWI 时、我不会收到正确的数字。 值参数随随机值一同提供。 HWI 设置为:
/*========================= 应用程序特定实例========================= // var halHwi0Params = new halHwi.Params (); halHwi0Params.instance.name ="ResetIP"; halHwi0Params.arg = 6; halHwi0Params.priority = 5; Program.global.ResetIP = halHwi.create (68、 "IPButtonISR"、halHwi0Params);
这是 XGCONF GUI 自动为我生成的。 根据用户指南、它看起来是正确的。 我的 HWI 代码是:
//切换调试 LED,使其变为
void IPButtonISR (UArg){
uint32_t ui32Status = GPIOIntStatus (GPIO_PORTK_base、true);
GPIOIntClear (GPIO_PORTK_base、ui32Status);
uint32_t debugLEDState = GPIOPinRead (GPIO_PORTP_BASE、GPIO_PIN_4);
GPIOPinWrite (GPIO_PORTP_BASE、GPIO_PIN_4、~debugLEDState);
}
我注意到该错误、因为我对 HWI 的形式感到困惑。 我已经看到以 void HWI_function (void)形式出现的示例代码、但我不理解当您将参数传递给不接受参数的函数时会发生什么情况。 GCC 不允许我这么做。
HWI 每次动态创建时都会成功获取正确的参数值:
//这是 main()末尾的代码 InitTimer(); hwi_handle hwi0; Hwi_Params HwiParams; ERROR_Block EB; ERROR_INIT (&EB); Hwi_Params_init (hwiParams); hwiParams.arg = 5; hwiParams.priority = 7; hwiParams.instance->name ="示例 HWI"; hwi0 = Hwi_create (39、myTimerISR、&hwiParams、&EB); if (hwi0 == NULL){ while (1); } /*启动 BIOS */ BIOS_start(); return (0); } void myTimerISR (UARg 参数){ 虚拟= 0; 虚拟++; }
ROV 同意.cfg 文件中定义的参数、但相同的屏幕截图显示给定的值不是我期望的值: