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

STM32独立看门狗

时钟频率

40KHZ

看门狗简介

STM32F10xxx 内置两个看门狗,提供了更高的安全性、时间的精确性和使用的灵活性。两个看
门狗设备 ( 独立看门狗和窗口看门狗 ) 可用来检测和解决由软件错误引起的故障;当计数器达到给
定的超时值时,触发一个中断 ( 仅适用于窗口型看门狗 ) 或产生系统复位。
独立看门狗 (IWDG) 由专用的 40kHz 的低速时钟驱动,即使主时钟发生故障它也仍然有效。窗口
看门狗由从 APB1 时钟分频后得到的时钟驱动,通过可配置的时间窗口来检测应用程序非正常的
过迟或过早的操作。
IWDG 最适合应用于那些需要看门狗作为一个在主程序之外,能够完全独立工作,并且对时间精
度要求较低的场合。 WWDG 最适合那些要求看门狗在精确计时窗口起作用的应用程序。

IWDG主要性能

● 自由运行的递减计数器
● 时钟由独立的 RC 振荡器提供 ( 可在停止和待机模式下工作 )
● 看门狗被激活后,则在计数器计数至 0x000 时产生复位

IWDG功能描述

在键寄存器 (IWDG_KR) 中写入 0xCCCC ,开始启用独立看门狗;此时计数器开始从其复位值
0xFFF 递减计数。当计数器计数到末尾 0x000 时,会产生一个复位信号 (IWDG_RESET)
无论何时,只要键寄存器 IWDG_KR 中被写入 0xAAAA IWDG_RLR 中的值就会被重新加载到
计数器中从而避免产生看门狗复位 。

键寄存器(IWDG_KR)

预分频寄存器(IWDG_PR)

重装载寄存器(IWDG_RLR)

IWDG库函数

看门狗蜂鸣器

main.c


/*看门狗*/
#include"iwdg.h"
#include"led.h"
#include"fmq.h"
#include"key.h"
#include"delay.h"int main(void)
{int i=0,j=0;Led_Init();	Key_Init();Fmq_Init();delay_init();iwdg_init(5);Fmq_On();delay_ms(2000);Fmq_Off();for(i=0;i<3;i=(i+1)%3){iwdg_fee_dog();Led_On(i);delay_ms(500);Led_Off(i);delay_ms(500);}return 0;
}

iwdg.h

#ifndef _IWDG_H
#define _IWDG_H
#include "stm32f10x_conf.h"
extern void iwdg_init(int nu);
extern void iwdg_fee_dog(void);
#endif

iwdg.c

#include"iwdg.h"void iwdg_init(int nu) 
{IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable); //关闭寄存器写保护 IWDG_SetPrescaler(IWDG_Prescaler_64); //625设置预分频值IWDG_SetReload(nu*625); //设置重装载值IWDG_ReloadCounter(); //重载计数值喂狗IWDG_Enable(); //启动关门狗
}void iwdg_fee_dog(void)
{ IWDG_ReloadCounter();//喂狗
}

delay.c

