原创 模塊AT響應數據常用解析方法

在嵌入式市場中,爲了更快地提高開發進度,更多都會選用模塊應用開發,比如選用Ble、Wifi、Modem等模塊,這一類型的模塊一般都是AT指令通信,如何通用解析以及處理應答數據極其重要。 如下三條指令,分別爲查詢類型指令、執行類型指

原创 簡易嵌入式設備系統日誌記錄方法

簡易嵌入式設備系統日誌記錄方法系統日誌思路分析FLASH內存劃分參數與結構體定義實現接口說明系統調試對接結語 系統日誌 在嵌入式設備應用場景中,系統日誌時常可以監控設備軟件的運行狀態,及時記錄問題點以及關鍵信息,方便開發人員後期定

原创 關於FreeRTOS 任務運行中卡死在臨界區vPortExitCritical()

FreeRTOS創建任務正常運行,偶爾出現任務卡死狀態,通過在線調試,程序卡在vPortExitCritical()函數中,在IAR Call Stack中觀察到各任務都可能回調該接口。 void vPortExitCritica

原创 關於CPU進入休眠餵狗的問題

在大多數項目中都會使用到看門狗以維護系統穩定性,但對於低功耗產品需要定時進入休眠以降低功耗。實際應用中可以在CPU休眠之前設置RTC定時喚醒,喚醒後立即餵狗然後繼續進入到休眠模式,比如系統設置了看門狗復位時間間隔爲15s,那麼在進

原创 NBIOT PSM低功耗模式 M5310A模組

PSM模式 PSM 狀態是指用戶終端進入功率節省狀態,處於 PSM 狀態終端關閉收發信號機,不監聽無線側尋呼,與網絡沒有任何消息交互,處於最省電狀態。 NBIOT 工作狀態 connected(連接狀態):模塊註冊入網後處於該狀態

原创 NBIOT 移動M5310A模塊 AT+MIPLCREATE註冊碼自動生成

模組註冊碼 移動M5310A模塊固件中封裝的SDK會自動獲取模組當前的IMEI和IMSI用於ONENET平臺登錄,在ONENET平臺需要使用當前設備的 IMEI 和 IMSI 進行設備註冊。模組設備實體創建需要的配置數據,稱爲設備註冊

原创 關於CPU進入休眠喂狗的問題

在大多數項目中都會使用到看門狗以維護系統穩定性,但對於低功耗產品需要定時進入休眠以降低功耗。實際應用中可以在CPU休眠之前設置RTC定時喚醒,喚醒後立即喂狗然後繼續進入到休眠模式,比如系統設置了看門狗復位時間間隔爲15s,那麼在進入休

原创 __no_init

__no_init 是給編譯器linker使用,爲禁止系統啓動時初始化,是定義在不初始化的區域。可用於硬件復位或看門狗異常復位標記狀態,但是在系統上電覆位時爲不定值。 __no_init unsigned int ram_val1;

原创 AT命令簡易解析

AT命令的應用場合很多,也是應用最爲通用的命令。而AT命令並不像通信協議特定的數據幀格式,解析AT命令需要匹配每個字符。AT命令一般有三種狀態:查詢、執行、設置,根據這三種狀態,本文將使用一種簡易的方法解析AT命令。 宏定義AT命令的

原创 FLASH存儲參數

在嵌入式項目中,經常使用FLASH來存儲關鍵的參數。這些參數影響整個設備系統的運行,保證參數存儲的正確性是至關重要,常用的方法是通過校驗參數存儲以及參數備份的方式去降低出錯的風險,本文將講述具體的實現方法。 在FLASH上開放兩個扇區

原创 STM32 簡易按鍵KEY處理

一般的按鍵功能都需要做防抖處理,中間就涉及到了阻塞延遲,但是在實際項目開發中應當儘量避免不必的阻塞。可以使用計時功能去處理按鍵防抖,在系統滴答時鐘中斷中實現按鍵功能檢測,按鍵功能處理是在main裏實現。 #define KEY_NR

原创 竭盡所能提高FATFS SD性能

最近開發log存儲器,移植FATFS文件系統,四路串口通道接收數據後存儲在SD卡內。在調試中設置串口波特率爲256000bps,每10ms發送250個字節,四路通道同時工作,MCU主頻爲120MHz,使用一張CLASS4 8G卡和一張

原创 STM32F205 HAL庫 RTC軟件復位後不準

在RTC初始化配置時,沒考慮到軟件復位的情況,當頻繁實現軟件系統復位時,發現RTC時間有偏差。原因在於每一次軟件復位後都會再次重新初始化RTC,中間便會產生時間差,頻繁複位偏差更明顯。 解決方法:通過RTC備份寄存器的判斷以重新初始化

原创 簡單LED燈管理

LED燈的設置較爲簡單,整合起來管理,讓應用更加方便。(以下代碼爲本人朋友設計思路,僅供參考) #define LEDn 2 #define LED_TIMEBASE 10 #define LED_MODE_OFF 0x00 #

原创 STM32 HAL庫 UART

HAL庫 HAL庫的使用節省了開發時間,省去了繁瑣的芯片初始化流程,並且每個文件都有詳細的功能說明,整合了不少代碼。HAL庫使用雖然簡便,但實際上讓開發沒能得心應手,瞭解庫函數的使用,只是能讓程序能用,但並不一定好用,真正的開發還得需