stm32

    7熱度

    4回答

    我試圖從Cortex-M3處理器(STM32)上的RAM執行一個函數。該功能擦除和重寫內部閃存,所以我肯定需要在RAM中,但我該怎麼做? 我試過的是:使用memcpy將函數複製到RAM中的一個字節數組(檢查它是否正確對齊),設置函數指針指向字節數組,然後調用函數(指針) 。 這工作正常,也許10條指令(我可以跟隨執行與調試器),但然後我得到一個總線錯誤,處理器重置。 buss錯誤發生在第二遍循環中

    7熱度

    1回答

    在STM32F103上,閃存頁面的擦除需要20ms,在此期間核心會暫停。從ST PM00042 Flash編程手冊中不清楚,在擦除閃存頁面時,內核是否會掛起總是,或者是否因爲指令流本身位於閃存(在我的項目中)而FPD(閃存接口)很忙,無法獲取更多指令。 問這個問題的另一種方法是「將從RAM運行我的閃存編程代碼避免閃存頁擦除失速?」。 感謝,

    3熱度

    7回答

    * UPDATE * 這裏是我發現了什麼。每當我在那裏有這個功能,它實際上不會讓代碼鎖定。實際上,讀RTC I2C函數的執行速度非常慢,但代碼仍然可以正常運行,但每次讀RTC時都必須等待很長時間才能通過。所以最終發生的情況是RTC有一個報警中斷,並且這引發了ISR內部的其他I2C交互,所以它看起來像是在試圖同時進行兩個i2c通信,因此減慢了過程。我刪除了ISR中的函數,現在它的工作我將繼續調查。

    3熱度

    3回答

    我想的STM32跟我的I2C EEPROM編程設置,但似乎每次我說: I2C_GenerateSTART(I2C1, ENABLE); while(!(I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT))); the code hangs here 我經歷了與調試,我發現SR1位0標誌(這是起始位生成標誌)沒有設置,這就是代碼掛起的原因。我可