STM32CubeMX配置STM32G0 Standby模式停止IWDG(HAL库开发)

1.打开STM32CubeMX选择好对应的芯片,打开IWDG

 2.打开串口1进行调试

 3.配置好时钟

 4.写好项目名称,选好开发环境,最后获取代码。 

5.打开工程,点击魔术棒,勾选Use Micro LIB

 6.修改main.c

#include "main.h"
#include "iwdg.h"
#include "usart.h"
#include "gpio.h"
#include <stdio.h>
#include <stm32_hal_legacy.h>void SystemClock_Config(void);extern	IWDG_HandleTypeDef hiwdg;void PWR_Enter_Standby(void)
{__HAL_RCC_PWR_CLK_ENABLE();if (__HAL_PWR_GET_FLAG(PWR_FLAG_SB) != RESET){__HAL_PWR_CLEAR_FLAG(PWR_FLAG_SB);if (__HAL_PWR_GET_FLAG(PWR_FLAG_WUF2) != RESET){__HAL_PWR_CLEAR_FLAG(PWR_FLAG_WUF2);}if (__HAL_PWR_GET_FLAG(PWR_FLAG_WUF4) != RESET){__HAL_PWR_CLEAR_FLAG(PWR_FLAG_WUF4);}}HAL_PWR_EnableWakeUpPin(PWR_WAKEUP_PIN2_HIGH);__HAL_PWR_CLEAR_FLAG(PWR_FLAG_WUF2);//HAL_PWR_EnableWakeUpPin(PWR_WAKEUP_PIN4_HIGH);HAL_PWR_EnterSTANDBYMode();
}void IWDG_OBProgram(void)
{/* 配置用户选项字节:在停止模式下冻结独立看门狗计数器 */FLASH_OBProgramInitTypeDef obprogram_init;/* 读取用户选项字节 */HAL_FLASHEx_OBGetConfig(&obprogram_init);printf("SYS USERConfig = 0x%x\r\n", obprogram_init.USERConfig);/* 判断FLASH_OPTR寄存器的IWDG_STDBY位是否置位(不判断也行) */if(obprogram_init.USERConfig & FLASH_OPTR_IWDG_STDBY){/* 置位则清零IWDG_STOP位 */obprogram_init.OptionType = OPTIONBYTE_USER;obprogram_init.USERType = OB_USER_IWDG_STDBY;obprogram_init.USERConfig = OB_IWDG_STDBY_FREEZE; obprogram_init.RDPLevel = OB_RDP_LEVEL_0;		/* 以下流程是根据手册上提供的 */HAL_FLASH_Unlock();HAL_FLASH_OB_Unlock();HAL_FLASHEx_OBProgram(&obprogram_init);HAL_FLASH_OB_Lock();HAL_FLASH_Lock();/* OBL_LAUNCH:选项字节重载位,用来生效上述更改(如果OPTLOCK为0,将此位置1,则会导致复位,如果 OPTLOCK为1,则此位无法写入,MCU复位后此位默认置1) */HAL_FLASH_OB_Launch();HAL_FLASHEx_OBGetConfig(&obprogram_init);printf("SET USERConfig = 0x%x\r\n", obprogram_init.USERConfig);}
}int main(void)
{HAL_Init();SystemClock_Config();HAL_Delay(1000);MX_GPIO_Init();MX_USART1_UART_Init();/* USER CODE BEGIN 2 */MX_IWDG_Init();IWDG_OBProgram();printf("code init \r\n");while (1){/* USER CODE END WHILE */HAL_IWDG_Refresh(&hiwdg); //HAL_Delay(500);printf("PWR_Enter_Standby\r\n");PWR_Enter_Standby();printf("code start\r\n");/* USER CODE BEGIN 3 */}/* USER CODE END 3 */
}/*** @brief System Clock Configuration* @retval None*/
void SystemClock_Config(void)
{RCC_OscInitTypeDef RCC_OscInitStruct = {0};RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};/** Configure the main internal regulator output voltage*/HAL_PWREx_ControlVoltageScaling(PWR_REGULATOR_VOLTAGE_SCALE1);/** Initializes the RCC Oscillators according to the specified parameters* in the RCC_OscInitTypeDef structure.*/RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI|RCC_OSCILLATORTYPE_LSI;RCC_OscInitStruct.HSIState = RCC_HSI_ON;RCC_OscInitStruct.HSIDiv = RCC_HSI_DIV1;RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;RCC_OscInitStruct.LSIState = RCC_LSI_ON;RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI;RCC_OscInitStruct.PLL.PLLM = RCC_PLLM_DIV1;RCC_OscInitStruct.PLL.PLLN = 8;RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;RCC_OscInitStruct.PLL.PLLR = RCC_PLLR_DIV2;if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK){Error_Handler();}/** Initializes the CPU, AHB and APB buses clocks*/RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK|RCC_CLOCKTYPE_PCLK1;RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK){Error_Handler();}
}/* USER CODE BEGIN 4 *//* USER CODE END 4 *//*** @brief  This function is executed in case of error occurrence.* @retval None*/
void Error_Handler(void)
{/* USER CODE BEGIN Error_Handler_Debug *//* User can add his own implementation to report the HAL error return state */__disable_irq();while (1){}/* USER CODE END Error_Handler_Debug */
}#ifdef  USE_FULL_ASSERT
/*** @brief  Reports the name of the source file and the source line number*         where the assert_param error has occurred.* @param  file: pointer to the source file name* @param  line: assert_param error line source number* @retval None*/
void assert_failed(uint8_t *file, uint32_t line)
{/* USER CODE BEGIN 6 *//* User can add his own implementation to report the file name and line number,ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) *//* USER CODE END 6 */
}
#endif /* USE_FULL_ASSERT */

