stm32高级定时器 基础知识

stm32高级定时器

高级定时器时基单元:

包含一个16位自动重装载寄存器 ARR

一个16位的计数器CNT,可向上/下计数

一个16位可编程预分频器PSC,预分频器时钟源有多种可选,有内部的时钟、外部时钟。

一个8位的重复计数器 RCR,最高可实现40位的可编程定时。

STM32F103ZET6的高级/通用定时器的IO分配:

在这里插入图片描述

高级控制定时器功能框图

在这里插入图片描述

时钟源

高级控制定时器有四个时钟源:

内部时钟源 CK_INT

外部时钟模式1:外部输入引脚TIx(x=1,2,3,4)

外部时钟模式 2:外部触发输入ETR

内部触发输入(ITRx)

内部时钟源

CK_INT来自于芯片内部,72M,

模式控制寄存器TIMx_SMCR的SMS位=000时,使用内部时钟。

外部时钟模式1

在这里插入图片描述

时钟信号输入引脚:

时钟信号来自于定时器的输入通道,共4个,分别为TI1/2/3/4,即TIMx_CH1/2/3/4。

使用哪一路信号由TIM_CCMRx的位CCxS[1:0]配置,CCMR1控制TI1/2,CCMR2控制TI3/4。

滤波器:

来自外部的时钟信号频率过高、混杂有高频干扰信号,需要用滤波器对信号重新采样,达到降频、去除高频干扰的目的。

由 TIMx_CCMRx 的位 ICxF[3:0]配置。

边沿检测:

输入信号来自于滤波器的输出,成为触发信号前,要进行边沿检测,决定是上升沿有效还是下降沿有效。

由 TIMx_CCER 的位 CCxP 和 CCxNP 配置。

触发选择:

使用外部时钟模式1时,有两个触发源,滤波后的定时器输入 1(TI1FP1)、滤波后的定时器输入2(TI2FP2)。

由 TIMxSMCR 的位 TS[2:0]配置。

从模式选择:

选则了触发源信号,需把信号连接到TRGI引脚,让触发信号成为外部时钟模式1的输入,最终等于CK_PSC,然后驱动计数器CNT计数。

配置TIMx_SMCR的位SMS[2:0]=000,可选择外部时钟模式1。

使能计数器:

使能计数器开始计数,外部时钟模式1的配置完成。

使能计数器由TIMx_CR1的位CEN配置。

外部时钟模式2

在这里插入图片描述

时钟信号输入引脚:

时钟信号来自于定时器的输入通道TIMx_ETR,仅有1个。

外部触发极性:

来自ETR引脚的输入信号可选择为上升沿或者下降沿有效。

由TIMx_SMCR位ETP配置。

外部触发预分频器:

ETRP信号的频率不能超过TIMx_CLK(72M)的1/4。

触发信号的频率很高的情况下,须使用分频器降频。

由TIMx_SMCR的位ETPS[1:0]配置。

滤波器:

ETRP信号的频率过高或、混杂有高频干扰信号,要用滤波器对ETRP信号重新采样。

由TIMx_SMCR位ETF[3:0]配置。

fDTS由内部时钟CK_INT分频得到,由TIMx_CR1位CKD[1:0]配置。

从模式选择:

经滤波器滤波的信号,连接到ETRF引脚,触发信号成为外部时钟模式2的输入。

最终等于 CK_PSC,驱动计数器CNT计数。

TIMx_SMCR的位ECE为1,即可选择外部时钟模式2。

接下来配置TIMx_CR1的位CEN,使能计数器开始计数,完成外部时钟模式2的配置。

内部触发输入

使用一个定时器作为另一个定时器的预分频器

高级控制定时器和通用定时器在内部连接在一起。

可实现定时器同步或级联。

主模式定时器可对从模式定时器执行复位、启动、停止、提供时钟。

控制器

包括触发控制器、从模式控制器、编码器接口。

触发控制器:

对片内外设输出触发信号,为其它定时器提供时钟、触发DAC/ADC转换。

从模式控制器:

