原创 C語言細節之定義與聲明

什麼是定義什麼是聲明,似乎這倆個東西一樣但是又有所區別,思考一下,如果你不能直接說出這二者的根本區別,那麼本文對你還是有點用處的。 首先什麼是定義?《C++Primer》第四版 2.3.5節中這麼說到: ①變量定義:用於爲變量分配存儲空間

原创 linux使用vim編輯時候無法使用:wq保存報錯

在linux上使用vi命令修改一個文件內容的時候,發現無法保存,每次寫完使用“:q!”命令可以正常退出但是使用":wq!"命令保存文件並退出時出現一下信息提示: E212: Can't open file for writing 原因1:

原创 前變址、回寫前變址、後變址

        根據數據傳輸傳輸的時機以及在指令執行後基址寄存器是否被更新,寄存器變址有前變址、回寫前變址和後變址暗中方式。         執行指令的時候,如果先進行變址運算,後傳遞數據,那麼這種方式就是前變址方式。如圖1所示  例如

原创 關於數據存儲大小端模式的C語言題目

int main() {     int a[5]={1,2,3,4,5};     int *ptr1=(int *)(&a+1);     int *ptr2=(int *)((int)a+1);     printf("%x,%x"

原创 STM32寄存器操作簡單介紹

STM32單片機可以使用庫函數進行操作,再加上現在越來越強大的MDK ARM編譯環境,使用庫函數開發簡直是不二的選擇,但是工具越來越強大的同時意味着對編程人員降低了要求,在很大程度上降低了准入門檻,我們因此高興嗎?我倒是覺得這很像溫水煮青

原创 strrev函數

原型: char *strrev(char *s); 用法:#include <string.h> 功能:把字符串s的所有字符的順序顛倒過來(不包括空字符NULL)。 說明:返回指向顛倒順序後的字符串指針。 注意:這個函數直接使用時不能顛

原创 STM32啓動文件詳解

;先在RAM中分配系統使用的棧,RAM的起始地址爲0x2000_0000 ;然後在RAM中分配變量使用的堆 ;然後在CODE區(flash)分配中斷向量表,flash的起始地址爲0x0800_0000,該中斷向量表就從這個起始地址開始分配

原创 拷貝構造函數

拷貝構造函數是重載構造函數的一種重要形式,它的功能是使用一種已經存在的對象去初始一個新創建的同類對象, 、它可以將一個已有對象的數據成員的值拷貝給正在創建的另一個同類的對象。  拷貝構造函數與類同名,沒有返回值,只有一個參數,參數爲該

原创 ubuntu 配置 tftp 服務器

   注意:     1./tftpboot爲根目錄     2.已經是root權限不用再加sudo(臨時獲取權限)     3.使用netstat -au | grep tftp,保證tftp是啓動的。     出現“udp    0

原创 在顯示屏上顯示的數字的方法

在現實屏上顯示的數字的時候經常需要對數據進行分解,得到數據 的每一位再依次顯示,方法有很多種,下面介紹經常用到的3種方法 第一種方法:不斷的利用取整運算與取餘運算得到每一位void displaynum1(int Num) { u8

原创 LDR和ADR

轉自:https://www.douban.com/note/331036776/ ARM彙編有ldr指令以及ldr、adr僞指令,他門都可以將標號表達式作爲操作數,下面通過分析一段代碼以及對應的反彙編結果來說明它們的區別。     

原创 定時器與計數器

       定時器和計數器在計算機系統中,尤其是工業控制系統中有着重要的作用。定時器和計數器的差別僅限於用途不同。定時器從本質上來講其實就是一個計數器,每收到一個脈衝,計數器就會加/減1,如果脈衝的週期固定,那麼脈衝數和時間成正比,這樣

原创 窺探引用和指針

C語言面試題裏面經常會出現一道題目:向某個指定的內存地址寫入特定的數據,譬如向0x1234寫入100,做法如下*(int *)0x1234=100;

原创 Ubuntu中的vi

Windows中的常用編輯器,如自帶的notepad。比較好用的notepad++,UltraEditor,SlickEditor Linux中常用編輯器,自帶的最古老的vi。比較好用的vim,gedit。 vim是vi的升級版,ubun

原创 STM32F101xxT6中VBAT 管腳上的怪現象

轉自:http://bbs.elecfans.com/forum.php?mod=viewthread&tid=458808&extra= 問題: 問題由某 UPS 製造公司提出。其工程師在某型號新產品的設計中,使用了 STM32 器件,