此程序是根据正点原子stm32f1系列 PWM输出实验 改编而来。
关于红外通信的原理这就不再赘述,大家可百度,资料很多。
也可以参考http://blog.csdn.net/wujiangguizhen/article/details/11966167
我这里就主要讲讲我在改写时遇到的困难。
首先,关于载波:载波的产生是这个实验的关键,在这里载波就是用定时器产生一个38KHZ的pwm输出。红外接收器对于38KHZ的红外信号灵敏度最高。
在这里,当红外发射管以38KHZ的频率发射红外线时,接收端接收到红外线,并自动解码,此时红外接收器的电平为低(初始值为高电平,即没有接收到信号的状态)。
对于NEC红外编码,要发送数据“1”,则只需要发送560微秒的红外线,和1690微秒的无信号。这样在接收端获取到的电平既为560us低电平和1690us的高电平,既为数据“1”的编码。
注:这里发射的红外信号的频率,应该在38KHZ左右。红外信号的频率,不是红外线的频率,光的频率肯定远不止38KHZ。
下面先来看看pwm的产生:
void TIM1_PWM_Init(u16 arr,u16 psc)
{
GPIO_InitTypeDef GPIO_InitStructure;
//GPIO_InitTypeDef GPIO_InitStructure;