控制计数器复位、启动、递增/递减、计数。

编码器接口:

编码器计数。

时基单元

在这里插入图片描述

时基单元包括四个寄存器:

计数器寄存器(CNT)、预分频器寄存器(PSC)、自动重载寄存器(ARR)、重复计数器寄存器(RCR)。前三个寄存器16位有效,TIMx_RCR寄存器8位有效。

预分频器PSC:

输入时钟CK_PSC,输出时钟CK_CNT。

输出时钟CK_CNT用来驱动计数器CNT计数。

设置预分频器PSC的值可得到不同的CK_CNT。

fCK_CNT=fCK_PSC/(PSC[15:0]+1),实现1至65536分频。

计数器CNT:

三种计数模式:

递增计数模式、递减计数模式、递增/递减(中心对齐)计数模式。

递增计数模式:

计数器从0开始计数,每来一个CK_CNT脉冲,计数器加1,直到计数器的值=自动重载寄存器 ARR的值,计数器从0开始计数并生成计数器上溢事件。

若禁用重复计数器,计数器生成上溢事件时生成更新事件(UEV)。

若使能重复计数器,生成一次上溢事件,重复计数器内容减1,直到重复计数器内容=0 ,才会生成更新事件。

递减计数模式:

从自动重载寄存器ARR的值开始计数。

每来一个CK_CNT脉冲,计数器减1,直到计数器值=0。

然后,计数器又从自动重载寄存器ARR的值开始递减,并生成计数器下溢事件。

若禁用重复计数器,计数器生成下溢事件时生成更新事件(UEV)。

若使能重复计数器,生成一次下溢事件,重复计数器内容减1,直到重复计数器内容=0 ,才会生成更新事件。

递增/递减(中心对齐)计数模式:

从0开始递增计数,直到计数值=(ARR-1)值,生成计数器上溢事件。然后,从ARR值开始递减计数,直到计数值=1,生成计数器下溢事件。

然后又从0开始计数,循环。

每次发生上溢、下溢事件,都会生成更新事件。

自动重载寄存器ARR:

存放与计数器CNT比较的值。

两个值相等就递减重复计数器。

TIMx_CR1寄存器的ARPE位,控制自动重载影子寄存器功能。

ARPE位=1,自动重载影子寄存器有效。在事件更新时,才把TIMx_ARR值赋给影子寄存器。

ARPE位=0,修改TIMx_ARR值马上有效。

重复计数器RCR:

基本/通用定时器,发生上/下溢事件时,直接生成更新事件。

高级控制定时器多出了重复计数器。

定时器发生上溢、下溢事件时,递减重复计数器的值。

当重复计数器为0时,才会生成更新事件。

发生N+1个上溢、下溢事件(N 为 RCR 的值)时,产生更新事件。

输入捕获

在这里插入图片描述

可以对输入的信号的上升沿、下降沿、双边沿进行捕获

测量输入信号的脉宽、测量PWM输入信号的频率和占空比

捕获到信号的跳变沿时,把计数器CNT的值锁存到捕获寄存器CCR中

将前后两次捕获到的CCR寄存器中的值相减,可以算出脉宽或频率。

捕获的脉宽的时间长度超过捕获定时器的周期,会发生溢出。

输入通道

需要被测量的信号,从定时器外部引脚TIMx_CH1/2/3/4进入,通常叫TI1/2/3/4。

输入滤波器和边沿检测器

输入的信号存在高频干扰,需要对输入信号进行滤波,进行重新采样。

采样的频率必须大于等于两倍的输入信号。

输入信号为1M,设置采样频率为2M,可以在采样到有效信号的基础上,把高于2M的高频干扰信号过滤掉。

由CR1寄存器的位CKD[1:0]和CCMR1/2的位ICxF[3:0]配置滤波器。

采样频率fSAMPLE可以由fCK_INT和fDTS分频后的时钟提供。

fCK_INT是内部时钟,fDTS是fCK_INT经过分频后得到的频率。

分频因子由CKD[1:0]决定,可以是不分频,2 分频、4分频。

