本项目用TIM2通道1产生38KHz频率;对应的MCU管脚是PA0,默认复用功能;

重点是怎样配置TIM2的参数,产生38KHz频率;

//应用示例:TIM2_PWM_Init(99,18);
void TIM2_PWM_Init(u16 arr,u16 psc)
{GPIO_InitTypeDef GPIO_InitStructure;TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;TIM_OCInitTypeDef  TIM_OCInitStructure;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); //使能定时器2时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);  //使能GPIO外设和AFIO复用功能模块时钟,必须先开启辅助功能时钟//设置该引脚为复用输出功能,输出TIM3 CH2的PWM脉冲波形  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
//  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  //推挽输出  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  //复用推挽输出 注意GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIO//初始化TIM2TIM_TimeBaseStructure.TIM_Period = arr; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值TIM_TimeBaseStructure.TIM_Prescaler =psc; //设置用来作为TIMx时钟频率除数的预分频值 TIM_TimeBaseStructure.TIM_ClockDivision = 0; //设置时钟分割:TDTS = Tck_timTIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //TIM向上计数模式TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); //根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位//初始化TIM2 Channel1 PWM模式     TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //选择定时器模式:TIM脉冲宽度调制模式2 ??? 配置为PWM模式1TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比较输出使能//新增TIM_OCInitStructure.TIM_Pulse = 75;       //设置跳变值,当计数器计数到这个值时,电平发生跳变//86(84~90) //91(90~92)   //60(5~86) //60(10~86)TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //输出极性:TIM输出比较极性高 当定时器计数值小于pulse时为高电平TIM_OC1Init(TIM2, &TIM_OCInitStructure);  //根据T指定的参数初始化外设TIM2 OC1 使能通道1TIM_OC1PreloadConfig(TIM2, TIM_OCPreload_Enable);  //使能TIM2在CCR2上的预装载寄存器//  TIM_OC2Init(TIM4, &TIM_OCInitStructure);   //使能通道2
//  TIM_OC2PreloadConfig(TIM4, TIM_OCPreload_Enable);
//
//  TIM_OC3Init(TIM4, &TIM_OCInitStructure);     //使能通道3
//  TIM_OC3PreloadConfig(TIM4, TIM_OCPreload_Enable);
//
//  TIM_OC4Init(TIM4, &TIM_OCInitStructure);     //使能通道3
//  TIM_OC4PreloadConfig(TIM4, TIM_OCPreload_Enable);TIM_ARRPreloadConfig(TIM2, ENABLE);             // 使能TIM2重载寄存器ARR ???TIM_Cmd(TIM2, ENABLE);  //使能TIM2
}int main(void)
{......TIM2_PWM_Init(99,18);//在PA0产生38KHz波特率//在主函数里面根据需要加上设置占空比,也可以不加上;TIM_SetCompare1(TIM2,50);       .......
}

用示波器检测,一端接地,另外一端接T_38K的引脚;

示波器检测图示:

STM32产生38KHz红外载波代码相关推荐

  1. 基于STM32的万能红外遥控器

    本博客介绍一种基于STM32的可学习和存储已有红外发射设备的万能红外遥控器的设计思路. 一.首先需要了解设计一款这功能的遥控器需要什么硬件设备支持. 1.3.3V,5V电源模块,用作给系统模块供电和单 ...

  2. 基于STM32的利用红外收发机制的人体感应设计

    因为网上资料很多,本人在这里只是记录自己学习的过程.具体内容可以参考其他大神的文章. 红外的收发其实和光耦原理差不多.发射端收到数据,发红外光,接收端收到光信号也开始导通,采集Rx信号即可知道发来的数 ...

  3. MODBUS-RTU协议主机和从机代码STM32 包含2个程序代码,主机和从机

    MODBUS-RTU协议主机和从机代码STM32 包含2个程序代码,主机和从机(代码易懂) 基于温度传感器DS18B20的MODBUS-RTU从机 主机发送指令:01 03 20 00 00 01 8 ...

  4. 38Khz红外遥控发射

    http://blog.sina.com.cn/s/blog_4ca9659e0101i9nn.html 红外发射.接收头(红外基础知识) 目前市售红外一体化接收头有两种:电平型和脉冲型,绝大部分的都 ...

  5. 简单无脑,上手即用 - 手把手教你使用 智能红外温度传感器代码以及依赖的 gitee 库

    简单无脑,上手即用-智能温度传感器代码以及依赖的库! 前言 购买硬件 获取代码 使用代码和库 控制传感器 总结 前言 之前分享了一个大家自己在家就能制作的智能红外温度传感器,可以通过手机和电脑控制的 ...

  6. STM32:红外传感器代码部分(内含实物图+外部信号流程,编写代码思路+代码+解析代码和扩展应用)

    1.实物连接图: 左下角的D0接任意一个空闲的IO口均可,此处接的是PB14.当对射式红外传感器被遮挡住时,D0发送中断信号给PB14并完成相关操作. 2.外部信号流程(代码部分编写的原理): 外部信 ...

  7. 基于STM32的TFDU4101红外通信IRDA+串口DMA方式

    最近项目开发要求用到近距离红外通信,需要实现两个红外设备的数据传输.于是开发完成后,简单对过程进行一个记录. 一.关于IRDA红外串口通信 IrDA是红外数据组织(Infrared Data Asso ...

  8. STM32单片机(12) 红外信号接收解码(外部中断)

    [转载请注明出处:http://blog.csdn.net/leytton/article/details/38687537] 本程序主要利用外部中断,实现红外遥控器信号接收解码,并利用串口通信把编码 ...

  9. 技能梳理14@stm32+esp8266+ds18b20+红外传感器+烟雾传感器+CO传感器+蜂鸣器

    画板子,有至少8个io口(分别连ds18b20.红外传感器.烟雾传感器.CO传感器,后面3个传感器都是检测到就发高电平),2个串口,1个蜂鸣器,nbiot用的YED-C724 核心板(AIR724) ...

最新文章

  1. 单链表-逆置单链表(头插法且双指针)
  2. 基于Python的Web自动化(Selenium)之读取文件
  3. (二)微服务分布式云架构 - spring cloud整合企业架构的技术点
  4. 图像处理学习--前篇--像素相关
  5. java url帮助类_Spring居然还提供了这么好用的URL工具类
  6. linux java ssl_linux系统下安装ssl证书(tomcat)
  7. 4K视频直播与点播系统的搭建与体验
  8. 配置网络策略中的 NAP 条件
  9. 应朋友死皮白咧地邀请贴一个招聘广告
  10. java非静态内部类如何创建对象实例
  11. 储能系统下垂控制,蓄电池通过双向dc/dc变换器并联负载,变换器输出电流按虚拟电阻比例分配
  12. 无人驾驶虚拟仿真(十五)--障碍物检测与识别1
  13. 1.488Mpps是如何计算出来的?
  14. 2017年愚人节思考
  15. R 用回归来做 ANOVA
  16. matlab矩阵转入tecplot,[转载]tecplot编辑自己想要的变量
  17. 计算机一直安装更新失败,win10系统一直安装更新失败的三种解决方法
  18. java 三维_java之三维数组
  19. 一切就绪,2019年新型智慧城市峰会将展现怎样的“新益阳”
  20. iOS MVC设计模式

热门文章

  1. thinkphp5 生成二维码海报
  2. navicat导出表结构和注释_Navicat 导出 表结构
  3. i.MX6ULL终结者mfgtool烧写镜像
  4. Greenplum-表的分布策略
  5. jQuery----五星好评实现
  6. 解决Data too long for column ‘xxx‘ at row 1问题以及深入理解mysql的字符串数据类型(char,varchar,enum,text,longtext...)
  7. 代码重构:面向单元测试
  8. 【并发编程专题(一)】
  9. 《ESP32 学习笔记》 之Arduino环境下 使用DAC模拟输出(是真的DAC哦!)完成两路呼吸灯
  10. 【正点原子MP157连载】第十七章 通用定时器实验-摘自【正点原子】STM32MP1 M4裸机CubeIDE开发指南