普通IO口红外线接收(不用外部中断)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 一、红外检测程序
- 总结
前言
以下普通IO口不用IO口中断的红外线接收程序。
提示:以下是本篇文章正文内容,下面案例可供参考
一、红外检测程序
#define IR P01 //接收脚位定义u8 IR_Sign;
u8 IR_Mode;
u8 Time_100us;
u8 Time_20ms;
u8 Reload_T16;
u32 IR_Data;u8 i;
u32 data;
void IR_Receive(void)
{switch(IR_Mode){case 0://初始等待起始码到来if(!IR){IR_Mode = 1;IR_Sign = 1;}else{IR_Mode = 0;}Time_20ms = 0;Time_100us = 0;break;case 1://判断起始码是否成立if(IR_Sign){if(IR)//等待高电平出现准备进入低电平检测{IR_Sign = 0;}}else{if(!IR){if(Time_100us >= 130 && Time_100us <= 140)//判断起始码的时间是否在(9ms+4.5ms)左右{IR_Mode = 2;//起始码正确,进入下个模式IR_Sign = 1;Time_20ms = 0;Time_100us = 0;i = 0;}else{IR_Mode = 0;//起始码错误,重新判断起始码}}}break;case 2://判断数据码0或1,并记录if(IR_Sign){if(IR)//等待高电平出现准备进入低电平检测{IR_Sign = 0;}}else{if(!IR){if(Time_100us >= 15)//判断数据码是1{IR_Mode = 2;IR_Sign = 1;data <<= 1;data++;Time_20ms = 0;Time_100us = 0;}else//判断数据码是0{IR_Mode = 2;IR_Sign = 1;data <<= 1;nop;Time_20ms = 0;Time_100us = 0;}i++;if(i==32)//数据全部接受完毕,进入下一个模式{IR_Mode = 3;}}}break;case 3:IR_Data = data;Uart0_Printf("IR_Data = %x.\n",IR_Data);IR_Mode = 0;break;}
}
总结
以上就是普通IO口红外线接收的程序。
普通IO口红外线接收(不用外部中断)相关推荐
- 笔记:STM32——IO口的复用功能外部中断
在STM32里面一般有五组寄存器分别是A--E组,每组寄存器的端口基本都有复用功能,这样可以使得端口的不被浪费,而达到极致利用. 使用复用端口的时候需要打开AFIO的时钟才能使用IO口的复用端口.每个 ...
- STM32单片机(12) 红外信号接收解码(外部中断)
[转载请注明出处:http://blog.csdn.net/leytton/article/details/38687537] 本程序主要利用外部中断,实现红外遥控器信号接收解码,并利用串口通信把编码 ...
- STM32CubeMX EC11旋转编码器开发心路历程(encode模式 外部中断模式 普通IO口模式 定时器模式探索)
文章目录 ENCODE模式探索 普通IO口探索 定时器使用 外部中断探索 编码器开关的理解 最后的实现方案 这篇文章主要还是记录整个过程以及想法的不断改进,对于一些实际的操作还有代码,我准备都分开写到 ...
- nrf52840 gpiote如何配置中断输入_STM32第四章外部中断管理
点击上方"果果小师弟",选择"置顶/星标公众号"干货福利,第一时间送达!STM32F4 的每个 IO 都可以作为外部中断的中断输入口,这点也是 STM32F4 ...
- STM32F1迷你板外部中断
开始学习外部中断的基本知识 中断优先级分组管理 CortexM3内部支持256个中断,其中包含了 16 个内核中断和 240 个外部中断,并且具有 256 级的可编程中断设置.STM32F1系列有 8 ...
- hal库开启中断关中断_stm32的HAL库开发学习笔记之外部中断
外部中断 中断线----EXTI线0~15(对应外部IO口的输入中断) 每个IO口都可以作为外部中断输入 每个中短线可以独立的配置触发方式(上升沿,下降沿,双边沿),触发/屏蔽,专用状态位. GPIO ...
- STM32之外部中断
今天来说下外部中断EXTI 其实外部中断和我们的定时器中断都差不多,只不过定时器中断是利用内部的计数器来进行定时,从而产生定时中断,而外部中断的触发条件是来自于外部,当外部的信息引起了外部中断,那么就 ...
- STM32F4_外部中断详解(EXTI)
目录 1. EXTI 是什么? 2. EXTI主要特性 3. EXTI框图 3.1 外部中断/事件线映射 4. EXTI寄存器 4.1 中断屏蔽寄存器 EXTI_IMR 4.2 事件屏蔽寄存器 EXT ...
- STM32——外部中断
目录 外部中断简述 什么是外部中断 传统单片机与新型单片机外部中断区别 STM32外部中断请求 STM32中断线与IO口的对应 STM32 中断服务函数 外部中断与中断服务函数的对应 中断服务函数列表 ...
- STM32 中断原理及外部中断的实现
STM32 中断原理及外部中断的实现 NVIC 中断优先级管理 中断寄存器 库函数配置 小结 STM32 外部中断 基础知识 库函数配置 外部中断配置示例 小结 内容较充实,作为个人的学习记录 NVI ...
最新文章
- C#怎么通过一个按钮Button,实现点击这个按钮可以打开一个文件或者文件夹?
- pandas将Series变成键值对
- Intellij Idea/Webstorm/Phpstorm 的高效快捷键
- [LeetCode]--63. Unique Paths II
- 几个最短路径算法Floyd、Dijkstra、Bellman-Ford、SPFA的比较
- Android开源库集锦
- centos安装python环境_Centos7 安装python3 环境 并使用pip安装docker-compose
- LayaAir Geolocation 获取地理位置
- 小任务之使用SVG画柱状图~
- 【MTSP】基于matlab GUI遗传算法求解多旅行商问题【含Matlab源码 935期】
- java 学生考勤系统(三、签到功能)
- 常用键盘ASCⅡ码,方便查阅
- 数据可视化技术有什么特点
- 光伏电站运维常见故障及处理汇总
- 用伪类添加翘边阴影::before和::after
- 车主委托过户和电子委托书
- 为什么要分库分表?一个业务场景来理顺它!
- Revit建模如何一键“生成场地和基础垫层”
- 可口可乐市场调查失败的原因_可口可乐失败案例
- python--敲击木鱼积累功德小项目
热门文章
- 2020.12.28Excel(数字到BZZ)
- 解读swarm最新资讯,主网8.2号开始产BZZ
- linux系统可以下steam吗,linux – 是否可以使用optirun运行Steam游戏?
- 修改WordPress网站默认wp-content/uploads上传文件路径
- SpringBoot从入门到精通二(SpringBoot整合myBatis的两种方式)
- html-box-sizing
- pm runtime
- oracle序列建同义词,oracle序列创建同义词
- 英语语法之形容词与副词
- 计算机技术对艺术设计的影响,计算机对艺术设计有何影响