边沿检测器,设置信号在捕获的时候是什么边沿有效,上升沿、下降沿、双边沿。

由CCER寄存器位CCxP和CCxNP决定。

捕获通道

捕获通道是图中的IC1/2/3/4,每个捕获通道都有对应的捕获寄存器CCR1/2/3/4。

发生捕获的时候,计数器CNT的值就会被锁存到捕获寄存器中。

输入通道,用来输入信号。

捕获通道,用来捕获输入信号的通道。

一个输入通道的信号可以同时输入给两个捕获通道。

输入通道TI1的信号,经过滤波边沿检测器之后的TI1FP1和TI1FP2,可以进入到捕获通道IC1和IC2,这就是PWM输入捕获,一路输入信号(TI1)占用两个捕获通道(IC1和IC2)。

只需测量输入信号的脉宽时,用一个捕获通道。

输入通道和捕获通道的映射关系,由寄存器CCMRx的位CCxS[1:0]配置。

预分频器

ICx的输出信号经过一个预分频器,决定发生多少个事件时进行一次捕获。

由寄存器CCMRx的位ICxPSC配置。

如果要捕获信号的每一个边沿,则不分频。

捕获寄存器

经过预分频器的信号ICxPS是最终被捕获的信号。

发生捕获时(第一次),计数器CNT的值会被锁存到捕获寄存器CCR中,产生CCxI中断。

相应的中断位CCxIF(在 SR 寄存器中)被置位,通过软件或者读取CCR中的值可以将CCxIF清0。

发生第二次捕获(即重复捕获:CCR寄存器中已捕获到计数器值且CCxIF标志已置1)。

捕获溢出标志位CCxOF(在SR寄存器中)会被置位,CCxOF只能通过软件清零。

输出比较

在这里插入图片描述

通过定时器的外部引脚,对外输出控制信号。

有冻结、将通道X(x=1,2,3,4)设置为匹配时输出有效电平、匹配时输出无效电平、翻转、强制变为无效电平、强制变为有效电平、PWM1、PWM2八种模式。

具体使用哪种模式,由寄存器CCMRx的位OCxM[2:0]配置。

比较寄存器

计数器CNT的值跟比较寄存器CCR的值相等时,输出参考信号OCxREF的信号的极性就会改变。

OCxREF=1(高电平)称之为有效电平,OCxREF=0(低电平)称之为无效电平。

并且产生比较中断CCxI,相应的标志位CCxIF(SR 寄存器中)置位。

然后,OCxREF再经过一系列的控制,成为真正的输出信号OCx/OCxN。

死区发生器

在生成的参考波形OCxREF的基础上,插入死区时间,用于生成两路互补的输出信号OCx 、OCxN

死区时间的大小,由BDTR寄存器的位DTG[7:0]配置。

死区时间的大小,必须根据与输出信号相连接的器件及其特性来调整。

带死区的PWM信号的应用,以半桥驱动电路为例。

半桥驱动电路中,Q1导通,Q2截止。

如果让Q1截止Q2导通,需要先让Q1截止一段时间后,再等一段时间才让Q2导通。

这段等待的时间就称为死区时间。

Q1关闭需要时间(由MOS管的工艺决定)。

Q1关闭之后,马上打开Q2,此时(一 段时间内)相当于Q1和Q2都导通了,电路会短路。

所以需要死区时间。

带死区插入的互补输出,死区时间要根据MOS管的工艺来调节。

输出控制

在这里插入图片描述

参考信号OCxREF经过死区发生器之后,产生两路带死区的互补信号OCx_DT、OCxN_DT。

(通道1 ~ 3才有互补信号,通道4没有,其余跟通道1 ~ 3一样)

然后,两路带死区的互补信号进入输出控制电路。

如果没有加死区控制,进入输出控制电路的信号是OCxREF。

进入输出控制电路的信号,被分成两路。

一路是原始信号,一路是被反向的信号。

由寄存器CCER的位CCxP、CCxNP控制。

