原创 嵌入式開發--實現應用層和硬件層分層管理

一、前言         以STM32爲例,打開網絡上下載的例程或者是購買開發板自帶的例程,都會發現應用層中會有stm32f10x.h或者stm32f10x_gpio.h,這些文件嚴格來時屬於硬件層的,如果軟件層出現這些文件會顯得很亂。使

原创 嵌入式開發-C語言實現localtime()和mktime()

一、前言         在嵌入式的開發中很多時候會用到時間戳,會用到time.h中的localtime()和mktime(),這兩個函數像STM32這種MCU中運行效率並不高,不使用標準庫的情況下可以自己實現。 二、代碼 utc_tim

原创 Telink BLE MESH開發|ble mesh開發教程《三》telink_sig_mesh串口收發數據

一、前言   官網資料介紹建議採用DMA傳輸,串口數據的接收是放到了fifo中,但是串口發送也是採用的DMA,問題在於串口發送並沒有建立緩衝器,而是判斷當前DMA是否忙,如果忙數據直接丟棄,這樣做顯然不合理。如果發送時DMA忙應該將數據放

原创 嵌入式開發--300行代碼實現操作系統cola_os

一、前言         剛開始學習寫代碼時代碼都會放在主循環中,通過while(1)不停的輪訓。如果想做一個時間觸發的任務,比如做一個100ms閃爍一次的LED,通常的寫法是創建一個1ms定時器,在定時中斷中變量自加,當變量加到100m

原创 嵌入式開發|高效緩衝器設計(C語言)

一、前言         嵌入式開發中我們要時刻保持代碼的高效與整潔。在嵌入式的開發中緩衝器是非常常用的,比如串口的數據,MCU處理數據的時候,只能先處理先來的,那麼處理完後呢,就會把數據釋放掉,再處理下一個。已經處理的數據的內存就會被浪

原创 嵌入式開發--STM32上實現驅動註冊initcall機制(類linux)

一、前言         上一節我們實現了代碼應用層和硬件層的分離管理,但是代碼中還存在一個問題,每個硬件如LED控制,GPIO口需要初始化,初始化函數bsp_led_init();這個函數需要在主函數中調用初始化,類似這樣: void

原创 STM32--實測STM32F030F4P6待機(standby)功耗-3.7uA(RTC開啓)

一、知識普及         STM32F030休眠模式:        1.休眠模式。        2.停機模式。        3.待機模式。 官網文檔:英文版 官網文檔:中文版 休眠與喚醒方面文檔寫的很清楚了,在這不在詳述。我

原创 ESP8266WIFI深度休眠(deep sleep)功耗測試

一、硬件 1.塗鴉ESP8266模組搭建最小系統 二、程序 採用ESP8266_NONOS_SDK,上電進入休眠 void ICACHE_FLASH_ATTR user_init(void) {     uart_init(115200,

原创 NB-IOT開發|nbiot開發教程《三》AT指令類模組驅動-STM32實現AT指令狀態機

嵌入式開發中我們要時刻保持代碼的高效與整潔 看之前,先點贊 好習慣,要養成 一、前言         嵌入式開發中我們要時刻保持代碼的高效與整潔。在第一節中“NB-IOT開發|nbiot開發教程《一》AT指令類模組驅動解析”我們說到A

原创 NB-IOT開發|nbiot開發教程《四》移遠BC26低功耗調試PSM功耗3.6uA

嵌入式開發中我們要時刻保持代碼的高效與整潔 看之前,先點贊 好習慣,要養成 一、前言     嵌入式開發中我們要時刻保持代碼的高效與整潔。移遠NBIOT模組BC26是全網通的模組,目前調試過移動電信的平臺,都可以正常通信。本次介紹

原创 NB-IOT開發|nbiot開發教程《二》AT指令類模組驅動-STM32串口實現接收不定長度數據

嵌入式開發中我們要時刻保持代碼的高效與整潔 一、前言         嵌入式開發中我們要時刻保持代碼的高效與整潔。上一節中AT指令模組狀態機的實現需要串口實現接收不定長度數據,本文就是說明具體實現方式。 二、原理         串口實

原创 Telink BLE MESH開發|ble mesh開發教程《二》telink_sig_mesh增加調試信息打印

一、前言     首先吐槽下泰凌的SDK吧,寫的很亂呀,一堆的宏定義,關鍵是文檔資料和代碼註釋少的可憐,沒有原廠支持確實很難讀懂。第三方支持是有條件的,但是公司並不打算進行商務談判,因此只能自己啃了。我覺得這也是國產芯片爲什麼大家不願意用

原创 STM32基於GPRS模組使用HTTP協議單片機固件在線升級(IAP)

一、前言     最近有朋友讓我幫忙開發基於GPRS模組的單片機固件在線升級,這樣的遠程升級就兩種方式:    1.自己定義協議,服務器端進行bin文件拆包,一包包下發。優點:可以每包一校驗還可以斷點續傳,不需要考慮Flash學入佔用的時

原创 Telink BLE MESH開發|ble mesh開發教程《一》ble mesh基礎知識

一、Mesh組成      藍牙Mesh,我們能夠創建大型網絡並支持成千上萬的設備之間進行安全、可靠的通信。藍牙Mesh網絡包括節點(Node)、元素(Element)、模型(Model)和狀態(State),藍牙Mesh規範詳細描述了四

原创 NB-IOT開發|nbiot開發教程《五》nbiot(移遠BC26)電信物聯網平臺實現MCU固件在線升級(STM32L051+BC26)

嵌入式開發中我們要時刻保持代碼的高效與整潔 看之前,先點贊 好習慣,要養成 一、前言     嵌入式開發中我們要時刻保持代碼的高效與整潔。爲什麼要有在線升級和爲什麼要進行在線升級,在這不多說,產品的開發中,在線升級是非常重要的。我們