上位机图像处理和嵌入式模块部署(f103 mcu中的看门狗)

2024-05-26 09:04

本文主要是介绍上位机图像处理和嵌入式模块部署(f103 mcu中的看门狗),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        项目开发中,我们总是希望固件代码能够稳定、健壮。为此,我们进行了各种软件质量管理,从需求开发开始,一直到静态检查、单元测试、代码review、黑盒测试、压力测试等等。但是,谁也不能保证,经过这样的流程验证之后,软件质量就是万无一失的。所以,为了解决mcu死锁的问题,人们设计了开门狗这个功能。

        所谓的看门狗,就是要求我们单位时间内必须有一个喂狗操作。如果没有做到这一点,那么系统就会reset复位重启。为什么做不到这一点呢?一般就是程序跑飞,或者是系统进入了死循环状态。看门狗只是我们系统开发的底线,并不意味着我们就不需要做好软件质量的管理了。

        今天,我们继续看下stm32f103下面看门狗是怎么做的?

1、直接查看main函数

        main函数是系统功能的主窗口,我们从这里出发,

int main(void)
{SystemClock_Config();LED_GPIO_Config();	 LED1_OFF;Key_GPIO_Config();IWDG_Config(IWDG_PRESCALER_64 ,625);HAL_Delay(200);while(1)                            {	   if( Key_Scan(KEY1_GPIO_PORT,KEY1_PIN) == KEY_ON ){ HAL_IWDG_Refresh(&IWDG_Handle);}LED1_ON;		}
}

        代码本身并不复杂。首先设置时钟,接着配置LED,并且把LED熄灭。然后配置输入key。这一切都做完之后,就到了今天的重点,配置和启动看门狗,时间为1s。这个地方,我们延时200ms,主要是为了观察使用,使得系统启动后有一个明显的熄灯动作。

        初始化都做完之后,下面就是开始循环检测。如果系统发现KEY1被按下去的时候,那么定时喂狗,LED持续点亮。如果没有,那么我们可以看到,LED灯周期性熄灭,这主要是发生了系统重启复位。

2、看门狗初始化

        关于看门狗的设置,建议会使用、会配置参数就好了,

void IWDG_Config(uint8_t prv ,uint16_t rlv)
{	IWDG_Handle.Instance = IWDG;IWDG_Handle.Init.Prescaler = prv;IWDG_Handle.Init.Reload = rlv;HAL_IWDG_Init(&IWDG_Handle);
}

3、喂狗操作

        这里喂狗的操作直接调用了HAL_IWDG_Refresh函数即可。

4、其他所要做的修改

        因为我们测试的是stm32f103核心板,和代码匹配的板子不一样,所以一部分配置需要修改下。第一,LED需要绑定到pc13上面;第二,只需要一个a0 key,另外一个可以删除掉;第三,Key_Scan函数修改成非阻塞的形式;第四,SysTick_Handler中一定要添加HAL_IncTick,不然HAL_Delay会hang在那里。

uint8_t Key_Scan(GPIO_TypeDef* GPIOx,uint16_t GPIO_Pin)
{if(HAL_GPIO_ReadPin(GPIOx,GPIO_Pin) == KEY_ON )  {	 return 	KEY_ON;	 }else{return KEY_OFF;}
}

5、编译、测试

        测试相对就比较简单了。首先我们确保编译没有问题,接着通过st-link v2下载到开发板上,最后用短接线把a0和gnd或者3.3v进行短接。观察一下,如果接到gnd发生了闪烁,但是接到3.3v没有闪烁,这就代表看门狗发挥了效果。反之,就要去好好检查失败的原因了。

        另外为了测试方便,可以把烧录后重启勾选上,

这篇关于上位机图像处理和嵌入式模块部署(f103 mcu中的看门狗)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1004026

相关文章

使用IDEA部署Docker应用指南分享

