KEIL下LPC1114代码运行问题

2019-03-25 20:45发布

用keil编码1114的i2c,我在设置了编译优化选项之后出现了巨大的问题。索性,在取消掉所有的优化选项后i2c通信已经正常。   可惜结果仍然不正确,我就跟代码。这时候才发现一个无法理解的问题。我在funcA()里调用funcB()时传入一个静态myVar的指针。这个指针在funcB()中进行第一步读i2c操作xxx_II2C_Read32()完成后,再进行第二次读i2c操作xxx_II2C_Read16()时,传入的指针变量pParam这个指针本身居然发生了改变。这样的变化直接导致了i2c操作失败。 这只是个前后台的程序,变量myVar也并没有出现在任何的中断服务程序中。 我是非常的费解,有请各位看官大大帮忙瞧瞧,可能出现的问题在哪里? 我用的版本是RealView MDK-ARM 4.10b。   static struct type_a myVar; void funcA(void)
{
 /* set myVar */
 ......................
 funcB(&myVar);
}   int funcB( struct type_a *pParam)
{
 int r;
 unsigned short uiReadValue;
 unsigned int uiTemp;  r = xxx_II2C_Read32((unsigned short)(pParam->m_SlaveAddr), offset_1, &uiTemp);
 r |= xxx_II2C_Read16((unsigned short)(pParam->m_SlaveAddr), offset_2, &uiReadValue);  return r;
} 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
14条回答
waterforces
1楼-- · 2019-03-27 18:10
 精彩回答 2  元偷偷看……
jolyku
2楼-- · 2019-03-27 19:26
全局是可以的,但是这样并没有根本性的解决这个问题。
:(

一周热门 更多>