原创 STM32通過DMA方式採集多路AD

       一個項目需求:使用STM32採集多路AD信號。 一般採集多路信號需要使用DMA方式,步驟如下: 1.使能相應ADC通道,這裏使用ADC1的4個通道,分別是ADC123_IN0 ~ ADC123_IN3, 注:ADC123_I

原创 繼承 -----C++三大特性之一

一,爲什麼要引入繼承?        繼承是一個非常自然的概念,現實世界中的許多事物也都是具有繼承性的。例如,爸爸繼承爺爺的特性,兒子又繼承爸爸的特性等都屬於繼承的範疇。下面是一個簡單的汽車分類圖: 在這個分類圖中建立了一種層次結

原创 1.求一個整數的二進制中1的個數 2.判斷一個數是否是2的n次方

1.請說明下面函數實現的功能: 答:func(x)的作用是計算 x 的二進制中1的個數, 解析:每執行一次 x=x&(x-1),就會消去x最右邊的一個1,直到x爲0,於是就計算出了1的個數。 2.如何判斷一個數是否是2的n次方 若

原创 STM32的內部Flash

說到STM32的FLSAH,我們的第一反應是用來裝程序的,實際上,STM32的片內FLASH不僅用來裝程序,還用來裝芯片配置、芯片ID、自舉程序等等。當然, FLASH還可以用來裝數據。     自己收集了一些資料,現將這些資料總結了一

原创 STM32時鐘小結

衆所周知STM32有5個時鐘源HSI、HSE、LSI、LSE、PLL,其實他只有四個,因爲從上圖中可以看到PLL都是由HSI或HSE提供的。 其中,高速時鐘(HSE和HSI)提供給芯片主體的主時鐘.低速時鐘(LSE和LSI)只是提供給

原创 關於STM32能否使用malloc申請動態內存的問題

首先,malloc( )屬於標準C語言函數,當然可以在單片機上使用,如STM32可以先在啓動文件中設置heap的大小,再使用動態內存分配:        Heap_Size     EQU    0x00000200      \\也就是

原创 STM32串口通信校驗問題

這裏以串口作爲傳輸媒介,介紹下怎樣來發送接收一個完整的數據包。過程涉及到封包與解包。設計一個良好的包傳輸機制很有利於數據傳輸的穩定性以及正確性。串口只是一種傳輸媒介,這種包機制同時也可以用於SPI,I2C的總線下的數據傳輸。在單片機通信

原创 STM32實現動態內存分配

原文:http://www.openedv.com/posts/list/17718.htm #ifndef __MALLOC_H #define __MALLOC_H #include "sys.h" ////////////////

原创 STM32內存管理以及堆和棧的理解

今天仔細讀了一下內存管理的代碼,然後還有看了堆棧的相關知識,把以前不太明白的一些東西想通了,寫下來,方便以後查看,也想大家看了能指出哪裏不對,然後修改。     首先,先看一下stm32的存儲器結構。 ​Flash,SRAM

原创 內存分配

內存分配方式   內存分配方式有三種:   (1)從靜態存儲區域分配。內存在程序編譯的時候就已經分配好,這塊內存在程序的整個運行期間都存在。例如全局變量,static變量。   (2)在棧上創建。在執行函數時,函數內局部變量的存儲單元都可

原创 關於單片機程序運行的一些理解

關於程序的執行,以前想的不多,沒有意識到一個程序在運行時,從哪裏讀指令,數據又寫在哪裏。 最近在看CSAPP時這個念頭經常在腦袋中晃盪。 從單片機上知道,在上電的那一刻,MCU的程序指針PC會被初始化爲上電覆位時的地址,從哪個地址處讀取

原创 字節對齊詳解

    引言      考慮下面的結構體定義: 1 typedef struct{ 2 char c1; 3 short s; 4 char c2; 5 int i; 6 }T_FOO

原创 嵌入式系統基礎知識及常用接口終結

轉載自:http://m.21ic.com/embed/2016-08-24/65063.htm 本文主要介紹嵌入式系統的一些基礎知識,從嵌入式系統基礎,包括嵌入式系統的定義、嵌入式系統的組成、實時系統、邏輯電路基礎以及接口技術

原创 C++ 中new和delete淺析

在 C++ 中,你也許經常使用 new 和 delete 來動態申請和釋放內存,但你可曾想過以下問題呢? new 和 delete 是函數嗎?new [] 和 delete [] 又是什麼?什麼時候用它們?你知道 operator new

原创 無法遠程連接阿里雲mysql數據庫的解決辦法

背景:使用阿里雲服務器 ubuntu 16.04,mysql5.7 問題:遠程連接mysql數據庫報錯:ERROR 2003 (HY000): Can't connect to MySQL server on '120.78.150.11