#include "delay.h"//利用系统滴答定时,编写的延时函数static u8  fac_us=0; //us延时倍乘数			   
static u16 fac_ms=0; //ms延时倍乘数/****************************************************************************
* 名    称: delay_init()
* 功    能:延时函数初始化
* 入口参数:无
* 返回参数:无
* 说    明:
****************************************************************************/
void delay_init(void)
{SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);//为系统定时器选择时钟为	HCLK 8分频	72MHz / 8 = 9MHzfac_us = SYSCLK / 8;//微秒的倍乘数 = 72 / 8 = 9//X * fac_us就相当于有X个微妙fac_ms = (u16)fac_us * 1000; //每个ms需要的systick时钟数(1ms = 1000us),所以fac_us*1000//X * fac_ms就相当于有X个毫妙
}								    /****************************************************************************
* 名    称: void delay_us(u32 nus)
* 功    能:延时nus
* 入口参数:要延时的微秒数
* 返回参数:无
* 说    明:nus的值,不要大于1864135us
****************************************************************************/
/*
通过相关手册我们了解到,备份值寄存器和当前值寄存器的值最大为16M - 1
我们的微秒级的延时函数的倍乘数为9所以16M - 1 / 9 = 1864135
*/
void delay_us(u32 nus)
{u32 midtime;																			//保存寄存器的状态SysTick->LOAD = nus * fac_us;											//时间加载(相当于有nus个微妙)SysTick->VAL = 0x00;															//清空计数器SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;					//使能系统定时器计数do{midtime = SysTick->CTRL;}while((midtime & 0x01) && !(midtime & (1 << 16)));//等待时间到达SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;				//关闭计数器SysTick->VAL = 0X00;															//清空计数器	 
}
/****************************************************************************
* 名    称: void delay_xms(u16 nms)
* 功    能:延时nms
* 入口参数:要延时的毫妙数
* 返回参数:无
* 说    明:SysTick->LOAD为24位寄存器,所以,最大延时为: nms<=0xffffff*8*1000/SYSCLK对9M条件下,nms<=1864ms 
****************************************************************************/
void delay_xms(u16 nms)
{	 		  	  u32 midtime;		   SysTick->LOAD = (u32)nms*fac_ms;									//时间加载(SysTick->LOAD为24bit)SysTick->VAL = 0x00;															//清空计数器SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;					//开始倒数do{midtime = SysTick->CTRL;}while((midtime & 0x01) && !(midtime & (1 << 16)));//等待时间到达SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;				//关闭计数器SysTick->VAL = 0X00;															//清空计数器
} 
/****************************************************************************
* 名    称: void delay_ms(u16 nms)
* 功    能:延时nms
* 入口参数:要延时的毫妙数
* 返回参数:无
* 说    明:nms:0~65535
****************************************************************************/
void delay_ms(u16 nms)
{	 	 u8 repeat = nms / 540;	//记录有多少个整的540msu16 remain = nms % 540;	//记录有多少个不够540mswhile(repeat){delay_xms(540);repeat--;}if(remain)delay_xms(remain);
} 

delay.h

#ifndef __DELAY_H
#define __DELAY_H#include "stm32f10x_conf.h" #define SYSCLK 72				//系统时钟的基数(注:是72而不是72M)typedef uint32_t  u32;
typedef uint16_t  u16;
typedef uint8_t   u8;void delay_init(void);	//延时函数的初始化
void delay_ms(u16 nms);	//毫秒级的延时函数(参数为毫秒数)
void delay_us(u32 nus);	//微秒级的延时函数(参数为微秒数)#endif

fmq.h

#ifndef __FMQ_H
#define __FMQ_H
#include "stm32f10x_conf.h"
extern void Fmq_Init(void);//初始化FMQ
extern void Fmq_On(void);//蜂鸣器响
extern void Fmq_Off(void);//蜂鸣器不响
#endif 

fmq.c

#include"key.h"
void Key_Init(void)
{GPIO_InitTypeDef GPIO_VALUE; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOA,ENABLE);GPIO_VALUE.GPIO_Mode=GPIO_Mode_IPU;GPIO_VALUE.GPIO_Pin=GPIO_Pin_9|GPIO_Pin_8;GPIO_Init(GPIOC,&GPIO_VALUE);	GPIO_VALUE.GPIO_Mode=GPIO_Mode_IPD;GPIO_VALUE.GPIO_Pin=GPIO_Pin_0;GPIO_Init(GPIOC,&GPIO_VALUE);	
}
int Key_status(int nu)
{int ret=0;switch(nu){case 0:ret=GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_9);break;case 1:ret=GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_8);break;case 2:ret=GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0);ret=!ret;break;}return !ret;}

led.h

#ifndef __LED_H
#define __LED_H
#include "stm32f10x_conf.h"extern void Led_Init(void);
extern void Led_On(int opt);
extern void Led_Off(int opt);
#endif 

led.c


#include"led.h"void Led_Init(void)
{GPIO_InitTypeDef GPIO_VALUE; //???RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);//???GPIO_VALUE.GPIO_Mode=GPIO_Mode_Out_PP;//???? ????GPIO_VALUE.GPIO_Pin=GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3;//????GPIO_VALUE.GPIO_Speed=GPIO_Speed_50MHz;//????GPIO_Init(GPIOC,&GPIO_VALUE);//???	
}
void Led_On(int nu)
{switch(nu){case 0:GPIO_SetBits(GPIOC,GPIO_Pin_1);break;case 1:GPIO_SetBits(GPIOC,GPIO_Pin_2);break;case 2:GPIO_SetBits(GPIOC,GPIO_Pin_3);break;}}
void Led_Off(int nu)
{switch(nu){case 0:GPIO_ResetBits(GPIOC,GPIO_Pin_1);break;case 1:GPIO_ResetBits(GPIOC,GPIO_Pin_2);break;case 2:GPIO_ResetBits(GPIOC,GPIO_Pin_3);break;}	
}/*
#include"led.h"
#include"bitband.h"
void Led_Init(void)
{GPIO_InitTypeDef GPIO_VALUE; //???RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);//???GPIO_VALUE.GPIO_Mode=GPIO_Mode_Out_PP;//???? ????GPIO_VALUE.GPIO_Pin=GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3;//????GPIO_VALUE.GPIO_Speed=GPIO_Speed_50MHz;//????GPIO_Init(GPIOC,&GPIO_VALUE);//???	
}
void Led_On(int nu)
{switch(nu){case 0:PCOut(1)=1;break;case 1:PCOut(2)=1;break;case 2:PCOut(3)=1;break;}}
void Led_Off(int nu)
{switch(nu){case 0:PCOut(1)=0;break;case 1:PCOut(2)=0;break;case 2:PCOut(3)=0;break;}	
}
*/

main.c


/*看门狗*/
#include"iwdg.h"
#include"led.h"
#include"fmq.h"
#include"key.h"
#include"delay.h"int main(void)
{int i=0,j=0;Led_Init();	Key_Init();Fmq_Init();delay_init();iwdg_init(5);Fmq_On();delay_ms(2000);Fmq_Off();for(i=0;i<3;i=(i+1)%3){iwdg_fee_dog();Led_On(i);delay_ms(500);Led_Off(i);delay_ms(500);}return 0;
}

看门狗过程

 1)取消寄存器写保护(向 IWDG_KR 写入 0X5555)

通过这步,我们取消 IWDG_PR 和 IWDG_RLR 的写保护,使后面可以操作这两个寄存器,设置 IWDG_PR 和 IWDG_RLR 的值。这在库函数中的实现函数是:

IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);
这个函数的功能开启/取消写保护,即使能/失能写权限。

        2)设置独立看门狗的预分频系数和重装载值

        设置看门狗的分频系数的函数是:

void IWDG_SetPrescaler(uint8_t IWDG_Prescaler); //设置 IWDG 预分频值
        设置看门狗的重装载值的函数是:

        

void IWDG_SetReload(uint16_t Reload); //设置 IWDG 重装载值
        设置好看门狗的分频系数 prer 和重装载值就可以知道看门狗的喂狗时间(也就是看门狗溢出时间),该时间的计算方式为:

                                                        Tout=((4×2^prer) ×rlr) /40

        其中 Tout 为看门狗溢出时间(单位为 ms);prer 为看门狗时钟预分频值(IWDG_PR 值),范围为 0~7;rlr 为看门狗的重装载值(IWDG_RLR 的值);

        比如我们设定 prer 值为 4,rlr 值为 625,那么就可以得到 Tout=64×625/40=1000ms,这样,看门狗的溢出时间就是 1s,只要你在一秒钟之内,有一次写入 0XAAAA 到 IWDG_KR,就不会导致看门狗复位(当然写入多次也是可以的)。这里需要提醒大家的是,看门狗的时钟不是准确的 40Khz,所以在喂狗的时候,最好不要太晚了,否则,有可能发生看门狗复位。

        3)重载计数值喂狗(向 IWDG_KR 写入 0XAAAA)

        库函数里面重载计数值的函数是:

IWDG_ReloadCounter(); //按照 IWDG 重装载寄存器的值重装载 IWDG 计数器
        通过这句,将使 STM32 重新加载 IWDG_RLR 的值到看门狗计数器里面。即实现独立看门狗的喂狗操作。

        4) 启动看门狗(向IWDG_KR 写入 0XCCCC)

        库函数里面启动独立看门狗的函数是:

IWDG_Enable(); //使能 IWDG
        通过这句,来启动 STM32 的看门狗。

        注意 IWDG 在一旦启用,就不能再被关闭!想要关闭,只能重启,并且重启之后不能打开 IWDG,否则问题依旧,如果不用 IWDG 的话,就不要去打开它,免得麻烦。
 

相关文章:

STM32独立看门狗

时钟频率 40KHZ 看门狗简介 STM32F10xxx 内置两个看门狗&#xff0c;提供了更高的安全性、时间的精确性和使用的灵活性。两个看 门狗设备 ( 独立看门狗和窗口看门狗 ) 可用来检测和解决由软件错误引起的故障&#xff1b;当计数器达到给 定的超时值时&#xff0c;触发一个中…...

财务数据智能化:用AI工具高效制作财务分析PPT报告

Step1: 文章内容提取 WPS AI 直接打开文件&#xff0c;在AI对话框里输入下面指令&#xff1a; 假设你是财务总监&#xff0c;公司考虑与茅台进行业务合作、投资或收购&#xff0c;请整合下面茅台2021年和2022年的财务报告信息。整理有关茅台财务状况和潜在投资回报的信息&…...

vue3中使用three.js记录

记录一下three.js配合vitevue3的使用。 安装three.js 使用npm安装&#xff1a; npm install --save three开始使用 1.定义一个div <template><div ref"threeContainer" class"w-full h-full"></div> </template>可以给这个di…...

MySQL——表的内外连接

目录 一.内连接 二.外连接 1.左外连接 2.右外连接 一.内连接 表的连接分为内连和外连 内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选&#xff0c;我们前面学习的查询都是内连接&#xff0c;也是在开发过程中使用的最多的连接查询。 语法&#xff1a; s…...

基于IPP-FFT的线性调频Z(Chirp-Z,CZT)的C++类库封装并导出为dll(固定接口支持更新)

上一篇分析了三种不同导出C++类方法的优缺点,同时也讲了如何基于IPP库将FFT函数封装为C++类库,并导出为支持更新的dll库供他人调用。 在此基础上,结合前面的CZT的原理及代码实现,可以很容易将CZT变换也封装为C++类库并导出为dll,关于CZT的原理和实现,如有问题请参考: …...

【C语言】指针

基本概念 在C语言中&#xff0c;指针是一种非常重要的数据类型&#xff0c;它用于存储变量的内存地址。指针提供了对内存中数据的直接访问&#xff0c;使得在C语言中可以进行灵活的内存操作和数据传递。以下是关于C语言指针的一些基本概念&#xff1a; 1. 指针的声明&#xff…...

PostgreSql 索引使用技巧

索引种类详情可参考《PostgreSql 索引》 一、适合创建索引的场景 经常与其他表进行连接的表&#xff0c;在连接字段上应该建索引。经常出现在 WHERE 子句中的字段&#xff0c;特别是大表的字段&#xff0c;应该建索引。经常出现在 ORDER BY 子句中的字段&#xff0c;应该建索…...

【华为数据之道学习笔记】6-7打造业务自助分析的关键能力

华为公司将自助分析作为一种公共能力&#xff0c;在企业层面进行了统一构建。一方面&#xff0c;面向不同的消费用户提供了差异性的能力和工具支撑&#xff1b;另一方面&#xff0c;引入了“租户”概念&#xff0c;不同类型的用户可以在一定范围内分析数据、共享数据结果。 1. …...

K8S从harbor中拉取镜像的规则imagePullPolicy

