程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> stm32-STM32 I2C接口實驗陷入死循環的問題

stm32-STM32 I2C接口實驗陷入死循環的問題

編輯:編程綜合問答
STM32 I2C接口實驗陷入死循環的問題

麻煩大家幫忙看看下面的STM32代碼

/**

  • @說明 向AT24C02指定地址寫入一個字節數據
  • @參數 address:AT24C02內部存儲地址
  • @參數 info:寫入數據
  • @返回值 None */
 uint8_t x24c02_write(unsigned char address,unsigned char info)
{
    I2C_GenerateSTART(I2C1, ENABLE);
    while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT)); 
    I2C_Send7bitAddress(I2C1, 0xa0, I2C_Direction_Transmitter);
    while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED));
    I2C_SendData(I2C1, address);
    while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_TRANSMITTED));
    I2C_SendData(I2C1, info);
    while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_TRANSMITTED));
    I2C_GenerateSTOP(I2C1, ENABLE);
}

當我單獨調用,如:
x24c02_write(0xff, 'c'); ,
結果是正確的(用另外一個用GPIO模擬的I2C驅動讀取正確)
但是兩句一起調用,如:
x24c02_write(0xff, 'c');
x24c02_write(0xfe, 'd');
第二個調用會陷入死循環,分析發現,第二個調用中,r除了第一個while循環外,其他的都是死循環。
這個問題困擾了很久,麻煩大家幫我研究一下問題在哪兒,萬分感謝!!!

最佳回答:


http://www.amobbs.com/thread-4216547-1-1.html

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved