【问天Block】STC15单片机PWM输出讲解


  • 示波器捕捉到的实时波形

  • 采用的是自制开发板

  • 我的开发板已经开源《【开源分享】自制STC15W408AS开发板》

  • 开发工具:问天Block

  • 采用的是字符编程方式,如果使用图像块编程频率是固定的11.0592MHz,我自制的STC15W408AS使用的是外部16MHz的晶振。

  • 以PCA三路PWM输出范例参考

PWM频率调节

  • 下面的函数是对时钟的分频,决定PWM的工作频率。PCA_Clock_1T频率最高,PCA_Clock_12T频率最低。
PCA_InitStructure.PCA_Clock    = PCA_Clock_1T; //PCA_Clock_1T, PCA_Clock_2T, PCA_Clock_4T, PCA_Clock_6T, PCA_Clock_8T, PCA_Clock_12T, PCA_Clock_Timer0_OF, PCA_Clock_ECI
  • PCA_Clock_1T的频率:16MHz/256=62.5KHz;(时钟频率采用的是外部晶振16MHz,)

  • PCA_Clock_12T = 16MHz/256/12=5208Hz

固定频率下的占空比调节

  • 下面是关于占空比调整的函数,原函数调节的占空比是0~100占空比调整映射到0-254之间不断变化的占空比值。注意:0对应的是最高占空比值,接近100%,254是最小占空比差不多为0.
void loop()
{for (i = 0; i < 255; i = i + 1) {UpdatePwm(PCA0, i);UpdatePwm(PCA1, i);UpdatePwm(PCA2, i);delay(50);}
}

主程序代码

#define SYS_CLK 16000000L//设置时钟频率16MHz#include <STC15X.h>
#include "lib/STC15_PCA.h"
#include "lib/STC15_delay.h"uint8 i;void setup()
{PCA_InitTypeDef    PCA_InitStructure;PCA_InitStructure.PCA_Clock    = PCA_Clock_12T; //PCA_Clock_1T, PCA_Clock_2T, PCA_Clock_4T, PCA_Clock_6T, PCA_Clock_8T, PCA_Clock_12T, PCA_Clock_Timer0_OF, PCA_Clock_ECIPCA_InitStructure.PCA_IoUse    = PCA_P11_P10_P37; //PCA_P12_P11_P10_P37, PCA_P34_P35_P36_P37, PCA_P24_P25_P26_P27PCA_InitStructure.PCA_Interrupt_Mode = DISABLE;  //ENABLE, DISABLEPCA_InitStructure.PCA_Polity   = PolityHigh;  //优先级设置 PolityHigh,PolityLowPCA_InitStructure.PCA_RUN      = DISABLE;  //ENABLE, DISABLEPCA_Init(PCA_Counter,&PCA_InitStructure);PCA_InitStructure.PCA_Mode     = PCA_Mode_PWM; //PCA_Mode_PWM, PCA_Mode_Capture, PCA_Mode_SoftTimer, PCA_Mode_HighPulseOutputPCA_InitStructure.PCA_PWM_Wide = PCA_PWM_8bit; //PCA_PWM_8bit, PCA_PWM_7bit, PCA_PWM_6bitPCA_InitStructure.PCA_Interrupt_Mode = DISABLE;  //PCA_Rise_Active, PCA_Fall_Active, ENABLE, DISABLEPCA_InitStructure.PCA_Value    = 100 << 8;    //对于PWM,高8位为PWM占空比PCA_Init(PCA0,&PCA_InitStructure);PCA_InitStructure.PCA_Mode     = PCA_Mode_PWM; //PCA_Mode_PWM, PCA_Mode_Capture, PCA_Mode_SoftTimer, PCA_Mode_HighPulseOutputPCA_InitStructure.PCA_PWM_Wide = PCA_PWM_8bit;   //PCA_PWM_8bit, PCA_PWM_7bit, PCA_PWM_6bitPCA_InitStructure.PCA_Interrupt_Mode = DISABLE;  //PCA_Rise_Active, PCA_Fall_Active, ENABLE, DISABLEPCA_InitStructure.PCA_Value    = 100 << 8;    //对于PWM,高8位为PWM占空比PCA_Init(PCA1,&PCA_InitStructure);PCA_InitStructure.PCA_Mode     = PCA_Mode_PWM; //PCA_Mode_PWM, PCA_Mode_Capture, PCA_Mode_SoftTimer, PCA_Mode_HighPulseOutputPCA_InitStructure.PCA_PWM_Wide = PCA_PWM_8bit;   //PCA_PWM_8bit, PCA_PWM_7bit, PCA_PWM_6bitPCA_InitStructure.PCA_Interrupt_Mode = DISABLE;  //PCA_Rise_Active, PCA_Fall_Active, ENABLE, DISABLEPCA_InitStructure.PCA_Value    = 100 << 8;    //对于PWM,高8位为PWM占空比PCA_Init(PCA2,&PCA_InitStructure);CR = 1; //1: 允许PCA计数器计数,必须由软件清0。//PCA三路输出PWM
}void loop()
{for (i = 0; i < 250; i = i + 1) {UpdatePwm(PCA0, i);UpdatePwm(PCA1, i);UpdatePwm(PCA2, i);delay(50);}
}void main(void)
{setup();while(1){loop();}
}
  • STC15_PCA.h文件

