码迷,mamicode.com
首页 > 其他好文 > 详细

是打发斯蒂芬

时间:2018-05-20 21:22:34      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:amp   16px   关于   style   部分   main   程序代码   处理   串口   


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开发指南》。

  • 实现效果

两个数据数据互相发送接收,打开串口助手即可查看接收的数据,如下所示。

技术分享图片

是打发斯蒂芬

标签:amp   16px   关于   style   部分   main   程序代码   处理   串口   

原文地址:https://www.cnblogs.com/xtark/p/9064472.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!