经过极性选择的信号,是否由OCx引脚输出到外部引脚CHx/CHxN,由寄存器CCER的位 CxE/CxNE 配置。

如果加入断路(刹车)功能,断路和死区寄存器BDTR的MOE、OSSI、OSSR这三个位会共同影响输出的信号。

输出引脚

输出比较的输出信号,最终通过定时器的外部IO输出,分别为CH1/2/3/4。

前面三个通道还有互补的输出通道CH1/2/3N。

断路功能

断路功能是电机控制的刹车功能。

使能断路功能时,根据相关控制位状态,修改输出信号电平。

在任何情况下,OCx和OCxN输出都不能同时为有效电平,这与电机控制常用的H桥电路结构有关。

断路源可以是时钟故障事件,由内部复位时钟控制器中的时钟安全系统(CSS)生成。

也可以是外部断路输入IO,两者是或运算关系。

系统复位启动都默认关闭断路功能。

断路和死区寄存器(TIMx_BDTR)的BKE位置1,使能断路功能。

可通过TIMx_BDTR寄存器的BKP位,设置断路输入引脚的有效电平,设置为1时,输入 BRK为高电平有效,否则低电平有效。

发送断路时,将产生以下效果:

TIMx_BDTR寄存器中,主输出模式使能(MOE)位被清零,输出处于无效、空闲或复位状态;

根据相关控制位状态,控制输出通道引脚电平;

当使能通道互补输出时,会根据情况自动控制输出通道电平;

将TIMx_SR寄存器中的BIF位置1,并可产生中断和DMA传输请求。

如果TIMx_BDTR寄存器中的自动输出使能(AOE)位置1,则MOE位会在发生下一个UEV事件时自动再次置1。

输入捕获应用

脉宽/频率测量示意图

在这里插入图片描述

测量频率

捕获通道TIx上出现上升沿时,发生第一次捕获。

计数器CNT的值,被锁存到捕获寄存器CCR中,进入捕获中断。

在中断服务程序中记录一次捕获(可以用一个标志变量来记录),并把捕获寄存器中的值读取到value1中。

当出现第二次上升沿时,发生第二次捕获。

计数器CNT的值,再次被锁存到捕获寄存器CCR中,再次进入捕获中断。

在捕获中断中,把捕获寄存器的值读取到value3中,清除捕获记录标志。

利用value3和value1的差值,可以算出信号的周期(频率)。

测量脉宽

当捕获通道TIx上出现上升沿时,发生第一次捕获。

计数器CNT的值,被锁存到捕获寄存器CCR中,进入捕获中断。

在中断服务程序中记录一次捕获(用一个标志变量来记录),并把捕获寄存器中的值读取到value1中。

然后,把捕获边沿改变为下降沿捕获,目的是捕获后面的下降沿。

当下降沿到来的时候,发生第二次捕获。

计数器CNT的值会再次被锁存到捕获寄存器CCR中,再次进入捕获中断。

在捕获中断中,把捕获寄存器的值读取到value3中,并清除捕获记录标志。

然后把捕获边沿设置为上升沿捕获。

在测量脉宽过程中,需要来回切换捕获边沿的极性。

如果测量的脉宽时间比较长,定时器就会发生溢出。

溢出的时候,会产生更新中断,可以在中断里面对溢出进行记录处理。

PWM输入模式

可以使用PWM输入模式测量脉宽和频率。

该模式是输入捕获的特例,只能使用通道1和通道2,通道3和通道4无法使用。

与上面只使用一个捕获寄存器测量脉宽和频率的方法相比,PWM输入模式需占用两个捕获寄存器。

在这里插入图片描述

使用PWM输入模式时,一个输入通道(TIx)会占用两个捕获通道(ICx),所以,一个定时器使用PWM输入的时候最多只能使用两个输入通道(TIx)。

以输入通道TI1工作在PWM输入模式为例:

PWM信号由输入通道TI1进入,因为是PWM输入模式,信号被分为两路。

一路是TI1FP1,另一路是TI2FP2。

其中一路是周期,另一路是占空比。

