请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TMS570LS1224 主题中讨论的其他器件:HALCOGEN
工具/软件:Code Composer Studio
大家好、
在接收到某些数据(RX)时、我需要您的帮助来解决 SCI 中断问题。
我已经在 Halcogen 中设置了所有复选框并生成了一个代码。 实际上它是有效的,除了我的 sciNotification 根本不被调用。
调用 sciHighLevelInterrupt 函数、但不调用 sciNotification、因为 g_sciTransfer_t[0U].rx_length 始终为零:
void sciHighLevelInterrupt (void) { uint32 vec = sciREG->INTVECT0; uint8字节; 开关(VEC) { ... 案例11U: /*接收*/ 字节=(uint8)(sciREG->RD & 0x000000FFU);//<<<< 此值正确 if (g_sciTransfer_t[0U].rx_length > 0U)//<<<<<<< 由于某种原因,始终为 false,这就是不调用 sciNotification 的原因。 { *g_sciTransfer_t[0U].rx_data =字节; /*SAFETYMCUSW 567 S MR:17.1,17.4 "需要指针增量"*/ g_sciTransfer_t[0U].rx_data++; g_sciTransfer_t[0U].rx_length--; 如果(g_sciTransfer_t[0U].rx_length == 0U) { sciNotification (sciREG、(uint32) SCI_RX_INT); } } 中断; }
我想要获取的内容:我需要在"中断"函数中读取传入数据。 我正在使用 FreeRTOS 执行大量任务、当我在单独的任务中读取 SCI 时、并非所有数据都从 SCI 读取。 这就是为什么我需要在这种情况下使用中断、不要错过任何东西。
您能不能建议出什么问题吗? 我是否需要实施另一种策略来从 RX 获取所有数据?
下面是我的测试代码(没有 FreeRTOS 和其他不重要的东西):
int main (void) { /*用户代码 begin (3)*/ sciInit(); sciEnableNotification (sciREG、SCI_RX_INT); _enable_IRQ (); while (1) { }; /*用户代码结束*/ 返回0; }
我在 halcogen 的设置:



