当前位置: 首页 > news >正文

STM32-PWR和WDG看门狗

本内容基于江协科技STM32视频学习之后整理而得。

文章目录

  • 1. PWR
    • 1.1 PWR简介
    • 1.2 电源框图
    • 1.3 上电复位和掉电复位
    • 1.4 可编程电压监测器
    • 1.5 低功耗模式
    • 1.6 模式选择
    • 1.7 睡眠模式
    • 1.8 停止模式
    • 1.9 待机模式
    • 1.10 库函数
  • 2. WDG看门狗
    • 2.1 WDG简介
    • 2.2 IWDG框图
    • 2.3 IWDG键寄存器
    • 2.4 IWDG超时时间
    • 2.5 WWDG框图
    • 2.6 WWDG工作特性
    • 2.7 WWDG超时时间
    • 2.8 IWDG和WWDG对比
    • 2.9 独立看门狗库函数
    • 2.10 窗口看门狗库函数

1. PWR

1.1 PWR简介

  • PWR(Power Control)电源控制
  • PWR负责管理STM32内部的电源供电部分,可以实现可编程电压监测器和低功耗模式的功能
  • 可编程电压监测器(PVD)可以监控VDD电源电压,当VDD下降到PVD阀值以下或上升到PVD阀值之上时,PVD会触发中断,用于执行紧急关闭任务
  • 低功耗模式包括睡眠模式(Sleep)、停机模式(Stop)和待机模式(Standby),可在系统空闲时,降低STM32的功耗,延长设备使用时间

1.2 电源框图

image.png

  • 上面是模拟部分供电:包括AD转换器、温度传感器、复位模块、PLL锁相环。供电正极是VDDA,负极是VSSA。AD转换器还有两个参考电压的引脚VREF+和VREF-。
  • 中间是数字部分供电,包括VDD供电区域和1.8V供电区域。VDD供电区域包括I/O电路、待机电路(唤醒逻辑、IWDG),右边是VDD通过电压调节器降压到1.8V。1.8V供电区域包括CPU核心、存储器和内置数字外设。
  • 下面是后备供电VBAT,包括LSE_32K晶体振荡器、后备寄存器、RCC_BDCR寄存器(是RCC的寄存器,叫做备份域控制寄存器)、RTC

1.3 上电复位和掉电复位

image.png
当VDD、VDDA电压过低时,内部电路直接产生复位,让STM32复位住,不要乱操作。在复位与不复位之间设置了一个40mV迟滞电压,大于上限POR时解除复位,小于下限PDR时复位。设置两个阈值的作用,
就是防止电压在某个阈值附近波动时,造成输出也来回抖动。复位信号Reset是低电平有效的,所以在前面和后面,电压过低时,是复位的。
中间电压正常的时候,不复位。

1.4 可编程电压监测器

image.png
与上电复位和掉电复位差不多。但首先它的这个阈值电压是可以使用程序指定的,可以自定义调节。

1.5 低功耗模式

image.png

  • 睡眠模式通过WFI和WFE就可进入,WFI和WFE是内核的指令。
    • WFI(Wait For Interrupt)等待中断。唤醒条件是任一中断,通过WFI指令进入睡眠模式,当任何外设发生任何中断时,芯片就会立刻醒来,醒来后就是处理中断函数。
    • WFE(Wait For Event)等待事件,唤醒条件是唤醒事件,该事件可以是外部中断配置为事件模式,也可以是使能了中断,但没有配置NVIC。调用WFE进入的睡眠模式,产生唤醒事件时,会立刻醒来,醒来之后,一般不需要进中断函数,直接从睡的地方继续运行。
    • 睡眠模式对电路的影响是:只把CPU时钟关了,对其他电路没有任何操作。CPU时钟关了,程序就会暂停,不会继续运行了。CPU 不运行,芯片功耗就会降低。关闭电路一般有两个做法:一个是关闭时钟,另一个是关闭电源。关闭时钟,所有的运算和涉及时序的操作都会暂停。但寄存器和存储器里保存的数据还可以维持,不会消失。关闭电源,就是电路直接断电。电路的操作和数据会直接丢失。所以关闭电源比关闭时钟更省电。
  • 停机模式:SLEEPDEEP设置为1,即将深度睡眠。
    • PDDS是用来区分是停机模式还是待机模式,PDDS=0进入停机模式,PDDS=1进入待机模式,LPDS用来设置电压调节器,LPDS=0开启,LPDS=1进入低功耗模式。再调用WFI或WFE,芯片就进入停止模式了。任一外部中断唤醒。PVD、TRC闹钟、USB唤醒、ETH唤醒借道了外部中断,这4个信号也可以唤醒停止模式。
    • 对时钟的影响:CPU、定时器、串口都会停止运行,但由于没有关闭电源,所以CPU和外设的寄存器数据都是维持原状的。HSI和HSE的振荡器关闭。
  • 待机模式:SLEEPDEEP置1,PDDS=1,再调用WFI或WFE,芯片就进入待机模式了。
    • 普通外设的中断和外部中断都无法唤醒待机模式,只有:WKUP引脚的上升沿、RTC闹钟事件、NRST引脚上的外部复位、IWDG复位。把能关的全关了,只保留几个唤醒的功能。

1.6 模式选择

  • 执行WFI(Wait For Interrupt)或者WFE(Wait For Event)指令后,STM32进入低功耗模式

image.png

1.7 睡眠模式

  • 执行完WFI/WFE指令后,STM32进入睡眠模式,程序暂停运行,唤醒后程序从暂停的地方继续运行
  • SLEEPONEXIT位决定STM32执行完WFI或WFE后,是立刻进入睡眠,还是等STM32从最低优先级的中断处理程序中退出时进入睡眠
  • 在睡眠模式下,所有的I/O引脚都保持它们在运行模式时的状态
  • WFI指令进入睡眠模式,可被任意一个NVIC响应的中断唤醒
  • WFE指令进入睡眠模式,可被唤醒事件唤醒

1.8 停止模式

  • 执行完WFI/WFE指令后,STM32进入停止模式,程序暂停运行,唤醒后程序从暂停的地方继续运行
  • 1.8V供电区域的所有时钟都被停止,PLL、HSI和HSE被禁止,SRAM和寄存器内容被保留下来
  • 在停止模式下,所有的I/O引脚都保持它们在运行模式时的状态
  • 当一个中断或唤醒事件导致退出停止模式时,HSI被选为系统时钟
  • 当电压调节器处于低功耗模式下,系统从停止模式退出时,会有一段额外的启动延时
  • WFI指令进入停止模式,可被任意一个EXTI中断唤醒
  • WFE指令进入停止模式,可被任意一个EXTI事件唤醒

1.9 待机模式

  • 执行完WFI/WFE指令后,STM32进入待机模式,唤醒后程序从头开始运行
  • 整个1.8V供电区域被断电,PLL、HSI和HSE也被断电,SRAM和寄存器内容丢失,只有备份的寄存器和待机电路维持供电
  • 在待机模式下,所有的I/O引脚变为高阻态(浮空输入)
  • WKUP引脚的上升沿、RTC闹钟事件的上升沿、NRST引脚上外部复位、IWDG复位退出待机模式

1.10 库函数

// 恢复缺省配置
void PWR_DeInit(void);
// 使能后备区域的访问
void PWR_BackupAccessCmd(FunctionalState NewState);
// 使能PVD
void PWR_PVDCmd(FunctionalState NewState);
// 配置PVD的阈值电压
void PWR_PVDLevelConfig(uint32_t PWR_PVDLevel);
// 使能位于PA0位置的WKUP引脚,配合待机模式使用
void PWR_WakeUpPinCmd(FunctionalState NewState);
// 进入停止模式
void PWR_EnterSTOPMode(uint32_t PWR_Regulator, uint8_t PWR_STOPEntry);
// 进入待机模式
void PWR_EnterSTANDBYMode(void);FlagStatus PWR_GetFlagStatus(uint32_t PWR_FLAG);
void PWR_ClearFlag(uint32_t PWR_FLAG);

2. WDG看门狗

2.1 WDG简介

  • WDG(Watchdog)看门狗
  • 看门狗可以监控程序的运行状态,当程序因为设计漏洞、硬件故障、电磁干扰等原因,出现卡死或跑飞现象时,看门狗能及时复位程序,避免程序陷入长时间的罢工状态,保证系统的可靠性和安全性
  • 看门狗本质上是一个定时器,当指定时间范围内,程序没有执行喂狗(重置计数器)操作时,看门狗硬件电路就自动产生复位信号
  • STM32内置两个看门狗
    • 独立看门狗(IWDG):独立工作,对时间精度要求较低
    • 窗口看门狗(WWDG):要求看门狗在精确计时窗口起作用

2.2 IWDG框图