7.串口打印,修改了OB_USER_IWDG_STDBY,系统看门狗复位一次后就没有再复位了。

 源码链接:跳转链接

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

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

相关文章

Hive(一)

一、DDL 1、数据库操作 1&#xff09;、创建数据库 语法&#xff1a; CREATE DATABASE [IF NOT EXISTS] database_name [COMMENT database_comment] [LOCATION hdfs_path] [WITH DBPROPERTIES (property_nameproperty_value, ...)]; 案例&#xff1a; &#xff08;1&…

OpenGL —— 2.5、绘制第一个三角形(附源码,glfw+glad)(更新:纹理贴图)

源码效果 C源码 纹理图片 需下载stb_image.h这个解码图片的库&#xff0c;该库只有一个头文件。 具体代码&#xff1a; vertexShader.glsl #version 330 corelayout(location 0) in vec3 aPos; layout(location 1) in vec3 aColor; layout(location 2) in vec2 aUV;out ve…

【Linux】socket编程(二)

目录 前言 TCP通信流程 TCP通信的代码实现 tcp_server.hpp编写 tcp_server.cc服务端的编写 tcp_client.cc客户端的编写 整体代码 前言 上一章我们主要讲解了UDP之间的通信&#xff0c;本章我们将来讲述如何使用TCP来进行网络间通信&#xff0c;主要是使用socket API进…

【ElasticSearch】一键安装ElasticSearch与Kibana以及解决遇到的问题

目录 一、安装ES 二、安装Kibana 三、遇到的问题 一、安装ES 按顺序复制即可 docker network create es-net # 创建网络 docker pull images:7.12.1 # 拉取镜像 mkdir -p /root/es/data # 创建数据卷 mkdir -p /root/es/plugins # 创建数据卷 chmod 777 /root/es/** # 设置权…

yolo笔记

目录 输入端Mosaic数据增强数据增强Copy-paste数据增强- MixUp数据增强- Albumentations数据增强- Augment HSV (Hue, Saturation, Value)色度、饱和度、浓度数据增强- Random horizontal flip自适应锚框计算自适应图片缩放 BackboneFocus结构CSP结构CSP结构Neck 损失函数IOU_L…

GitHub的PUSH显示网络超时,小乌龟网络代理办法

前言 &#xff08;1&#xff09;我能够正常访问GitHub&#xff0c;但是每次将代码提交到GitHub常常显示网络超时。这是因为提交是走的国内的网络&#xff0c;对GitHub访问会被进行限速。 &#xff08;2&#xff09;为了让小乌龟也拥有魔法&#xff0c;我们可以使用代理工具。注…

[golang gin框架] 46.Gin商城项目-微服务实战之后台Rbac客户端调用微服务权限验证以及Rbac微服务数据库抽离

