是打發斯蒂芬
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卡上文件的操作。
-
原理介紹
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
-
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文件是移植的核心,需要進行底層驅動編寫,包括幾個接口函數。
工程架構
具體源碼參考工程文件。
-
例程設計
本例程使用定時器輸入捕獲功能實現了遙控器紅外解碼,解碼後的鍵值和按鍵次數通過串口輸出顯示。
- 硬件說明
本例程需要如下硬件資源:
- 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開發指南》。
- 實現效果
兩個數據數據互相發送接收,打開串口助手即可查看接收的數據,如下所示。
是打發斯蒂芬