STM32开发——电动车报警装置

news2025/2/26 22:17:08

1.项目简介

1.1项目需求

点击遥控器 A 按键,系统进入警戒模式,一旦检测到震动(小偷偷车),则喇叭发出声响报警,
吓退小偷。
点击遥控器 B 按键,系统退出警戒模式,再怎么摇晃系统都不会报警,否则系统一直发出尖叫,
让车主尴尬。

硬件清单

  1. 振动传感器
  2. 继电器
  3. 高功率喇叭
  4. 433M无线接收发射模块
  5. 杜邦线

2 振动传感器介绍及实战

单片机供电VCC GND接单片机
产品不震动,输出高电平,模块上的DO口
产品震动,输出低电平,绿色指示灯亮
AO口不用

编程实现
需求:当振动传感器接收到振动信号时,使用中断方式点亮LED1。

重新中断服务函数

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
	//如果中断来源是PA4  PA4为低进入了中断
	//led1亮500ms后熄灭
	if(GPIO_Pin==GPIO_PIN_4){
		HAL_GPIO_WritePin(GPIOB,GPIO_PIN_8, GPIO_PIN_RESET);
		HAL_Delay(1000);
		HAL_GPIO_WritePin(GPIOB,GPIO_PIN_8, GPIO_PIN_SET);
	}
}

如果直接在中断服务函数里调用 HAL_Delay 函数,则会造成系统卡死。
原因:程序初始化时默认把滴答定时器的中断优先级设为最低,其它中断源很容易打断它导致卡
死。
解决:在 main 函数里使用以下函数提高滴答定时器的中断优先级(提升至0),将外部中断优先级设置为1。

HAL_NVIC_SetPriority(SysTick_IRQn,0,0);

CubeMX厉害的是改变配置后,生成代码,而自己写的代码不会被覆盖。

3.项目设计及实现

项目设计
//如果检测到PA4被拉低(小偷偷车),并且警报模式打开
    //则将PB7拉低,继电器通电,喇叭一直响
// 如果检测到PA5被拉高(按键A按下),设定为开启警报模式
    // 则将PB7拉低(喇叭响),2秒后恢复电平(喇叭不响),表示进入警报模式
    // 同时将标志位设置为ON
// 如果检测到PA6被拉高(按键B按下),设定为关闭警报模式
    // 则将PB7拉低(喇叭响),1秒后恢复电平(喇叭不响),表示关闭警报模式
    // 同时将标志位设置为OFF

  • 振动时产生低电平
  • 433M接受时产生高电平
  • 继电器需要低电平

 PA4、PA5、PA6介进入外部中断

中断函数代码。

	void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
	{
		static char viberator_flag=turn_off;
		switch(GPIO_Pin){
			case GPIO_PIN_4:
				if(viberator_flag==turn_on){
					HAL_GPIO_WritePin(GPIOB, GPIO_PIN_7,GPIO_PIN_RESET);
					HAL_Delay(2000);
					HAL_GPIO_WritePin(GPIOB, GPIO_PIN_7,GPIO_PIN_SET);
				}
				break;
			case GPIO_PIN_5:
				viberator_flag=turn_on;
				HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8,GPIO_PIN_RESET);
				break;
			case GPIO_PIN_6:
				viberator_flag=turn_off;
				HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8,GPIO_PIN_SET);
				HAL_GPIO_WritePin(GPIOB, GPIO_PIN_7,GPIO_PIN_SET);
				break;
		
		}
	}

这里需要注意:
1.设置定时中断级别为(0,2)高于外部中断4
2.设置外部中断5、6级别为(0,0)可以随时打断定时器中断——防止一直叫

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/618722.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

通过项目驱动的学习方法快速掌握Java编程

摘要 Java作为一种广泛应用于软件开发领域的编程语言,对于零基础的学习者来说,学习Java编程可能存在一定的难度。本文将介绍如何通过项目驱动的学习方法,帮助零起点的学习者快速掌握Java编程。通过以项目为核心的学习路径、结合实践和理论的…

【Pytorch】自定义模型、自定义损失函数及模型删除修改层的常用操作

目录 问题一:更改模型最后一层,删除最后一层问题二:自定义模型及参数冻结问题三:自定义损失函数及广播机制 问题1:更改模型最后一层,删除最后一层,添加层。 改变模型最后一层 # Load the mo…

Jmter自动化

一、接口测试流程 1、拿到api接口文档,熟悉接口业务。 2、编写测试用例。 正例:正常参数,是否接口正常 反例:鉴权异常情况、参数异常、兼容性、黑名单、调用次数异常 3、使用接口测试用具(Jmeter) 4、…

chatgpt赋能python:Python安装gym:入门指南

Python安装gym: 入门指南 如果您是一位正在学习强化学习的学生,或者是一位研究者、开发人员,那么您一定会对OpenAI出品的gym库感兴趣。该库为编写和比较强化学习算法提供了一组标准环境。但是,在使用gym之前,您需要将其安装到您的…

ThinkPad无法进系统的解决方案(实测)