1、参数 配制参数为&#xff1a;imagePullPolicy&#xff1a; 可以选择的值有&#xff1a;Always&#xff0c;IfNotPresent&#xff0c;Never 2、参数结果 如果pod的镜像拉取策略为imagePullPolicy: Always&#xff1a;当harbor不能运行后&#xff0c;pod会一直从harbor上拉…...

LeetCode刷题--- 优美的排列

个人主页&#xff1a;元清加油_【C】,【C语言】,【数据结构与算法】-CSDN博客元清加油_【C】,【C语言】,【数据结构与算法】-CSDN博客 个人专栏 力扣递归算法题 http://t.csdnimg.cn/yUl2I 【C】 http://t.csdnimg.cn/6AbpV 数据结构与算法 ​​​​​​http://t.cs…...

关于edge浏览器以及插件推荐【亲测好用】

一.edge浏览器介绍 Edge 浏览器是由微软公司开发的一款新一代网络浏览器。它最初于2015年发布&#xff0c;是微软Windows 10 操作系统的默认浏览器&#xff0c;后来还推出了适用于 Android 和 iOS 等移动设备的版本。Edge 浏览器采用了全新的浏览器内核&#xff0c;称为 Micros…...

关于“Python”的核心知识点整理大全43

目录 ​编辑 15.2.3 使2散点图并设置其样式 scatter_squares.py 15.2.4 使用 scatter()绘制一系列点 scatter_squares.py 15.2.5 自动计算数据 scatter_squares.py 15.2.6 删除数据点的轮廓 15.2.7 自定义颜色 15.2.8 使用颜色映射 scatter_squares.py 注意 15.2.9…...

Android Framework一些问题思考

一&#xff0c;zygote通信为什么用socket&#xff0c;而不是binder? 1&#xff0c;binder通信依赖用户空间进程Servicemanager&#xff0c;socket通信不依赖用户空间进程。zygote与servicemanager, surfaceflinger等都是通过各自init.rc文件被init进程解析加载&#xff0c;时…...

2024年安全员-C证证考试题库及安全员-C证试题解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年安全员-C证证考试题库及安全员-C证试题解析是安全生产模拟考试一点通结合&#xff08;安监局&#xff09;特种作业人员操作证考试大纲和&#xff08;质检局&#xff09;特种设备作业人员上岗证考试大纲随机出的…...

推广主要指标及定义

推广主要指标以直通车为例解释&#xff0c;如图所示 1.展示量&#xff1a;当消费者搜索某个词&#xff0c;推广计划在天猫直通车展示位上被买家看到的次数&#xff08;去掉被消费者快进划过、主图未完金展现等情况产生的曝光)&#xff1b; 2.点击量&#xff1a;消费者看到广告…...

【Proteus仿真】【Arduino单片机】水质监测报警系统设计

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真Arduino单片机控制器&#xff0c;使用按键、LED、蜂鸣器、LCD1602、ADC、PH传感器、浑浊度传感器、DS18B20温度传感器、继电器模块等。 主要功能&#xff1a; 系统运行后&#xf…...

随机问卷调查数据的处理(uniapp)

需求&#xff1a;问卷调查 1.返回的数据中包含单选、多选、多项文本框、单文本框、图片上传 2.需要对必填的选项进行校验 3.非必填的多项文本框内容 如果不填写 不提交 表单数据格式 res{"code": 0,"msg": null,"data": [{"executeDay&…...

开源分布式搜索引擎ElasticSearch结合内网穿透远程连接

文章目录 前言1. Windows 安装 Cpolar2. 创建Elasticsearch公网连接地址3. 远程连接Elasticsearch4. 设置固定二级子域名 前言 简单几步,结合Cpolar 内网穿透工具实现Java 远程连接操作本地分布式搜索和数据分析引擎Elasticsearch。 Cpolar内网穿透提供了更高的安全性和隐私保…...

Leetcode2928. 给小朋友们分糖果 I

Every day a Leetcode 题目来源&#xff1a;2928. 给小朋友们分糖果 I 解法1&#xff1a;暴力 枚举 3 位小朋友的糖果数&#xff0c;范围为 [0, limit]&#xff0c;分别记为 i、j、k。 当满足 i j k n 时&#xff0c;答案 1。 代码&#xff1a; /** lc appleetcode.c…...