作为触发输入的那一路信号,对应的就是周期,另一路对应占空比。

作为触发输入的那一路信号,还需设置极性,上升沿还是下降沿捕获。

设置好触发输入的极性,另外一路硬件就会自动配置为相反的极性捕获,无需软件配置。

总之,选定输入通道,确定触发信号,设置触发信号的极性。

因为是PWM输入,另一路信号由硬件配置,无需软件配置。

当使用PWM输入模式时,必须将从模式控制器配置为复位模式(配置寄存器 SMCR 的位 SMS[2:0]来实现),当启动触发信号,开始进行捕获时,把计数器CNT复位清零。

PWM输入模式时序图如下。

在这里插入图片描述

PWM信号由输入通道TI1进入,配置TI1FP1为触发信号,上升沿捕获。

当上升沿的时候,IC1、IC2同时捕获,计数器CNT清零。

下降沿的时候,IC2捕获,计数器CNT的值,被锁存到捕获寄存器CCR2中,到了下一个上升沿的时候,IC1捕获,计数器CNT的值,被锁存到捕获寄存器CCR1中。

CCR2+1测量的是脉宽,CCR1+1测量的是周期。

CCR2和CCR1的值在计算占空比和频率时,都必须加1。

因为计数器是从0开始计数的。

从软件上来说,用PWM 输入模式测量脉宽和周期更容易,代价是需要占用两个捕获寄存器。

输出比较应用

输出比较模式共有8种,由寄存器CCMRx的位OCxM[2:0]配置。

PWM输出模式

PWM 输出,就是对外输出脉宽(即占空比)可调的方波信号,信号频率由自动重装寄 存器ARR的值决定,占空比由比较寄存器CCR的值决定

PWM模式分为两种,PWM1、PWM2。

在这里插入图片描述

以PWM1模式为例。

以计数器CNT计数的不同方向,分为边沿对齐模式、中心对齐模式。

PWM信号主要用来控制电机,一般的电机控制用的是边沿对齐模式,FOC电机一般用中心对齐模式。

下面分析这两种模式信号波形的区别。

PWM边沿对齐模式

边沿对齐模式PWM1波形如下(ARR=8)

在这里插入图片描述

递增计数模式下,计数器从0计数到自动重装载值(TIMx_ARR寄存器的内容),然后重新从0开始计数,生成计数器上溢事件。

边沿对齐模式下,计数器CNT只工作在一种模式,递增或者递减模式。

这里以CNT工作在递增模式为例,上图,ARR=8,CCR=4,CNT从0开始计数.

当CNT<CCR,OCxREF为有效的高电平,同时,比较中断寄存器CCxIF置位。

CCR<=CNT<=ARR,OCxREF为无效的低电平。CNT又从0开始计数,并生成计数器上溢事件,循环往复。

PWM中心对齐模式

中心对齐模式PWM1波形如下(ARR=8)。
在这里插入图片描述

中心对齐模式,计数器CNT工作在递增/递减模式下。

开始时,计数器CNT从0开始,计数到自动重载值减1(ARR-1),生成计数器上溢事件;

然后从自动重载值开始,向下计数到1,生成计数器下溢事件。

然后从0开始重新计数。

上图,ARR=8,CCR=4。

第一阶段,计数器CNT工作在递增模式下,从0开始计数。

当CNT<CCR的值时,OCxREF为有效的高电平。

CCR<=CNT<ARR,OCxREF为无效的低电平。

第二阶段,计数器CNT工作在递减模式,从ARR的值开始递减。

CNT>CCR时,OCxREF为无效的低电平。

CCR=>CNT>=1时,OCxREF为有效的高电平。

把波形分为两个阶段,第一个阶段1,2是计数器CNT工作在递增模式的波形。

第二个阶段3,4是计数器CNT工作在递减模式的波形。

中心对齐模式下的波形特征:

1,3阶段的时间相等,2,4阶段的时间相等。

中心对齐模式又分为中心对齐模式1/2/3。

由寄存器CR1位CMS[1:0]配置。

区别在于中断标志位CCxIF置1的条件。