《使用IDEA部署Docker应用指南分享》本文介绍了使用IDEA部署Docker应用的四步流程:创建Dockerfile、配置IDEADocker连接、设置运行调试环境、构建运行镜像,并强调需准备本... 目录一、创建 dockerfile 配置文件二、配置 IDEA 的 Docker 连接三、配置 Do

MySQL 主从复制部署及验证(示例详解)

《MySQL主从复制部署及验证(示例详解)》本文介绍MySQL主从复制部署步骤及学校管理数据库创建脚本,包含表结构设计、示例数据插入和查询语句,用于验证主从同步功能,感兴趣的朋友一起看看吧... 目录mysql 主从复制部署指南部署步骤1.环境准备2. 主服务器配置3. 创建复制用户4. 获取主服务器状态5

golang程序打包成脚本部署到Linux系统方式

《golang程序打包成脚本部署到Linux系统方式》Golang程序通过本地编译(设置GOOS为linux生成无后缀二进制文件),上传至Linux服务器后赋权执行,使用nohup命令实现后台运行,完... 目录本地编译golang程序上传Golang二进制文件到linux服务器总结本地编译Golang程序

Python通用唯一标识符模块uuid使用案例详解

《Python通用唯一标识符模块uuid使用案例详解》Pythonuuid模块用于生成128位全局唯一标识符,支持UUID1-5版本,适用于分布式系统、数据库主键等场景,需注意隐私、碰撞概率及存储优... 目录简介核心功能1. UUID版本2. UUID属性3. 命名空间使用场景1. 生成唯一标识符2. 数

如何在Ubuntu 24.04上部署Zabbix 7.0对服务器进行监控

《如何在Ubuntu24.04上部署Zabbix7.0对服务器进行监控》在Ubuntu24.04上部署Zabbix7.0监控阿里云ECS服务器,需配置MariaDB数据库、开放10050/1005... 目录软硬件信息部署步骤步骤 1:安装并配置mariadb步骤 2:安装Zabbix 7.0 Server

Python中re模块结合正则表达式的实际应用案例

《Python中re模块结合正则表达式的实际应用案例》Python中的re模块是用于处理正则表达式的强大工具,正则表达式是一种用来匹配字符串的模式,它可以在文本中搜索和匹配特定的字符串模式,这篇文章主... 目录前言re模块常用函数一、查看文本中是否包含 A 或 B 字符串二、替换多个关键词为统一格式三、提

SQLite3 在嵌入式C环境中存储音频/视频文件的最优方案

《SQLite3在嵌入式C环境中存储音频/视频文件的最优方案》本文探讨了SQLite3在嵌入式C环境中存储音视频文件的优化方案,推荐采用文件路径存储结合元数据管理,兼顾效率与资源限制,小文件可使用B... 目录SQLite3 在嵌入式C环境中存储音频/视频文件的专业方案一、存储策略选择1. 直接存储 vs

嵌入式数据库SQLite 3配置使用讲解

《嵌入式数据库SQLite3配置使用讲解》本文强调嵌入式项目中SQLite3数据库的重要性,因其零配置、轻量级、跨平台及事务处理特性,可保障数据溯源与责任明确,详细讲解安装配置、基础语法及SQLit... 目录0、惨痛教训1、SQLite3环境配置(1)、下载安装SQLite库(2)、解压下载的文件(3)、

一文深入详解Python的secrets模块

《一文深入详解Python的secrets模块》在构建涉及用户身份认证、权限管理、加密通信等系统时,开发者最不能忽视的一个问题就是“安全性”,Python在3.6版本中引入了专门面向安全用途的secr... 目录引言一、背景与动机:为什么需要 secrets 模块?二、secrets 模块的核心功能1. 基

Web技术与Nginx网站环境部署教程

《Web技术与Nginx网站环境部署教程》:本文主要介绍Web技术与Nginx网站环境部署教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、Web基础1.域名系统DNS2.Hosts文件3.DNS4.域名注册二.网页与html1.网页概述2.HTML概述3.