首先进入TI官网,搜索C2000 wave,进行下载安装。

安装完成后,在2000 wave的安装目录下,进入以下目录:C2000Ware_4_02_00_00\libraries\dsp\FPU\c28

以我本地的安装目录为例:E:\ti\c2000\C2000Ware_4_02_00_00\libraries\dsp\FPU\c28

复制include、source文件夹到新建工程中。再根据选用的DSP型号对文件夹内容进行删减。如:我使用的是TMS320F28335,FPU是32位的,故仅保留include、source文件夹中的fpu32文件夹以及dsp.h头文件。

工程中,可以见有以下文件(仅进行滤波可删除FFT相关文件)

同时记得添加头文件路径

 至此,对于我们进行滤波所需的函数库已经移植完毕。

测试部分:

首先使用MATLAB生成输入信号。

MATLAB函数式文件:

%生成固定点数固定频率的正弦信号
%fs为采样率
%f为多频信号频率
%N为采样点数
%amp为信号幅值
%phase为信号初相位
function [input,t] = mult_freq_signal_test(fs,f,N,amp,phase)dt = 1/fs;        %采样周期t = dt*N;         %采样时间temp = (0:dt:(N-1)*dt)';y = amp.*sin(2*pi*f.*temp+phase/180*pi);Num = size(f,2);    %获取f频率个数input = y*ones(Num,1);subplot(1,2,1);plot(temp/dt,input);title('信号时域');xlabel('点数 N');ylabel('幅值 A');subplot(1,2,2);Y = fftshift(fft(input));%做傅里叶变换并把零频点移到频谱中心F = (-N/2:N/2-1)*(fs/N);%设置横坐标plot(F,abs(Y)/max(abs(Y)));title('信号频域');xlabel('频率 f');ylabel('幅值 A')
end

MATLAB命令式文件:

%与mult_freq_signal_test.m函数式文件配合使用,将生成的输出信号保存到本地
fs=1e5;             %设采样率为100K
f = [1e3,5e3,1e4];  %频率矩阵(1*N)测试信号频率为1K,5K,10K
phase = [0,0,0];    %初相位均为0
amp = [0.3,1.0,0.5];
N=512;              %采样点数y=mult_freq_signal_test(fs,f,N,amp,phase);y=reshape(y,[4,N/4]);
y=y';fileID = fopen('record.txt','w');
for i=1:1:N/4fprintf(fileID,'%.6f,%.6f,%.6f,%.6f,\n',y(i,1),y(i,2),y(i,3),y(i,4));
end
fclose(fileID);%将生成的初始信号保存到.m文件路径下的record.txt

生成波形如下的输入信号:

将record.txt文件内容复制到INPUT.c文件中,如下:

//#############################################################################
//! \file   input.c
//! \brief  Input Vector (1024)
//! \author Vishal Coelho
//! \date   16-Sep-2016
//!
//
//  Group:          C2000
//  Target Family:  $DEVICE$
//
//#############################################################################
//
//
// $Copyright: Copyright (C) 2022 Texas Instruments Incorporated -
//             http://www.ti.com/ ALL RIGHTS RESERVED $
//#############################################################################
float test_input[512] = {0.000000,0.621747,1.100913,1.340760,1.319556,1.092705,0.767601,0.461223,0.256783,0.175872,0.176336,0.176103,0.093107,-0.114798,-0.426010,-0.757295,-0.991651,-1.021653,-0.791865,-0.323977,0.285317,0.893485,1.358000,1.582180,1.544357,1.300000,0.956572,0.631123,0.406943,0.305699,0.285317,0.263809,0.159191,-0.070597,-0.403866,-0.757295,-1.013795,-1.065855,-0.857949,-0.411682,0.176336,0.763658,1.207840,1.412279,1.355387,1.092705,0.731771,0.389703,0.149857,0.033962,0.000000,-0.033962,-0.149857,-0.389703,-0.731771,-1.092705,-1.355387,-1.412279,-1.207840,-0.763658,-0.176336,0.411682,0.857949,1.065855,1.013795,0.757295,0.403866,0.070597,-0.159191,-0.263809,-0.285317,-0.305699,-0.406943,-0.631123,-0.956572,-1.300000,-1.544357,-1.582180,-1.358000,-0.893485,-0.285317,0.323977,0.791865,1.021653,0.991651,0.757295,0.426010,0.114798,-0.093107,-0.176103,-0.176336,-0.175872,-0.256783,-0.461223,-0.767601,-1.092705,-1.319556,-1.340760,-1.100913,-0.621747,-0.000000,0.621747,1.100913,1.340760,1.319556,1.092705,0.767601,0.461223,0.256783,0.175872,0.176336,0.176103,0.093107,-0.114798,-0.426010,-0.757295,-0.991651,-1.021653,-0.791865,-0.323977,0.285317,0.893485,1.358000,1.582180,1.544357,1.300000,0.956572,0.631123,0.406943,0.305699,0.285317,0.263809,0.159191,-0.070597,-0.403866,-0.757295,-1.013795,-1.065855,-0.857949,-0.411682,0.176336,0.763658,1.207840,1.412279,1.355387,1.092705,0.731771,0.389703,0.149857,0.033962,0.000000,-0.033962,-0.149857,-0.389703,-0.731771,-1.092705,-1.355387,-1.412279,-1.207840,-0.763658,-0.176336,0.411682,0.857949,1.065855,1.013795,0.757295,0.403866,0.070597,-0.159191,-0.263809,-0.285317,-0.305699,-0.406943,-0.631123,-0.956572,-1.300000,-1.544357,-1.582180,-1.358000,-0.893485,-0.285317,0.323977,0.791865,1.021653,0.991651,0.757295,0.426010,0.114798,-0.093107,-0.176103,-0.176336,-0.175872,-0.256783,-0.461223,-0.767601,-1.092705,-1.319556,-1.340760,-1.100913,-0.621747,-0.000000,0.621747,1.100913,1.340760,1.319556,1.092705,0.767601,0.461223,0.256783,0.175872,0.176336,0.176103,0.093107,-0.114798,-0.426010,-0.757295,-0.991651,-1.021653,-0.791865,-0.323977,0.285317,0.893485,1.358000,1.582180,1.544357,1.300000,0.956572,0.631123,0.406943,0.305699,0.285317,0.263809,0.159191,-0.070597,-0.403866,-0.757295,-1.013795,-1.065855,-0.857949,-0.411682,0.176336,0.763658,1.207840,1.412279,1.355387,1.092705,0.731771,0.389703,0.149857,0.033962,0.000000,-0.033962,-0.149857,-0.389703,-0.731771,-1.092705,-1.355387,-1.412279,-1.207840,-0.763658,-0.176336,0.411682,0.857949,1.065855,1.013795,0.757295,0.403866,0.070597,-0.159191,-0.263809,-0.285317,-0.305699,-0.406943,-0.631123,-0.956572,-1.300000,-1.544357,-1.582180,-1.358000,-0.893485,-0.285317,0.323977,0.791865,1.021653,0.991651,0.757295,0.426010,0.114798,-0.093107,-0.176103,-0.176336,-0.175872,-0.256783,-0.461223,-0.767601,-1.092705,-1.319556,-1.340760,-1.100913,-0.621747,0.000000,0.621747,1.100913,1.340760,1.319556,1.092705,0.767601,0.461223,0.256783,0.175872,0.176336,0.176103,0.093107,-0.114798,-0.426010,-0.757295,-0.991651,-1.021653,-0.791865,-0.323977,0.285317,0.893485,1.358000,1.582180,1.544357,1.300000,0.956572,0.631123,0.406943,0.305699,0.285317,0.263809,0.159191,-0.070597,-0.403866,-0.757295,-1.013795,-1.065855,-0.857949,-0.411682,0.176336,0.763658,1.207840,1.412279,1.355387,1.092705,0.731771,0.389703,0.149857,0.033962,-0.000000,-0.033962,-0.149857,-0.389703,-0.731771,-1.092705,-1.355387,-1.412279,-1.207840,-0.763658,-0.176336,0.411682,0.857949,1.065855,1.013795,0.757295,0.403866,0.070597,-0.159191,-0.263809,-0.285317,-0.305699,-0.406943,-0.631123,-0.956572,-1.300000,-1.544357,-1.582180,-1.358000,-0.893485,-0.285317,0.323977,0.791865,1.021653,0.991651,0.757295,0.426010,0.114798,-0.093107,-0.176103,-0.176336,-0.175872,-0.256783,-0.461223,-0.767601,-1.092705,-1.319556,-1.340760,-1.100913,-0.621747,0.000000,0.621747,1.100913,1.340760,1.319556,1.092705,0.767601,0.461223,0.256783,0.175872,0.176336,0.176103,0.093107,-0.114798,-0.426010,-0.757295,-0.991651,-1.021653,-0.791865,-0.323977,0.285317,0.893485,1.358000,1.582180,1.544357,1.300000,0.956572,0.631123,0.406943,0.305699,0.285317,0.263809,0.159191,-0.070597,-0.403866,-0.757295,-1.013795,-1.065855,-0.857949,-0.411682,0.176336,0.763658,1.207840,1.412279,1.355387,1.092705,0.731771,0.389703,0.149857,0.033962,0.000000,-0.033962,-0.149857,-0.389703,-0.731771,-1.092705,-1.355387,-1.412279,-1.207840,-0.763658,-0.176336,0.411682,0.857949,1.065855,1.013795,0.757295,0.403866,0.070597,-0.159191,-0.263809,-0.285317,-0.305699,-0.406943,-0.631123,-0.956572,-1.300000,-1.544357,-1.582180,-1.358000,-0.893485,-0.285317,0.323977,0.791865,1.021653,0.991651,0.757295,0.426010,0.114798,-0.093107,-0.176103,-0.176336,-0.175872,-0.256783,-0.461223,-0.767601,-1.092705,-1.319556,-1.340760,-1.100913,-0.621747,0.000000,0.621747,1.100913,1.340760,1.319556,1.092705,0.767601,0.461223,0.256783,0.175872,0.176336,0.176103,};// End of File