模式1在CNT递减计数时置1,模式2在CNT递增计数时置1,模式3在CNT递增和递减计数时都置1。

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

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

相关文章

stm32 PWM互补输出

stm32高级定时器例子—stm32 PWM互补输出 定时器初始化结构体 TIM_TimeBaseInitTypeDef 时基结构体&#xff0c;用于定时器基础参数设置&#xff0c;与TIM_TimeBaseInit函数配合使用&#xff0c;完成配置。 typedef struct { TIM_Prescaler /*定时器预分频器设置&…

stm32 输入捕获 测量脉宽

选用通用定时器TIM5的CH1。 PA0接一个按键&#xff0c;默认接GND&#xff0c;当按键按下时&#xff0c;IO口被拉高&#xff0c;此时&#xff0c;可利用定时器的输入捕获功能&#xff0c;测量按键按下的这段高电平的时间。 宏定义方便程序升级、移植&#xff0c;举个例子&#…

stm32 PWM输入捕获

普通的输入捕获&#xff0c;可使用定时器的四个通道&#xff0c;一路捕获占用一个捕获寄存器. PWM输入&#xff0c;只能使用两个通道&#xff0c;通道1和通道2。 一路PWM输入占用两个捕获寄存器&#xff0c;一个捕获周期&#xff0c;一个捕获占空比。 这里&#xff0c;用通用…

直流有刷减速电机结构及其工作原理

寒假无聊拆了个直流有刷减速电机。下面介绍一下它的结构和工作原理 直流电机 直流电机和直流减速电机&#xff1a; 构造上相差的是一个减速齿轮组。 普通的直流电机当空载时&#xff0c;电机的转速由电压决定&#xff0c;直流减速电机的转速由齿轮组和电压决定。 齿轮组作…

数据库基础概念

postgreSQL设置只允许本地机器连接 在D:\program files\PostgreSQL\14\data里面设置postgresql.conf&#xff1a; listen_addresses ‘localhost’ 然后在服务窗口重新启动postgresql。 PostgreSQL执行SQL语句 PostgreSQL的psql工具可通过命令行执行SQL语句。 psql -U po…

电机和驱动的种类

电机种类 直流电机 分为普通的直流电机、直流减速电机、有刷、无刷。 直流有刷减速电机参数&#xff1a; 空载转速&#xff0c;正常工作电压&#xff0c;电机不带任何负载的转速。 空载电流&#xff0c;正常工作电压&#xff0c;电机不带任何负载的工作电流。单位mA。 负载…

Linux shell基础知识

Shell简介 Shell是一个应用程序&#xff0c;接收用户输入的命令&#xff0c;根据命令做出相应动作。 Shell负责将应用层或者用户输入的命令&#xff0c;传递给系统内核。由操作系统内核&#xff0c;来完成相应的工作。然后将结果反馈给应用层或者用户。 shell命令格式&#…

Linux APT VIM 的一些指令

APT APT下载工具&#xff0c;可以实现软件自动下载、配置、安装二进制或源码功能。 APT采用客户端/服务器模式。 sudo apt-get update 更新软件 sudo apt-get check 检查依赖关系 sudo apt-get install package-name 安装软件 apt-get负责下载软件&#xff0c;install负责安…

CATIA 界面介绍

窗口介绍 窗口主要有&#xff1a;菜单栏、工具栏、特征树、罗盘、信息栏、图形区。 菜单栏&#xff0c;开始里面有CATIA的各个功能模块。 图形区&#xff0c;进行3D、2D设计的图形创建、编辑区域。 信息栏&#xff0c;显示用户即将进行操作的文字提示。 工具栏&#xff0c;…

Linux C文件编译

设置编辑器 1.TAB键设置为4空格。 首先用vim打开/etc/vim/vimrc文件&#xff0c;这里面发现root用户才能修改vimrc文件&#xff0c;所以用sudo命令暂时切换到root用户。 在vimrc文件最后面&#xff0c;输入set ts 4完成设置。 然后保存&#xff0c;关闭文件。 2.VIM编辑器显…

