原创 UART串行通信詳解

UART定義: UART是一種通用串行數據總線,用於異步通信。該總線雙向通信,可以實現全雙工傳輸和接收。在嵌入式設計中,UART用來主機與輔助設備通信,如汽車音響與外接AP之間的通信,與PC機通信包括與監控調試器和其它器件,如EEPR

原创 #ifndef #define 中的頭文件名爲什麼是__xxx_h

這樣定義是爲了避免重複定義。重複聲明可以,但是重複定義是不可以的。 重複聲明只要名稱完全相同即可。但是重複定義會出現編譯錯誤的,即使同名也不可以。 多次包含可能會引來重複定義。比如a.h中包含了b.h和c.h,而c.h包含了b.h,那麼編

原创 Linux一些重要的頭文件

1.系統調用 ---文件的操作函數 #inlclude <fcntl.h> int  open(char *name,int how)   文件打開 #include <unistd.h> int  close(int fd)

原创 試圖搞懂MDK程序下載到flash--MDK配置選項Linker、Target、Debug的理解分析

在寫這一節時,我還是想再重複一下自己寫這文章的目的,我的目的就是爲了實現將MDK編寫的裸機程序可不可以脫機運行,也就是不用調試的方法,因爲調試的話程序默認是在SRAM中運行的,掉電丟失。而要脫機運行,就得將程序編譯後的文件下載到flas

原创 Linux字符設備驅動程序編寫基本流程

系統調用是操作系統內核和應用程序之間的接口,設備驅動程序是操作系統內核和機器硬件之間的接口。設備驅動程序爲應用程序屏蔽了硬件的細節,這樣在應用程序看來,硬件設備只是一個設備文件,應用程序可以象操作普通文件一樣對硬件設備進行操作。設備驅動

原创 文件句柄、文件描述符與進程和多線程的那些事

句柄是WONDOWS用來標識被應用程序所建立或使用的對象的唯一整數,WINDOWS使用各種各樣的句柄標識諸如應用程序實例,窗口,控制,位圖,GDI對象等等。WINDOWS句柄有點象C語言中的文件句柄。 如果想更透徹一點地認識句柄,我可

原创 Linux 設備驅動框架

1)驅動框架       Linux將所有外部設備看成是一類特殊文件,稱之爲“設備文件”,如果說系統調用是Linux內核和應用程序之間的接口,那麼設備驅動程序則可以看成是Linux內核與外部設備之間的接口。設備驅動程序嚮應用程序屏蔽了

原创 STM32之keil MDK下建立第一個工程

一、使用固件庫建立一個工程 我打算先從軟件編程學起,以前用過KEIL 和IAR,IAR我比較熟悉,因爲參加電子設計競賽的時候,就是用它編程MSP430程序的。但我還是選擇了KEIL,也許因爲資料比較多,或者別的吧,我沒分析過KEIL 

原创 linux驅動學習筆記(linux驅動頭文件說明)

#include <linux/***.h> 是在linux-2.6.29/include/linux下面尋找源文件。 #include <asm/***.h> 是在linux-2.6.29/arch/arm/include/asm下

原创 error:Target dll has been cancelled.debugger aborted

     MDK4.23調試裸機程序,出現這個問題先記下,以前成功調試過的,這次用又不會了……          找一下以前的文章: =================================================

原创 linux設備驅動makefile入門解析

對於一個普通的linux設備驅動模塊,以下是一個經典的makefile代碼,使用下面這個makefile可以完成大部分驅動的編譯,使用時只需要修改一下要編譯生成的驅動名稱即可。只需修改obj-m的值。ifneq ($(KERNELRELE

原创 getchar()用法 與 getch()函數使用方法

getchar()用法 1.從緩衝區讀走一個字符,相當於清除緩衝區 2.前面的scanf()在讀取輸入時會在緩衝區中留下一個字符'\n'(輸入完s[i]的值後按回車鍵所致),所以如果不在此加一個getchar()把這個回車符取走的話,

原创 struct file struct inode

1、struct inode──字符設備驅動相關的重要結構介紹 內核中用inode結構表示具體的文件,而用file結構表示打開的文件描述符。Linux2.6.27內核中,inode結構體具體定義如下: struct inode {

原创 常用vi編輯器命令行

對於VI的命令行,不需要特意的去記憶,寫下來,讓要用到的時候能找到就行    遊標控制 h 遊標向左移 j 遊標向下移 k 遊標向上移 l (or spacebar) 遊標向右移 w 向前移動一個單詞 b 向

原创 assert_param()

在STM32的固件庫和提供的例程中,到處都可以見到assert_param()的使用。如果打開任何一個例程中的stm32f10x_conf.h文件,就可以看到實際上assert_param是一個宏定義; 在固件庫中,它的作用就是檢測傳