91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 946KB
    文件類型: .7z
    金幣: 1
    下載: 0 次
    發布日期: 2021-06-01
  • 語言: 其他
  • 標簽: stm32??ucos-ii??dds??fft??

資源簡介

處理器:STM32 ,編譯環境:keil MDK4.0及以上,3.5固件庫。操作系統:uCOS-II.DDS方式輸出2路波形(正弦,鋸齒,方波),然后添加,STM32采樣,FFT之后得出原波形的頻率和幅值。

資源截圖

代碼片段和文件信息

/*
??******************************************************************************
??*?FILE:????uCOS-II的移植?
??*?AUTHOR:??zouw96
??*?VERSION:?V1.1
??*?DATE:????2012-10-23
??*?BRIEF:???Main?file.
??******************************************************************************
??*?ATTENTION:
??* 用UCos-II來寫競賽時的程序
??*??
??*
??*??COPYRIGHT?2011??All?rights?reserved.
??******************************************************************************
*/

#include?“ucos_ii.h“
#include?“stm32f10x.h“
#include?“User_config.h“


static?OS_STK?startup_task_stk[STARTUP_TASK_STK_SIZE];
static?OS_STK?display_task[DISPLAY_TASK_STK_SIZE];
static?OS_STK?result_task[RESULT_TASK_STK_SIZE];


#define?PI?3.14159
#define?PI2?6.28318
//定義采樣點數
#define?NPT?1024
extern?uint16_t?TableFFT[];

u16?max; ???//鋸齒波和方波計算后的最大值
u16?min; ???//鋸齒波和方波計算后的最小值
u16?rate1; ??//頻率1步進
u16?rate2; ??//頻率2步進

???
u16?xy; ?//觸摸屏的X、Y
u16?real[1024]; ?//采樣數組
static?u16?i; ?//循環用的變量靜態變量作用域是該文件
u16?max1max2; ?//頻譜顯示中的最大值
u16?f1=0f2=0; ?//計算的頻率值
u16?temp;

s32?lBUFIN[NPT];?????????/*?Complex?input?vector?*/
s32?lBUFOUT[NPT];????????/*?Complex?output?vector?*/
s32?lBUFMAG[NPT];/*?Magnitude?vector?*/
s32?lBUFPHASE[NPT];
u8? FRE1[13]={0x33‘.‘0x330x330x310x300x300x300x350x300x300x300x30};//設置值?3.33??1000?50?000
u8? FRE2[13]={0x33‘.‘0x330x330x310x360x300x300x350x300x300x300x30};//設置值?3.33??1600?50?000
u8??WAVESELECT[3][4]={{‘S‘‘i‘‘n‘‘e‘}{‘S‘‘q‘‘u‘‘a‘}{‘S‘‘a‘‘w‘‘t‘}};
s8??waveselect1=0waveselect2=0;//波形種類的選擇
u16?wave1[4096]wave2[4096]; ?//波形的數據
u16?F1F2; ?//波形12的頻率?
float?A1A2; ?//波形12的幅值
u16?P1P2;??????????????//正弦波的相位
u8?D1D2; //鋸齒波和方波的占空比
u8??setbit=23; ??//設置值的位數
u8??setbit2=1;???????
u8??setturn=5; ??//判斷是否按下設置鍵
u8??FRETMP[16]; ??//計算值

u8?xianshi=0;
u8?huaboxing?=?0;
u16?first_value;
u16?second_value;
static?u16??bo_xing?=?1;

u16?bx_cy[320];
static?void?PowerMag(u16?nfill)
{
??s16?lXlY;
??for?(i=0;?i???{
????lX=?(lBUFOUT[i]<<16)>>16;?/*?sine_cosine?-->?cos?*/
????lY=?(lBUFOUT[i]?>>?16);???/*?sine_cosine?-->?sin?*/
// lBUFMAG[i]=sqrt(lX*lX+lY*lY);????//全是正數的時候也可以簡化
????{ ???
??????float?X=??nfill*((float)lX)/32768;
??????float?Y?=?nfill*((float)lY)/32768;
??????float?Mag?=?sqrt(X*X+?Y*Y)/nfill;
??if(i==0)
??lBUFMAG[i]?=?(uint32_t)(Mag*32768);
??else
??????lBUFMAG[i]?=?(uint32_t)(Mag*65536);
????}????
??}
}

static?void?SystickInit(void)
{
RCC_ClocksTypeDef?rcc_clocks;
RCC_GetClocksFreq(&rcc_clocks);
SysTick_Config(rcc_clocks.HCLK_Frequency/OS_TICKS_PER_SEC);

}

/*各應用任務的聲明*/
static?void??DisplayTask(void?*p_arg);
static?void??ResultTask(void?*p_arg);

/*各事件的創建*/
OS_EVENT??????*TpMbox;
OS_EVENT??????*SamMbox;

static??void??MboxCreate(void)
{
SamMbox?=?OSMboxCreate((void*)0);
????TpMbox?=?OSMboxCreate((void*)0);??????????????/*?Create?Sem?for?communication?between?Kbd?and?UserIF.*/
}



評論

共有 條評論