原创 關於stm32 HardFault_Handler 異常的處理 死機

在系統開發的時候,出現了HardFault_Handler硬件異常,也就是死機,尤其是對於調用了os的一系統,程序量大,檢測堆棧溢出,以及數組溢出等,找了半天發現什麼都沒有的情況下,估計想死的心都有了。如果有些程序開始的時候一切沒有問題,

原创 編程修養(一)

編程修養 ———— 什麼是好的程序員?是不是懂得很多技術細節?還是懂底層編程?還是編程速度比較快?我覺得都不是。對於一些技術細節來說和底層的技術,只要看幫助,查資料就能找到,對於速度快,只要編得多也就熟能生巧了。 我認爲好的程序員應

原创 常見的嵌入式linux學習和如何選擇ARM芯片問答

常見的ARM嵌入式學習問答,設計者和學習者最關心的11個問題:1.          ARM嵌入式是學習硬件好還是學習軟件好?2.          嵌入式軟件和硬件,哪一種職位待遇更高?或者說,在設計中哪一個更重要?3.        

原创 編程修養(二)

1、版權和版本 ——————— 好的程序員會給自己的每個函數,每個文件,都註上版權和版本。 對於C/C++的文件,文件頭應該有類似這樣的註釋: /********************************************

原创 STM32啓動文件詳解及SystemInit函數分析(轉)

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

原创 多線程程序中操作的原子性

多線程程序中操作的原子性 0. 背景 原子操作就是不可再分的操作。在多線程程序中原子操作是一個非常重要的概念,它常常用來實現一些同步機制,同時也是一些常見的多線程Bug的源頭。本文主要討論了三個問題:1. 多線程程序中對變量的讀寫

原创 編程修養(三)

6、if 語句對出錯的處理 ——————————— 我看見你說了,這有什麼好說的。還是先看一段程序代碼吧。     if ( ch >= '0' && ch <= '9' ){         /* 正常處理代碼 */     }el

原创 編程修養(五)

16、把相同或近乎相同的代碼形成函數和宏 ————————————————————— 有人說,最好的程序員,就是最喜歡“偷懶”的程序,其中不無道理。 如果你有一些程序的代碼片段很相似,或直接就是一樣的,請把他們放在一個函數中。而如果

原创 編程修養(四)

11、出錯信息的處理 ————————— 你會處理出錯信息嗎?哦,它並不是簡單的輸出。看下面的示例:     if ( p == NULL ){         printf ( "ERR: The pointer is NULL/n

原创 編程修養(六)

23、static的使用 ———————— static關鍵字,表示了“靜態”,一般來說,他會被經常用於變量和函數。一個static的變量,其實就是全局變量,只不過他是有作用域的全局變量。比如一個函數中的static變量: char

原创 編程修養(七)

28、||和&&的語句執行順序 ———————————— 條件語句中的這兩個“與”和“或”操作符一定要小心,它們的表現可能和你想像的不一樣,這裏條件語句中的有些行爲需要和說一下:     express1 || express2   

原创 併發編程系列之一:鎖的意義

背景   C/C++語言的併發程序(Concurrent Programming)設計,一直是一個比較困難的話題。很多朋友都會嘗試使用多線程編程,但是卻很難保證自己所寫的多線程程序的正確性。多線程程序,如果涉及到對共享資源的併發讀寫

原创 跟我一起寫 Makefile(十一)

make 的運行 —————— 一般來說,最簡單的就是直接在命令行下輸入make命令,make命令會找當前目錄的makefile來執行,一切都是自動的。但也有時你也許只想讓make重編譯某些文件,而不是整個工程,而又有的時候你有幾套編

原创 詳解SPI中的極性CPOL和相位CPHA

詳解SPI中的極性CPOL和相位CPHA            SPI由於接口相對簡單(只需要4根線),用途算是比較廣泛,主要應用在 EEPROM,FLASH,實時時鐘,AD轉換器,還有數字信號處理器和數字信號解碼器之間。即一個SPI

原创 上拉下拉電阻總結

一、定義:上拉就是將不確定的信號通過一個電阻嵌位在高電平!電阻同時起限流作用!下拉同理! 上拉是對器件注入電流,下拉是輸出電流;弱強只是上拉電阻的阻值不同,沒有什麼嚴格區分;對於非集電極(或漏極)開路輸出型電路(如普通門電路)提升電流