go-zero开发入门之网关往rpc服务传递数据2

go-zero 的网关服务实际是个 go-zero 的 API 服务&#xff0c;也就是一个 http 服务&#xff0c;或者说 rest 服务。http 转 grpc 使用了开源的 grpcurl 库&#xff0c;当网关需要往 rpc 服务传递额外的数据&#xff0c;比如鉴权数据的时候&#xff0c;通过 http 的 header 进行…...

Cron介绍,以及常见的cron表达式

目录 一.cron介绍 1.什么是Cron&#xff1f; 2.Cron语法 时间字段的取值范围如下&#xff1a; 时间字段支持以下特殊字符&#xff1a; 下面是一些示例&#xff1a; 3.虚拟机安装cron(centos7展示) 二.常见的cron表达式 一.cron介绍 1.什么是Cron&#xff1f; Cron是一个…...

智能优化算法应用:基于协作搜索算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于协作搜索算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于协作搜索算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.协作搜索算法4.实验参数设定5.算法结果6.…...

分布式训练通信NCCL之Ring-Allreduce详解

&#x1f380;个人主页&#xff1a; https://zhangxiaoshu.blog.csdn.net &#x1f4e2;欢迎大家&#xff1a;关注&#x1f50d;点赞&#x1f44d;评论&#x1f4dd;收藏⭐️&#xff0c;如有错误敬请指正! &#x1f495;未来很长&#xff0c;值得我们全力奔赴更美好的生活&…...

os_util 工具类和方法的实现

一、前置说明 总体目录&#xff1a;《从 0-1 搭建企业级 APP 自动化测试框架》上节回顾&#xff1a;在 init_appium_and_devices 的实现思路分析 小节中&#xff0c;分析了实现 init_appium_and_devices 的思路&#xff0c;梳理出了必要的工具类和方法。本节目标&#xff1a;完…...

uview表单校验带星号

uView表单校验带星号可以通过设置required属性来实现。在uView中&#xff0c;可以使用组件来实现表单校验&#xff0c;具体步骤如下&#xff1a; 1、在需要校验的表单元素上添加required属性&#xff0c;例如&#xff1a; <u-form :model"detailInfo" ref"d…...

vue+element实现动态表格:根据后台返回的属性名和字段动态生成可变表格

现有一个胡萝卜厂生产不同品种的胡萝卜&#xff0c;为了便于客户了解产品&#xff0c;现需在官网展示胡萝卜信息。现有的萝卜信息&#xff1a;编号&#xff08;id&#xff09;、名称&#xff08;name&#xff09;、保质期&#xff08;age&#xff09;、特点&#xff08;remark&…...

云渲染UE4像素流送搭建(winows、ubuntu单实例与多实例像素流送)

windows/ubuntu20.4下UE4.27.2像素流送 像素流送技术可以将服务器端打包的虚幻引擎应用程序在客户端的浏览器上运行&#xff0c;用户可以通过浏览器操作虚幻引擎应用程序&#xff0c;客户端无需下载虚幻引擎&#xff0c;本文实现两台机器通过物理介质网线实现虚幻引擎应用程序…...

Unity VR Pico apk安装失败:INSTALL_FAILED_UPDATE_INCOMPATIBLE

我的报错&#xff1a; PICO4企业版。安装apk&#xff0c;报错“安装失败。&#xff08;所属的Unity项目打包的apk&#xff0c;被我在同一台pico4安装了20次&#xff09; 调试方法&#xff1a; PIco4发布使用UNITY开发的Vr应用&#xff0c;格式为apk&#xff0c;安装的时候发生…...

Prompt 提示工程学习笔记

一、Prompt设计的四个关键要素&#xff1a; 任务描述、输入数据、上下文信息、提示风格 &#xff08;1&#xff09;任务描述&#xff1a;描述想要让LLM遵循的指令。描述应详细清晰&#xff0c;可进一步使用关键词突出特殊设置&#xff0c;从而更好地指导LLM工作。 &#xff0…...

