一、简介 本文介绍STM8L系列如何使用红外发射管发射38K信号。 其中,红外协议采用为最常见的NEC协议,38K信号由PWM产生。
二、实验平台 编译软件:IAR for STM8 1.42.2 硬件平台:stm8l101f3p6开发板 仿真器:ST-LINK 库函数版本:STM8L_STMTouch_Lib_V1.1.0
三、版权声明 声明:喝水不忘挖井人,转载请注明出处。 原文地址:http://blog.csdn.NET/feilusia
四、实验前提
1、在进行本文步骤前,请先阅读以下博文:
1)《STM8L之红外发射(定时器中断产生38K信号)》:http://blog.csdn.net/feilusia/article/details/53305956
2、在进行本文步骤前,请先实现以下博文:
1)《STM8L之定时器3的精确延时》:http://blog.csdn.net/feilusia/article/details/53407818
2)《STM8L之timer2产生PWM》:http://blog.csdn.net/feilusia/article/details/53403015
五、基础知识
暂无
六、实验步骤
1、工程中添加自己写的红外发射的驱动
1)写一个驱动GUA_Infrared_Send.c(存放在工程的USER文件夹中)
香瓜写的红外驱动不需要初始化函数,只需要一个红外发送函数即可实现红外发送。
2)写一个驱动头文件GUA_Infrared_Send.h(存放在工程的USER文件夹中)
[cpp] view plain copy
- //******************************************************************************
- //name: GUA_Infrared_Send.h
- //introduce: 红外传感器发送驱动的头文件
- //author: 甜甜的大香瓜
- //email: 897503845@qq.com
- //QQ group 香瓜单片机之STM8/STM32(164311667)
- //changetime: 2017.01.20
- //******************************************************************************
- #ifndef _GUA_INFRARED_SEND_H_
- #define _GUA_INFRARED_SEND_H_
-
- /*********************宏定义************************/
- //类型宏
- #ifndef GUA_U8
- typedef unsigned char GUA_U8;
- #endif
-
- #ifndef GUA_8
- typedef signed char GUA_8;
- #endif
-
- #ifndef GUA_U16
- typedef unsigned short GUA_U16;
- #endif
-
- #ifndef GUA_16
- typedef signed short GUA_16;
- #endif
-
- #ifndef GUA_U32
- typedef unsigned long GUA_U32;
- #endif
-
- #ifndef GUA_32
- typedef signed long GUA_32;
- #endif
-
- #ifndef GUA_U64
- typedef unsigned long long GUA_U64;
- #endif
-
- #ifndef GUA_64
- typedef signed long long GUA_64;
- #endif
-
- //红外键值
- #define GUA_INFRARED_SEND_VALUE_KEY1_SHORT (GUA_U32)0x00FF00FF //按键1 短按键
- #define GUA_INFRARED_SEND_VALUE_KEY1_LONG (GUA_U32)0x00FF01FE //按键1 长按键
- #define GUA_INFRARED_SEND_VALUE_KEY2_SHORT (GUA_U32)0x00FF02FD //按键2 短按键
- #define GUA_INFRARED_SEND_VALUE_KEY2_LONG (GUA_U32)0x00FF03FC //按键2 长按键
-
- /*********************外部函数声明************************/
- extern void GUA_Infrared_Send(GUA_U32 nGUA_Data);
-
- #endif
3)工程中添加GUA_Infrared_Send.c
4)添加驱动的路径
[cpp] view plain copy
注意USER文件夹是与“Project”等文件夹同级的自定义文件,用于存放香瓜写的代码。
2、应用层中调用
1)添加头文件(main.c中)
[cpp] view plain copy
- #include "GUA_Infrared_Send.h"
2)添加测试代码(main.c的main函数中)
[cpp] view plain copy
- //发送红外键值
- GUA_Infrared_Send(GUA_INFRARED_SEND_VALUE_KEY1_SHORT);
在这里发送键值0x00FF00FF。
七、注意事项
暂无
八、实验结果
1、信号波形
使用逻辑分析仪抓取红外发送引脚PB0的信号,如下图:
可从上图中读出红外发送的数据位0x00FF00FF。
2、功耗
不开低功耗的正常运行时功耗为3.4mA,发射红外信号时功耗为3.8~4.2mA。
|