原创 軌對軌運放(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目的一般有兩個,一個是給變量一個易記