ThinkPad无法进系统如何解决? 不一样的笔记本进到BIOS的方法是不太一样的,下面就和大伙儿具体解读电脑上进到thinkpad的bios设置启动项的方法吧。 在开机或重启的Lenovo画面自检处,快速、连续多次按键盘的“F1”按键,即可进入BI…

基于html+css的图展示112

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

PHP实现文件上传

上传文件的必备三个条件: 1、上传到后台的文件 2、method "post";(不可以为get方法) 3、enctype "multipart/form-data";(注意哦,是data,不是date) 三者缺一不可 后台…

抛弃传统网络?SDN协议、标准、接口对比分析!

概要: 随着网络规模的不断扩大和复杂性的增加,传统的网络架构已经难以满足日益增长的网络需求。SDN(Software Defined Networking)技术的出现,为网络的管理和控制带来了革命性的变化。SDN的核心思想是将网络的控制和管…

chatgpt赋能python:Python如何访问文件

Python如何访问文件 Python是一种优秀的编程语言,被广泛应用于各种领域,包括文件处理。在Python中,我们可以使用内置的文件处理功能访问文件。 什么是文件? 文件是计算机系统中的一种数据存储形式。它们可以包含任何类型的信息…

u盘视频丢失怎么找回?居然还得靠它

u盘视频丢失怎么找回?U盘作为一款常用的存储数据的工具,因为其自身的小巧便携,方便我们随身携带,深受广大用户的喜爱。在使用U盘的过程中,我们也会遇到一些文件丢失的麻烦,比如误删除里面的视频文件。当遇到…

浅谈 Tarjan 算法

在了解 Tarjan 算法之前,我们先来了解 dfs 搜索树。 1 dfs 生成树 定义: dfs 遍历整张图,按照 dfs 序构成一棵树。 1.1 有向图的 dfs 生成树 有向图的 dfs 生成树包括四种边: 树边(tree edge)&#xff…

CDC是什么?有没有合适的技术方案?

CDC 是 Change Data Capture(变更数据获取)的简称。核心思想是,监测并捕获数据库的 变动(包括数据或数据表的插入、更新以及删除等),将这些变更按发生的顺序完整记录下 来,写入到消息中间件中以供其他服务进行订阅及…

阿里、百度、值得买齐发声,电商的“AIGC式”进化

配图来自Canva可画 一年一度618要来了,和往年一样折扣力度、明星直播等话题被炒得火热,不同的是今年618的科技属性更强。 究其原因,过去半年AIGC技术被电商平台应用到实际运营中,“AIGC选品”、“虚拟货场”、“智能客服”成为电商…

《MySQL(六):基础篇- 事务》

文章目录 6. 事务6.1 事务简介6.2 事务操作6.2.1 未控制事务6.2.2 控制事务一6.2.3 控制事务二 6.3 事务四大特性6.4 并发事务问题6.5 事务隔离级别 6. 事务 6.1 事务简介 事务 是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一…

【机器学习】神经网络入门

神经网络 非线性假设 如果对于下图使用Logistics回归算法,如果只有x1和x2两个特征的时候,Logistics回归还是可以较好地处理的。它可以将x1和x2包含到多项式中 但是有很多问题所具有的特征远不止两个,甚至是上万个,如果我们想要…

MySQL数据库给表添加索引

说明:当数据库中的记录数过多时,查询速度会显著变慢。此时可以给表创建索引,提高查询速度。 一、创建索引前 我现在有一张表,有1000万条记录,根据username值,查询一条记录,测试下查询时间&…

赛宁网安助力智能网联汽车发展 | “饶派杯”XCTF车联网安全挑战赛圆满收官

​​ 2023年5月31日,“饶派杯”XCTF车联网安全挑战赛在江西省上饶市圆满落幕。本次大赛特邀国内21支精英战队参与比拼,参赛选手覆盖全国知名高校、自动驾驶汽车和科研院所等车联网安全人才。最终,经过9个小时激烈角逐,来自南京邮电…

chatgpt赋能python:Python自动更新技术的应用

Python自动更新技术的应用 Python是一款高效的编程语言,广泛应用于各种软件开发、数据分析及人工智能等领域。随着大数据和人工智能的快速发展,Python语言的应用也日益普及,更多的企业和个人开始使用Python编写自己的程序。而随着程序的使用…

上榜“网络安全企业科技能力百强”啦!

最新公布的《2023网络安全企业科技能力报告》显示,顶象在“2023网络安全企业科技能力百强”和“2023网络安全企业有效专利数量百强”等两个榜单中均处于前列。 《2023网络安全企业科技能力报告》由中关村网络安全与信息化产业联盟发布,旨在探究网络安全…

微信开发者工具公众号网页项目实现本地项目调试

背景 最近业务场景中有需要微信H5进行实现,需要网页授权,需要用户进行点击授权的操作,跳转一个微信公众号后台设置的授权域名下的网页后才能获取到code,其他网页授权步骤这里不进行展开,不想频繁的打包上传的服务器看实现效果,所以考虑从微信开发者工具中实现本地调试,搜索过相…