借助MATLAB自带的滤波器设计工具filter designer,生成滤波器系数(滤波器截止频率选择1500Hz,滤除高频噪声,指定阶数为80阶)。

再点击目标,选择生成到CCS IDE中

28335FPU为32位,故选择单精度浮点型

点击生成到CCS新建工程中即可。

生成的fadcoefs.h如下:

/** Filter Coefficients (C Source) generated by the Filter Design and Analysis Tool* Generated by MATLAB(R) 9.11 and Signal Processing Toolbox 8.7.* Generated on: 13-Jan-2023 10:06:26*//** 离散时间 FIR 滤波器(实数)* ----------------* 滤波器结构  : 直接型 FIR* 滤波器长度  : 81* 稳定     : 是* 线性相位   : 是 (Type 1)*//* General type conversion for MATLAB generated C-code  */
#include "tmwtypes.h"
/* * Expected path to tmwtypes.h * E:\Program Files\MATLAB\R2021b\extern\include\tmwtypes.h */
/** Warning - Filter coefficients were truncated to fit specified data type.  *   The resulting response may not match generated theoretical response.*   Use the Filter Design & Analysis Tool to design accurate*   single-precision filter coefficients.*/
const int BL = 81;
const float coeffs[81] = {-0,-7.111737887e-06,-2.438249976e-05,-4.471002831e-05,-5.97600847e-05,-6.013489474e-05,-3.557757736e-05,2.479158684e-05,0.0001322122553,0.0002980003483,0.0005332503351, 0.000848530326, 0.001253577648, 0.001757002436, 0.002366006607,0.003086125944, 0.003921000753, 0.004872185644, 0.005938995164, 0.007118403912,0.008404986933, 0.009790921584,  0.01126603596,  0.01281791367,  0.01443205494,0.01609207876,  0.01777997613,  0.01947640628,  0.02116102912,  0.02281285636,0.02441063337,   0.0259332303,  0.02736003883,  0.02867136523,  0.02984880283,0.03087559529,   0.0317369625,  0.03242038563,  0.03291586414,  0.03321611136,0.03331669047,  0.03321611136,  0.03291586414,  0.03242038563,   0.0317369625,0.03087559529,  0.02984880283,  0.02867136523,  0.02736003883,   0.0259332303,0.02441063337,  0.02281285636,  0.02116102912,  0.01947640628,  0.01777997613,0.01609207876,  0.01443205494,  0.01281791367,  0.01126603596, 0.009790921584,0.008404986933, 0.007118403912, 0.005938995164, 0.004872185644, 0.003921000753,0.003086125944, 0.002366006607, 0.001757002436, 0.001253577648, 0.000848530326,0.0005332503351,0.0002980003483,0.0001322122553,2.479158684e-05,-3.557757736e-05,-6.013489474e-05,-5.97600847e-05,-4.471002831e-05,-2.438249976e-05,-7.111737887e-06,-0
};

