STC15系列学习
51系列
- 参考资料为各芯片数据手册,可在STC官网获取
AT89C52基础模块
- AT89C51只有两个定时器、一个串口、两个外部中断
周期
- 时钟周期也称为振荡周期由晶振决定 = 1/fsc
- 状态周期 = 2*时钟周期
- 机器周期 = 6状态周期 = 12时钟周期
- 指令周期:执行一条指令所需的全部时间,不同的指令需要的时间不同。
- 单周期指令:执行指令需要一个机器周期(12MHz => 1us)
- 双周期指令:执行指令需要两个机器周期(12MHz => 2us)
- 四周期指令:执行指令需要四个机器周期(12MHz => 4us)
引脚
- P0(AD0-7):为一个8位漏级开路双向I/O口(需外接上拉电阻)
- P1、P2(A8-15):标准I/O【P1.0/T2,P1.1/T2EX】
- P3特殊功能I/O,也可作为普通I/O
- P3.0/RXD
- P3.1/TXD
- P3.2/INT0*
- P3.3/INT1*
- P3.4/T0
- P3.5/T1
- P3.6/WR*
- P3.7/RD*
- RST:复位引脚
- ALE / PROG‾\overline{\text{PROG}}PROG:访问外部数据存储器/程序存储器
- PSEN‾\overline{\text{PSEN}}PSEN:程序储存器允许
- EA/VPP:外部访问允许
存储器结构
RAM:0-1F
- 工作寄存器组:4组*8个Ri
RAM:20-2F
- 位寻址区
RAM:30-7F
- 通用RAM
RAM:80-FF
SFR(红色可位寻址) | 符号 | 字节(物理)地址 | 位名称 | |||||||
---|---|---|---|---|---|---|---|---|---|---|
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | |||
P0 | P0 | 80H | P0.7 | P0.6 | P0.5 | P0.4 | P0.3 | P0.2 | P0.1 | P0.0 |
堆栈指针 | SP | 81H | ||||||||
数据指针DPTR | DPH | 82H | ||||||||
DPL | 83H | |||||||||
保留3字节 | 84H-86H | |||||||||
电源和波特率 | PCON | 87H | SMOD | GF1 | GF0 | PD | IDL | |||
定时器计数器控制寄存器 | TCON | 88H | TF1 | TR1 | TF0 | TR0 | IE1 | IT1 | IE0 | IT0 |
定时器计数器方式控制 | TMOD | 89H | GATE1 | C/T*1 | M1_1 | M1_0 | GATE0 | C/T*0 | M0_1 | M0_0 |
定时器计数器0L | TL0 | 8AH | ||||||||
定时器计数器1L | TL1 | 8BH | ||||||||
定时器计数器0H | TH0 | 8CH | ||||||||
定时器计数器1H | TH1 | 8DH | ||||||||
保留2Byte | 8EH-8FH | |||||||||
P1 | P1 | 90H | P1.7 | P1.6 | P1.5 | P1.4 | P1.3 | P1.2 | P1.1 | P1.0 |
保留7Byte | 91H-97H | |||||||||
串行控制 | SCON | 98H | SM0 | SM1 | SM2 | REN | TB8 | RB8 | TI | RI |
串行缓冲区 | SBUF | 99H | ||||||||
P2 | P2 | A0H | P2.7 | P2.6 | P2.5 | P2.4 | P2.3 | P2.2 | P2.1 | P2.0 |
中断允许 | IE | A8H | EA | ET2 (reg52.h //8052 only) | ES | ET1 | EX1 | ET0 | EX0 | |
P3 | P3 | B0H | P3.7 | P3.6 | P3.5 | P3.4 | P3.3 | P3.2 | P3.1 | P3.0 |
中断优先 | IP | B8H | PT2 (reg52.h) | PS | PT1 | PX1 | PT0 | PX0 | ||
定时器/计数器2 | T2CON | C8H | TF2 | EXF2 | RCLK | TCLK | EXEN2 | TR2 | C/T*2 | CP/RL2 |
定时器/计数器2模式 | T2MOD | C9H | T2OE | DCEN | ||||||
捕获 | RCPA2L | CAH | ||||||||
RCPA2H | CBH | |||||||||
定时器/计数器2高低位 | TL2 | CCH | ||||||||
TH2 | CDH | |||||||||
程序状态字 | PSW | D0H | CY | AC | F0 | RS1 | RS0 | OV | PF | |
累加器 | ACC | E0H | ||||||||
寄存器B | B | F0H |
定时器
- 计数周期为:机器周期
定时器/计数器0、1
- 寄存器
定时器计数器控制寄存器 | TCON | 88H | TF1 | TR1 | TF0 | TR0 | IE1 | IT1 | IE0 | IT0 |
---|---|---|---|---|---|---|---|---|---|---|
定时器计数器方式控制 | TMOD | 89H | GATE1 | C/T*1 | M1_1 | M1_0 | GATE0 | C/T*0 | M0_1 | M0_0 |
中断允许 | IE | A8H | EA | ES | ET1 | EX1 | ET0 | EX0 | ||
定时器计数器0L | TL0 | 8AH | ||||||||
定时器计数器1L | TL1 | 8BH | ||||||||
定时器计数器0H | TH0 | 8CH | ||||||||
定时器计数器1H | TH1 | 8DH |
- TCON
- TF:定时器/计数器中断标志-----【硬件置位清零】
- TR:定时器/计数器运行标志
- TMOD
- GATE:门控开关。0:软件启动。1:TR=1的同时还需要外部 INT0、INT1 为1才能启动。
- C/T*:定时器/计数器选择,0:应用为定时器。1:应用为计数器。
- M0、M1:工作模式选择,见下表
M1M0 | 工作方式 | 功能 | 备注 |
---|---|---|---|
00 | 0 | 13位(不可重装) | 高5位加低8位 |
01 | 1 | 16位不可重装 | \ |
10 | 2 | 8位自动重装 | TH值==>>TL值 |
11 | 3 | 两个8位计数器(只适用于T0) |
- IE 【EA = 1】
- ET对应置为才能启用中断功能
定时器T2
- 中断软件清零
- 寄存器
定时器/计数器2 | T2CON | C8H | TF2 | EXF2 | RCLK | TCLK | EXEN2 | TR2 | C/T*2 | CP/RL2 |
---|---|---|---|---|---|---|---|---|---|---|
定时器/计数器2模式 | T2MOD | C9H | T2OE | DCEN | ||||||
定时器/计数器2高低位 | TL2 | CCH | ||||||||
TH2 | CDH | |||||||||
捕获 | RCPA2L | CAH | ||||||||
RCPA2H | CBH |
##### ·T2CON - 有两个信号源:①内部时钟溢出TF2。②外部T2EX负跳沿。 - 定时器2有三个工作方式 - 捕获方式 - 自动重装(向上/下计数) - 波特率发生器
RCLK | TCLK | CP/R2 | EXEN2 | 工作方式 |
---|---|---|---|---|
1 | 1 | x | x | 波特率发生器 |
0 | 0 | 1 | 1 | 外部T2EX*捕获 |
0 | 0 | 1 | 0 | \ |
0 | 0 | 0 | 1 | 外部T2EX*重装 |
0 | 0 | 0 | 0 | 溢出自动重装 |
- T2CON
- TF2:T2溢出标志,硬件置位,软件清零
- EXF2:定时器2外部标志。当EXEN2=1,且当T2EX引脚上出现负跳变而出现捕获或重装载时,EXF2置位,申请中断.此时如果允许定时器2中断,CPU响应中断,执行定时器2中断服务程序,EXF2必须由软件清除。当定时器2工作在向上或向下计数工作方式时(DCEN=1) , ExF2不能激活中断。
- 串行通信(工作模式1和3下【注:工作模式0、2为波特率不可变】)设置
- RCLK:接收时钟允许。1:用T2溢出脉冲作为串行口的接收时钟。0:用Tl的溢出脉冲作为接收时钟。
- TCLK:发送时钟允许。同上。
- EXEN2:T2外部允许标志。【定时器2未用于作串行口的波特率发生器】
- 1:T2 捕获或重装载
- 0:T2EX端的外部信号无效。
- TR2:定时器2启动、暂停
- C/T*:定时器2计数方式。C模式:下跳沿触发
- CP/RL2:捕获/重装载选择。【与EXEN2关联】
- l:T2EN双端出现负跳变脉冲时发生捕获操作。
- 0:若定时器2溢出或EXEN2=l条件下,T2EN双端出现负跳变脉冲,都会出现自动重装载操作。当RCLK=1或TCLK=1时,该位无效,在定时器2溢出时强制其自动重装载。
定时器/计数器2模式 | T2MOD | C9H | T2OE | DCEN |
---|
- T2OE:T2输出允许位,当T2OE=1的时候,允许时钟输出到P1.0。(仅对80C54/80C58有效)
- DCEN:向下计数允许位。DCEN=1是允许T2向下计数,否则向上计数。
重装模式
- 用RCAPH、L值装入T2H、L
捕获模式
- 当EXEN2=0时,只当作一个16bit定时器/计数器。
- 当EXEN2=1,出现T2EN时下跳,将T2H、L装入RCAPH、L
波特率模式
- 用RCAPH、L重装
- 波特率=振荡频率32×[65536−(RCPA2H,RCPA2L)B]波特率=\frac{振荡频率}{32×[65536-(RCPA2H,RCPA2L)_B]}波特率=32×[65536−(RCPA2H,RCPA2L)B]振荡频率
调用方法
定时器0、1
#include <reg52.h>
char timer0 = ; //T0计数值
char timer0_1 = ; //模式3下另一个计数器
void init_T0();int main(){Intr_init();Timer0_init();while(1){/* idle process */};return 0;
}/* 中断初始化 */
void Intr_init()
{ET0 = 1; //开T0中断ET1 = 1; //开T1中断EA = 1;
}
/* 定时器初始化 */
void Timer0_init()
{//初始化定时器0初值/*******模式0*********/TH0 = (8192 - timer0)/255;TL0 = (8192 - timer0)%255;/********模式1*********TH0 = (65536 - timer0)/255;TL0 = (65536 - timer0)%255;*******模式2*********TH0 = 256 - timer0;TL0 = 256 - timer0;*******模式3*********TH0 = 256 - timer0;TL0 = 256 - timer0_1;*///定时器模式选择//参考寄存器表TMOD = 0x00; //模式0:13位/*TMOD = 0x01; //模式1:16位TMOD = 0x02; //模式2:8位自动重装TMOD = 0x03; //两个8位TMOD = TMOD | 0x04; //计数器模式TMOD = TMOD | 0x08; //门控使能*/TR0 = 1;//TR1 = 1;
}
/* T0中断服务程序 */
void intr_T0() interrupt 1
{/* do something */
}
定时器2
#include <reg52.h>
char timer2 = ; //T0计数值
void init_T2();int main(){Intr_init();Timer2_init();while(1){/* idle process */};return 0;
}/* 中断初始化 */
void Intr_init()
{/* 波特率模式下不需中断 *///ET2 = 1; //开T2中断//修改中断优先级PT2 = 1;EA = 1;
}
/* 定时器初始化 */
void Timer2_init()
{//初始化定时器2初值/*******波特率模式*********/TH0 = (65536 - timer2)/255;TL0 = (65536 - timer2)%255;RCAP2L = (65536 - timer2)/255;RCAP2H = (65536 - timer2)%255;/********捕获模式*********TH0 = 0x00;TL0 = 0x00;*******重装模式*********TH0 = 65536 - timer2;TL0 = 65536 - timer2;RCAP2L = 65536 - timer2;RCAP2H = 65536 - timer2;*///定时器2模式选择//参考寄存器表RCLK = 1; //波特率发生器模式TCLK = 1;/*EXEN2 = 1; //使能外部引脚CP_RL2 = 1; //捕获模式C_T2 = 1; //使用计数器*/TR2 = 1;
}
/* T0中断服务程序 */
void intr_T2() interrupt 5
{TF2 = 0; //软件清零//EXF2 = 0;/* do something */
}
中断
- 中断向量表
中断号 | 中断地址 | 中断功能 |
---|---|---|
0 | 03H | EX0 |
1 | 0BH | T0 |
2 | 13H | EX1 |
3 | 1BH | T1 |
4 | 23H | ES |
5 | 2BH | ET2 |
- 优先级
IP^ | 中断功能 |
---|---|
0 | EX0 |
1 | T0 |
2 | EX1 |
3 | T1 |
4 | ES |
5 | ET2 |
串行控制 | SCON | 98H | SM0 | SM1 | SM2 | REN | TB8 | RB8 | TI | RI |
---|---|---|---|---|---|---|---|---|---|---|
串行缓冲区 | SBUF | 99H |
SM0-2
- SM2:多机通信控制位
- SM0、SM1:串口工作模式
SM0 | SM1 | 说明 | 波特率 |
---|---|---|---|
0 | 0 | 同步移位寄存器 | Fosc/12 |
0 | 1 | 10bit帧、8bitdata | 定时器T1/T2 |
1 | 0 | 11bit帧、8bit、1bit多机 | Fosc/32或Fosc/64 |
1 | 1 | 11bit帧、8bit、1bit多机 | T1/T2 |
- REN:接收使能
- T、RB8:11bit帧作为第九位
- TI、RI:发送接收中断标志,硬件置位,软件清零
实现方法
非中断方法
#include <reg52.h>
void Intr_init();
void UartInit();
void send_data(unsigned char x);
unsigned char recieve_data();
unsigned char buf = 0;
int main(){Intr_init();UartInit();send_data(buf);buf = recieve_data();while(1);return 0;
}void Intr_init()
{EA = 1;ES = 0;
}void send_data(unsigned char x)
{SBUF = x;while(TI == 0);TI = 0;
}
unsigned char recieve_data(){unsigned char x;while(RI == 0);x = SBUF;RI = 0;return x;
}
void UartInit() //9600bps@12.000MHz
{PCON &= 0x7F; //波特率不倍速SCON = 0x50; //8位数据,可变波特率TMOD &= 0x0F; //设置定时器模式TMOD |= 0x20; //设置定时器模式TL1 = 0xD9; //设置定时初始值TH1 = 0xD9; //设置定时重载值ET1 = 0; //禁止定时器%d中断TR1 = 1; //定时器1开始计时
}
中断方法
#include <reg52.h>
void Intr_init();
void UartInit();
char busy = 0;
unsigned char buf = 0;
int main(){Intr_init();UartInit();while(1){if(busy == 0){SBUF = 0x25;busy = 1;}};return 0;
}void Intr_init()
{EA = 1;ES = 1;ET1 = 0;
}void UartInit() //9600bps@12.000MHz
{PCON &= 0x7F; //波特率不倍速SCON = 0x50; //8位数据,可变波特率TMOD &= 0x0F; //设置定时器模式TMOD |= 0x20; //设置定时器模式TL1 = 0xD9; //设置定时初始值TH1 = 0xD9; //设置定时重载值ET1 = 0; //禁止定时器%d中断TR1 = 1; //定时器1开始计时
}void Uart_Intr() interrupt 4
{if(RI){RI = 0;/* do something */}else if(TI){TI = 0;busy = 0;/* do something */}
}
重定向printf
#include <reg52.h>
#include <stdio.h>
void Intr_init();
void UartInit();
char send_busy = 0;
char write_busy = 0;
unsigned char buf = 0;/* 重定向 */
//UART1 发送串口数据
void UART1_SendData(char dat)
{ES=0; //关串口中断SBUF=dat; while(TI!=1); //等待发送成功TI=0; //清除发送中断标志ES=1; //开串口中断
}
//重写putchar函数
char putchar(char c)
{UART1_SendData(c);return c;
}int main(){Intr_init();UartInit();while(1){printf("字符串");};return 0;
}void Intr_init()
{EA = 1;ES = 0;ET1 = 0;
}void UartInit() //9600bps@12.000MHz
{PCON &= 0x7F; //波特率不倍速SCON = 0x50; //8位数据,可变波特率TMOD &= 0x0F; //设置定时器模式TMOD |= 0x20; //设置定时器模式TL1 = 0xD9; //设置定时初始值TH1 = 0xD9; //设置定时重载值ET1 = 0; //禁止定时器%d中断TR1 = 1; //定时器1开始计时
}
其他功能寄存器
PCON
电源和波特率 | PCON | 87H | SMOD | GF1 | GF0 | PD | IDL |
---|
- PD:掉电工作位
- IDL:空闲工作位
- GF:系统保留通用标志
PSW
- CY:进位标志
- AC:辅助进位标志
- F0、F1:用户定义
- RS1、0:工作寄存器
- OV:溢出标志
- P:奇偶标志:1–>奇
STC15F100系列
- 在AT89C52基础增加
- 【看门狗】
- 【IAP】
- 【可编程时钟输出】
- 【P3 I/O控制寄存器】
- 在AT89C52基础减去
- 【定时器2(包括捕获功能)】
- 修改定时器工作模式0为16位重装载
特殊寄存器映射
SFR | 符号 | 字节(物理)地址 | 位名称 | |||||||
---|---|---|---|---|---|---|---|---|---|---|
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | |||
电源控制寄存器 | PCON | 87H | - | - | LVDF | - | GF1 | GF0 | PD | IDL |
辅助寄存器0 | AUXR | 8EH | T0*12 | T1*12 | - | - | - | - | - | - |
INT_CLKO | INT_CLKO | 8FH | - | EX4 | EX3 | EX2 | - | - | T1CLKO | T0CLKO |
CLK_DIV | CLK_DIV | 97H | - | - | - | - | - | CLKS2 | CLKS1 | CLKS0 |
P3M1 | P3M1 | B1H | ||||||||
P3M0 | P3M0 | B2H | ||||||||
IRC_CLKO | IRC_CLKO | BBH | - | - | - | - | - | - | IRCS1 | IRCS0 |
WDT_CONR | WDT_CONR | C1H | ||||||||
ISP/IAP Flash数据寄存器 | IAP_DATA | C2H | ||||||||
ISP/IAP Flash地址高8bit | IAP_ADDRH | C3H | ||||||||
ISP/IAP Flash地址低8bit | IAP_ADDRL | C4H | ||||||||
ISP/IAP命令寄存器 | IAP_CMD | C5H | - | - | - | - | - | - | MS1 | MS0 |
ISP/IAP命令触发器 | IAP_TRIG | C6H | ||||||||
ISP/IAP控制寄存器 | IAP_CONTR | C7H | IAPEN | SWBS | SWRST | CMD_FAIL | - | WT2 | WT1 | WT0 |
可编程时钟
系统时钟分频
CLK_DIV | CLK_DIV | 97H | - | - | - | - | - | CLKS2 | CLKS1 | CLKS0 |
---|
- 系统R/C震荡时钟分频如下表格
CLKS2 | CLKS1 | CLKS0 | 分频系数 |
---|---|---|---|
0 | 0 | 0 | /1 |
0 | 0 | 1 | /2 |
0 | 1 | 0 | /4 |
0 | 1 | 1 | /8 |
1 | 0 | 0 | /16 |
1 | 0 | 1 | /32 |
1 | 1 | 0 | /64 |
1 | 1 | 1 | /128 |
可编程时钟输出
- 有三路可编程时钟输出
- IRC_CLKO/P3.4
- CLK_OUT0/P3.5
- CLK_OUT1/P3.4
- 寄存器
辅助寄存器0 | AUXR | 8EH | T0*12 | T1*12 | - | - | - | - | - | - |
---|---|---|---|---|---|---|---|---|---|---|
INT_CLKO | INT_CLKO | 8FH | - | EX4 | EX3 | EX2 | - | - | T1CLKO | T0CLKO |
IRC_CLKO | IRC_CLKO | BBH | - | - | - | - | - | - | IRCS1 | IRCS0 |
- AUXR
- T*12:定时器速度是传统51的12倍**【计数时钟为系统(晶振)时钟】**
- INT_CLKO
【关闭定时器中断,定时器工作于方式0或者2】- T1CLKO:管脚P3.5允许时钟输出【定时器1】
- T0CLKO:管脚P3.4允许时钟输出【定时器0】
- 输出时钟频率= T溢出率 / 2
- IRC_CLKO
- IRCS:输出IRC时钟(见下表)
IRCS1 | IRCS0 | 输出频率 |
---|---|---|
0 | 0 | 无时钟输出 |
0 | 1 | 内部时钟输出不分频 |
1 | 0 | 2分频 |
1 | 1 | 4分频 |
P3口输出模式
- P3M0、1:设定P3.5-3.0
P3M1[5:0] | P3M0[5:0] | I/O模式 |
---|---|---|
0 | 0 | 标准双向I/O |
0 | 1 | 推挽 |
1 | 0 | 高阻 |
1 | 1 | 开漏(外加上拉电阻) |
IAP
- 1KB/2KB数据EEPROM
- 每个扇区512(0.5K)字节数据
ISP/IAP Flash数据寄存器 | IAP_DATA | C2H | ||||||||
---|---|---|---|---|---|---|---|---|---|---|
ISP/IAP Flash地址高8bit | IAP_ADDRH | C3H | ||||||||
ISP/IAP Flash地址低8bit | IAP_ADDRL | C4H | ||||||||
ISP/IAP命令寄存器 | IAP_CMD | C5H | - | - | - | - | - | - | MS1 | MS0 |
ISP/IAP命令触发器 | IAP_TRIG | C6H | ||||||||
ISP/IAP控制寄存器 | IAP_CONTR | C7H | IAPEN | SWBS | SWRST | CMD_FAIL | - | WT2 | WT1 | WT0 |
IAP_CMD
- 命令见下表
MS1 | MS0 | 命令内容 |
---|---|---|
0 | 0 | 待机、无操作 |
0 | 1 | 对数据Flash区读字节 |
1 | 0 | 对数据Flash区进行字节编程 |
1 | 1 | 对数据Flash扇区进行擦除 |
IAP_TRIG
- 先写5AH再写A5H,触发命令
IAP_CONTR
ISP/IAP控制寄存器 | IAP_CONTR | C7H | IAPEN | SWBS | SWRST | CMD_FAIL | - | WT2 | WT1 | WT0 |
---|
- IAPEN:IAP读写擦使能
- SWBS:0:软件选择从用户应用程序启动;1:从系统ISP监控程序区启动
- SWRST:1:软件复位
- CMD_FAIL:触发命令失败标志位,软件清零
- WT2-0:设置等待时间(见下表)
WT2 | WT1 | WT0 | Read | Program | Sector Erase | 推荐系统时钟 |
---|---|---|---|---|---|---|
0 | 0 | 0 | 2个时钟 | 55个时钟 | 21012个时钟 | <=1MHz |
0 | 0 | 1 | 2个时钟 | 110个时钟 | 42024个时钟 | <=2MHz |
0 | 1 | 0 | 2个时钟 | 165个时钟 | 63036个时钟 | <=3MHz |
0 | 1 | 1 | 2个时钟 | 330个时钟 | 126072个时钟 | <=6MHz |
1 | 0 | 0 | 2个时钟 | 660个时钟 | 252114个时钟 | <=12MHz |
1 | 0 | 1 | 2个时钟 | 1100个时钟 | 420240个时钟 | <=20MHz |
1 | 1 | 0 | 2个时钟 | 1320个时钟 | 504288个时钟 | <=24MHz |
1 | 1 | 1 | 2个时钟 | 1760个时钟 | 672384个时钟 | <=30MHz |
typedef unsigned char Byte;
typedef unsigned int Word;
/* 声明ISP功能寄存器地址 */
sfr IAP_DATA = 0xC2;
sfr IAP_ADDRH = 0xC3;
sfr IAP_ADDRL = 0xC4;
sfr IAP_CMD = 0xC5;
sfr IAP_TRIG = 0xC6;
sfr IAP_CONTR = 0xC7;
/* 定义命令 */
#define CMD_IDLE 0 //Stand-By
#define CMD_READ 1 //Byte-READ
#define CMD_PROGRAM 2 //Byte-Program
#define CMD_ERASE 3 //Sector-Erase
/* 定义IAP等待时间 */
#define ENABLE_IAP 0x82 //if SYSCLK<20KHz
#define IAP_ADDRESS 0x0000
void Delay(Byte n);
void IapIdle();
Byte IapReadByte(Word addr);
void IapProgrameByte(Word addr, Byte dat);
void IapEraseSector(Word addr);
void\ main()
{
Word i;
P1 = 0xFE; //System Reset OK!
Delay(10);
IapEraseSector(IAP_ADDRESS); //Erase current sector
for(i=0;i<512;i++){
if(IapReadByte(IAP_ADDRESS+i) != 0xFF)
goto Error;
}
P1 = 0xFC; //Erase Successful
Delay(10);
for(i=0;i<512;i++)
{
IapProgrameByte(IAP_ADDRESS+i,byByte(i));
}
P1 = 0xF0; //Verify Successful
while(1);
Error;
P1 &= 0x7F; //IAP Error
while(1);
}
/* Software delay function */
void Delay(Byte n) {
Word x;
while (n–) {
x = 0;
while (++x);
}
}
/* Disable ISP/IAP/EEPROM function Make MCU in a safe state*/
void IapIdle()
{
IAP_CONTR = 0;
IAP_CMD = 0;
IAP_TRIG = 0;
IAP_ADDRH = 0x80;
IAP_ADDRL =0x00;
}
/* Read one byte form ISP/IAP/EEPROM area
Input: addr
Output: Flash data*/
void IapReadByte(Word addr) {
Byte dat;
IAP_CONTR=ENABLE_IAP;
IAP_CMD=CMD_READ;
IAP_ADDRL=addr;
IAP_ADDRH=addr>>8;
IAP_TRIG=0x5A;
IAP_TRIG=0xA5;
_nop_();
_nop_();
_nop_();dat=IAP_DATA;
IapIdle();return dat;
}
/* Program one byte to ISP/IAP/EEPROM area
Input: addr dat
Output: -
*/
void IapProgrameByte(Word addr, Byte dat)
{
IAP_CONTR=ENABLE_IAP;
IAP_CMD=CMD_PROGRAM;
IAP_ADDRL=addr;
IAP_ADDRH=addr>>8;
IAP_DATA=dat;
IAP_TRIG=0x5A;
IAP_TRIG=0xA5;
nop();
nop();
nop();
IapIdle();
}
/* Erase sector
Input: addr
Output; -
*/
void IapEraseSector(Word addr) {
IAP_CONTR=ENABLE_IAP;
IAP_CMD=CMD_ERASE;
IAP_ADDRL=addr;
IAP_ADDRH=addr>>8;
IAP_TRIG=0x5A;
IAP_TRIG=0xA5;
nop();
nop();
nop();
IapIdle();
}
### 看门狗
- 本质为一个定时器,定时器溢出时将会产生复位。因此必须在定时器计数溢出前将看门狗计数清零,才能保证不产生看门狗复位【也叫做“<font color="red">喂狗</font>”】。
<table><tr><th colspan="8"> WDT_CTRL</td></tr><tr><td><center>WDT_FLAG</td><td> \ </td><td><center>EN_WDT</td><td><center>CLR_WDT</td><td><center>IDLE_WDT</td><td><center>PS[2:0]</td></tr><tr><td><center>看门狗定时器<br>溢出标志</center></td><td> \ </td><td>看门狗使能</td><td><center>看门狗定时器<br>清零</center></td><td><center>空闲模式下<br>看门狗是否工作</center></td><td><center>看门狗定时器<br>分频系数</center></td></tr>
</table>```c
void WDT_INIT() {WDT_CONTR = 0x3c;
}int main(){WDT_INIT();while(1){/* Do Something *//* ------------ *//* xxxxxxxxxxxx *//* ------------ */WDT_CONTR = 0x3c; //喂狗}}
非成模块寄存器总结
PCON
电源控制寄存器 | PCON | 87H | - | - | LVDF | POF | GF1 | GF0 | PD | IDL |
---|
- POF:Power On Flag
- 上电复位标志
- POF=1:冷启动,上电复位
- LVDF:低电压标志,此时不要进行ISP操作
- GF1、0:用户调用
- PD:掉电模式
- 内部时钟停止,CPU、定时器、看门狗停止
- 外部中断继续工作,可通过外部中断唤醒
- 低压检测电路如果被使能,也继续工作
- IDL:空闲模式
- 只有CPU停止工作
- 任何中断都可以唤醒CPU
AUXR
- 见可编程时钟输出
INT_CLKO
INT_CLKO | INT_CLKO | 8FH | - | EX4 | EX3 | EX2 | - | - | T1CLKO | T0CLKO |
---|
STC15F2K60S2系列
- 在STC15F100系列上新增
- 【所有I/O模式控制寄存器】
- 【UART2、3、4】
- 【ADC】
- 【SPI】
- 【CCP/PCA/PWM】
- 【T2、3、4】
复位与时钟
复位
复位的方式
- 上电复位
- 无ISP操作:电源电压上电到复位门槛电压后,延迟8192个时钟后进入用户程序。
- 有ISP操作:当MAX810专用复位电路在ISP编程时被允许,则延迟约180ms,复位才解除。
- RST引脚复位
- RST引脚拉高至少24个时钟+20us后才会复位
- 内部低电压检测电路复位
- LVDF
- ‘看门狗’复位
- 软件复位
- IAP_CONTR送60H
存储单元
寄存器映射
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5LwO9ZxZ-1643465915402)(/assets/STC15F2K60S2_m5t22vtzh.png)]
模块 | 描述 | 符号 | 地址 | 位功能 | |||||||
---|---|---|---|---|---|---|---|---|---|---|---|
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | ||||
电源、时钟、外围设备【I/O引脚复用设置】 | 电源控制寄存器 | PCON | 85H | SMOD | SMOD0 | LVDF | POF | GF1 | GF0 | PD | IDL |
电源控制寄存器2/时钟分频寄存器 | PCON2/CLK_DIV | 97H | MCKO_S1 | MCKO_S0 | ADRJ | Tx_Rx | Tx2_Rx2 | CLKS2 | CLKS1 | CLKS0 | |
辅助寄存器0 | AUXR | 8EH | T0*12 | T1*12 | UART_M0*6 | T2R | T2_C/T* | T2*12 | EXTRAM | SIST2 | |
辅助寄存器1/外围设备功能切换控制寄存器1 | AUXR1/P_SW1 | A2H | S1_S1 | S1_S0 | CCP_S1 | CCP_S0 | SPI_S1 | SPI_S0 | 0 | DPS | |
辅助寄存器2/外围设备功能切换控制寄存器2 | AUXR2/P_SW2 | 8FH | - | EX4 | EX3 | EX2 | - | T2CLKO | T1CLKO | T0CLKO | |
定时器T0~4、掉电唤醒专用定时器 【定时器2控制位在辅助寄存器0 AUXR中】 | 定时器0控制寄存器 | TCON | 88H | TF1 | TR1 | TF0 | TR0 | IE1 | IT1 | IE0 | IT0 |
定时器工作方式寄存器 | TMOD | 89H | GATE1 | C/T*1 | M1.1 | M1.0 | GATE0 | C/T*0 | M0.1 | M0.0 | |
定时器0低8bit | TL0 | 8AH | |||||||||
定时器1低8bit | TL1 | 8BH | |||||||||
定时器0高8bit | TH0 | 8CH | |||||||||
定时器1高8bit | TH1 | 8DH | |||||||||
定时器3、4控制寄存器 | T4T3M | D1H | T4R | T4_C/T* | T4*12 | T4CLKO | T3R | T3_C/T* | T3*12 | T3CLKO | |
定时器4高8bit | TH1 | D2H | |||||||||
定时器4低8bit | TH1 | D3H | |||||||||
定时器3高8bit | TH1 | D4H | |||||||||
定时器3低8bit | TH1 | D5H | |||||||||
定时器2高8bit | TH1 | D6H | |||||||||
定时器2低8bit | TH1 | D7H | |||||||||
掉电专用定时器控制寄存器低8 | WKTCL_CNT | AAH | |||||||||
掉电专用定时器控制寄存器低8 | WKTCH_CNT | ABH | WKTEN | ||||||||
中断控制寄存器 | 中断允许寄存器0 | IE | A8H | EA | ELVD | EADC | ES | ET1 | EX1 | ET0 | EX0 |
中断允许寄存器1 | IE2 | AFH | ET4 | ET3 | ES4 | ES3 | ET2 | ESPI | ES2 | ||
中断优先级寄存器0 | IP | B8H | PPCA | PLVD | PADC | PS | PT1 | PX1 | PT0 | PX0 | |
中断优先级寄存器1 | IP2 | B5H | - | - | - | - | - | - | PSPI | PS2 | |
UART | 串口4控制寄存器 | S4CON | 84H | S4SM0 | S4ST4 | S4SM2 | S4REN | S4TB8 | S4RB8 | S4TI | S4RI |
串口4数据缓冲器 | S4BUF | 85H | |||||||||
串口1控制寄存器 | SCON | 98H | SM0/FE | SM1 | SM2 | REN | TB8 | RB8 | TI | RI | |
串口1数据缓冲器 | SBUF | 99H | |||||||||
串口2控制寄存器 | S2CON | 9AH | S2SM0 | - | S2SM2 | S2REN | S2TB8 | S2RB8 | S2TI | S2RI | |
串口2数据缓冲器 | S2BUF | 9BH | |||||||||
串口3控制寄存器 | S3CON | ACH | S3SM0 | S3ST4 | S3SM2 | S3REN | S3TB8 | S3RB8 | S3TI | S3RI | |
串口3数据缓冲器 | S3BUF | ADH | |||||||||
从机地址控制寄存器 | SADDR | A9H | |||||||||
从机地址掩码寄存器 | SADEN | B9H | |||||||||
ADC | P1模拟通道开关 | P1ASF | 9DH | P17ASF | P16ASF | P15ASF | P14ASF | P13ASF | P12ASF | P11ASF | P10ASF |
A/D转换控制寄存器 | ADC_CONTR | BCH | ADC_POWER | SPEED1 | SPEED0 | ADC_FLAG | ADC_START | CHS2 | CHS1 | CHS0 | |
A/D转换结果高8位寄存器 | ADC_RES | BDH | |||||||||
A/D转换结果低2位寄存器 | ADC_RESL | BEH | |||||||||
SPI | SPI状态寄存器 | SPSTATA | CDH | SIF | WCOL | - | - | - | - | - | - |
SPI控制寄存器 | SPCTL | CEH | SSIG | SPEN | DORD | MSTR | CPOL | CAPHA | SPR1 | SPR0 | |
SPI数据寄存器 | SPDAT | CFH | |||||||||
PCA/PWM | PCA控制寄存器 | CCON | D8H | CF | CR | - | - | CCF3 | CCF2 | CCF1 | CCF0 |
PCA模式寄存器 | CMOD | D9H | CIDL | - | - | - | - | CPS1 | CPS0 | ECF | |
PCA模块0模式寄存器 | CCAPM0 | DAH | - | ECOM0 | CAPP0 | CAPN0 | MAT0 | TOG0 | PWM0 | ECCF0 | |
PCA模块1模式寄存器 | CCAPM1 | DBH | - | ECOM1 | CAPP1 | CAPN1 | MAT1 | TOG1 | PWM1 | ECCF1 | |
PCA模块0模式寄存器 | CCAPM0 | DCH | - | ECOM2 | CAPP2 | CAPN2 | MAT2 | TOG2 | PWM2 | ECCF2 | |
PCA计数器低8位 | CL | E9H | |||||||||
PCA计数器高8位 | CH | F9H | |||||||||
PCA模块0捕捉寄存器低8位 | CCAP0L | EAH | |||||||||
PCA模块1捕捉寄存器低8位 | CCAP1L | EBH | |||||||||
PCA模块2捕捉寄存器低8位 | CCAP2L | ECH | |||||||||
PCA模块0捕捉寄存器高8位 | CCAP0H | FAH | |||||||||
PCA模块1捕捉寄存器高8位 | CCAP1H | FBH | |||||||||
PCA模块2捕捉寄存器高8位 | CCAP2H | FCH | |||||||||
PCA PWM模式辅助寄存器0 | PCA_PWM0 | F2H | EBS0_1 | EBS0_0 | - | - | - | - | EPC0H | EPC0L | |
PCA PWM模式辅助寄存器1 | PCA_PWM1 | F3H | EBS1_1 | EBS1_0 | - | - | - | - | EPC1H | EPC1L | |
PCA PWM模式辅助寄存器2 | PCA_PWM0 | F4H | EBS2_1 | EBS2_0 | - | - | - | - | EPC2H | EPC2L | |
总线控制寄存器 | BUS_SPEED | A1H | - | - | - | - | - | - | EXRTS1 | EXRTS0 |
中断系统
中断源 | 中断向量 | 中断地址 |
---|---|---|
外部中断0 | 0 | 03H |
定时器0 | 1 | 0BH |
外部中断1 | 2 | 13H |
定时器1 | 3 | 1BH |
串口1 | 4 | 23H |
ADC | 5 | 2BH |
LVD | 6 | 33H |
PCA | 7 | 3BH |
串口2 | 8 | 43H |
SPI | 9 | 4BH |
外部中断2 | 10 | 53H |
外部中断3 | 11 | 5BH |
定时器2 | 12 | 63H |
保留 | 13~15 | 6BH~7BH |
外部中断4 | 16 | 83H |
串口3 | 17 | 8BH |
串口4 | 18 | 93H |
定时器3 | 19 | 9BH |
定时器4 | 20 | A3H |
串UART2、3、4
多机通信原理
- 工作在方式2、3,第九位作为地址帧的识别
- 设置SM2 = 1
- 通信步骤
从机流程
ADC
- 8通道、10位
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0oyu048X-1643465915404)(/assets/ADC.png)]
P1模拟通道开关 | P1ASF | 9DH | P17ASF | P16ASF | P15ASF | P14ASF | P13ASF | P12ASF | P11ASF | P10ASF |
---|---|---|---|---|---|---|---|---|---|---|
A/D转换控制寄存器 | ADC_CONTR | BCH | ADC_POWER | SPEED1 | SPEED0 | ADC_FLAG | ADC_START | CHS2 | CHS1 | CHS0 |
A/D转换结果高8位寄存器 | ADC_RES | BDH | ||||||||
A/D转换结果低2位寄存器 | ADC_RESL | BEH |
- P1ASF:P1管脚A/D通道开关
- ADC_CONTR:
- ADC_POWER:ADC模块电源开关(使能AD功能)
- SPEED1、0:转换速度
- ADC_FLAG:转换完成标志
- ADC_START:开始转换使能
- CHS2~0:通道选择
- CLK_DIV: D5【ADRJ】
- 结果存放方法
- 0:ADC_RES放高8位结果,ADC_RESL[1,0]放低2位
- 1:ADC_RES[1,0]放高2位,ADC_RESL放低8位结果
SPEED1 | SPEED1 | A/D转换所需时间 |
---|---|---|
1 | 1 | 90个时钟周期转换一次 |
1 | 0 | 180时钟周期 |
0 | 1 | 360时钟周期 |
0 | 0 | 540时钟周期 |
void delay_1(uchar x) //延时程序
{
uchar i,j;
for(i=0;i<=x;i++)
for(j=0;j<=20;j++)
_Nop();
}
void main() //主程序
{
unsigned char status; //定义字符型变量保存A/D转换状态
ADC_CONTR |= 0x80; //打开A/D转换电源
delay_1(1000) ; //适当延时
P1ASF=0x03; //设置ADC0,ADC1为模拟量输入功能while(1)
{
/* 转换通道0 */
ADC_CONTR |= 0x08; //选择输入通道0,并启动A/D转换
delay_1(1000) ; //适当延时
status=0; //A/D转换初始状态为0
while(status==0) //等待A/D转换结束
{
status=ADC_CONTR & 0x10; //读取ADC_FLAG状态赋予变量status保存
}
ADC_CONTR&=0xe7; //将ADC_FLAG清0
adc_value=ADC_RES; //保存8位A/D转换结果,范围为0-255
/* 转换通道1 */ADC_CONTR|=0x09; //选择输入通道1,并启动A/D转换delay_1(1000) ;status=0;while(status==0){status=ADC_CONTR&0x10;}ADC_CONTR&=0xe7;adc_value1=ADC_RES;
}
}
### CCP/PCA/PWM
- 可以理解为定时器和比较器的组合
- 比较模块有4种工作模式- <font color="red">上下沿捕获</font>- <font color="red">软件定时器</font>- <font color="red">高速输出</font>- <font color="red">PWM输出</font>
<table><tr><th colspan="2">PCA_PWMn</th><th colspan="7">CCAPMn</th><th rowspan="2">模块功能</th></tr><tr><th>EBSn_1</th><th>EBSn_0</th><th>ECOMn</th><th>CAPPn</th><th>CAPNn</th><th>MATn</th><th>TOGn</th><th>PWMn</th><th>ECCFn</th></tr><tr><th>X</th><th>X</th><th>0</th><th>0</th><th>0</th><th>0</th><th>0</th><th>0</th><th>0</th><th>无</th></tr><tr><th>0</th><th>0</th><th>1</th><th>0</th><th>0</th><th>0</th><th>0</th><th>1</th><th>0</th><th>8bitPWM、无中断</th></tr><tr><th>0</th><th>1</th><th>1</th><th>0</th><th>0</th><th>0</th><th>0</th><th>1</th><th>0</th><th>7bitPWM、无中断</th></tr><tr><th>1</th><th>0</th><th>1</th><th>0</th><th>0</th><th>0</th><th>0</th><th>1</th><th>0</th><th>6bitPWM、无中断</th></tr><tr><th>1</th><th>1</th><th>1</th><th>0</th><th>0</th><th>0</th><th>0</th><th>1</th><th>0</th><th>8bitPWM、无中断</th></tr><tr><th>0</th><th>0</th><th>1</th><th>1</th><th>0</th><th>0</th><th>0</th><th>1</th><th>1</th><th>8bitPWM、由低变高中断</th></tr><tr><th>0</th><th>1</th><th>1</th><th>1</th><th>0</th><th>0</th><th>0</th><th>1</th><th>1</th><th>7bitPWM、由低变高中断</th></tr><tr><th>1</th><th>0</th><th>1</th><th>1</th><th>0</th><th>0</th><th>0</th><th>1</th><th>1</th><th>6bitPWM、由低变高中断</th></tr><tr><th>1</th><th>1</th><th>1</th><th>1</th><th>0</th><th>0</th><th>0</th><th>1</th><th>1</th><th>8bitPWM、由低变高中断</th></tr><tr><th>0</th><th>0</th><th>1</th><th>0</th><th>1</th><th>0</th><th>0</th><th>1</th><th>1</th><th>8bitPWM、由高变低中断</th></tr><tr><th>0</th><th>1</th><th>1</th><th>0</th><th>1</th><th>0</th><th>0</th><th>1</th><th>1</th><th>7bitPWM、由高变低中断</th></tr><tr><th>1</th><th>0</th><th>1</th><th>0</th><th>1</th><th>0</th><th>0</th><th>1</th><th>1</th><th>6bitPWM、由高变低中断</th></tr><tr><th>1</th><th>1</th><th>1</th><th>0</th><th>1</th><th>0</th><th>0</th><th>1</th><th>1</th><th>8bitPWM、由高变低中断</th></tr><tr><th>0</th><th>0</th><th>1</th><th>1</th><th>1</th><th>0</th><th>0</th><th>1</th><th>1</th><th>8bitPWM、每次翻转产生中断</th></tr><tr><th>0</th><th>1</th><th>1</th><th>1</th><th>1</th><th>0</th><th>0</th><th>1</th><th>1</th><th>7bitPWM、每次翻转产生中断</th></tr><tr><th>1</th><th>1</th><th>1</th><th>1</th><th>1</th><th>0</th><th>0</th><th>1</th><th>1</th><th>6bitPWM、每次翻转产生中断</th></tr><tr><th>1</th><th>1</th><th>1</th><th>1</th><th>1</th><th>0</th><th>0</th><th>1</th><th>1</th><th>8bitPWM、每次翻转产生中断</th></tr><tr><th>X</th><th>X</th><th>X</th><th>1</th><th>0</th><th>0</th><th>0</th><th>0</th><th>X</th><th>16bit捕获模式,由CCPn/PCAn的上升沿触发</th></tr><tr><th>X</th><th>X</th><th>X</th><th>0</th><th>1</th><th>0</th><th>0</th><th>0</th><th>X</th><th>16bit捕获模式,由CCPn/PCAn的下降沿触发</th></tr><tr><th>X</th><th>X</th><th>X</th><th>1</th><th>1</th><th>0</th><th>0</th><th>0</th><th>X</th><th>16bit捕获模式,由CCPn/PCAn的跳变触发</th></tr><tr><th>X</th><th>X</th><th>1</th><th>0</th><th>0</th><th>1</th><th>0</th><th>0</th><th>X</th><th>16位软件定时器</th></tr><tr><th>X</th><th>X</th><th>1</th><th>0</th><th>0</th><th>1</th><th>1</th><th>0</th><th>X</th><th>16位高速脉冲输出</th></tr>
</table>#### 寄存器
<table><tr><th>PCA控制寄存器</th><th>CCON</th><th>D8H</th><th>CF</th><th>CR</th><th>-</th><th>-</th><th>CCF3</th><th>CCF2</th><th>CCF1</th><th>CCF0</th></tr><tr><th>PCA模式寄存器</th><th>CMOD</th><th>D9H</th><th>CIDL</th><th>-</th><th>-</th><th>-</th><th>-</th><th>CPS1</th><th>CPS0</th><th>ECF</th></tr><tr><th>PCA模块0模式寄存器</th><th>CCAPM0</th><th>DAH</th><th>-</th><th>ECOM0</th><th>CAPP0</th><th>CAPN0</th><th>MAT0</th><th>TOG0</th><th>PWM0</th><th>ECCF0</th></tr><tr><th>PCA模块1模式寄存器</th><th>CCAPM1</th><th>DBH</th><th>-</th><th>ECOM1</th><th>CAPP1</th><th>CAPN1</th><th>MAT1</th><th>TOG1</th><th>PWM1</th><th>ECCF1</th></tr><tr><th>PCA模块0模式寄存器</th><th>CCAPM0</th><th>DCH</th><th>-</th><th>ECOM2</th><th>CAPP2</th><th>CAPN2</th><th>MAT2</th><th>TOG2</th><th>PWM2</th><th>ECCF2</th></tr><tr><th>PCA计数器低8位</th><th>CL</th><th>E9H</th><th colspan="8"> </th></tr><tr><th>PCA计数器高8位</th><th>CH</th><th>F9H</th><th colspan="8"> </th></tr><tr><th>PCA模块0捕捉寄存器低8位</th><th>CCAP0L</th><th>EAH</th><th colspan="8"> </th></tr><tr><th>PCA模块1捕捉寄存器低8位</th><th>CCAP1L</th><th>EBH</th><th colspan="8"> </th></tr><tr><th>PCA模块2捕捉寄存器低8位</th><th>CCAP2L</th><th>ECH</th><th colspan="8"> </th></tr><tr><th>PCA模块0捕捉寄存器高8位</th><th>CCAP0H</th><th>FAH</th><th colspan="8"> </th></tr><tr><th>PCA模块1捕捉寄存器高8位</th><th>CCAP1H</th><th>FBH</th><th colspan="8"> </th></tr><tr><th>PCA模块2捕捉寄存器高8位</th><th>CCAP2H</th><th>FCH</th><th colspan="8"> </th></tr><tr><th>PCA PWM模式辅助寄存器0</th><th>PCA_PWM0</th><th>F2H</th><th>EBS0_1</th><th>EBS0_0</th><th>-</th><th>-</th><th>-</th><th>-</th><th>EPC0H</th><th>EPC0L</th></tr><tr><th>PCA PWM模式辅助寄存器1</th><th>PCA_PWM1</th><th>F3H</th><th>EBS1_1</th><th>EBS1_0</th><th>-</th><th>-</th><th>-</th><th>-</th><th>EPC1H</th><th>EPC1L</th></tr><tr><th>PCA PWM模式辅助寄存器2</th><th>PCA_PWM0</th><th>F4H</th><th>EBS2_1</th><th>EBS2_0</th><th>-</th><th>-</th><th>-</th><th>-</th><th>EPC2H</th><th>EPC2L</th></tr>
</table>```mermaid
classDiagramPCA计数器 --* PCA模块0PCA计数器 --* PCA模块1PCA计数器 --* PCA模块2计数器寄存器 --> PCA计数器计数器寄存器 : CMOD计数器寄存器 : CCON计数器寄存器 : CH、CLPCA模块0 <-- 捕获模块寄存器PCA模块1 <-- 捕获模块寄存器PCA模块2 <-- 捕获模块寄存器捕获模块寄存器 : CCAPMn捕获模块寄存器 : CCAPnH、L捕获模块寄存器 : PCA_PWMn
计数器寄存器
- CMOD:设置计数器模式
- CIDL:空闲模式下是否停止计数
- CPS2~0:计数脉冲源
- ECF:PCA计数器
- CCON
- CF:计数溢出标志、软件清零
- CR:计数器启动
- CCF2~0:对应PCA模块中断请求,软件清零
CPS2 | CPS1 | CPS0 | 时钟源输入 |
---|---|---|---|
0 | 0 | 0 | 系统时钟/12 |
0 | 0 | 1 | 系统时钟/2 |
0 | 1 | 0 | 定时器0的溢出脉冲 |
0 | 1 | 1 | ECI外部引脚输入的时钟,最大位系统时钟/2 |
1 | 0 | 0 | 系统时钟 |
1 | 0 | 1 | 系统时钟/4 |
1 | 1 | 0 | 系统时钟/6 |
1 | 1 | 1 | 系统时钟/8 |
- CH、CL
计数器计数值
捕获模块寄存器 - CCAPMn
- ECOMn:比较器使能
- CAPPn:Positive Capture 上跳沿捕获
- CAPNn:Negative Capture 下跳沿捕获
- MATn:匹配使能
- TOGn:翻转使能
- PWMn:PWM模块使能
- ECCF:对应模块中断使能
- CCAPnH、L
捕获模块缓存器 - PCA_PWMn:
- EBSn_1、0:选择PWM输出的位数
- EPCnH、L:在PWM模式下Cn_1与CCAPnH组成9bit;Cn_0与CCAPnL组成9bit
捕获模式
- 功能描述:捕捉输入信号的上下沿,可引起中断
- 应用场景:作为外部中断的扩展、测量方波信号的周期
软件定时器
- 当比较模块CCAPnH、L等于CH、L时,产生CCFn中断
高速输出
- CCAPM:ECOM、MAT、TOG值位
- TOG:匹配时输出自动翻转
PWM
- CCAPM:PWMn、ECOM置位,MAT、TOG清零
- 计数值小于CCPH、L则输出0,大于则输出1
SPI
- 串行、同步、全双工、多对多、无应答
通信接口
- MISO : Master Input Slaver Output
- MOSI : Master Output Slaver Input
- SCLK : Serial Clock
- CS : Chip Select
相关寄存器
SPICTL:SPI控制寄存器 | ||||||
---|---|---|---|---|---|---|
0-主从机由硬件确定 1-主从机由寄存器软件确定 | SPI使能 | 先发高位还是低位 |
SPSATA:SPI状态寄存器 | |||||||
---|---|---|---|---|---|---|---|
0-主从机由硬件确定 1-主从机由寄存器软件确定 | 在前一次发送未完成时 SPIDATA不能写入新数据 | \ |
P_SW1(AUXR1) :SPI引脚设置 | |||||||
---|---|---|---|---|---|---|---|
见下表 |
-
SPI_S1&0 SS MOSI MISO SCLK 00 P1.2 P1.3 P1.4 P1.5 01 P2.4 P2.3 P2.2 P2.1 10 P5.4 P4.0 P4.1 P4.3 11 无效
调用方法
void InitSPI()
{SPDAT = 0; //初始化SPI数据SPSTAT = SPIF | WCOL; //清除SPI状态位SPCTL = SPEN; //从机模式
}void main() {nitSPI(); //初始化SPI IE2 |= ESPI;EA = 1;
}void spi_isr() interrupt 9 //SPI中断服务程序 9 (004BH)
{SPSTAT = SPIF | WCOL; //清除SPI状态位if (MSSEL){SPCTL = SPEN; //重置为从机模式MSSEL = 0;SPISS = 1; //拉高从机的SSSendUart(SPDAT); //返回SPI数据}else{ //对于从机(从主机接收SPI数据,同时SPDAT = SPDAT; // 发送前一个SPI数据给主机)}
}
STC15Wxxxx
- 在STC15F系列基础上新增
- 15位PWM·6路独立输出
- STC15W4K32S4系列的芯片,上电后所有与PWM相关的IO口均为高阻态 ,需将这些口设置为准双向口或强推挽模式方可正常使用
- 相关IO: P0.6/P0.7/P1.6/P1.7/P2.1/P2.2/P2.3/P2.7/P3.7/P4.2/P4.4/P4.5
- 可作为电机驱动芯片进行设计g
15位PWM
- 该模块与CCP/PCA/PWM模块中的PWM功能是两个部分
- PWM1由CCP模块产生
- PWM2-7由此模块产生
- 该模块控制寄存器位于外部RAM存储单元中,因此,要先使能外部存储模块
辅助寄存器2 【AUXR2 / P_SW2】
AUXR2 / P_SW2 | |||||||
---|---|---|---|---|---|---|---|
EAXSFR | 0 | 0 | 0 | ? | S4_S | S3_S | S2_S |
- EAXSFR :使能外部扩展RAM中的特殊寄存器
PWM配置寄存器 【PWMCFG】
PWMCFG | |||||||
---|---|---|---|---|---|---|---|
? | CBTADC | C7INI | C6INI | C5INI | C4INI | C3INI | C2INI |
- CBTADC :PWM计数器归零触发ADC转换控制位, 当它为0, 不会触发ADC转换; 为1就触发.
- 注: 前提是PWM和ADC都要使能, ENPWM = 1 && ADCON = 1
- CxINI(x: 2-7) ——> 6路输出
设置PWMx, 当它为0,表示PWMx输出端口初始电压为低电平, 为1就是高电平
PWM控制寄存器 【PWMCR】
PWMCR | |||||||
---|---|---|---|---|---|---|---|
ENPWM | ECBI | ENC7O | ENC6O | ENC5O | ENC4O | ENC3O | ENC2O |
- ENPWM :使能PWM。 0: 关闭PWM模块; 1:开通PWM模块
- ECBI : PWM计数器归零中断使能位, 为0,关闭归零中断(但是CBIF依然会被硬件置位); 为1, 使能PWM计数器归零中断
- ENCxO: PWMx输出使能位, 为0, 端口为通常IO口, 为1, 就作为PWM波形输出口
PWM中断标志寄存器 【PWMIF】
PWMIF | |||||||
---|---|---|---|---|---|---|---|
? | CBIF | C7IF | C6IF | C5IF | C4IF | C3IF | C2IF |
- CBIF: PWM计数器归零中断标志位. 当PWM计数归零, 硬件将它置一, 同时如果中断允许,程序会跳转到相应的中断入口执行中断程序.
- CxIF: 第x通道PWM中断标志位, 可设置在翻转点1和翻转点2触发CxIF, 当PWM发生翻转是, 硬件自动将该位置置一. 当EPWMxI为1时, 程序会跳转至相应的中断入口执行中断服务程序。
- 软件清0
PWM外部异常控制寄存器 【PWMFDCR】
- 外部异常通常为控制输出电压值(通过电压比较模块)产生异常【可以看作是一种负反馈控制接口】
PWMFDCR | |||||||
---|---|---|---|---|---|---|---|
? | ? | ENFD | FLTFLIO | EFDI | FDCMP | FDIO | FDIF |
- ENFD: PWM外部异常检测功能控制位. 为0就关闭异常功能检测, 为1就开启
- FLTFLIO: 发生PWM外部异常时,对PWM输出口的控制位. 为0, 发生PWM外部异常时, PWM输出口不做任何改变, 为1时, PWM输出口立即进入高阻模式
- 注: 只有ENCxO为1所对应的端口才会被强制悬空. 当PWM外部异常状态消失后, 相应的PWM输出口就会自动回复以前的I/O口设置
- EFDI: PWM异常检测中断使能. 当它为0, 关闭异常检测中断(FDIF仍然会被硬件置位); 当该位为1时, 使能PWM异常检测中断
- FDCMP: 设定PWM异常检测源为比较器的输出. 为0, PWM跟比较器没关系, 为1, P5.5/CMP+的电平比P5.4/CMP-的电平高或者比P5.5/CMP+的电平比内部翻看电源电压1.28V高时, 触发PWM异常
- FDIO: 设定PWM异常检测源为P2.4的状态. 为0, P2.4和PWM无关, 为1, P2.4为高电平时触发PWM异常
- FDIF: 异常检测中断标志位. 当PWM异常, 即P5.5/CMP+电压比比较器负极P5.4/CMP-的电平高或者比比较器正极P5.5/CMP+的电平比内部参考电压1.28V高, 或者P2.4的电平为高时, 硬件自动将该位置置一. 当EFDI为1时, 程序会跳转到中断入口执行中断服务程序
- 注: 该位需要软件清零
PWM计数器 【PWMCH&L】
PWMCH | |
---|---|
PWMCL |
---|
- PWM计数器是一个15位寄存器, 计数器1~32768之间的任意值都可以作为PWM的周期. PWM波形发生器内部的计数器从0开始计数, 每个PWM时钟递增1. 当内部计数器达到
[PWMCH,PWMCL]
设置的PWM周期时, PWM波形发生器内部的计数器将从0开始重新计数. 硬件会自动将PWM归零中断标志位CBIF置一, 如果ECBI为1, 则程序将跳转到相应中断执行中断服务程序.
PWM时钟选择寄存器 【PWMCKS】
PWMCKS | ||||
---|---|---|---|---|
SELT2 |
- SELT2: PWM时钟源选择. 为0, PWM时钟源为系统时钟经过分频器之后的时钟; 为1, PWM时钟源为T2的溢出脉冲
- PS[3:0] :系统时钟分频参数. SELT2位为0, PWM时钟频率 = 系统时钟频率/(PS[3:0]+1)
PWM翻转计数器 【PWMxT1H&PWMxT1L&PWMxT2H&PWMT2L】
PWMxT1H | |
---|---|
PWMxT1L |
---|
PWMxT2H | |
---|---|
PWMxT2L |
---|
PWMx控制寄存器 【PWMxCR】
PWMxCR | |||||||
---|---|---|---|---|---|---|---|
- PWMx_PS: PWMx输出引脚选择位. 为0, PWMx的输出为PWMx/P?.?. 为1, PWMx输出引脚为PWMx_2/P?.?
- EPWMxI: 中断使能控制位. 为0, 关闭PWMx中断, 为1,开启该中断. 当CxIF被硬件设置为1时, 程序将跳转到相应中断服务程序入口执行中断服务程序.
- ECxT2SI: PWMx的T2匹配发生波形翻转时的中断控制位. 为0, 关闭T2翻转时的中断, 为1, 开启. 当PWMx波形发生器内部计数值与T2计数器所设置的值匹配时, PWM波形发生翻转, 同时硬件将CxIF置位.
- ECxT1SI: PWMx的T1匹配发生波形翻转时的中断控制位. 为0, 关闭T1翻转时的中断, 为1, 开启. 当PWMx波形发生器内部计数直与T1计数器所设置的值匹配时,PWM波形发生翻转,同时硬件将CxIF置位.
PWM中断优先级控制寄存器 【IP2】
IP2 | |||||||
---|---|---|---|---|---|---|---|
- PPWMFD: 异常检测中断优先级控制位, 为0, 低优先级, 为1, 高级优先级
- PPWM: PWM中断优先级控制位. 为0,低优先级, 为1, 高优先级
调用方法
#include <STC15Wxx.h>void PWM_init(){PxM0 = 0x00; //输出置为推挽输出PxM1 = 0x--;/* 配置时钟源、中断、异常管理 */P_SW2 = 0x80; //使能外部RAM寄存器PWMCFG = 0x--; //PWM配置:定时器归零触发ADC转换,端口输出初始电平PWMCR = 0x--; //PWM控制寄存器PWMCH = 0x--; //PWM计数器初始化PWMCL = 0x--;PWMFDCR = 0x--; //PWM异常控制寄存器PWMCKS = 0x00; //PWM计数器时钟设置P_SW2 = P_SW2 | 0b0000--00; //PWM中断优先级设置/* PWM3占空比设置 */PWMxT1H = 0x--; //匹配时自动翻转PWMxT1L = 0x--;PWMxT2H = 0x--; //第二次翻转 PWMxT2L = 0x--;PWMxCR = 0x--; //PWM计数匹配中断及输出引脚设置
}void main() {PWM_init();while(1){/* Do Something *//* ... ... */}
}
void PWM_INTRPT() interrupt 22
{switch(PWMIF){case x: /* Do Something */ break;case x: /* Do Something */ break;default: break;}PWMIF = 0x00; //软件清零全部标志位
}void PWMFDCR_INTRPT() interrupt 23
{PWMFDCR = PWMFDCR & 0xfe; //标志位清零/* Do Something *//* ... ... */
}
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- 第二章-数据的表示和运算
溢出判断的三种方法: 单符号位法双符号位法符号位和进位法 算数移位:(移动的是数,不是小数点 算数右移:除以2 算数左移:乘以2 逻辑移位:即对无符号数的算数移位,左移右移都补0 浮点数运算&a…...
2024/4/7 19:01:22 - typedef与define宏定义的区别
一、两者的区别 typedef常用来定义一个标识符(增加可读性而为标识符另起的别名) #define为一宏定义语句,通常用它来定义常量(包括无参量与带参量),#define宏定义只是简单的字符串替换。而typedef定义的标识符具有一定的封装性。…...
2024/4/20 18:08:30 - 实例013计算某日是该年的第几天
...
2024/4/13 22:10:46 - Cesium开发高级篇 | 03Property机制
Cesium中有关Property的类非常之多,算下来总共有29个,通过Property’关键词搜索结果如下图所示。对于Cesium小白或者对Cesium不太熟悉的人来说,光看搜索结果就已经很懵了,更何况是把他们熟练的用起来。 虽然关于Property类有很多&…...
2024/4/13 22:10:51 - 蓝桥杯 算法训练 拿金币(DP递归法)
问题描述 有一个N x N的方格,每一个格子都有一些金币,只要站在格子里就能拿到里面的金币。你站在最左上角的格子里,每次可以从一个格子走到它右边或下边的格子里。请问如何走才能拿到最多的金币。 输入格式 第一行输入一个正整数n。 以下n行描述该方格。金币数保证是不超过1…...
2024/4/13 22:10:46 - burpsuite WEB渗透工具的基本使用
burpsuite用于攻击web 应用程序的集成平台,包含了许多工具。 burpsuite下载地址:Download Burp Suite Community Edition - PortSwigger 选择社区版下载。社区版相较于专业版也就audit功能被阉割了。 推荐一个学习资料:5号黯区以及B站学习视频up主5号黯区红队攻防…...
2024/4/13 22:11:11 - 解决Word文件写作过程中遇到的常见问题
解决Word文件写作过程中遇到的常见问题 文章目录1. 解决Word写作修改过程中,修改当前字符,后一个字符会自动删除2. Word写作过程中,经常出现 ctrl 设置框3. Word写作过程中,Mathtype上方各选项没有变灰色,但是**打不开…...
2024/4/13 22:10:56 - 九.python技巧
面试题 01.06. 字符串压缩 class Solution:def compressString(self, S: str) -> str:return min(S, "".join(k str(len(list(v))) for k, v in itertools.groupby(S)), keylen)...
2024/4/20 13:57:32 - 数字孪生在制造业的7种应用
数字孪生是对象、产品、设备、人员、过程、供应链乃至整个业务生态系统的精确虚拟副本。它是由物联网(IoT)传感器技术派生而来的数据创建的,该技术附加到或嵌入到原始对象中。这种与云连接的数据允许实时查看对象发生的结构和操作视图&#x…...
2024/4/18 15:18:00 - MySQL 数据库的备份和还原
语法 备份:mysqldump -u用户名 -p密码 数据库的名称 > 保存的路径 还原: 1、登录数据库 2、创建数据库 3、使用数据库 4、执行文件 source 文件路径...
2024/4/18 3:51:09 - UVa 442 Matrix Chain Multiplication 矩阵链乘(用栈来解析表达式)
题目大意: 输入几个矩阵,接着输入一个矩阵乘法表达式,这里的表达式都是用括号括起来的,计算在矩阵相乘中,乘法运算了几次,例如axb矩阵乘以bxc矩阵,乘法次数为a*b*c次。 难点: 表达…...
2024/4/13 22:11:47 - C++ 指针常量/常量指针 const *point/*const point 一句话整明白
目录 精华——区分方法常量指针——const pointer指针常量——pointer to const顶层const和底层const精华——区分方法 从变量名出发,自右向左看,看看是先指针还是先常量 例如 常量指针——const pointer int * const p 变量名是p,向左看…...
2024/4/18 6:53:32 - 20220129--CTF刷题--- WEB方向--简单题--含常见的 HTTP请求头知识点总结
20220129–CTF刷题— WEB方向–简单题–常见的 HTTP请求头–含总结 刷题网站:攻防世界 https://adworld.xctf.org.cn/ 关于更多的刷题平台汇总:这是我自己的汇总(也包含自己可以在本地搭建的 网站) https://blog.csdn.net/qq_51…...
2024/4/13 22:11:47 - Netty的编解码器
Netty常用编解码器 Netty 常用编码器 MessageToByteEncoder 对象编码成字节流 MessageToMessageEncoder 一种消息类型编码成另外一种消息类型 Netty 常用解码器 ByteToMessageDecoder/ReplayingDecoder 将字节流解码为消息对象 MessageToMessageDecoder 将一种消息类型解码为…...
2024/4/23 14:59:02 - tp5数据库查询
tp5数据库查询 注: 打印出最后一条数据库操作的sql语句 echo Db::getLastSql(); 1.使用table方法查询 use think\Db; //查询所有数据 $data Db::table(user)->select(); //查询一条数据 $data Db::table(user)->find();2.使用name方法查询 use think\Db; //查询所有…...
2024/4/20 11:06:10 - 2021-12 CCF 序列查询(100分)
代码: #include<iostream> using namespace std; int main() {int sum0;int n,N;cin>>n>>N;int a[n]; for(int i0;i<n;i) {cin>>a[i]; } for(int j0;j<n-1;j) {sum(j1)*(a[j1]-a[j]); } sumsumn*(N-a[n-1]); cout<<sum<<endl; retu…...
2024/4/5 3:35:18 - 需要练手的项目
B站,飞哥-学相伴 springboot实现本地文件上传 BV1C3411b7wt...
2024/4/13 22:11:37 - LeetCode学习-第二十五天
第二十五天 我使用的C,错误的地方请见谅,文章初衷仅用来督促本人学习,如果恰巧能够给你带来帮助,我会十分开心。 文章目录第二十五天一、200. 岛屿数量二、547. 省份数量三、117. 填充每个节点的下一个右侧节点指针 II一、200. 岛…...
2024/4/16 3:36:07 - n皇后问题(java,内存超限,求助各位)
描述 在 n*n 的国际象棋棋盘上放置n个皇后,使得任何一个皇后都无法直接吃掉其他的皇后(任两个皇后都不能处于同一条横行、纵行或斜线上) 输入 输入有多组(直到-1结束) 每组一行 一个整数 n(0<n<11…...
2024/4/17 12:16:37 - 基于python的opencv的学习
前言 在了解基本的python语法后,我们终于可以开始进行一些项目的实践学习。这里 用opencv进行第一个python项目的上手。 这里我将会分享自己寒假对于opencv的学习 一、安装开发环境 推荐大家使用pycharm!!非常好用。如果之前学习python的话可…...
2024/4/19 11:43:50
最新文章
- 《Redis使用手册之Lua脚本》
《Redis使用手册之Lua脚本》 EVAL:执行脚本 127.0.0.1:6379> eval “return ‘hello world’” 0 “hello world” 127.0.0.1:6379> eval “return redis.call(‘set’,KEYS[1],ARGV[1])” 1 “message” “hello world” OK 127.0.0.1:6379> get message…...
2024/5/1 22:13:24 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - 【UE5 C++】各个头文件的含义
#pragma once 预处理程序指令 作用:保护同一个文件不会被多次包含,使得头文件只会被编译一次, #include “CoreMinimal.h” 包含了一套来自UE4的核心编程环境的普遍存在类型 #include “GameFramework/GameModeBase.h” 基于GameModeBas…...
2024/5/1 8:00:16 - [Spring Cloud] gateway全局异常捕捉统一返回值
文章目录 处理转发失败的情况全局参数同一返回格式操作消息对象AjaxResult返回值状态描述对象AjaxStatus返回值枚举接口层StatusCode 全局异常处理器自定义通用异常定一个自定义异常覆盖默认的异常处理自定义异常处理工具 在上一篇章时我们有了一个简单的gateway网关 [Spring C…...
2024/5/1 13:04:53 - N5171B是德科技N5171B信号发生器
181/2461/8938产品概述: N5171B EXG 射频模拟信号发生器具有最佳的 EXG,旨在满足您对组件参数测试和接收器校准的信号需求。其出色的硬件性能可提供更快的吞吐量、更长的正常运行时间以及极好的准确性和可重复性。 Agilent / HP N5171B EXG 射频模拟信…...
2024/5/1 13:19:00 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/5/1 17:30:59 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/4/30 18:14:14 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/4/29 2:29:43 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/4/30 18:21:48 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/4/27 17:58:04 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/4/27 14:22:49 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/4/28 1:28:33 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/4/30 9:43:09 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/4/27 17:59:30 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/4/25 18:39:16 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/4/28 1:34:08 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/4/26 19:03:37 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/4/29 20:46:55 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/4/30 22:21:04 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/5/1 4:32:01 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/4/27 23:24:42 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/4/28 5:48:52 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/4/30 9:42:22 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/4/30 9:43:22 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/4/30 9:42:49 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57