原创 操作系統基礎篇(四)

進程的分身術——線程 1.概述 前面的博客講到了進程的缺點,從而發明了線程。 舉個例子:每個人再人生的某個時候,都希望自己能夠分身,從而完成多件事情。而一個進程相當於一個人,也希望能夠分身,完成更多使命。於是有了線程。 進程在一個

原创 基於硬件定時器的軟件定時器

概括 硬件定時器很精確,軟件定時器無論如何都有延遲,主要用在不需要精確定時的地方,而且軟件定時比較浪費單片機資源。 梳理 講到定時器,大家多多少少都會接觸到硬件定時器,但是由於有時候資源的限制,又難免會出現使用軟件定時器的情況,但

原创 操作系統基礎原理篇(三)

1.進程 操作系統的核心概念,一個運動中的程序(進展中的程序),一個程序一旦在計算機裏動起來,它就成爲一個進程。操作系統對進程的管理通過進程表來實現。因爲進程表裏存放的是關於進程的一切信息,在任何時候,進程所佔的全部資源,包括分配

原创 C位操作分析

1.取出某位的值(以1Byte爲例) 八位的數據,依次從低到高取出八位的值: unsigned char a=0xFF; int n0, n1, n2, n3, n4, n5, n6, n7; n0 = (a& 0x01) ==

原创 操作系統基礎篇(二)

1.計算機硬件基本知識 從概念上講,計算機的結構非常簡單,首先佈置一根總線,然後講各個硬件設備掛在總線上,所有這些設備都有一個控制設備,外部不設備都由這些控制器與CPU通信,所有設備之間的通信均需要通過總線。 計算機的功能部分分

原创 C語言volatile,const關鍵字的分析

volatile 1.關鍵字解釋: volatile的本意是“易變的” 因爲訪問寄存器要比訪問內存單元快的多,所以編譯器一般都會作減少存取內存的優化,但有可能會讀髒數據。當要求使用volatile聲明變量值的時候,系統總是重新從

原创 操作系統基礎原理篇(一)

1.1什麼是操作系統 操作系統掌握計算機執行的全部流程,掌控計算機局勢的一個系統,縮寫爲OS,具有至高無上的權威,換一個說法:操作系統就是介於計算機應用軟件和計算機硬件的之間的一個軟件系統。 操作系統到底控制什麼?當然是控制計算

原创 字符處理strlen()、strcmp()、strstr()源碼及改編

int strcmp(const char* str1,const char *str2) strcmp函數用來比較字符串的,strcmp函數是根據ASCII碼來比較兩個字符串的。若兩個字符串完全相等,則返回0;若第一個字符串大於

原创 三基色PWM調光方法

現象: 使用mcu輸出三路R,G,B控制燈光的色彩與亮度 簡單說明: 什麼是PWM? 是一種利用簡單的數字脈衝,反覆開關LED啓動器的調光技術。應用系統只需要提供寬窄不同(佔空比)的數字脈衝,即可實現改變輸出電流,從而調節LED的

原创 大量數據(1K以上)數據串接收,較定時器更穩定

前言:數據接收的穩定性決定了產品的質量 目的 爲了解決頻繁使用定時器,造成數據錯誤(不穩定) 問題描述 我之前寫的博客(串口通信詳解),如果大家看了,會有一定的邏輯,在中斷初始化定時器,一旦接受數據的時間超時,則會保存數據,等待線

原创 完整的讀寫flash解讀(IIC方式與SPI方式相比較,基於STM32F103ZET6)

前言 前面的博客描述瞭如何讀寫flash,可能還對讀寫flash思路還是不是那麼的清晰,首先我們用的是外置的flash,就要模擬跟外部硬件通訊的時序,這樣外部硬件才能識別主控側發出的信號是什麼! SPI是全雙工,同步的時鐘總線!