image.png
预分频器的输入时钟是LSI(内部低速时钟),时钟频率是40kHz。之后,时钟进入预分频器进行分频,预分频器只有8位,最大只能进行256分频。预分频寄存器IWDG_PR,可以配置分频系数。经过预分频器进行分频之后,时钟驱动递减计数器,每来一个时钟,自减一个数,递减计数器是12位的,所以最大值是2^12-1=4095,当自减到0之后,产生IWDG复位。为了避免提前复位,可以提前在重装寄存器写一个值,IWDG_RLR和定时器的ARR一样,预先写好值之后,在键寄存器里写一个特定数据,控制电路,进行喂狗,这时重装值就会复制到当前的计数器中,这样计数器就会回到重装值,重新自减运行了。
状态寄存器SR:标志电路运行的状态,

2.3 IWDG键寄存器

  • 键寄存器本质上是控制寄存器,用于控制硬件电路的工作
  • 在可能存在干扰的情况下,一般通过在整个键寄存器写入特定值来代替控制寄存器写入一位的功能,以降低硬件电路受到干扰的概率
写入键寄存器的值作用
0xCCCC启用独立看门狗
0xAAAAIWDG_RLR中的值重新加载到计数器(喂狗)
0x5555解除IWDG_PR和IWDG_RLR的写保护
0x5555之外的其他值启用IWDG_PR和IWDG_RLR的写保护

2.4 IWDG超时时间

超时时间:TIWDG = TLSI × PR预分频系数 × (RL + 1)
其中:TLSI = 1 / FLSI
image.png

2.5 WWDG框图

image.png

  • 时钟来源是PCLK1,即APB1的时钟,默认是36MHz,时钟进来之后,先经过一个预分频器进行分频,分频之后的时钟驱动计数器进行计数,每来一个时钟,自减一次。该计数器之后T5~T0是有效的计数值,最高位T6用来当作溢出标志位,T6=1表示计数器没溢出,T6=0表示计数器溢出。
  • WDGA是窗口看门狗的激活位,也是使能,WDGA写入1,启用窗口看门狗,使能位作用于这个与门,与门的作用就类似于一个开关,左边是控制信号,右边是输入,上边是输出,控制信号为1,则输出等于输入,开关导通,控制信号给0,则输出等于0,与输入无关,开关断开。开关右边就是复位信号的来源,有两个来源,用或门连接,也就是这两个来源任意一个都可以复位,下面这一路来源于溢出标志位T6,当计数器溢出时T6等于0。然后输入进来,这里输入有个小圆圈,代表输入取反,所以0变为1,或门有效,输出1,当最后这个使能位给1,开启看门狗后,溢出信号就直接通向复位了。T6位一旦等于0,就表示计数器溢出,就产生复位信号。在程序正常运行状态下,必须始终保证T6位为1,这样才能避免复位。
  • 喂狗的最早界限由上面的看门狗配置寄存器设置。首先需要计算一个最早界限的计数值,写入W6~W0。这些值写入之后是固定不变的。一旦执行写入WWDG_CR操作时,与门开关就会打开。写入CR就是写入计数器,也就是喂狗。在喂狗时,比较器开始工作,一旦当前计数器T6:0>窗口值W6:0,比较结果就=1,这个1,通过或门也可以去申请复位。
  • 总结:喂狗太晚,6位计数器减到0了,复位;喂狗太早,计数器的值超过窗口值了,复位。

2.6 WWDG工作特性

  • 递减计数器T[6:0]的值小于0x40时,WWDG产生复位(0x3F)
  • 递减计数器T[6:0]在窗口W[6:0]外被重新装载时,WWDG产生复位----不能过早喂狗
  • 递减计数器T[6:0]等于0x40时可以产生早期唤醒中断(EWI),用于重装载计数器以避免WWDG复位----
  • 定期写入WWDG_CR寄存器(喂狗)以避免WWDG复位

image.png

2.7 WWDG超时时间

  • 超时时间:就是喂狗的最晚时间

    TWWDG = TPCLK1 × 4096 × WDGTB预分频系数 × (T[5:0] + 1)

  • 窗口时间:喂狗的最早时间

    TWIN = TPCLK1 × 4096 × WDGTB预分频系数 × (T[5:0] - W[5:0])

  • 其中:TPCLK1 = 1 / FPCLK1

image.png

2.8 IWDG和WWDG对比