STM32实现三个小灯亮

led.c #include"led.h"void Led_Init(void) {GPIO_InitTypeDef GPIO_VALUE; //???RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);//???GPIO_VALUE.GPIO_ModeGPIO_Mode_Out_PP;//???? ????GPIO_VALUE.GPIO_PinGPIO_Pin_1|GPIO_Pin_2|GPIO_P…...

1861_什么是H桥

Grey 全部学习内容汇总&#xff1a; GitHub - GreyZhang/g_hardware_basic: You should learn some hardware design knowledge in case hardware engineer would ask you to prove your software is right when their hardware design is wrong! 1861_什么是H桥 H桥电路可以…...

【计算机四级(网络工程师)笔记】操作系统运行机制

目录 一、中央处理器&#xff08;CPU&#xff09; 1.1CPU的状态 1.2指令分类 二、寄存器 2.1寄存器分类 2.2程序状态字&#xff08;PSW&#xff09; 三、系统调用 3.1系统调用与一般过程调用的区别 3.2系统调用的分类 四、中断与异常 4.1中断 4.2异常 &#x1f308;嗨&#xff…...

Swagger快速入门

1、Swagger快速入门 1.1 swagger介绍 官网&#xff1a;https://swagger.io/ Swagger 是一个规范和完整的Web API框架&#xff0c;用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。 功能主要包含以下几点: A. 使得前后端分离开发更加方便&#xff0c;有利于团队协作…...

数据结构之<堆>的介绍

1.简介 堆是一种特殊的数据结构&#xff0c;通常用于实现优先队列。堆是一个可以被看作近似完全二叉树的结构&#xff0c;并且具有一些特殊的性质&#xff0c;根据这些性质&#xff0c;堆被分为最大堆&#xff08;或者大根堆&#xff0c;大顶堆&#xff09;和最小堆两种。 2.…...

使用Ubuntu22+Minikube快速搭建K8S开发环境

安装Vmware 这一步&#xff0c;可以参考我的如下课程。 安装Ubuntu22 下载ISO镜像 这里我推荐从清华镜像源下载&#xff0c;速度会快非常多。 下载地址&#xff1a;https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/22.04.3/ 如果你报名了我的这门视频课程&#xf…...

【中小型企业网络实战案例 二】配置网络互连互通

​【中小型企业网络实战案例 一】规划、需求和基本配置-CSDN博客 热门IT技术视频教程&#xff1a;https://xmws-it.blog.csdn.net/article/details/134398330?spm1001.2014.3001.5502 配置接入层交换机 1.以接入交换机ACC1为例&#xff0c;创建ACC1的业务VLAN 10和20。 <…...

Azure Machine Learning - Azure OpenAI GPT 3.5 Turbo 微调教程

本教程将引导你在Azure平台完成对 gpt-35-turbo-0613 模型的微调。 关注TechLead&#xff0c;分享AI全维度知识。作者拥有10年互联网服务架构、AI产品研发经验、团队管理经验&#xff0c;同济本复旦硕&#xff0c;复旦机器人智能实验室成员&#xff0c;阿里云认证的资深架构师&…...

运维大模型探索之 Text2PromQL 问答机器人

作者&#xff1a;陈昆仪&#xff08;图杨&#xff09; 大家下午好&#xff0c;我是来自阿里云可观测团队的算法工程师陈昆仪。今天分享的主题是“和我交谈并获得您想要的PromQL”。今天我跟大家分享在将AIGC技术运用到可观测领域的探索。 今天分享主要包括5个部分&#xff1a;…...

虚拟机VMware:变动ip修改固定ip

1、配置ip地址 vi /etc/sysconfig/network-scripts/ifcfg-ens33修改为&#xff1a; 修改如下&#xff1a;TYPE"Ethernet" # 网络类型为以太网 BOOTPROTO"static" # 手动分配ip NAME"ens33" # 网卡…...

Docker部署Nexus Maven私服并实现远程访问Nexus界面

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《linux深造日志》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 1. Docker安装Nexus2. 本地访问Nexus3. Linux安装Cpolar4. 配置Nexus界面公网地址5. 远程访问 Nexus界面6. 固定N…...

