大学生
最后登录1970-1-1
在线时间 小时
注册时间2013-8-4
|
本帖最后由 huaidan 于 2016-10-31 11:19 编辑
原代码如下,但一运行到
EEPROM_BufferRead(para, TYJ0_USART_BaudRate_Addr, 4);
就I2C等待忙死循环,
- uint8_t TYJ_ReadUsartPara(uint8_t tyj_num , uint8_t *para)
- {
- if(tyj_num >= TYJ_NUM)
- return 0;
- if(tyj_num == 0)
- {
- EEPROM_BufferRead(para, TYJ0_USART_BaudRate_Addr, 4);
- }
- else if(tyj_num == 1)
- {
- EEPROM_BufferRead(para, TYJ1_USART_BaudRate_Addr, 4);
- }
- return 1;
- }
复制代码
如果改成如下代码,则I2C不会在忙标志那里死循环,整个工程可以正常运行,但是这个函数返回的*para数据不正确
- uint8_t TYJ_ReadUsartPara(uint8_t tyj_num , uint8_t *para)
- {
- uint8_t dat[4];
-
- para = dat;
-
- if(tyj_num >= TYJ_NUM)
- return 0;
- if(tyj_num == 0)
- {
- EEPROM_BufferRead(para, TYJ0_USART_BaudRate_Addr, 4);
- }
- else if(tyj_num == 1)
- {
- EEPROM_BufferRead(para, TYJ1_USART_BaudRate_Addr, 4);
- }
- return 1;
- }
复制代码
整个工程当用有很多个类似这样读EEPROM并通过指针返回数据的函数其他都正常运行并且返回数值正确。
求解!
主要是我想问的是:为什么最上面的函数会卡死在I2C等忙标志哪里,下面的函数就不会卡死在I2C
|
|