原创 軌對軌運放(rail-to-rail)
1.所謂軌對軌(rail-to-rail)運算放大器軌對軌放大器,指的是放大器輸入和輸出電壓擺幅非常接近或幾乎等於電源電壓值。 2.不是所有的rail to rail 運放輸入和輸出都接近電源,有的只是輸入有的只是輸出,當然也有的輸
原创 STM32出現HardFault_Handler故障的原因及處理方法整理
STM32出現HardFault_Handler故障的原因主要有兩個方面: 1、內存溢出或者訪問越界。這個需要自己寫程序的時候規範代碼,遇到了需要慢慢排查。 2、堆棧溢出。增加堆棧的大小。 出現問題時排查的方法: 1、發生異常之後可
原创 c語言中關於頭文件重複包含
1、如果頭文件A包含頭文件C,同時頭文件B也包含頭文件C,而寫的程序中包含了頭文件A,頭文件B,然後在編譯的時候就會出現頭文件C重複包含的錯誤 這個錯誤 只要在自己寫的頭文件中這樣寫 #ifndef X //X爲你的標識符,保持唯一
原创 實現STM32 Flash的讀寫
寫flash FLASH_UnlockBank1(); FLASH_ClearFlag(FLASH_FLAG_EOP | FLASH_FLAG_PGERR | FLASH_FLAG_WRPRTERR); FLASHStatus = FL
原创 C語言之詳解#ifdef等宏
C語言之詳解#ifdef等宏 這幾個宏是爲了進行條件編譯。一般情況下,源程序中所有的行都參加編譯。但是有時希望對其中一部分內容只在滿足一定條件才進行編譯,也就是對一部分內容指定編譯的條件,這就是“條件編譯”。有時,希望當滿足某條件時
原创 關於變量重複定義的理解
在c語言中,以下代碼會被認爲是重複定義: #include <stdio.h> main() { extern int i; int i = 1; } 因爲extern int i會讓編譯器認爲外部已經定義了i,以後直接用
原创 ISP和IAP兩種編程方式有何區別?
細說ISP和IAP的區別 但兩者的操作方式,結果和應用場合有什麼區別 什麼是ISP: 用寫入器將code燒入,不過,芯片可以在目標板上,不用取出來,在設計目標板的時候就將接口設計在上面,所以叫"在系統編程",即不用脫離系統; 什麼是
原创 STM32常見錯誤
一、 在“Debug選項卡”下設置好仿真器的類型後,下載程序時卻提示“No ULINK Device found.” 解決辦法: Keil MDK默認使用ULINK仿真器下載程序,在“Utilit
原创 函數fp()、數組a[i]和箭頭符號->的由來
很多事物的由來都是有理由的,現在看似晦澀難解的符號token,背後都是有一段歷史! 1. fp()只是一種簡寫方式 fp()是一個函數指針,所以*fp就是該指針指向的函數,所以(*fp)()就是調用該函數的方式。 也就是 (*fp
原创 關於在頭文件中定義函數的缺點
同一個函數、變量可以在不同的c文件中根據需要有多個聲明,但只能有一個定義。這就決定了如果在頭文件中定義函數或變量,則該頭文件只能使用一次,不能被別的c文件使用,也即限制了最好只有一個c文件,因爲別的c文件已經不能再使用這些頭文件;
原创 keil編譯錯誤解決方法
看下面一段程序: 出現這樣的錯誤信息:src\User\main.c(11): error: #268: declaration may not appear after executable statement in block
原创 keil錯誤ERROR L105: PUBLIC REFERS TO IGNORED SEGMENT
在利用Keil C51編程時,發現程序邏輯上沒有錯誤,但在連接時卻出現了錯誤,如下: *** ERROR L107: ADDRESS SPACE OVERFLOW SPACE: DATA SEGMENT: ?D
原创 STM32 APB1和APB2的區別
APB2負責AD,I/O,高級TIM,串口1。 APB1負責DA,USB,SPI,I2C,CAN,串口2345,普通TIM
原创 KEIL uVision,KEIL MDK,KEIL For ARM,RealView MDK,KEIL C51,KEIL C166,KEIL C251
從接觸MCS-51單片機開始,我們就知道有一個叫KEIL的軟件。在開發單片機時,使用的是C語言或者彙編語言,我們知道,這兩種語言都不能直接灌到單片機裏面,執不執行暫且不說,光是代碼的體積,就足以撐破整個單片機。所以,我們需要一個軟件,把C
原创 typedef_struct_用法詳解和小結
1. 基本解釋 typedef爲C語言的關鍵字,作用是爲一種數據類型定義一個新名字。這裏的數據類型包括內部數據類型(int,char等)和自定義的數據類型(struct等)。 在編程中使用typedef目的一般有兩個,一個是給變量一個易記