【STM32】【HAL库】遥控关灯2 分机
相关连接
【STM32】【HAL库】遥控关灯0 概述
【STM32】【HAL库】遥控关灯1主机
【STM32】【HAL库】遥控关灯2 分机
【STM32】【HAL库】遥控关灯3 遥控器
需求
接收RF433和红外信号,根据信号内容控制舵机
硬件设计
主控采用stm32F103c6
STM32
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aTpXZCoT-1676130507363)(picture/1.png)]](https://img-blog.csdnimg.cn/181461749a054ba39c5690a3aa0a6a85.png)
433接收
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WsUmue6W-1676130507364)(picture/2.png)]](https://img-blog.csdnimg.cn/f15171460ea74021a9e3a48d14d0a4cd.png)
其他接口
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YsV5ZBTM-1676130507365)(picture/3.png)]](https://img-blog.csdnimg.cn/94fd5bca64aa411b97bb874c9a8655ac.png)
软件设计
接收RF433/红外的信号,并完成动作即可
相关链接
舵机驱动
NEC
RF433
舵机关灯思路
HAL初始化
定时器1
红外和RF433的计时
设置为分频后1us,默认溢出数,开中断
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-c2OQ8G8J-1676130507366)(picture/4.png)]](https://img-blog.csdnimg.cn/fdb02ac084a649f79915dee8390f1f5e.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XVvEdjgQ-1676130507366)(picture/5.png)]](https://img-blog.csdnimg.cn/89e17a12ec094ebcbc6515cb64b86951.png)
定时器2
用作舵机控制的PWM生成
每隔20us触发一次中断
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nUCDJHnG-1676130507367)(picture/6.png)]](https://img-blog.csdnimg.cn/64c82b926cf3443aa491bb32a02fb92a.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ev25gVpu-1676130507367)(picture/7.png)]](https://img-blog.csdnimg.cn/04af5b75233b428a9dd7adaee3d34b2a.png)
GPIO
LED:用作指示灯,推挽输出即可
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Gvf7unPe-1676130507368)(picture/8.png)]](https://img-blog.csdnimg.cn/91f233847a2446c483424d2c3d3a7ab9.png)
GPIO
舵机控制信号
配置为开漏浮空(外部接上拉电阻到5V),配置为最高等级(避免复位时让电机出现误动作)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VH8MdGJy-1676130507369)(picture/9.png)]](https://img-blog.csdnimg.cn/e40154d83a474a8687e60106de26681f.png)
GPIO
RF433输入
配置为边沿中断模式
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fDlh0Fhr-1676130507369)(picture/10.png)]](https://img-blog.csdnimg.cn/85fff19cfcfb498e9efbe8038d201e6d.png)
GPIO
红外输入
配置为下降沿中断模式
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nXLOmsyv-1676130507370)(picture/11.png)]](https://img-blog.csdnimg.cn/ee52e2b82c1e44d9b8f71562b9c27e03.png)
硬件看门狗
32分频,溢出值4000
每(32/40k*4000=3.2s)触发一次
本程序目的是让程序每3.2s重启一次,因此只在需要操作舵机时喂狗,主循环无喂狗
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zbCFn7g3-1676130507370)(picture/12.png)]](https://img-blog.csdnimg.cn/357d819e4b3c418c9db8ca96ff995577.png)
程序
中断回调函数
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{if (htim == &Steering_Engine_TIM){if (M_EN == 1)Steering_Engine_Action();elseHAL_GPIO_WritePin(Steering_Engine_GPIOx, Steering_Engine_GPIO_Pin, GPIO_PIN_SET);}else if (htim == &htim3){}
}
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{if (GPIO_Pin == GPIO_PIN_2){if (IR_NEC_Read_ins == 0)RF_Read_Decode();}else if (GPIO_Pin == GPIO_PIN_3){IR_NEC_Read_Decode(air);}
}
主循环处理函数
if (IR_NEC_Read_OK){HAL_GPIO_WritePin(GPIOB, GPIO_PIN_9, GPIO_PIN_SET);// printf("%02X%02X%02X%02X\r\n", IR_NEC_Read_Dat[0], IR_NEC_Read_Dat[1], IR_NEC_Read_Dat[2], IR_NEC_Read_Dat[3]);if (IR_NEC_Read_Dat[0] == 0x4D && IR_NEC_Read_Dat[1] == 0xb2 && IR_NEC_Read_Dat[2] == 0xa3 && IR_NEC_Read_Dat[3] == 0x5C)OPEN();else if (IR_NEC_Read_Dat[0] == 0x4D && IR_NEC_Read_Dat[1] == 0xb2 && IR_NEC_Read_Dat[2] == 0x59 && IR_NEC_Read_Dat[3] == 0xa6)CLOSE();if (IR_NEC_Read_Dat[0] == 0x84 && IR_NEC_Read_Dat[1] == 0xff && IR_NEC_Read_Dat[2] == 0x81 && IR_NEC_Read_Dat[3] == 0x7e)OPEN();else if (IR_NEC_Read_Dat[0] == 0x84 && IR_NEC_Read_Dat[1] == 0xff && IR_NEC_Read_Dat[2] == 0x01 && IR_NEC_Read_Dat[3] == 0xfe)CLOSE();HAL_IWDG_Refresh(&hiwdg);HAL_Delay(500);HAL_GPIO_WritePin(GPIOB, GPIO_PIN_9, GPIO_PIN_RESET);IR_NEC_Read_Dat[0] = 0;IR_NEC_Read_Dat[1] = 0;IR_NEC_Read_Dat[2] = 0;IR_NEC_Read_Dat[3] = 0;IR_NEC_Read_OK = 0;}if (RF_READ_OK){HAL_GPIO_WritePin(GPIOB, GPIO_PIN_9, GPIO_PIN_SET);// printf("%02X%02X%02X\r\n", RF_READ_data[0], RF_READ_data[1], RF_READ_data[2]);if (RF_READ_data[0] == 0xac && RF_READ_data[1] == 0x22 && RF_READ_data[2] == 0x00)OPEN();else if (RF_READ_data[0] == 0xac && RF_READ_data[1] == 0x22 && RF_READ_data[2] == 0xff)CLOSE();HAL_IWDG_Refresh(&hiwdg);HAL_Delay(500);HAL_GPIO_WritePin(GPIOB, GPIO_PIN_9, GPIO_PIN_RESET);RF_READ_data[0] = 0;RF_READ_data[1] = 0;RF_READ_data[2] = 0;RF_READ_OK = 0;// __set_FAULTMASK(1);// NVIC_SystemReset();}
开关灯控制函数
void OPEN()
{M_EN = 1;HAL_IWDG_Refresh(&hiwdg);Steering_Engine_360(0, 30);HAL_Delay(500);HAL_IWDG_Refresh(&hiwdg);Steering_Engine_360(1, 40);HAL_Delay(80);HAL_IWDG_Refresh(&hiwdg);Steering_Engine_Stop();M_EN = 0;
}
void CLOSE()
{M_EN = 1;HAL_IWDG_Refresh(&hiwdg);Steering_Engine_360(1, 30);HAL_Delay(500);HAL_IWDG_Refresh(&hiwdg);Steering_Engine_360(0, 30);HAL_Delay(80);HAL_IWDG_Refresh(&hiwdg);Steering_Engine_Stop();M_EN = 0;
}
成品
另外app开发很简单,百度凑凑就行了,源码同样在GitHub上,请自行查看即可
GitHub
相关文章:
【STM32】【HAL库】遥控关灯2 分机
相关连接 【STM32】【HAL库】遥控关灯0 概述 【STM32】【HAL库】遥控关灯1主机 【STM32】【HAL库】遥控关灯2 分机 【STM32】【HAL库】遥控关灯3 遥控器 需求 接收RF433和红外信号,根据信号内容控制舵机 硬件设计 主控采用stm32F103c6 STM32 433接收 其他接口 软件设计 接…...
代码随想录算法训练营第27天|● 93.复原IP地址 ● 78.子集 ● 90.子集II
93.复原IP地址 看完题后的思路 典型分割问题略lue略剪枝条件 sub: 1) 不是一位首字母为0 2)大于三位 3)介于0-255之间 4) 当已分割得到3个时,第四个直接从startIndex到末尾就行 代码 ArrayList<String> slist…...
Unity UI合批的问题
今天看到一个问题,主要说的是Unity中的UI资源合批的问题之前一直以为主要和UI资源在Hierarchy中的排列顺序有关,但其实这并不是最主要的,因为Unity会对同一个Canvas下的UI进行排序(注:不同Canvas下的资源是不能够合批的…...
MWORKS--系统建模与仿真
MWORKS--系统建模与仿真1 系统定义特征2 系统研究2.1 特点与原则2.2 方法百度百科归纳同元杠归纳3 系统建模与仿真3.1 系统、模型、仿真的关系3.2 系统建模4 建模方法4.1 方法4.2 一般流程4.3 目的5 仿真方法5.1 方法5.2 流程参考1 系统定义 系统是由相互作用相互依赖的若干组…...
PC端开发GUI
PC端开发GUI 一、搭建PC端环境:常规方式1、Python2、Pycharm二、搭建PC端环境:创建虚拟环境1、创建文件夹存放虚拟环境相关2、配置环境变量3、创建.ui文件4、.ui文件转成.py文件5、打包.py文件来发布.exe一、搭建PC端环境:常规方式 1、Python 注意Python版本不能超过3.9,…...
解读手机拍照的各个参数(拍照时,上面会有6个符号)
1第一个符号是闪光灯符号,如下图所示。有四种模式, 手机的闪光灯分别为关闭、自动、开启和常亮四种状态。 关闭:就是在任何情况下都不会闪光 自动:由手机来判断此时的光线强弱,若手机测光认为光线太弱,则…...
数字钥匙最新进展文章
在未来出行上,智能汽车越来越卷。 新车除了拼高精度激光雷达、堆大算力芯片、标配辅助驾驶、智能语音识别,还在车钥匙上展开了激烈角逐,越来越多的厂商开始在量产车型上搭载数字钥匙,实现无钥匙进入车内。 去年1月蔚来发布轿车E…...
如何在VMware虚拟机上安装运行Mac OS系统(详细图文教程)
一、安装前准备 虚拟机运行软件:VMware Workstation Pro,版本:16.0.0 。VMware Mac OS支持套件:Unlocker。Mac OS系统镜像。 如果VMware 在没有安装Unlocker的情况下启动,在选择客户机操作系统时没有支持Mac OS的选项…...
C++中的强制类型转换
接触过C语言的朋友都知道,C语言中也有强制类型转换,但是C语言中的强制类型转换会有一些问题,比如: int a 0x1234; char b (char)a; 上述的代码出现一个问题就是a 这个int型强制转化成b 这个char型时损失了一些精度,…...
任何人都可以学习Rasa之优秀Rasa学习资源推荐
任何人都可以学习Rasa之优秀Rasa学习资源推荐 欢迎同学们报名Gavin老师的Rasa系列课程,任何人都可以学习Rasa之优秀Rasa学习资源推荐: 1.NLP on Transformers高手之路137课 2 .Rasa 3.X 智能对话机器人案例开发硬核实战高手之路 (7大项目Ex…...
数据中心的 TCP-Delay ACK 与 RTO, RACK
TCP 对 RTO 有个最小值限制,一般限制为 MIN_RTO 200ms。之所以有这个限制,在于要适应 Delay ACK,而 Delay ACK 的意义,不多说,摘自 RFC1122: MIN_RTO 应该足够大,以覆盖 Delay ACK 的影响&…...
MySQL与常见面试题
目录 事务概述ACIDAUTOCOMMIT总结并发一致性问题丢失修改读脏数据不可重复读幻读原因和解决方法隔离级别未提交读(READ UNCOMMITTED)提交读(READ COMMITTED)可重复读(REPEATABLE READ)可串行化(SERIALIZABLE)加锁封锁粒度封锁类型读写锁意向锁...
FFmpeg进阶: 采用音频滤镜对音频进行转码
文章目录采样位数采样率声道布局码率使用FFmpeg音频滤镜进行转码参考链接很多时候为了让视频文件适应不同的播放领域,我们需要对音频文件进行转码操作,转码操作其实主要就是修改音频文件的各种参数包括:采样位数、采样率、音频布局、码率等等。下面分别介…...
C++:AVL树
AVL树的概念 二叉搜索树虽可以缩短查找的效率,但如果数据有序或接近有序二叉搜索树将退化为单支树,查找元素相当于在顺序表中搜索元素,效率低下,时间复杂度为O(N); 两位俄罗斯的数学家G.M.Ade…...
Docker中安装Oracle-12c
前言 MySQL和Oracle是开发中常用到的两个关系型数据库管理系统,接上一期内容,这一期在Docker中完成oracle-12c的安装和配置。 安装oracle-12c 1、拉取oracle-12c镜像 启动Docker Desktop后在cmd窗口中执行docker search oracle命令,搜索O…...
教你如何用Python分析出选注双色球号码
前言 嗨喽,大家好呀~这里是爱看美女的茜茜呐 又到了学Python时刻~ 数据集介绍 找从19年到现在的开奖历史数据,我们首先要把这个历史数据拿到, 拿到我们再进行做分析,分析每个号码出现的频率是多少, 哪个多&#x…...
elasticsearch映射及字段类型
查询映射关系类型上对字段的类型进行映射,我们前面知道可以通过get方法请求_mapping查询指定类型的映射关系:此语句可以查询get-together索引下的group类型的映射关系更新映射关系使用put方法可以更新类型的映射这里指定了new-events类型的字段映射关系&…...
1493围圈报数(队列)
题目描述 有n个人依次围成一圈,从第1个人开始报数,数到第m个人出列,然后从出列的下一个人开始报数,数到第m个人又出列,…,如此反复到所有的人全部出列为止。…...
【ArcGIS Pro二次开发】(2):创建一个Add-in项目
Add-In即模块加载项,是一种能够快速扩展桌面应用程序功能的全新扩展方式。 一、创建新项目 1、打开VS2002,选择创建新项目。 2、在搜索框中输入“arcgis pro”,在搜索结果中选择【ArcGIS Pro 模块加载项】创建项目,注意选择语言应…...
浏览器缓存是如何提升网站访问速度的
提升速度,降低负载 浏览器访问一个页面时,会请求加载HTML、CSS和JS等静态资源,并把这些内容渲染到屏幕上。 对浏览器来说,如果页面没有更新,每次都去请求服务器是没有必要的。所以,把下载的资源缓存起来&…...
从SolidWorks到Simulink:手把手教你用Simscape Multibody Link搭建你的第一个虚拟样机
从SolidWorks到Simulink:手把手教你用Simscape Multibody Link搭建你的第一个虚拟样机 虚拟样机技术正在彻底改变传统机电系统的开发流程。想象一下,你刚刚在SolidWorks中完成了一个精巧的自动门闭锁装置的设计,现在不需要花费数周时间加工金…...
如何免费获得Windows风扇智能控制:FanControl终极指南
如何免费获得Windows风扇智能控制:FanControl终极指南 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/fa…...
如何在Chrome浏览器中快速生成与扫描二维码:终极免费插件指南
如何在Chrome浏览器中快速生成与扫描二维码:终极免费插件指南 【免费下载链接】chrome-qrcode :zap: A Chrome plugin to Genrate QRCode of URL / Text, or Decode the QRcode in website. 一个Chrome浏览器插件,用于生成当前URL或者选中内容的二维码&a…...
半导体产业3000亿美元背后的冷思考:成本高墙、利润悖论与创新挑战
1. 行业现状:跨越3000亿美元门槛后的冷思考 又到了一年一度回顾过去、展望未来的时刻。对于我们这些在半导体行业摸爬滚打了十几年甚至几十年的老工程师来说,每年的这个时候心情总是复杂的。今年有个标志性的消息:全球半导体产业营收终于再次…...
MATLAB roots函数实战:5分钟搞定高阶系统稳定性判断(附完整代码)
MATLAB roots函数实战:高阶系统稳定性分析的黄金法则 在控制工程和自动化领域,系统稳定性分析是每个工程师的必修课。面对复杂的高阶系统特征方程,传统的手工计算方法不仅耗时耗力,还容易出错。而MATLAB的roots函数配合简单的可视…...
基于AI与胎心监护信号预测胎儿生物年龄:技术实现与临床价值
1. 项目概述:从胎心监护到胎儿“数字时钟” 在产科临床和围产期医学领域,评估胎儿宫内健康状况,尤其是其发育成熟度,一直是一项核心且充满挑战的任务。传统的评估方法,如通过超声测量胎儿双顶径、股骨长等生物参数来估…...
独立开发者如何借助Taotoken应对大模型API调用波动
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 独立开发者如何借助Taotoken应对大模型API调用波动 对于独立开发者而言,项目的稳定性和可控成本是生存与发展的关键。在…...
Sora 2视频生成质量跃升47%的关键——Gaussian Splatting空间梯度重参数化技术(独家逆向工程报告)
更多请点击: https://intelliparadigm.com 第一章:Sora 2视频生成质量跃升47%的实证观测与技术归因 近期在多个基准测试中,Sora 2在UCF101-VideoQA、TVD和VidBench v2上的平均PSNR提升达47.2%,SSIM同步上升39.8%,关键…...
ADC输入噪声原理与工程优化策略
1. ADC输入噪声的本质与测量方法1.1 输入参考噪声的物理起源ADC输入参考噪声(Input-Referred Noise)本质上是由半导体器件内部的随机电子运动产生的物理现象。在模数转换器的前端电路中,主要存在两类噪声源:电阻热噪声(…...
前端开发者福音:用Vue.js开发的Beekeeper Studio,如何让SQL开发体验更‘现代’?
Vue.js与SQL工具的现代融合:Beekeeper Studio如何重塑开发者体验 当SQL开发者第一次打开Beekeeper Studio时,那种流畅的界面过渡和即时的语法补全反馈会让人误以为在使用一个现代Web应用——这恰恰是Vue.js赋予桌面应用的魔力。作为一款基于Electron和Vu…...
