1. 程式人生 > >是打發斯蒂芬

是打發斯蒂芬

amp 感謝 函數 log 通用 config 需要 包括 設計



int main(void)

{    

    uint16_t a;

    uint8_t key,cnt;

    

    //XRT1初始化

    AX_Init(115200);

    printf("***紅外接收 例程***\r\n\r\n");

    printf("請對著紅外接收頭按遙控器\r\n");

    

    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設置系統中斷優先級分組2    

    

    //紅外接收初始化

    AX_IR_Init();

    

    while
(1) { a = AX_IR_ReadKeyStatus(); key = a&0x00FF; // 取出鍵值 cnt = ((a&0x7F00)>>8); //取出按鍵次數 if(a) { if(a < 0x8000) //按鍵未擡起 { printf("Key = %X Count = %d \r\n", key, cnt ); }
else { printf("Key = %X Count = %d END\r\n", key, cnt); } } AX_Delayms(100); } }

int main(void)

{    

    uint16_t a;

    uint8_t key,cnt;

    

    //XRT1初始化

    AX_Init(115200);

    printf("***紅外接收 例程***\r\n\r\n");

    printf(
"請對著紅外接收頭按遙控器\r\n"); NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設置系統中斷優先級分組2 //紅外接收初始化 AX_IR_Init(); while (1) { a = AX_IR_ReadKeyStatus(); key = a&0x00FF; // 取出鍵值 cnt = ((a&0x7F00)>>8); //取出按鍵次數 if(a) { if(a < 0x8000) //按鍵未擡起 { printf("Key = %X Count = %d \r\n", key, cnt ); } else { printf("Key = %X Count = %d END\r\n", key, cnt); } } AX_Delayms(100); } }

技術分享圖片

修訂記錄

版本

日期

修改記錄

V1.0

2018-1-1

創建文檔

版權申明

本教程版權歸屬塔克科技所有,並保留一切權力。非經(書面形式)同意,任何單位及個人不得擅自摘錄或修改本手冊部分或全部內容,違者我們將追究其法律責任。

感謝您購買塔克科技產品,在使用產品之前,請仔細地閱讀該手冊並且確保知道如何正確使用該產品,不合理的操作可能會損壞開發板,使用過程中隨時參考該手冊以確保正確使用。

此手冊不斷更新中,建議您使用時下載最新版本。

塔克官網:

www.xtark.cn

塔克社區:

www.xtark.cn

塔克博客:

http://www.cnblogs.com/xtark/

本節教程介紹X-CTR100控制器的TF卡功能,並通過開源Fatfs文件系統,實現對TF卡上文件的操作。

  1. 原理介紹

SD卡(Secure Digital Memory Card)在我們生活中已經非常普遍了,控制器對SD卡進行讀寫通信操作一般有兩種通信接口可選,一種是SPI 接口,另外一種就是SDIO 接口。X-CTR100控制器通過SPI接口與TF連接。

SD卡很少直接對數據進行讀寫,SD卡一般用來存放文件,所以都需要加載文件系統到裏面。常見的windows 下的文件系統格式包括FAT32、NTFS、exFAT等。

FatFs是面向小型嵌入式系統的一種通用的FAT文件系統。它完全是由AISI C 語言編寫並且完全獨立於底層的I/O介質。因此它可以很容易地不加修改地移植到其他的處理器當中,如8051、PIC、AVR、SH、Z80、H8、ARM等。FatFs支持FAT12、FAT16、FAT32 等格式,把FatFs 文件系統代碼移植到工程之中,就可以利用文件系統的各種函數,對SD卡上的文件進行讀寫操作了。

FatFs 文件系統的源碼可以從官網下載:

http://elm-chan.org/fsw/ff/00index_e.html

  1. FatFs文件系統移植

本教程移植的版本為R0.12b版本。解壓源碼後可以得到兩個文件夾:doc和src。doc裏面主要是對FATFS的介紹,而src裏面是我們需要的源碼,包含文件如下所示。

技術分享圖片

ff.h :文件系統實現頭文件,定義有文件系統所需的數據結構

diskio.h :底層驅動頭文件,就一些狀態宏的定義和底層驅動函數的申明

integer.h:僅實現數據類型重定義,增加系統的可移植性

ffconf.h :文件系統配置

ff.c :文件系統實現。

diskio.c 底層驅動

option可選的外部功能(比如支持中文等)

FatFs的移植,一般只需要修改2個文件,即ffconf.h和diskio.c。

ffconf.h:這個頭文件包含了對FatFs 功能配置的宏定義,通過修改這些宏定義就可以裁剪FatFs 的功能。如需要支持簡體中文,需要把ffconf.h 中的_CODE_PAGE的宏改成936 並把上面的cc936.c 文件加入到工程之中。FATFS模塊的所有配置項都是存放在ffconf.h裏面,我們可以通過配置裏面的一些選項,來滿足自己的需求。

diskio.c文件是移植的核心,需要進行底層驅動編寫,包括幾個接口函數。

技術分享圖片

工程架構

技術分享圖片

具體源碼參考工程文件。

  1. 例程設計

本例程使用定時器輸入捕獲功能實現了遙控器紅外解碼,解碼後的鍵值和按鍵次數通過串口輸出顯示。

  • 硬件說明

本例程需要如下硬件資源:

  • LED燈(綠)
  • 紅外遙控接收頭
  • NEC編碼紅外遙控器

紅外接收部分硬件電路

技術分享圖片

無須特殊硬件連接,演示實物圖如下。

技術分享圖片

  • 軟件說明

本例程實現循環讀取紅外按鍵鍵值和按鍵次數,並通過串口顯示。

主程序代碼如下。

int main(void)

{

uint16_t a;

uint8_t key,cnt;

//XRT1初始化

AX_Init(115200);

printf("***紅外接收例程***\r\n\r\n");

printf("請對著紅外接收頭按遙控器\r\n");

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設置系統中斷優先級分組2

//紅外接收初始化

AX_IR_Init();

while (1)

{

a = AX_IR_ReadKeyStatus();

key = a&0x00FF; // 取出鍵值

cnt = ((a&0x7F00)>>8); //取出按鍵次數

if(a)

{

if(a < 0x8000) //按鍵未擡起

{

printf("Key = %X Count = %d \r\n", key, cnt );

}

else

{

printf("Key = %X Count = %d END\r\n", key, cnt);

}

}

AX_Delayms(100);

}

}

本例程應用X-API函數,關於X-API函數的說明,請參考《X-CTR100開發指南》。

  • 實現效果

兩個數據數據互相發送接收,打開串口助手即可查看接收的數據,如下所示。

技術分享圖片

是打發斯蒂芬