針對static變數的處理!!!

2022-07-31 02:39:07 字數 933 閱讀 7596

實驗內容:pc向微控制器傳送波特率和占空比相關資訊,微控制器接收到資料後,顯示接收到的頻率和占空比並改變波形。

問題:pc向微控制器傳送資料,第一次接收正常,後面就無法正常接收了。

這是串列埠中斷處理函式部分**:

問題出在notice那裡:

1、因為crc是static變數,所以只初始化一次,在資料接收完成之後並沒有做相應的處理。

2、再次接收資料時,crc在原先值的基礎上繼續累加,所以第二次傳送資料開始,case 5再也進不去了!!

總結:變數一定要有始有終,特別是static變數!!!

extern

uint16 g_u16_freq;

extern

uint8 g_u8_duty;

uint8 g_crc_sum_val = 0

;uint8 g_error_code_val = 0

;bool b_uart_rec_flag = 0;//

arry to print rec data.

uint16 g_u16_rec_data[6] = ;

uint8 rec_data_num = 0

;void uart_isr(void) interrupt

4

else

//noticecrc = 0;

break

;

case5:

g_u16_rec_data[

5] =sbuf;

if (sbuf == 0xfe

)

state = 0

;

break

; }

}ri = 0

;}

static 變數和static 函式

在c語言程式設計中,static的乙個作用是資訊遮蔽!比方說,你自己定義了乙個檔案 該檔案中有一系列的函式以及變數的宣告和定義!你希望該檔案中的一些函式和變數只能被該檔案中的函式使用,那麼,你可以在該函式 變數的前面加上static,代表他們只能被當前檔案中的函式使用!而在c 中,用static來作...

Static 變數和Static函式

static變數和static函式 一 static 變數static變數大致分為三種用法 1.用於區域性變數中,成為靜態區域性變數.靜態區域性變數有兩個用法,記憶功能和全域性生存期.2.用於全域性變數,主要作用是限制此全域性變數被其他的檔案呼叫.3.用於類中的成員.表示這個成員是屬於這個類但是不屬...

static 方法和static 變數

static方法不能直接訪問類內的非static變數和不能呼叫this,super語句分析 大家都知道在static方法中,不能訪問類內非static成員變數和方法。可是原因是什麼呢?這首先要從static方法的特性說起。static方法,即類的靜態成員經常被稱為 成員變數 class member...