打印
[应用相关]

【转】STM8L之红外发射(PWM产生38K信号)

[复制链接]
1408|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
一灯大神|  楼主 | 2017-2-25 12:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

一、简介

本文介绍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


  • $PROJ_DIR$\..\USER   

注意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。


发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

65

主题

112

帖子

2

粉丝