Thread 中讨论的其他器件:C2000WARE
工具与软件:
您好!
我遇到了一个关键编译器(?) BUG、试图从 CLA1中断代码中调用 GPIO_writePin ()会导致整个 CPU 挂起、否则执行似乎在空间中丢失。
该设计的链接
使用 从内部调用的 GPIO_writePin ()库函数尝试设置 GPIO 引脚(正确配置为在 CLA1控制下) __interrupt void Cla1Task1 ( void )。
CPU 似乎完全停止运行正确的代码、中断不再发生等
调查崩溃、我已将问题确定为 GPIO_writePin ()中的以下行:
引脚掩码=(uint32_t) 1U <<(引脚% 32U);
具体而言、它是导致崩溃的变量的"<"运算符。 更改为
引脚掩码=(uint32_t) 1U <<(9);
解决该问题。
更多信息
使用中的剪切粘贴 my_GPIO_writePin()函数(&P):。 CLA 文件中、我已经更改了使用查找表这一行
静态常量 uint32_t bitmap[32]={1<<0、
1<<1、
1<<2、...
1U<<31};
:
:
pinMask = BITMAP [pin%32];
一切都按预期运行。
从 CPU (不是 CLA1)代码调用 GPIO_writePin ()总是按预期工作。
我找到了解决方法后、我将此问题作为缺陷报告或其他形式提交、以供您分析、或者向我指出我漏掉了一些东西的地方。
谢谢!
-Alon