苏州科技大学计算机817程序设计(java) 学习笔记

之前备考苏州科技大学计算机&#xff08;专业课&#xff1a;817程序设计&#xff08;java&#xff09;&#xff09;。 学习Java和算法相关内容&#xff0c;现将笔记及资料统一整理归纳移至这里。 部分内容不太完善&#xff0c;欢迎提议。 目录 考情分析 考卷题型 刷题攻略…...

虚幻学习笔记22—C++同步和异步加载

一、前言 之前提到的静态和动态加载都是同步的加载&#xff0c;同时其中的引用基本都是硬引用。如果资源比较大的话会出现卡顿的现象&#xff0c;下面将介绍一种异步加载的方式。同时&#xff0c;还将介绍一种区别与之前的Load的方法。 在说明同步和异步加载之前需要先讲一下虚…...

华清远见嵌入式学习——ARM——作业3

作业要求&#xff1a; 代码效果图&#xff1a; 代码&#xff1a; led.h #ifndef __LED_H__ #define __LED_H__#define RCC_GPIO (*(unsigned int *)0x50000a28) #define GPIOE_MODER (*(unsigned int *)0x50006000) #define GPIOF_MODER (*(unsigned int *)0x50007000) #defi…...

19.JavaSE

一、JavaSE。 &#xff08;1&#xff09;IO流。 1.字节字符流 2.标准流打印流对象流 &#xff08;2&#xff09;集合。 1.List/Set/Queue/Map集合 2.properties集合 &#xff08;3&#xff09;多线程。 1.线程创建的…...

仓库管理用什么软件

仓库管理是一个非常重要的话题&#xff0c;大到企业&#xff0c;小到个人&#xff0c;只要有货物的往来就会有仓库方面的管理&#xff0c;最为典型的就是货物的进出库存管理&#xff0c;这也是最为基础的仓库管理内容&#xff0c;那么仓库管理要用什么软件&#xff0c;从不同的…...

飞天使-k8s知识点8-kubernetes资源对象-编写中

文章目录 资源对象是k8s核心概念 资源对象是k8s核心概念 查看防火墙规则 32002 端口的去向 [rootkubeadm-master1 ~]# iptables -t nat -vnL |grep 32000 0 KUBE-MARK-MASQ tcp -- * * 0.0.0.0/0 0.0.0.0/0 /* kubernetes-dashboard/…...

Oracle Create user

sqlplus /nolog conn sys/pw123456orcl as sysdba CREATE USER zengwenfeng IDENTIFIED BY zengwenfeng ; GRANT ALL PRIVILEGES TO zengwenfeng ; COMMIT; C:\Users\Administrator>sqlplus /nologSQL*Plus: Release 11.2.0.1.0 Production on 星期日 12月 24 21:38:24 20…...

树莓派,mediapipe,Picamera2利用舵机云台追踪人手(PID控制)

一、项目目标 追踪人手大拇指指尖&#xff1a; 当人手移动时&#xff0c;摄像头通过控制两个伺服电机&#xff08;分别是偏航和俯仰&#xff09;把大拇指指尖放到视界的中心位置&#xff0c;本文采用了PID控制伺服电机 Mediapipe Hand简介 MediaPipe 手部标志任务可检测图像…...

DQL查询数据(超重点)以及distinct(去重)

DQL(Data Query Language:数据查询语言) 1.所有查询操作都用 SELECT 2.无论是简单的查询还是复杂的查询它都能做 3.数据库中最核心的语言&#xff0c;最重要的语句 4.使用频率最高的语句 语法&#xff1a; SELECT 字段1&#xff0c;字段2&#xff0c;……FROM 表 有时候…...

【网络奇缘】——奈氏准则和香农定理从理论到实践一站式服务|计算机网络

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 &#x1f4ab;个人格言:"没有罗马,那就自己创造罗马~" 目录 失真 - 信号的变化 影响信号失真的因素&#xff1a; ​编辑 失真的一种现象&#xff1a;码间…...