海思GPIO中輸出的一種測試方法

2021-09-30 20:18:35 字數 2466 閱讀 7018

海思提供一在應用層測試gpio的函式,只需要將其使用,即可完成gpio的輸入輸出等功能測試,本文是測試一下海思gpio的輸入功能。

1、測試原始碼:

#include #include #include #include int gpio_test_in(unsigned int gpio_chip_num, unsigned int gpio_offset_num)

fprintf(fp, "%d", gpio_num);

fclose(fp);

sprintf(file_name, "/sys/class/gpio/gpio%d/direction", gpio_num);

fp = fopen(file_name, "rb+");

if (fp == null)

fprintf(fp, "in");

fclose(fp);

sprintf(file_name, "/sys/class/gpio/gpio%d/value", gpio_num);

fp = fopen(file_name, "rb+");

if (fp == null)

memset(buf, 0, 10);

fread(buf, sizeof(char), sizeof(buf) - 1, fp);

printf("%s: gpio%d_%d = %d\n", __func__,

gpio_chip_num, gpio_offset_num, buf[0]-48);

fclose(fp);

sprintf(file_name, "/sys/class/gpio/unexport");

fp = fopen(file_name, "w");

if (fp == null)

fprintf(fp, "%d", gpio_num);

fclose(fp);

return (int)(buf[0]-48);

}int gpio_test_out(unsigned int gpio_chip_num, unsigned int gpio_offset_num,

unsigned int gpio_out_val)

fprintf(fp, "%d", gpio_num);

fclose(fp);

sprintf(file_name, "/sys/class/gpio/gpio%d/direction", gpio_num);

fp = fopen(file_name, "rb+");

if (fp == null)

fprintf(fp, "out");

fclose(fp);

sprintf(file_name, "/sys/class/gpio/gpio%d/value", gpio_num);

fp = fopen(file_name, "rb+");

if (fp == null)

if (gpio_out_val)

strcpy(buf,"1");

else

strcpy(buf,"0");

fwrite(buf, sizeof(char), sizeof(buf) - 1, fp);

printf("%s: gpio%d_%d = %s\n", __func__,

gpio_chip_num, gpio_offset_num, buf);

fclose(fp);

sprintf(file_name, "/sys/class/gpio/unexport");

fp = fopen(file_name, "w");

if (fp == null)

fprintf(fp, "%d", gpio_num);

fclose(fp);

return 0;

}

int main(int argc, const char *ar**)

int gpio_chip_num = atoi(ar**[1]);

int gpio_offset_num = atoi(ar**[2]);

int gpio_out_val = atoi(ar**[3]);

int i = 0;

for(i=0;i<20;i++)

else

}printf("test_gpio over!\n");

return 0;

}

2、我使用的仍是傳參方式,下面的測試我使用的是是gpio3_1,所以傳參為 3 1 1。將上面的原始碼編譯成elf檔案,拷貝至開發板下。 

3、執行該程式。

4、我將其連線至乙個io測試板子中,發現小燈在迴圈閃爍20次後結束,與預想的一樣。

至此即完成gpio的輸入測試,可以在此基礎上修改**,完成自己想要的功能。

一種新的測試理念

文章分類 軟體開發管理 效能測試可以增加一種新的測試理念,當我們做乙個破壞性測試時,確定乙個破壞點以及相關策略,會得到乙個期望的測試結果。這是測試系統的健壯性。但如果我們輸入的是乙個不確定的破壞點,該輸入會遵循業務邏輯自身繁殖和變異,會產生無法預知的破壞性時,我們這個測試就是不止對系統自身的健壯性的...

windows下安裝django的一種方法

django版本是1.3.1,壓縮包。1.首先將django 1.31壓縮包解壓,使其與python2.7在同一根目錄下 2.之後進入cmd,通過命令python setup.py install進行安裝。python2.7和django 1.3.1都是存放在本地的c盤 安裝成功以後,可以通過以下命...

Flutter實體與JSON解析的一種方法

vs code作為編輯器 1.首先,json物件與字串的轉換是使用json.encode和json.decode的,需要匯入import dart convert 這裡主要的自然不是這個,而是json物件和實體物件的轉換 當然,實際上json物件算是乙個map物件,直接通過鍵訪問就可以得到值,即通過...