原创 UCOS III學習(一)

一、爲什麼要學習實時操作系統(rtos) 隨着嵌入式系統要處理的任務越來越複雜,對任務時時性要求越來越高。我們往往需要花比較大的精力用在任務間的調度處理上,比如我們想要設計一個行列鍵盤按鍵輸入並用數碼管動態顯示的系統,單純的行列鍵

原创 ARM外設——0.96寸oled

外觀介紹 作爲單片機常用顯示設備oled具有體積小巧,方便移植,成本低等優點,特別是在需要顯示一些參數字符時小oled往往 非常合適。 0.96寸oled支持串行(IIC或SPI)和8080並行通信,由於其本身像素點只有128*64串行

原创 python入門8

Python open() 函數python open() 函數用於打開一個文件,創建一個 file 對象,相關的方法纔可以調用它進行讀寫。更多文件操作可參考:Python 文件I/O。函數語法open(name[, mode[, buf

原创 ARM處理器架構——內存管理

一、內存映射 1.什麼是內存映射 內存映射指的是在ARM存儲系統中,使用內存管理單元(MMU)實現虛擬地址到實際物理地址的映射,如下圖所示。 【注】圖中的地址轉化器即MMU,CPU操作的稱爲虛擬地址MMU操作的爲實際的物理地址

原创 ARM 時鐘體系

1.時鐘從哪裏來 以stm32f4的時鐘樹爲例,如下圖所示ARM的時鐘源一般有四種(綠圈) 內部低速時鐘 LSI (  low speed inter) 內部高速時鐘 HSI (high speed inter) 外部低速時鐘 LSE (

原创 linux v4l2入門(轉)

http://work-blog.readthedocs.io/en/latest/v4l2%20intro.html第一章 V4L2簡介1.1、什麼是v4l2V4L2(Video4Linux的縮寫)是Linux下關於視頻採集相關設備的驅

原创 Git報錯總結

爲記錄使用git過程中出現的問題做記錄 一、本地版本庫與雲端版本庫莫名其妙出現無法匹配的情況 最近改了一部分VIM的配置文件再上傳到雲端版本庫時遇到了報錯 一開始以爲是SSH與雲端的連接出現了問題使用ssh -T git@git

原创 ARM的版本與系列

1、ARM的架構版本 截止到2020年一月一日最新的ARM架構版本爲ARMV8,一般我們最常用的是ARMV7(cortex-A -R-M)如下圖所示   不同版本帶來的差異主要是來自指令集和一些擴展功能的差異,目前 ARM主要的指令集有

原创 UCOS III學習(五)

一、UCOS III中斷管理 1、中斷函數的一般形式 中斷:應內部或外部異步事件的請求中止當前任務,而去處理異步事件所要求的任務的過程叫做中斷。 UCOSIII中中斷服務函數一般格式如下 void USART1_IRQHandle

原创 嵌入式C語言(二)

二、.h文件的作用 在分析.h文件作用前先要麼明確一個基本概念,在C語言中調用任意一個函數都必須是先有其定義或聲明,隨着整個工程越來越龐大實現對所有函數的分類管理變得很有必要,於是我們按照函數間的關聯度將所有函數分割爲若干的.c文

原创 VIM-PLUG插件管理

用來記錄vim的插件及具體使用 一、檢查安裝VIM 檢查當前是否安裝vim可以使用命令 vim --version //檢查vim版本若未安裝則提示無此命令 安裝VIM sudo apt-get install vim 二、插

原创 ARM啓動流程及啓動代碼分析

一、ARM的啓動流程 基於ARM的芯片多數爲複雜的片上系統。這種複雜系統裏的多數硬件模塊都是可配置的。需要由軟件來設置其需要的工作狀態。因此在用戶的應用程序之前,需要由專門的一段代碼來完成對系統的初始化。由於這類代碼直接面對處理器

原创 嵌入式C語言(三)

五、基地址、偏移地址和模塊內寄存器地址分佈 隨着嵌入式芯片的飛速發展,現在一個普通的MCU內部往往包含着幾十個乃至上百個外設模塊,包還常用的Gpio,各種定時器,IIC、SPI等通訊模組,如何高效的部署和管理成百上千的寄存器就變得

原创 ARM內核——寄存器功能講解

根據“ARM-thumb 過程調用標準”: R0-R3 用作傳入函數參數,傳出函數返回值。在子程序調用之間,可以將 r0-r3 用於任何用途。被調用函數在返回之前不必恢復 r0-r3。如果調用函數需要再次使用 r0-r3 的

原创 嵌入式C語言(一)

一、關鍵字 很多的C語言教材都是這針對面向計算機編程,因此很多時候忽略了一些不常用的關鍵字的講解,而在嵌入式中往往會看到很多不常用的關鍵字,值得我們去進一步理解。 1、register和auto 在計算機中CPU的運算速度最快,現