WDG独立看门狗WWDG窗口看门狗
复位计数器减到0后计数器T[5:0]减到0后、过早重装计数器
中断早期唤醒中断
时钟源LSI(40KHz)PCLK1(36MHz)
预分频系数4、8、32、64、128、2561、2、4、8
计数器12位6位(有效计数)
超时时间0.1ms~26214.4ms113us~58.25ms
喂狗方式写入键寄存器,重装固定值RLR直接写入计数器,写多少重装多少
防误操作键寄存器和写保护
用途独立工作,对时间精度要求较低要求看门狗在精确计时窗口起作用

2.9 独立看门狗库函数

// 写使能控制,0x5555
void IWDG_WriteAccessCmd(uint16_t IWDG_WriteAccess);
// 写预分频器
void IWDG_SetPrescaler(uint8_t IWDG_Prescaler);
// 写重装值
void IWDG_SetReload(uint16_t Reload);
// 重新装载寄存器,即喂狗,0xAAAA
void IWDG_ReloadCounter(void);
// 启动独立看门狗,0xCCCC
void IWDG_Enable(void);FlagStatus IWDG_GetFlagStatus(uint16_t IWDG_FLAG);// 查看标志位函数,来看复位是不是看门狗引起的
FlagStatus RCC_GetFlagStatus(uint8_t RCC_FLAG);
void RCC_ClearFlag(void);

2.10 窗口看门狗库函数

// 恢复缺省配置
void WWDG_DeInit(void);// 写入预分频器
void WWDG_SetPrescaler(uint32_t WWDG_Prescaler);
// 写入窗口值
void WWDG_SetWindowValue(uint8_t WindowValue);
// 使能中断
void WWDG_EnableIT(void);
// 写入计数器,即喂狗
void WWDG_SetCounter(uint8_t Counter);
// 使能窗口看门狗
void WWDG_Enable(uint8_t Counter);FlagStatus WWDG_GetFlagStatus(void);
void WWDG_ClearFlag(void);

相关文章:

STM32-PWR和WDG看门狗

本内容基于江协科技STM32视频学习之后整理而得。 文章目录 1. PWR1.1 PWR简介1.2 电源框图1.3 上电复位和掉电复位1.4 可编程电压监测器1.5 低功耗模式1.6 模式选择1.7 睡眠模式1.8 停止模式1.9 待机模式1.10 库函数 2. WDG看门狗2.1 WDG简介2.2 IWDG框图2.3 IWDG键寄存器2.4 …...

C++循环队列 经典示例

循环队列(Circular Queue),又称环形缓冲区,是一种常用的数据结构,特别适用于资源有限的场合,比如操作系统中的任务调度、网络数据缓冲等。循环队列在数组的基础上实现,逻辑上首尾相连&#xff0…...

【程序大侠传】大表分库分表切换数据库类型导致pagehelper生成sql语法报错

前序 代码剑宗等级分明,其门下弟子等级划分如下: 入门弟子 刚刚拜入代码剑宗,学习基础编程语言和基本剑法(语法和基础概念)。他们的代码还显得生涩,但已经开始展现出对优雅代码的追求。 江湖小虾 初步掌握…...

7、Redis 队列与 Stream

引言 Redis 自 5.0 版本起引入了一种新的数据结构——Stream。这种数据结构不仅增加了 Redis 的数据处理能力,还使其在消息队列和数据流处理方面更具竞争力。Stream 提供了持久化、多播、消费组等功能,可以满足多种复杂的数据处理需求。 1. Redis Stre…...

FFT剖析

快速傅里叶变换 (fast Fourier transform) xn{x0,x1,…xn-1} (num:N) 旋转因子系数: d2pik/N 旋转因子 wk(n)(cos(dn)isin(dn)) n[0,N-1] y(k) sum(x(n)wk(n),0,N-1) y(k){y(0),y(1),…y(N-1)} 傅里叶级数 x(n)wk(n)的级数是: 1.d2pik/N 这个系数决…...

git clone报错RPC failed; curl 92 HTTP/2 stream 7 was not closed cleanly

问题描述 git clone github上的项目报错: RPC failed; curl 92 HTTP/2 stream 7 was not closed cleanly: CANCEL (err 8) 4796 bytes of body are still expected fetch-pack: unexpected disconnect while reading sideband packet early EOF fetch-pack: invalid index-pac…...

Apispec,一个用于生成 OpenAPI(Swagger)规范的 Python 库

目录 01什么是 Apispec? 为什么选择 Apispec? 安装与配置 02Apispec 的基本用法 生成简单的 API 文档 1、创建 Apispec 实例 2、定义 API 路由和视图 3、添加路径到 Apispec 集成 Flask 和 Apispec 1、安装…...

