资源简介

运用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);
};
}




评论

共有 条评论