catia 草图设计

草图设计界面 进入草图编辑器环境&#xff1a; 菜单栏&#xff0c;文件-新建&#xff0c;然后类型选择Part。 工具栏&#xff0c;点击下面草图按钮。 然后选择草图平面。 然后就进入草图界面。 草图界面主要由菜单栏、工具栏、特征树、信息栏、罗盘、图形区组成。 菜单栏&…

CATIA连接盘实体设计

文件-新建-part。 点击草图按钮&#xff0c;选择xy平面&#xff0c;绘制如下草图。 然后用橡皮擦修改一下。 然后&#xff0c;点击凸台按钮。选择刚刚定义的草图&#xff0c;拉伸20mm。 选择拉伸实体上端面&#xff0c;点击草图按钮&#xff0c;进入草图编辑器。 在草图编辑器…

PostgreSQL 表的创建、删除、更新

psql工具 psql工具&#xff0c;可通过命令行执行SQL语句。 D:\program files\PostgreSQL\14\bin>psql -U postgres 用户 postgres 的口令&#xff1a; psql (14.2) 输入 "help" 来获取帮助信息.postgres#创建数据库 创建表之前&#xff0c;先创建存储表的数据库…

PostgreSQL 简单的查询

查询列 SELECT语句&#xff0c;用于从表中选取数据。 格式&#xff1a; SELECT <列名>,... FROM <表名>;从Product表中&#xff0c;查询三列。 SELECT product_id, product_name, purchase_price FROM Product;查询所有列&#xff0c;格式&#xff1a; SELECT …

PostgreSQL 聚合、分组、排序

聚合函数 用于汇总的函数。 COUNT COUNT&#xff0c;计算表中的行数(记录数)。 计算全部数据的行数&#xff1a; SELECT COUNT(*)FROM Product;NULL之外的数据行数&#xff1a; SELECT COUNT(purchase_price)FROM Product;结果如下图。 对于一个含NULL的表&#xff1a; …

PostgreSQL 插入、删除、更新、事务

INSERT 使用INSERT语句可以向表中插入数据。 创建一个表&#xff1a; CREATE TABLE ProductIns (product_id CHAR(4) NOT NULL,product_name VARCHAR(100) NOT NULL,product_type VARCHAR(32) NOT NULL,sale_price INTEGER DEFAULT 0,purchase_p…

PostgreSQL 视图、子查询

视图 表里面保存的是实际数据&#xff0c;视图里面保存的是SELECT语句(视图本身不存储数据)。 从视图中读取数据&#xff0c;此时视图在内部执行SELECT语句&#xff0c;创建一张临时表。 使用视图的好处&#xff1a;其一&#xff0c;视图不保存数据&#xff0c;节省存储设备…

GD32F307 DAC 输出波形

文章目录DACDAC_CTL 控制寄存器定时器TIMERx_CTL1 控制寄存器改变波形频率DMADMA和外设配合DMA_CHxCNT计数寄存器波形曲线总结源码DAC 如下面框图所示&#xff0c;使能外部触发后&#xff08;通过设置 DAC_CTL 寄存器的 DTENx 位&#xff09;&#xff0c; 当已经选择的触发事件…

GD32 ADC采集电压

文章目录ADCTIMDMA其他一些初始化main总结使用芯片为GD32F307 ADC 连续转换模式&#xff0c;可以运行在规则组通道上&#xff0c;一旦相应软件触发或者外部触发产生&#xff0c;ADC就会采样和转换规定的通道。 采样时间&#xff0c;每个通道可以用不同的时间采样。ADC使用若…

DAC、ADC、FFT使用总结

目录计算公式波形生成DAC波形频率ADC采样时间离散傅里叶变换DFTFFT计算公式 DAC、ADC、FFT之间有些参数环环相扣&#xff0c;所以先整合一下公式。 1.系统时钟周期72MHZ。 2.定时器的单个时钟周期。 3.定时器的触发周期。 4.正弦波一个周期的时间&#xff0c;其中N为正弦波一…