原创 GCC 鏈接時出現undefined reference to “...”時可能解決辦法

undefined reference to “...” 顧名思義就是沒找到,沒找到的原因有兩個 1.不存在。不存在就想辦法加進去。 2.找錯地方。 GCC鏈接時的特點是按順序連接的, 重點: 按順序! 順序! 序! 比如有三個庫:A,B

原创 在windows 實現執行 makefile

需要安裝軟件: 1.cygwin 實現make功能 2.GNU Arm Embedded Toolchain Cortex-M編譯工具鏈  3.VS code 編輯代碼。   一、安裝Cygwin 1.下載Cygwin setup-x86

原创 stm32 復位到內部bootloader

sm32的bootloader一般是通過開機時設置boot0=1來實現的。下面是通過程序來實現: 原來的startup文件是直接把flash的數據加載到ram裏面然後跑main函數循環 bootloader的程序在0x1FFF D800

原创 無人機定高算法

高度控制:高於目標值時應該減速,要輸出負值,所以高度差=目標高度-當前高度 速度控制:向上時(速度爲正)應該減速,要輸出負值,所以速度差=高度差的速度-當前速度 如果只有高度控制時:出現高度變化時,高度差要麼是正數要麼是負數。即使高度差會

原创 STM32 關閉全局中斷

/** \brief Enable IRQ Interrupts This function enables IRQ interrupts by clearing the I-bit in the CPSR. Can onl

原创 NRF24L01+ 自動重發,自動應答BUG

nrf24l01+有個失敗自動重發,多次自動重發失敗後會產生中斷的功能。 可是有個bug,就是達到了最大失敗重發次數,清理MAX_RT中斷後,立馬轉成轉成接收模式,然後就會收到一個發送成功的標誌。 注意是 發送成功 標誌,不是 接

原创 PID算法思想

pid調節,作用是爲了讓測量到的數據儘快的、準確的、接近設定的值,pid能算出一個調節量。 那怎麼樣讓測量估值接近目標呢? 最直接的方法就是: 測量到的數據小了?加大輸出啊。 那大了呢,減少輸出唄。 用數學表達就是: 假設a爲測量

原创 超聲波定高--過濾突然出現的障礙物

超聲波測到的數據會有一點毛刺,先用中值濾波,可以很好去掉突變太大的數據.爲什麼不用均值濾波呢,均值濾波對數據的實時性影響比較大. 對中值濾波後的數據做一定的統計,計算出數據的變化量和離散程度.我能想到的就是前後數據的差值,若干個數據的方差

原创 STM32 ISP 下載程序, C源碼,

鑑於flymcu下載時有點慢,flash_loader.exe容易卡死的原因,所以決定自己寫個串口編程和控制檯程序。 STM32_ISP的協議文檔可以在st的官網上找到。 先說下控制檯的大致思路: 程序的目標:把*.bin文件通過指定串口

原创 關於用串口IDLE中斷,DMA_GetCurrDataCounter()函數值不變的問題

把STM32F103C8T6的USART1 RX配置成用DMA接收,再打開IDLED中斷, 然後再在IDLE中斷時讀取DMA的數據,這時就要去讀取DMA_GetCurrDataCounter(DMA1_Channel5);有傳輸了多少人數

原创 CleanFlight 源碼分析 一,任務調度

CleanerFlight的任務調度用的是時間片查詢的方式。每個任務沒有自己的堆棧,不會進行強行跳轉。任何一個任務時間過長都會導致其它任務時間延遲(所以不要亂用Delay()). 系統工作步驟: 1.初始化任務列表 2.任務循環調度 任務

原创 用Visual Studio 2019 開發stm32,cortex-m3, arm

1.下載Visual Studio Community 2019 https://visualstudio.microsoft.com/zh-hans/vs/ 2.添加vs上面的Linux工具,cmake工具,IOT開發工具    3.

原创 LT8920無線通訊程序

LT8920是一超便宜的2.4GHz無線芯片,用來做小東西非常不錯,廢話不多說,直接上代碼 #include "stc8_spi.h" #include <intrins.h> #include "lt8920.h" #include

原创 NTC溫度檢測程序

NTC公式:RT = RN *EXP(B*(1/T-1/TN)) 對上面的公式解釋如下: 1.       RT 是熱敏電阻的當前阻值; 2.       R是熱敏電阻在TN常溫下的標稱阻值; 3.       B值是熱敏電阻的溫度係數;

原创 關於華碩主板“USB Devices Over Current Status Detected!”

在連續玩了4~5個小時遊戲之後,電腦突然死了,然後聞到一股燒焦味,之後開機出現了: please enter setup to recover BIOS setting  USB Device Over Current Status De