#ifndef __STC15_PCA_H
#define __STC15_PCA_H#include <STC15X.h>#define   TRUE    1
#define FALSE   0//=============================================================//========================================#define  PolityLow           0   //低优先级中断
#define PolityHigh          1   //高优先级中断#define     ENABLE      1
#define     DISABLE     0#define    PCA0            0
#define PCA1            1
#define PCA2            2
#define PCA_Counter     3
#define PCA_P11_P10_P37 (0<<4)
#define PCA_P35_P36_P37 (1<<4)
#define PCA_P25_P26_P27 (2<<4)
#define PCA_Mode_PWM                0x42    //B0100_0010
#define PCA_Mode_Capture            0
#define PCA_Mode_SoftTimer          0x48    //B0100_1000
#define PCA_Mode_HighPulseOutput    0x4c    //B0100_1100
#define PCA_Clock_1T    (4<<1)
#define PCA_Clock_2T    (1<<1)
#define PCA_Clock_4T    (5<<1)
#define PCA_Clock_6T    (6<<1)
#define PCA_Clock_8T    (7<<1)
#define PCA_Clock_12T   (0<<1)
#define PCA_Clock_Timer0_OF (2<<1)
#define PCA_Clock_ECI   (3<<1)
#define PCA_Rise_Active (1<<5)
#define PCA_Fall_Active (1<<4)
#define PCA_PWM_8bit    (0<<6)
#define PCA_PWM_7bit    (1<<6)
#define PCA_PWM_6bit    (2<<6)typedef struct
{uint8  PCA_IoUse;  //PCA_P12_P11_P10_P37, PCA_P34_P35_P36_P37, PCA_P24_P25_P26_P27uint8    PCA_Clock;  //PCA_Clock_1T, PCA_Clock_2T, PCA_Clock_4T, PCA_Clock_6T, PCA_Clock_8T, PCA_Clock_12T, PCA_Clock_Timer0_OF, PCA_Clock_ECIuint8  PCA_Mode;   //PCA_Mode_PWM, PCA_Mode_Capture, PCA_Mode_SoftTimer, PCA_Mode_HighPulseOutputuint8 PCA_PWM_Wide;   //PCA_PWM_8bit, PCA_PWM_7bit, PCA_PWM_6bituint8 PCA_Interrupt_Mode; //PCA_Rise_Active, PCA_Fall_Active, ENABLE, DISABLEuint8    PCA_Polity; //优先级设置 PolityHigh,PolityLowuint16  PCA_Value;uint8 PCA_RUN;    //ENABLE, DISABLE
} PCA_InitTypeDef;bit       B_Capture0,B_Capture1,B_Capture2;
uint8       PCA0_mode,PCA1_mode,PCA2_mode;
uint16      CCAP0_tmp,PCA_Timer0;
uint16      CCAP1_tmp,PCA_Timer1;
uint16      CCAP2_tmp,PCA_Timer2;/************* 功能说明    ********************************************************///========================================================================
// 函数: UpdatePwm(uint8 PCA_id, uint8 pwm_value)
// 描述: 更新PWM值.
// 参数: PCA_id: PCA序号. 取值 PCA0,PCA1,PCA2,PCA_Counter
//       pwm_value: pwm值, 这个值是输出低电平的时间.
// 返回: none.
// 版本: V1.0, 2012-11-22
//========================================================================
void    UpdatePwm(uint8 PCA_id, uint8 pwm_value)
{if(PCA_id == PCA0)       CCAP0H = pwm_value;else if(PCA_id == PCA1)   CCAP1H = pwm_value;else if(PCA_id == PCA2)   CCAP2H = pwm_value;
}//========================================================================
// 函数: void PCA_Init(PCA_id, PCA_InitTypeDef *PCAx)
// 描述: PCA初始化程序.
// 参数: PCA_id: PCA序号. 取值 PCA0,PCA1,PCA2,PCA_Counter
//       PCAx: 结构参数,请参考PCA.h里的定义.
// 返回: none.
// 版本: V1.0, 2012-11-22
//========================================================================
void    PCA_Init(uint8 PCA_id, PCA_InitTypeDef *PCAx)
{if(PCA_id > PCA_Counter)    return;     //id错误if(PCA_id == PCA_Counter)           //设置公用Counter{CR = 0;CH = 0;CL = 0;AUXR1 = (AUXR1 & ~(3<<4)) | PCAx->PCA_IoUse;            //切换IO口CMOD  = (CMOD  & ~(7<<1)) | PCAx->PCA_Clock;           //选择时钟源CMOD  = (CMOD  & ~1) | (PCAx->PCA_Interrupt_Mode & 1);   //ECFif(PCAx->PCA_Polity == PolityHigh)        PPCA = 1;  //高优先级中断else                                    PPCA = 0;  //低优先级中断if(PCAx->PCA_RUN == ENABLE)    CR = 1;return;}PCAx->PCA_Interrupt_Mode &= (3<<4) + 1;if(PCAx->PCA_Mode >= PCA_Mode_SoftTimer)   PCAx->PCA_Interrupt_Mode &= ~(3<<4);if(PCA_id == PCA0){CCAPM0    = PCAx->PCA_Mode | PCAx->PCA_Interrupt_Mode;    //工作模式, 中断模式PCA_PWM0  = (PCA_PWM0 & ~(3<<6)) | PCAx->PCA_PWM_Wide;    //PWM宽度PCA_Timer0 = PCAx->PCA_Value;B_Capture0 = 0;PCA0_mode = PCAx->PCA_Mode;CCAP0_tmp = PCA_Timer0;CCAP0L = (uint8)CCAP0_tmp;          //将影射寄存器写入捕获寄存器,先写CCAP0LCCAP0H = (uint8)(CCAP0_tmp >> 8); //后写CCAP0H}if(PCA_id == PCA1){CCAPM1    = PCAx->PCA_Mode | PCAx->PCA_Interrupt_Mode;PCA_PWM1  = (PCA_PWM1 & ~(3<<6)) | PCAx->PCA_PWM_Wide;PCA_Timer1 = PCAx->PCA_Value;B_Capture1 = 0;PCA1_mode = PCAx->PCA_Mode;CCAP1_tmp = PCA_Timer1;CCAP1L = (uint8)CCAP1_tmp;            //将影射寄存器写入捕获寄存器,先写CCAP0LCCAP1H = (uint8)(CCAP1_tmp >> 8); //后写CCAP0H}if(PCA_id == PCA2){CCAPM2    = PCAx->PCA_Mode | PCAx->PCA_Interrupt_Mode;PCA_PWM2  = (PCA_PWM2 & ~(3<<6)) | PCAx->PCA_PWM_Wide;PCA_Timer2 = PCAx->PCA_Value;B_Capture2 = 0;PCA2_mode = PCAx->PCA_Mode;CCAP2_tmp = PCA_Timer2;CCAP2L = (uint8)CCAP2_tmp;            //将影射寄存器写入捕获寄存器,先写CCAP0LCCAP2H = (uint8)(CCAP2_tmp >> 8); //后写CCAP0H}
}//========================================================================
// 函数: void PCA_Handler (void) interrupt PCA_VECTOR
// 描述: PCA中断处理程序.
// 参数: None
// 返回: none.
// 版本: V1.0, 2012-11-22
//========================================================================
void    PCA_Handler (void) interrupt 7
{if(CCF0)       //PCA模块0中断{CCF0 = 0;       //清PCA模块0中断标志if(PCA0_mode >= PCA_Mode_SoftTimer)        //PCA_Mode_SoftTimer and PCA_Mode_HighPulseOutput{CCAP0_tmp += PCA_Timer0;CCAP0L = (uint8)CCAP0_tmp;         //将影射寄存器写入捕获寄存器,先写CCAP0LCCAP0H = (uint8)(CCAP0_tmp >> 8); //后写CCAP0H}else if(PCA0_mode == PCA_Mode_Capture){CCAP0_tmp = CCAP0H;    //读CCAP0HCCAP0_tmp = (CCAP0_tmp << 8) + CCAP0L;B_Capture0 = 1;}}if(CCF1)   //PCA模块1中断{CCF1 = 0;       //清PCA模块1中断标志if(PCA1_mode >= PCA_Mode_SoftTimer)        //PCA_Mode_SoftTimer and PCA_Mode_HighPulseOutput{CCAP1_tmp += PCA_Timer1;CCAP1L = (uint8)CCAP1_tmp;         //将影射寄存器写入捕获寄存器,先写CCAP0LCCAP1H = (uint8)(CCAP1_tmp >> 8); //后写CCAP0H}else if(PCA1_mode == PCA_Mode_Capture){CCAP1_tmp = CCAP1H;    //读CCAP1HCCAP1_tmp = (CCAP1_tmp << 8) + CCAP1L;B_Capture1 = 1;}}if(CCF2)   //PCA模块2中断{CCF2 = 0;       //清PCA模块1中断标志if(PCA2_mode >= PCA_Mode_SoftTimer)        //PCA_Mode_SoftTimer and PCA_Mode_HighPulseOutput{CCAP2_tmp += PCA_Timer2;CCAP2L = (uint8)CCAP2_tmp;         //将影射寄存器写入捕获寄存器,先写CCAP0LCCAP2H = (uint8)(CCAP2_tmp >> 8); //后写CCAP0H}else if(PCA2_mode == PCA_Mode_Capture){CCAP2_tmp = CCAP2H;    //读CCAP2HCCAP2_tmp = (CCAP2_tmp << 8) + CCAP2L;B_Capture2 = 1;}}if(CF) //PCA溢出中断{CF = 0;          //清PCA溢出中断标志}}#endif
  • STC15_delay.h文件
#ifndef __STC15_DELAY_H
#define __STC15_DELAY_H #include <STC15X.h>#ifndef SYS_CLK
#define SYS_CLK 11059200L
#endifvoid delay1ms();          //延迟1毫秒
void delay(uint16 time);    //延迟time毫秒#if (SYS_CLK == 24000000)
void delay1us();            //延迟1微秒
void delay5us();            //延迟5微秒
void delay10us();           //延迟10微秒
void delay50us();           //延迟50微秒
void delay100us();          //延迟100微秒//========================================================================
// 描述: 延迟1微秒.
// 参数: none.
// 返回: none.
//========================================================================
void delay1us()     //@24.000MHz
{uint8 i;_nop_();_nop_();i = 3;while (--i);
}//========================================================================
// 描述: 延迟5微秒.
// 参数: none.
// 返回: none.
//========================================================================
void delay5us()     //@24.000MHz
{uint8 i;_nop_();_nop_();i = 27;while (--i);
}//========================================================================
// 描述: 延迟10微秒.
// 参数: none.
// 返回: none.
//========================================================================
void delay10us()        //@24.000MHz
{uint8 i;_nop_();_nop_();i = 57;while (--i);
}//========================================================================
// 描述: 延迟50微秒.
// 参数: none.
// 返回: none.
//========================================================================
void delay50us()        //@24.000MHz
{uint8 i, j;i = 2;j = 39;do{while (--j);} while (--i);
}//========================================================================
// 描述: 延迟100微秒.
// 参数: none.
// 返回: none.
//========================================================================
void delay100us()       //@24.000MHz
{uint8 i, j;i = 3;j = 82;do{while (--j);} while (--i);
}#elif (SYS_CLK == 12000000)void delay1us();          //延迟1微秒
void delay5us();            //延迟5微秒
void delay10us();           //延迟10微秒
void delay50us();           //延迟50微秒
void delay100us();          //延迟100微秒//========================================================================
// 描述: 延迟1微秒.
// 参数: none.
// 返回: none.
//========================================================================
void delay1us()     //@12.000
{_nop_();_nop_();_nop_();_nop_();
}//========================================================================
// 描述: 延迟5微秒.
// 参数: none.
// 返回: none.
//========================================================================
void delay5us()     //@12.000
{uint8 i;_nop_();_nop_();i = 12;while (--i);
}//========================================================================
// 描述: 延迟10微秒.
// 参数: none.
// 返回: none.
//========================================================================
void delay10us()        //@12.000
{uint8 i;_nop_();_nop_();i = 27;while (--i);
}//========================================================================
// 描述: 延迟50微秒.
// 参数: none.
// 返回: none.
//========================================================================
void delay50us()        //@12.000
{uint8 i, j;i = 1;j = 146;do{while (--j);} while (--i);
}//========================================================================
// 描述: 延迟100微秒.
// 参数: none.
// 返回: none.
//========================================================================
void delay100us()       //@12.000
{uint8 i, j;i = 2;j = 39;do{while (--j);} while (--i);
}#elif (SYS_CLK == 5529600)void delay1us();           //延迟1微秒
void delay5us();            //延迟5微秒
void delay10us();           //延迟10微秒
void delay50us();           //延迟50微秒
void delay100us();          //延迟100微秒//========================================================================
// 描述: 延迟1微秒.
// 参数: none.
// 返回: none.
//========================================================================
void delay1us()     //@5.5296
{_nop_();
}//========================================================================
// 描述: 延迟5微秒.
// 参数: none.
// 返回: none.
//========================================================================
void delay5us()     //@5.5296
{uint8 i;_nop_();_nop_();i = 4;while (--i);
}//========================================================================
// 描述: 延迟10微秒.
// 参数: none.
// 返回: none.
//========================================================================
void delay10us()        //@5.5296
{uint8 i;_nop_();i = 11;while (--i);
}//========================================================================
// 描述: 延迟50微秒.
// 参数: none.
// 返回: none.
//========================================================================
void delay50us()        //@5.5296
{uint8 i;_nop_();_nop_();i = 66;while (--i);
}//========================================================================
// 描述: 延迟100微秒.
// 参数: none.
// 返回: none.
//========================================================================
void delay100us()       //@5.5296
{uint8 i, j;_nop_();i = 1;j = 134;do{while (--j);} while (--i);
}#else //11059200void delay1us();           //延迟1微秒
void delay5us();            //延迟5微秒
void delay10us();           //延迟10微秒
void delay50us();           //延迟50微秒
void delay100us();          //延迟100微秒//========================================================================
// 描述: 延迟1微秒.
// 参数: none.
// 返回: none.
//========================================================================
void delay1us()     //@11.0592
{_nop_();_nop_();_nop_();
}//========================================================================
// 描述: 延迟5微秒.
// 参数: none.
// 返回: none.
//========================================================================
void delay5us()     //@11.0592
{uint8 i;_nop_();i = 11;while (--i);
}//========================================================================
// 描述: 延迟10微秒.
// 参数: none.
// 返回: none.
//========================================================================
void delay10us()        //@11.0592
{uint8 i;_nop_();i = 25;while (--i);
}//========================================================================
// 描述: 延迟50微秒.
// 参数: none.
// 返回: none.
//========================================================================
void delay50us()        //@11.0592
{uint8 i, j;_nop_();i = 1;j = 134;do{while (--j);} while (--i);
}//========================================================================
// 描述: 延迟100微秒.
// 参数: none.
// 返回: none.
//========================================================================
void delay100us()       //@11.0592
{uint8 i, j;_nop_();_nop_();i = 2;j = 15;do{while (--j);} while (--i);
}#endif//========================================================================
// 描述: 延迟1毫秒.
// 参数: none.
// 返回: none.
//========================================================================
void delay1ms() //1毫秒@sys_clk
{uint8 ms = 1;uint16 i;do{i = SYS_CLK / 13000;while(--i)  ;   //14T per loop}while(--ms);
}//========================================================================
// 描述: 延迟指定毫秒.
// 参数: 延迟时间(1-65535).
// 返回: none.
//========================================================================
void delay(uint16 time)
{if(time < 1){time = 1;}    do { delay1ms();} while (--time);
}#endif     //delay.h

【问天Block】STC15单片机PWM输出讲解相关推荐

  1. 单片机PWM输出控制直流电机(89c51系列、stc12c5a60s2系列)

    目录 [pwm是如何控制电机转速] [89C51系列单片机产生pwm波] [STC12C5A60S2系列单片机输出PWM] [pwm是如何控制电机转速] 在本科学习中,学生所做的小车多数为使用lm29 ...

  2. 单片机PWM输出原理与实践

    一.什么是PWM?   PWM(Pulse Width Modulation)脉冲宽度调制,它是通过对一系列脉冲的宽度进行调制,等效出所需要的波形(包含形状以及幅值),对模拟信号电平进行数字编码.  ...

  3. 单片机 PWM输出 c

    #include<reg52.h> #include<intrins.h>  //包含_nop_(),汇编中的子函数 #define uchar unsigned char s ...

  4. 基于天问block编译环境下ASRPRO语音芯片程序编写教程(二)语音识别,GPIO输入输出,PWM输出篇

    本篇教程将基于天问block内的官方范例代码讲解如何编写ASRPRO语音芯片程序以实现语音识别,GPIO输入输出和PWM输出功能. 1.智能语音对话 该程序中添加识别词功能添加命令词选项(黑色部分)为 ...

  5. STC15单片机-通过PWM调整灯亮度

    通过PWM调整灯亮度 学习经验 第一次去看STC15数据手册的CCP/PCA/PWM这一章时人都懵了,这到底是个啥玩意?首先是不懂为什么要叫这个名字,CCP/PCA/PWM是一个名字还是三个名字?后来 ...

  6. STM8单片机 PWM无波形输出解决方法

      调试STM8单片机PWM功能的时候,经常会遇到一种情况,就是PWM初始化设置完成之后,程序下载到单片机中,确没有任何波形的输出.有时候代码是下载别的调试好的,但是在自己芯片上就是没有波形输出.这时 ...

  7. 合泰杯——合泰单片机工程7之PWM输出

    合泰杯--合泰单片机工程7之PWM输出 前言 一.合泰系列的PWM实现方式? 二.PTM输出PWM波 二.具体实现过程 2.1配置PTM3C0和PTM3C1 2.3PWM的输出引脚功能选择 2.4呼吸 ...

  8. 普中51pwm_51单片机实现PWM输出功能的两种方法解析

    51单片机没有PWM输出功能,可以采用定时器配合软件的方法实现,对精度要求不高的场合是非常实用的.采用高速光隔6N137输出,并将PWM的信号倒相. 一. 工作原理 二.PWM输出 1. 固定脉宽PW ...

  9. 【STC15】STC15单片机获取红外解码从软串口输出

    [STC15]STC15单片机获取红外解码从软串口输出 单片机型号:STC15F2K60S2 采用外部晶振,频率:11.0592MHz 红外接收头,数据引脚接P3.2 这里软串口实现主要是位处理时间一 ...

  10. linux 普通io实现pwm,用普通IO口做PWM输出 - 51单片机 - 电子工程世界-论坛 - 手机版...

    本人现在想用IO口做PWM输出,频率1KHz,然后用两按键(+.-)来调节占空比0-100%,对应数码管显示000-100. 现波形是OK了,也可以调占空比,但是出现一个问题数码管显示乱七八糟,调了两 ...

最新文章

  1. SimpleDateFormat 详解
  2. php 表单跳转,html - 思路问题:php表单跳转
  3. JavaScript 和 typeScript 中的 import、from
  4. 第 5-1 课:线程与死锁 + 面试题
  5. Java 在指定目录中查找文件
  6. WSS(Windows Storage Server)2008R2使用指南(三)配置及使用篇
  7. blfs(systemd版本)学习笔记-编译安装openssh软件包
  8. [Ubuntu] Your Firefox profile cannot be loaded. It may be missing or inaccessible
  9. java8 中的时间和数据的变化
  10. coverity静态安全扫描分析软件linux环境搭建
  11. 【电路】PT1000/PT100温度采集电路
  12. 真人qq秀代码_关于QQ我的记忆
  13. springboot毕业设计 基于springboot医院预约挂号系统毕业设计设计与实现参考
  14. Linux守护进程设计规范及python实现
  15. hdu 6078 Wavel Sequence
  16. Web前端--HTML+CSS+JavaScript响应式网络科技网页设计
  17. https 请求的端口是443 注意
  18. 世界上应用最广泛的算法之一的卡尔曼滤波算法原理-从放弃到精通-无人机/机器人应用
  19. php汉字转区位码,PHP里实现汉字转区位码的示例代码_php
  20. Roon 1.8(806) for Windows

热门文章

  1. 微处理器系统结构与嵌入式系统设计(一)
  2. 计算机主板接口识别,电脑主板上接口怎么接 主板所有接口插线功能作用识别图解...
  3. 解决QFontDatabase: Cannot find font directory XXX/lib/fonts
  4. 供应链管理的三个层次
  5. 护眼html颜色,在电脑中设置护眼颜色、更换网页背景色、一键护眼
  6. 3dsmax VRay分布式渲染
  7. 微信生成带参数二维码以及获取此二维码参数
  8. php3d建模,3d建模师容易找工作吗
  9. 英寸和厘米的换算python_OJ实例:厘米换算英尺英寸
  10. css背景颜色渐变 从左到右 从下到上