SpringBoot 自定义异常返回数据格式

Spring Boot 默认异常处理 当我们用 spring boot 开发接口是,当遇到异常时返回的数据格式是如下形式的 {"timestamp": "2024-07-06T02:48:55.79100:00","status": 404,"error": "Not Found","path":…...

【xinference】(15):在compshare上,使用docker-compose运行xinference和chatgpt-web项目,配置成功!!!

视频演示 【xinference】(15):在compshare上,使用docker-compose运行xinference和chatgpt-web项目,配置成功!!! 1,安装docker方法: #!/bin/shdistribution$(…...

【Unity 3D角色移动】

【Unity 3D角色移动】 在Unity 3D中实现角色移动通常涉及到几个关键步骤,包括设置角色的物理属性、处理输入、更新角色的位置以及动画同步。下面是实现基本3D角色移动的步骤和示例代码: 步骤1:设置角色的物理属性 角色通常使用Character Co…...

个人视角,社会影响力:自媒体的魅力所在

随着数字化时代的到来,自媒体正成为信息传播领域的一场革命。个人视角与社会影响力的结合,赋予了自媒体独特的魅力。在传统媒体受限制的同时,自媒体为每个人提供了表达自己观点和思想的自由。个体的真实视角使得自媒体在信息传播中发挥着重要…...

算法训练营day70

题目1&#xff1a;108. 冗余连接 (kamacoder.com) #include<iostream> #include<vector>using namespace std;int n; vector<int> father(10001, 0);void init() {for(int i 1;i < n;i) father[i] i; }int find(int u) {return u father[u] ? u : fa…...

EtherCAT转Profinet网关配置说明第二讲:上位机软件配置

EtherCAT协议转Profinet协议网关模块&#xff08;XD-ECPNS20&#xff09;&#xff0c;不仅可以实现数据之间的通信&#xff0c;还可以实现不同系统之间的数据共享。EtherCAT协议转Profinet协议网关模块&#xff08;XD-ECPNS20&#xff09;具有高速传输的特点&#xff0c;因此通…...

日志自动分析-Web---360星图GoaccessALBAnolog

目录 1、Web-360星图(IIS/Apache/Nginx) 2、Web-GoAccess &#xff08;任何自定义日志格式字符串&#xff09; 源码及使用手册 安装goaccess 使用 输出 3-Web-自写脚本&#xff08;任何自定义日志格式字符串&#xff09; 4、Web-机器语言analog&#xff08;任何自定义日…...

【面试八股文】java基础知识

引言 本文是java面试时的一些常见知识点总结归纳和一些拓展&#xff0c;笔者在学习这些内容时&#xff0c;特地整理记录下来&#xff0c;以供大家学习共勉。 一、数据类型 1.1 为什么要设计封装类&#xff0c;Integer和int区别是什么&#xff1f; 使用封装类的目的 对象化:…...

ssrf结合redis未授权getshell

目录 漏洞介绍 SSRF Redis未授权 利用原理 环境搭建 利用过程 rockylinux cron计划任务反弹shell 写公钥免密登录 ubuntu 写公钥免密登录 漏洞介绍 SSRF SSRF&#xff08;server side request forgrey&#xff09;服务端请求伪造&#xff0c;因后端未过滤用户输入&…...

魔法自如:精通 IPython %automagic 命令的切换艺术

魔法自如&#xff1a;精通 IPython %automagic 命令的切换艺术 在 IPython 的神奇世界里&#xff0c;魔术命令是其强大交互功能的核心。这些以 % 或 %% 开头的命令&#xff0c;能够执行一系列特殊的操作&#xff0c;从而增强用户的编程体验。但是&#xff0c;你是否知道&#…...

基于CentOS Stream 9平台搭建MinIO以及开机自启

1. 官网 https://min.io/download?licenseagpl&platformlinux 1.1 下载二进制包 指定目录下载 cd /opt/coisini/ wget https://dl.min.io/server/minio/release/linux-amd64/minio1.2 文件赋权 chmod x /opt/coisini/minio1.3 创建Minio存储数据目录&#xff1a; mkdi…...

shell-awk语法整理

shell-awk语法整理 前言基本语法内置变量1. $02. NF3. NR4. FS5. RS6. OFS7. ORS8. FILENAME9. FNR10. ARGV11. ENVIRON12. IGNORECASE13. RSTART 和 RLENGTH示例解释 内置函数循环语句&#xff08;后面的;可不加&#xff09;条件语句高级特性示例 特殊模式BEGINEND组合示例BEG…...

关于忠诚:忠于自己的良知、理想、信念

关于忠诚&#xff1a; 当我们面对公司、上司、爱人、恋人、合作伙伴还是某件事&#xff0c;会纠结离开还是留下&#xff0c;这里我们要深知忠诚的定义&#xff0c;我们不是忠诚于某个人、某件事、或者某个机构&#xff0c;而是忠诚于自己的良知&#xff0c;忠诚于自己的理想和…...

探索Linux:开源世界的无限可能

Linux是一款开源操作系统&#xff0c;它的起源可以追溯到上世纪90年代初。这个故事始于一个名叫Linus Torvalds的芬兰大学生&#xff0c;他在1983年开始编写一个用于个人电脑的操作系统内核。在他的努力下&#xff0c;Linux逐渐发展成为一个稳定而强大的操作系统。 然而&#…...

深度学习之半监督学习:一文梳理目标检测中的半监督学习策略

什么是半监督目标检测&#xff1f; 传统机器学习根据训练数据集中的标注情况&#xff0c;有着不同的场景&#xff0c;主要包括&#xff1a;监督学习、弱监督学习、弱半监督学习、半监督学习。由于目标检测任务的特殊性&#xff0c;在介绍半监督目标检测方法之前&#xff0c;我…...

Hive 高可用分布式部署详细步骤

目录 系统版本说明 hive安装包下载及解压 上传mysql-connector-java的jar包 配置环境变量 进入conf配置文件中&#xff0c;将文件重命名 在hadoop集群上创建文件夹 创建本地目录 修改hive-site.xml文件 同步到其他的节点服务器 修改node02中的配置 hive-site.xml 修改…...

ubuntu下运行程序时提示缺库问题的有效解决方法

目录 一、问题现象二、解决方式三、总结 一、问题现象 当我们平时在ubuntu上运行一个程序时时长会遇到如下情况&#xff0c;含义为本机缺少执行程序需要的库 这时候我们可能会根据缺少的库使用apt install 库名的模糊名字 进行安装&#xff0c;然后再去运行&#xff0c;此时可…...

GNU/Linux - wic文件的使用

Yocto/OpenEmbedded使用的磁盘镜像格式是 wic。为嵌入式系统提供 bootable images。 The disk image format used in the Yocto Project is wic. .wic 文件显然只是一个带有分区表和分区的磁盘镜像&#xff0c;就像下载 Linux 发行版时获得的所有 .img 文件一样。这就是为什么你…...

前端JS 插件实现下载【js-tool-big-box,下载大文件(fetch请求 + 下载功能版)

上一节&#xff0c;我们添加了下载大文件的纯功能版&#xff0c;意思就是需要开发者&#xff0c;在自己项目里发送请求&#xff0c;请求成功后&#xff0c;获取文件流的blob数据&#xff0c;然后 js-tool-big-box 帮助下载。 但考虑到&#xff0c;有些项目&#xff0c;可能比较…...

JVM专题之垃圾收集器

JVM参数 3.1.1 标准参数 -version -help -server -cp 3.1.2 -X参数 非标准参数,也就是在JDK各个版本中可能会变动 ``` -Xint 解释执行 -Xcomp 第一次使用就编译成本地代码 -Xmixed 混合模式,JVM自己来决定 3.1.3 -XX参数 > 使用得最多的参数类型 > > 非…...

SSM养老院管理系统-计算机毕业设计源码02221

摘要 本篇论文旨在设计和实现一个基于SSM的养老院管理系统&#xff0c;旨在提供高效、便捷的养老院管理服务。该系统将包括老人档案信息管理、护工人员管理、房间信息管理、费用管理等功能模块&#xff0c;以满足养老院管理者和居民的不同需求。 通过引入SSM框架&#x…...

使用Keil将STM32部分程序放在RAM中运行

手动分配RAM区域,新建.sct文件,定义RAM_CODE区域,并指定其正确的起始地址和大小。 ; ************************************************************* ; *** Scatter-Loading Description File generated by uVision *** ; ************************************************…...

【MySQL8.0】 CentOS8.0下安装mysql报错权限问题的记录

这里写自定义目录标题 基本信息问题记录 基本信息 OS: Linux server-02 4.18.0-240.el8.x86_64 #1 SMP Fri Sep 25 19:48:47 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux MySQL: 8.0 问题记录 缺少类库 mysql: error while loading shared libraries: libncurses.so.5: cannot…...