實驗內容:pc向微控制器傳送波特率和占空比相關資訊,微控制器接收到資料後,顯示接收到的頻率和占空比並改變波形。
問題:pc向微控制器傳送資料,第一次接收正常,後面就無法正常接收了。
這是串列埠中斷處理函式部分**:
問題出在notice那裡:
1、因為crc是static變數,所以只初始化一次,在資料接收完成之後並沒有做相應的處理。
2、再次接收資料時,crc在原先值的基礎上繼續累加,所以第二次傳送資料開始,case 5再也進不去了!!
總結:變數一定要有始有終,特別是static變數!!!
externuint16 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...