RT-Thread Studio学习(四)infrared软件包

简介

本文将基于STM32F407VET芯片介绍如何在RT-Thread Studio开发环境下使用infrared软件包。

新建项目并使用外部时钟

打开RT-Thread Studio软件新建基于芯片的项目,并使用外部时钟系统,具体参见《RT-Thread Studio学习之使用外部时钟系统》。在使用infrared软件包时,需要使用三个定时器,分别为:一个定时器的输入/捕获通道用于红外接收后解码,一个定时器的PWM通道用于产生38KHz载波和红外发送,一个HWTIMER用于红外发送编码。在本文中,将使用TIM1通道1完成红外接收,使用TIM12通道1完成38KHz载波和红外发送,使用TIM10完成红外发送的编码。

使用infrared软件包

RT-Thread Setting 文件中借助图形化配置工具打开软件的软件包设置,如下图所示:
在这里插入图片描述
红外接收:利用timer1通道1的输入捕获来实现。
红外发送:利用timer12通道1的PWM实现38KHz载波,利用timer10进行编码。

修改tim_config.h和drv_hwtimer.h

这里将涉及HWTIMER和PWM的使用,具体参考《RT-Thread Studio学习之HWTIMER》和《RT-Thread Studio学习之PWM》。

测试

main.c测试代码如下:

int main(void)
{
    ......
    struct infrared_decoder_data infrared_data;
    ir_select_decoder("nec");
    while (1)
    {
        /* 读取数据 */
        if (infrared_read("nec", &infrared_data) == RT_EOK)
        {
            if (infrared_data.data.nec.repeat)
            {
                rt_kprintf("repeat%d\n", infrared_data.data.nec.repeat);
            }
            else
            {
                rt_kprintf("APP addr:0x%02X key:0x%02X\n", infrared_data.data.nec.addr, infrared_data.data.nec.key);
                infrared_write("nec", &infrared_data);

            }
        }

        rt_thread_mdelay(10);
    }

    while(1) {
        rt_thread_mdelay(1000);
    }

    return RT_EOK;
}

测试发现,infrared软件包将数据的高位和低位搞反了,比如红外遥控器发送的键值为0x65,infrared软件包解码后为0xa6。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值