原创 STM32 之十二 看門狗(WDG)及低功耗下的處理

  最近在做低功耗項目時,遇到了看門狗不好處理的問題。在 ST 的各系列 MCU 中,看門狗應該算是使用配置起來最簡單的一個外設了。我們通常僅需要配置很少的配置項,但是,一旦要配合低功耗模式則配置就比較麻煩了。MCU 中有兩隻狗,

原创 CAN 總線 之七 BOSCH CAN 位時序 和 同步

  CAN 支持 1 kBit/s 至 1000 kBit/s 的比特率。CAN 網絡的每個節點都有自己的時鐘發生器,通常是石英振盪器。 可以爲每個 CAN 節點單獨配置比特時間的定時參數(即比特率的倒數),即使 CAN 節點的振

原创 STM32 之十一 LL 庫(low-layer drivers)詳解 及 移植說明

  最新項目中需要使用 STM32L476 的片子。在選擇片子時,資源的多少成爲了一個比較重要的考量。在斟酌一番之後,我決定採用 LL 庫來實現本次的功能。下面就以 STM32L476 爲例來介紹一下 LL 庫(low-layer

原创 SourceInsight 4.0 之四 項目配置(庫文件引入、配置宏添加、快捷鍵修改等)

問題   在創建完成 Source Insight 工程後,我們就可以使用絕大部分功能。但是如果用的多了就會發現,其與我們真正的 IDE(通常我們僅用 Source Insight 編輯代碼,實際的編譯、調試還得上 IDE ) 總

原创 Git 之五 通信協議(HTTPS、SSH、Git)、使用遠程倉庫(GitHub、GitLab、Gitee等)

寫在前面   Git 的官網上有很詳細的使用教程(當然有翻譯版本),具體地址是 https://git-scm.com/book/zh/v2。唯一不足就是,很多講解並沒有實機演示。但是,毫無疑問,官網資料是最全面的!如果有任何疑問

原创 ARM 之十一__weak 和 __attribute__((weak)) 關鍵字的使用

  今天在使用 Keil (主要是 armcc 編譯器)編譯代碼的時候遇到了有 __weak 關鍵字的函數不起作用的問題,甚是奇怪。之前對於 __weak 關鍵字一直是一個簡單的認知:編譯器自動使用沒有 __weak 的同名函數(

原创 Git 之四 分支管理

寫在前面   Git 的官網上有很詳細的使用教程(當然有翻譯版本),具體地址是 https://git-scm.com/book/zh/v2。唯一不足就是,很多講解並沒有實機演示。但是,毫無疑問,官網資料是最全面的!如果有任何疑問

原创 Git 之三 常用命令:倉庫創建、提交、分支等

常用命令   雖然 Git 同時提供了 GUI 界面 和 Bash,但是,GUI 界面的功能相對來說還是有點簡陋的。要想熟練掌握 Git 的使用,還是需要了解 Git 一系列的命令!   Git 命令還是比較多的,後面我們以實際用

原创 Git 之二 架構、工作流程、.git 目錄文件

寫在前面   Git 的官網上有很詳細的使用教程(當然有翻譯版本),具體地址是 https://git-scm.com/book/zh/v2。唯一不足就是,很多講解並沒有實機演示。但是,毫無疑問,官網資料是最全面的!如果有任何疑問

原创 Gitee 使用問題記錄

提交代碼時,顯示的提交記錄不是自己的名字 現象: 如下圖,我提交的代碼顯示的是 ZCShou(管理員)提交的: 原因 1: 提交者的郵箱和 Gitee 上默認的提交郵箱不一致。例如把我自己本地的 Git 配置的默認郵箱換成了

原创 常用算法 之五 數據校驗(CRC 原理、LRC、奇偶校驗、校驗和)詳解

數據校驗   數據在傳輸的過程中,會受到各種干擾的影響,如脈衝干擾,隨機噪聲干擾和人爲干擾等,這會使數據產生差錯。爲了能夠控制傳輸過程的差錯,通信系統必須採用有效措施來控制差錯的產生,並保證數據的完整性。如下所示的傳輸錯誤 奇偶

原创 ARM 之七 主流編譯器(armcc、iar、gcc for arm)詳細介紹

必備   在講解各編譯器之前,必須先了解一下以下文件。這些文件在編譯器目錄下或者編譯生成目標平臺的可執行程序時經常見到。此外,還需要注意區分 Windows 平臺 和 Linux 平臺的文件。 .o 文件: 指的是 object

原创 常用算法 之三 詳解 SHA1 實現(基於算法的官方原文檔)及源碼詳細註釋

寫在前面   在之前的工作中,用到了CRC16、MD5 和 SHA1 算法,主要用來校驗下發的文件。網上關於這些算法的文章鋪天蓋地,以下內容僅僅是自己在學習時候的一個記錄,一些套話來自於互聯網。下面先來看看 SHA1。    以下

原创 CAN 總線 之三 CAN 國際標準 ISO 11898 解讀

  從 1993 第一個版 CAN 國際標準(ISO 11898:1993 和 ISO 11519-2)發佈至今,ISO 11898 逐漸被分割整合成了相互獨立的 6 個部分。分別以 Part 1 ~ Part 6 來標識。在舊版

原创 ARM 之九 Cortex-M/R 內核啓動過程 / 程序啓動流程(基於ARMCC、Keil)

內核規範   ARM Cortex-M/R 內核的復位啓動過程也被稱爲復位序列(Reset sequence)。ARM Cortex-M/R內核的復位啓動過程與其他大部分CPU不同,也與之前的ARM架構(ARM920T、ARM7T