需注意,生成的fadcoefs.h文件需包含tmwtypes.h文件

在生成的fadcoefs.h中包含tmwtypes.h的文件路径,将其添加到工程头文件路径即可。

至此已完成了大部分准备工作,接下来开始编写函数进行滤波操作。

仿照TI官方例程,完成了以下函数的编写。

/** FIR.h**  Created on: 2023年1月12日*      Author: yang*/#ifndef APP_FIR_H_
#define APP_FIR_H_#include "DSP28x_Project.h"
#include <stdio.h>
#include <string.h>void FIR_Init(void);
void FIR_filter_run(void);#endif /* APP_FIR_H_ */
/** FIR.c**  Created on: 2023年1月12日*      Author: yang*/#include <FIR.h>
#include "dsp.h"
#include "fpu_filter.h"
#include <math.h>
#include "complex.h"
#include "fdacoefs.h"#define pi 3.14159
#define FIR_SIZE       (512U)
#define FIR_ORDER       (80U)             // ORDER = NUM_TAPS - 1,ORDER为滤波器阶数#pragma DATA_SECTION(coeffs, "FIR_buffer0");
#pragma DATA_SECTION(FIR_output, "FIR_buffer1");// FIR_f32 object
FIR_f32 fir;
// Handle to the FIR_f32 object
FIR_f32_Handle hnd_fir = &fir;// The filter coefficients are tacked on to the end of the
// MATLAB generated input// The delay line buffer
float delayLine[FIR_ORDER+1];float FIR_output[FIR_SIZE];extern float test_input[];
extern const float coeffs[];
//*****************************************************************************
// the function definitions
//*****************************************************************************
void FIR_Init(void)
{// Configure the objectFIR_f32_setCoefficientsPtr(hnd_fir, coeffs);FIR_f32_setDelayLinePtr(hnd_fir, delayLine);FIR_f32_setOrder(hnd_fir, FIR_ORDER);FIR_f32_setInitFunction(hnd_fir, (v_pfn_v)FIR_f32_init);FIR_f32_setCalcFunction(hnd_fir, (v_pfn_v)FIR_f32_calc);// Copy the coefficients from test input into the "coeffs" array//memcpy(&coeffs, &test_input[FIR_SIZE], (FIR_ORDER + 1U)*sizeof(float));// Run the initialization functionhnd_fir->init(hnd_fir);}void FIR_filter_run(void)
{// Localsuint16_t i;float32u_t in, out;for(i = 0U; i < FIR_SIZE; i++){in.f32   = test_input[i];out.f32  = FLT_MAX;FIR_f32_setInput(hnd_fir, in.f32);FIR_f32_setOutput(hnd_fir, out.f32);// Call the calculation routinehnd_fir->calc(hnd_fir);out.f32 = FIR_f32_getOutput(hnd_fir);FIR_output[i] = out.f32;}
}// End of File

cmd文件如下

/*
// TI File $Revision: /main/3 $
// Checkin $Date: July 9, 2008   14:12:45 $
//###########################################################################
//
// FILE:    28335_RAM_lnk.cmd
//
// TITLE:   Linker Command File For IQmath examples that run out of RAM
//
// NOTE; The example project uses memory protected by the
//       Code Security Module (CSM).  Make sure the CSM is
//       unlocked before you load the project.  One quick way
//       to do this on an erased device is to open a memory
//       window to the CSM password locations.  If these locations
//       read back 0xFFFF (or non-zero), then the CSM is unlocked:
//
//      Device    Password locations
//      28335:    0x33FFF8 - 0x33FFFF
//
//###########################################################################
//
//
// $Copyright: Copyright (C) 2014-2022 Texas Instruments Incorporated -
//             http://www.ti.com/ ALL RIGHTS RESERVED $
//###########################################################################
*/MEMORY
{
PAGE 0 :BEGIN      : origin = 0x000000, length = 0x000002     /* Boot to M0 will go here                      */BOOT_RSVD  : origin = 0x000002, length = 0x00004E     /* Part of M0, BOOT rom will use this for stack */RAML0      : origin = 0x008000, length = 0x000800RAML1L2    : origin = 0x008800, length = 0x004800ZONE7A     : origin = 0x200000, length = 0x00FC00    /* XINTF zone 7 - program space */FLASHH     : origin = 0x300000, length = 0x008000     /* on-chip FLASH */FLASHG     : origin = 0x308000, length = 0x008000     /* on-chip FLASH */FLASHF     : origin = 0x310000, length = 0x008000     /* on-chip FLASH */FLASHE     : origin = 0x318000, length = 0x008000     /* on-chip FLASH */FLASHD     : origin = 0x320000, length = 0x008000     /* on-chip FLASH */FLASHC     : origin = 0x328000, length = 0x008000     /* on-chip FLASH */FLASHA     : origin = 0x338000, length = 0x007F80     /* on-chip FLASH */CSM_RSVD   : origin = 0x33FF80, length = 0x000076     /* Part of FLASHA.  Program with all 0x0000 when CSM is in use. */CSM_PWL    : origin = 0x33FFF8, length = 0x000008     /* Part of FLASHA.  CSM password locations in FLASHA            */OTP         : origin = 0x380400, length = 0x000400     /* on-chip OTP */ADC_CAL    : origin = 0x380080, length = 0x000009IQTABLES    : origin = 0x3FE000, length = 0x000b50     /* IQ Math Tables in Boot ROM */IQTABLES2   : origin = 0x3FEB50, length = 0x00008c     /* IQ Math Tables in Boot ROM */FPUTABLES   : origin = 0x3FEBDC, length = 0x0006A0     /* FPU Tables in Boot ROM */ROM         : origin = 0x3FF27C, length = 0x000D44     /* Boot ROM */RESET      : origin = 0x3FFFC0, length = 0x000002VECTORS     : origin = 0x3FFFC2, length = 0x00003E     /* part of boot ROM  */PAGE 1 :BOOT_RSVD  : origin = 0x000002, length = 0x00004E     /* Part of M0, BOOT rom will use this for stack */RAMM0      : origin = 0x000050, length = 0x0003B0     /* on-chip RAM block M0 */RAMM1      : origin = 0x000400, length = 0x000400     /* on-chip RAM block M1 */RAML3      : origin = 0x00D000, length = 0x001000RAML4      : origin = 0x00E000, length = 0x001000RAML5      : origin = 0x00F000, length = 0x001000ZONE7B     : origin = 0x20FC00, length = 0x000400     /* XINTF zone 7 - data space */FLASHB     : origin = 0x330000, length = 0x008000     /* on-chip FLASH */}SECTIONS
{FPUmathTables    : > FPUTABLES, PAGE = 0, TYPE = NOLOAD/* Setup for "boot to SARAM" mode:The codestart section (found in DSP28_CodeStartBranch.asm)re-directs execution to the start of user code.  */codestart        : > BEGIN,     PAGE = 0#ifdef __TI_COMPILER_VERSION__#if __TI_COMPILER_VERSION__ >= 15009000.TI.ramfunc : {} LOAD = RAML0,RUN = RAML0,LOAD_START(_RamfuncsLoadStart),LOAD_END(_RamfuncsLoadEnd),RUN_START(_RamfuncsRunStart),LOAD_SIZE(_RamfuncsLoadSize),PAGE = 0#elseramfuncs       : LOAD = RAML0,RUN = RAML0,LOAD_START(_RamfuncsLoadStart),LOAD_END(_RamfuncsLoadEnd),RUN_START(_RamfuncsRunStart),LOAD_SIZE(_RamfuncsLoadSize),PAGE = 0#endif
#endif.text           : {*(.text)}>> RAML1L2|RAML0 PAGE = 0.cinit          : > RAML0,     PAGE = 0.pinit           : > RAML0,     PAGE = 0.switch          : > RAML0,     PAGE = 0.stack           : > RAMM1,     PAGE = 1.ebss            : > RAML3,     PAGE = 1.econst          : > RAML3,     PAGE = 1.sysmem          : > RAML3,     PAGE = 1.esysmem         : > RAML3,     PAGE = 1.sysmem          : > RAML3,     PAGE = 1FIR_buffer0        : > RAML4,     PAGE = 1FIR_buffer1      : > RAML5,     PAGE = 1.cio             : > RAML3,     PAGE = 1ZONE7DATA        : > ZONE7B,    PAGE = 1DMARAML4         : > RAML4,     PAGE = 1DMARAML5         : > RAML5,     PAGE = 1.reset           : > RESET,     PAGE = 0, TYPE = DSECT /* not used                    */csm_rsvd         : > CSM_RSVD   PAGE = 0, TYPE = DSECT /* not used for SARAM examples */csmpasswds       : > CSM_PWL    PAGE = 0, TYPE = DSECT /* not used for SARAM examples *//* Allocate ADC_cal function (pre-programmed by factory into TI reserved memory) */.adc_cal     : load = ADC_CAL,   PAGE = 0, TYPE = NOLOAD}/*
//===========================================================================
// End of file.
//===========================================================================
*/

再在主函数中调用FIR_Init(); FIR_filter_run();函数即可完成滤波操作。

借助CCS的Graph画图工具测试滤波效果如下:

原始信号:

滤波后信号:

测试结束,完成了FIR滤波。

本人为TMS320F28335学习小白,如有错误,请大佬多多指正。

本文参考了以下文章:​​​​​​

[1]TMS320F28335调用官方库进行FFT频谱分析_PeepFuture橙子的博客-CSDN博客

[2]https://blog.csdn.net/weixin_42216236/article/details/127375580

[DSP学习笔记]基于TMS320F28335的FIR滤波实现相关推荐

  1. [DSP学习笔记]基于TMS320F28335的FFT及加窗函数实现

    一.新建工程 首先我们先将C2000 wave中我们所需要的函数库给导入到我们的新建工程中(可见于我实现FIR滤波文章中导入函数库的操作). 工程中可见有以下文件.(仅FFT可删除滤波有关文件) 接着 ...

  2. DSP学习笔记之EPWM

    DSP学习笔记之EWPM学习 \qquad 学习PWM模块的知识,最少需要掌握频率可调.占空比可调.互补死区可调.多个PWM相位差可调等.内容较多,主要是参照英文手册中几个模块的介绍,内容很多,最基本 ...

  3. STM32学习笔记——基于正点原子例程编码器模式小结

    STM32学习笔记--基于正点原子例程编码器模式小结 最近一段时间学习了,STM32f4的编码器功能,经过自己探索和他人的热心帮助,对于编码器模式有了一定了解.STM32f4单片机提供编码器模式,以便 ...

  4. 激光slam学习笔记——基于图优化的激光slam方法

    激光slam学习笔记--基于图优化的激光slam方法 1.slam基础 整体来说,在激光slam中,滤波器的误差要小于图优化的误差. 图优化通俗点说就是里程计计算的位姿与观测到的位姿之间会形成一个误差 ...

  5. 嵌入式学习笔记——基于Cortex-M的单片机介绍

    基于Cortex-M的单片机介绍 前言 1生产厂商及其产品线 1.1ARM单片机的产品线 1.2命名规则 作业1 2习单片机的资料准备 2.1STM32开发所需手册 2.1.1芯片的数据手册 芯片基本 ...

  6. DSP学习笔记之系统时钟、定时器、GPIO篇

    \qquad写在前面,不管是C51.MSP430.32也好,DSP也好,总要有一个掌握的比较熟练,不能每次都复制粘贴别人的代码然后修修补补吧.不要再做Ctrl +C.Ctrl+V工程师.主要参考来自于 ...

  7. 学习笔记 —— 基于C加速的Python高效计算 (Cython pybind11)

    目录 引言 Cython 示例介绍 第一阶段优化 第二阶段优化 Cython Annotation tool 优化方法 第三阶段优化 比对下 JIT的Numba 总结 pybind11 Links I ...

  8. STM32F4 基于FPU使用FIR滤波

    文章目录 Matlab生成参数 单片机导入DSP 单片机上的操作 函数说明 使用实例 实际使用的注意事项 堆栈空间问题 Matlab生成参数 通过指令在 matlab 中进入filterDesigne ...

  9. HaaS学习笔记 | 基于HaaS Python轻应用的LED跑马灯明细教程

    [1]题目要求     [案例]:在HaaS框架下实现LED跑马灯.       蓝蜻蜓ESP32开发板的LED灯电路连接如下:       D3灯----GPIO14,高电平点亮,低电平熄灭.   ...

最新文章

  1. 富文本编辑器 - wangEditor 表情
  2. x86服务器当虚拟化的存储,龙存科技-软件定义数据中心产品提供商
  3. OSI七层模型及应用
  4. 在JSP页面中获取当前日期时间
  5. 基于物理着色(二)- Microfacet材质和多层材质
  6. 前端局部自动刷新_jQuery实现AJAX定时刷新局部页面实例
  7. 阿里云镜像下载ubuntu 1
  8. java rome_Rome使用入门
  9. 程序员 520 脱单指南!
  10. 微软发布 Win11新补丁
  11. RDP报表工具的环境搭建
  12. 读书笔记:《金字塔原理》
  13. 什么是WEBService,实现WEBService有哪些框架
  14. 用php制作抖音视频去水印小程序?
  15. 矩阵的转置、加和乘法写入C++
  16. DAY07-ES5-String
  17. 一个非知识库的中文分词算法实现
  18. shell_一键部署脚本合集 .
  19. 第一次通过服务器远程跑代码
  20. spring源码故事-面筋哥IoC容器的一天(上)

热门文章

  1. 【Python】闲来无事用Python写一个小游戏
  2. 2021年最全App全渠道推广统计数据方案
  3. C语言函数传递方式-值传递和地址传递
  4. 水果店怎么摆放吸引客户,水果店堆头怎么摆放吸引人
  5. 服务器u.2接口固态硬盘,固态硬盘的U.2接口为何物
  6. Hive On Spark优化
  7. 硬件基础之模电数电电路(二)
  8. 智课雅思词汇---二、词根acu和acr
  9. 3ds Max 子物体的编辑
  10. 不可思议!定制的CRM系统用了10年,功能可以自己更新,永不过时