一. 根据用户的权限动态显示左侧菜单微服务 1.引入 后台Rbac客户端调用微服务权限验证功能主要是: 登录后显示用户名称、根据用户的权限动态显示左侧菜单,判断当前登录用户的权限 、没有权限访问则拒绝,参考[golang gin框架] 14.Gin 商城项目-RBAC管理,该微服务功能和上一节[g…

快速指南:使用Termux SFTP通过远程进行文件传输——”cpolar内网穿透“

文章目录 1. 安装openSSH2. 安装cpolar3. 远程SFTP连接配置4. 远程SFTP访问4. 配置固定远程连接地址 SFTP&#xff08;SSH File Transfer Protocol&#xff09;是一种基于SSH&#xff08;Secure Shell&#xff09;安全协议的文件传输协议。与FTP协议相比&#xff0c;SFTP使用了…

IDEA创建Spring,Maven项目没有resources文件夹

有时新建Spring或Maven项目时&#xff0c;会出现目录中main下无resources文件夹的情况&#xff0c;来一起解决一下&#xff1a; FIles|Project Structure 在Modules模块找到对应路径&#xff0c;在main下创建resources&#xff0c;右键main&#xff0c;选择新文件夹 输入文件…

【Spring】一次性打包学透 Spring | 阿Q送书第五期

文章目录 如何竭尽可能确保大家学透Spring1. 内容全面且细致2. 主题实用且本土化3. 案例系统且完善4. 知识有趣且深刻 关于作者丁雪丰业内专家推图书热卖留言提前获赠书 不知从何时开始&#xff0c;Spring 这个词开始频繁地出现在 Java 服务端开发者的日常工作中&#xff0c;很…

js判断用户当前网络状态和判断网速

前端判断用户当前网络状态和判断网速 一、第一种是通过 HTML5 提供的 navigator 去检测网络(1)、原理介绍:(2)、兼容性 二、监听window.ononline和window.onoffline事件:三、通过ajax进行请求判断(兼容性好-推荐)(1)、原理介绍:(2)、注意: 四、navigator.connection方法监听网络…

使用本地电脑搭建可以远程访问的SFTP服务器

文章目录 1. 搭建SFTP服务器1.1 下载 freesshd 服务器软件1.3 启动SFTP服务1.4 添加用户1.5 保存所有配置 2. 安装SFTP客户端FileZilla测试2.1 配置一个本地SFTP站点2.2 内网连接测试成功 3. 使用cpolar内网穿透3.1 创建SFTP隧道3.2 查看在线隧道列表 4. 使用SFTP客户端&#x…

小程序定位到 胶囊的三个点大概中间

话不多说&#xff0c;先上效果图 这个功能实现思路: 首先先拿到这一张整图(快捷&#xff0c;精确)然后获取整个导航栏高度(自定义导航栏,非自定义导航栏忽略这一步)获取三个点的做偏移量&#xff0c;把高度和偏移量给到一个定位到盒子&#xff0c;这个盒子里就放这个图片&…

【C语言】扫雷游戏(可展开)——超细教学

&#x1f6a9;纸上得来终觉浅&#xff0c; 绝知此事要躬行。 &#x1f31f;主页&#xff1a;June-Frost &#x1f680;专栏&#xff1a;C语言 &#x1f525;该篇将运用数组来实现 扫雷游戏。 目录&#xff1a; &#x1f31f;思路框架测试游戏 &#x1f31f;测试部分函数实现&am…

【0824作业】C++ 拷贝赋值函数、匿名对象、友元、常成员函数和常对象、运算符重载

一、思维导图 二、作业&#xff1a;实现关系运算符的重载 关系运算符重载 概念&#xff1a; 种类&#xff1a;>、>、< 、< 、 、!表达式&#xff1a;L#R (L表示左操作数&#xff0c;R表示有操作数&#xff0c;#表示运算符)左操作数&#xff1a;既可以是左值也可以…

tcl学习之路(五)(Vivado时序约束)

1.主时钟约束 主时钟通常是FPGA器件外部的板机时钟或FPGA的高速收发器输出数据的同步恢复时钟信号等。下面这句语法大家一定不会陌生。该语句用于对主时钟的名称、周期、占空比以及对应物理引脚进行约束。 create_clock -name <clock_name> -periood <period> -wa…

学习JAVA打卡第三十八天

String 类的常用方法 ⑴public int length&#xff08;&#xff09; String 类中的length&#xff08;&#xff09;方法获取了一个String对象的字符序列的长度&#xff0c;例如&#xff1a; String china “1945年抗战胜利”&#xff1b; int n1,n2&#xff1b; n1china.leng…

python并发编程

一、程序提速的方法 二、python对并发编程的支持 多线程&#xff1a;threading&#xff0c;利用CPU和IO可以同时执行的原理&#xff0c;让CPU不会干巴巴等待IO完成&#xff1b;多进程&#xff1a;multiprocess&#xff0c;利用多核CPU的能力&#xff0c;真正的并行执行任务&am…

数据结构入门 — 链表详解_单链表

前言 数据结构入门 — 单链表详解* 博客主页链接&#xff1a;https://blog.csdn.net/m0_74014525 关注博主&#xff0c;后期持续更新系列文章 文章末尾有源码 *****感谢观看&#xff0c;希望对你有所帮助***** 系列文章 第一篇&#xff1a;数据结构入门 — 链表详解_单链表 第…

pycharm远程连接docker容器

pycharm远程连接docker容器 1.根据镜像创建容器2.进入容器3.修改容器的root密码4. 容器安装openssh-server和openssh-client5.修改SSH配置文件6.重启ssh服务7. 退出测试8.配置pycharm并连接docker容器9. 选择docker环境 1.根据镜像创建容器 sudo docker run -itd --nameconn_t…