資源簡介
運用STM32F407寫的FFT,分辨率是1Hz。可以測量信號頻率,以及諧波分析,失真度。另外還可以測量兩個波形的相位差
代碼片段和文件信息
#include?“sys.h“
#include?“delay.h“
#include?“usart.h“
#include?“led.h“
#include?“includes.h“
//ALIENTEK?探索者STM32F407開發板?實驗56
//UCOSII實驗1-任務調度?-庫函數版本
//技術支持:www.openedv.com
//淘寶店鋪:http://eboard.taobao.com??
//廣州市星翼電子科技有限公司??
//作者:正點原子?@ALIENTEK
/////////////////////////UCOSII任務設置///////////////////////////////////
//START?任務
//設置任務優先級
#define?START_TASK_PRIO?????? 10?//開始任務的優先級設置為最低
//設置任務堆棧大小
#define?START_STK_SIZE?? 64
//任務堆棧
OS_STK?START_TASK_STK[START_STK_SIZE];
//任務函數
void?start_task(void?*pdata);
? ???
//LED0任務
//設置任務優先級
#define?LED0_TASK_PRIO??????? 7?
//設置任務堆棧大小
#define?LED0_STK_SIZE?? ???? 64
//任務堆棧
OS_STK?LED0_TASK_STK[LED0_STK_SIZE];
//任務函數
void?led0_task(void?*pdata);
//LED1任務
//設置任務優先級
#define?LED1_TASK_PRIO??????? 6?
//設置任務堆棧大小
#define?LED1_STK_SIZE?? 64
//任務堆棧
OS_STK?LED1_TASK_STK[LED1_STK_SIZE];
//任務函數
void?led1_task(void?*pdata);
int?main(void)
{?
?
delay_init(168); ??//初始化延時函數
LED_Init(); ????????//初始化LED端口?
OSInit();???
? OSTaskCreate(start_task(void?*)0(OS_STK?*)&START_TASK_STK[START_STK_SIZE-1]START_TASK_PRIO?);//創建起始任務
OSStart();
}
?//開始任務
void?start_task(void?*pdata)
{
????OS_CPU_SR?cpu_sr=0;
pdata?=?pdata;?
?? OS_ENTER_CRITICAL(); //進入臨界區(無法被中斷打斷)????
? OSTaskCreate(led0_task(void?*)0(OS_STK*)&LED0_TASK_STK[LED0_STK_SIZE-1]LED0_TASK_PRIO); ???
? OSTaskCreate(led1_task(void?*)0(OS_STK*)&LED1_TASK_STK[LED1_STK_SIZE-1]LED1_TASK_PRIO); ? ???
OSTaskSuspend(START_TASK_PRIO); //掛起起始任務.
OS_EXIT_CRITICAL(); //退出臨界區(可以被中斷打斷)
}?
//LED0任務
void?led0_task(void?*pdata)
{ ?
while(1)
{
LED0=0;
delay_ms(80);
LED0=1;
delay_ms(920);
};
}
//LED1任務
void?led1_task(void?*pdata)
{ ??
while(1)
{
LED1=0;
delay_ms(300);
LED1=1;
delay_ms(300);
};
}
- 上一篇:OpenMv教程由入門到精通
- 下一篇:F5101考試學習指導官方版
評論
共有 條評論