原创 IAP升級的注意事項

如果在IAP中使用到了外設,那麼在APP使用這些外設前,需要Deinit這些外設。deinit可以在app開始的時候,也可以在IAP跳轉到APP之前操作。我爲了把IAP功能集中,把Deinit的工作翻到了IAP中去做。 如果在iap中沒有

原创 使用Stm32CubeMX+FreeRTOS的組合

使用STM32CubeMX來生成帶MiddleWare的FreeRTOS的代碼 ,可以在STM32CubeMX中使能FreeRTOS,如下圖 在以下位置配置FreeRTOS的Configure和Task內容 這樣的方式比直接移植Fre

原创 python自動化腳本能夠使用的範圍

python能自動化的部分 一些網頁。 windows的操作。 可以import對應專用模塊的應用程序。 比如。itchat可以控制微信。但是最近也被封了 比如word、excel、pdf等 可以被spy++工具抓取到具體元素的應

原创 ST的flash操作的異常點

    前段時間使用stm32f030C8做IAP功能,發現一個flash的異常情況,至今沒有找到合理的解釋。記錄一下:     flash program的流程一般是: flash unlock flash erase page fla

原创 使用單個鏡像進行MCU的應用程序升級,還是使用乒乓的方式給MCU的應用程序升級

      給mcu增加了IAP功能以後,就面臨了兩個選擇。使用使用單個鏡像進行MCU的應用程序升級,還是使用乒乓的方式給MCU的應用程序升級?       兩者方式各有利弊, 1. 使用單個鏡像進行MCU的應用程序升級 優點:佔用的me

原创 如何確保用來存儲的的flash部分不被代碼code部分佔用

    曾經在2年多前遇到以下的情況。產品使用了stm32的flash存儲用戶關鍵數據。產品試產,給用戶使用以後,反應有程序跑飛的情況。分析退貨,發現編譯器編譯了程序後,把一部分代碼指定到了最後一個page存儲。而最後一個flash pa

原创 結構體指針的使用樣例

開發的時候遇到這樣一個場景: typedef一個30字節長度的結構體類型, 然後建立一個該結構體的數組 static ORDER_OBJECT_TypeDef order_object[ORDER_DEVICECOUNT] ; 把該數組的

原创 CC2640外設的object &HWAttrs & fxn & config

在cc2640的board相關的文件中,經常會看到如下的配置: /* SPI objects */ SPICC26XXDMA_Object spiCC26XXDMAObjects[CC2650_LAUNCHXL_SPICOUNT];

原创 .map文件分析

在IAR的工程的Output文件夾中有個.map文件,該文件說明了各個函數佔用的尺寸和地址。 "A0": place at 0x08000000 { ro section .intvec }; "P1": place in [from

原创 如何調試程序時 從第一條指令開始執行

         一般我們在iar上面調試的時候,程序往往是從main函數的第一行開始運行的。當我們需要查看main函數之前的操作流程的時候,就需要進行以下的設置: 在工程上面右鍵->option->Debugger->Setup->ru

原创 RTOS下不同任務傳值的方式

       開發ios的同事反饋說,最近一版的藍牙連接時,20次裏面會有1~2次回覆“未識別的命令”。雖然經過半天的查找和測試,ios的code裏面改動了些東西,概率有了顯著的下降,但是50次依然有1~2次回覆“未識別的命令”。後來io

原创 M3的MCU的啓動過程

這段時間再看bootloader相關的內容,因此也想了解下main函數之前,mcu做了什麼。參考的文檔和博客的地址如下: http://www.sunyouqun.com/2017/05/mcu-startup-procedure/ 先抄

原创 LL庫通過串口+DMA方式發送數據

在RM0038(L151的手冊)中的Chapter 27.3.13 Continuous communication using DMA章節有配置的方式和順序: Transmission using DMA: DMA mode can

原创 查看工程中的庫文件和.o文件的調用

工程右鍵->Option->Linker->List->Generate log file &Module selections 在工程的output目錄下會有一個.log文件 例如 Loading object F:\Github\

原创 獲取寄存器地址的方法

如果需要使用TX1的DMA傳輸,就會涉及到配置DMA的外設地址。在這裏,外設地址應該是USART1的DR寄存器的地址。可是如何獲取該寄存器的地址呢? 現在實測了3種方式,都可以實現。 方法1: 直接查詢手冊中寄存器映像(map),USAR