OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5034|回复: 0

新手发帖实验 水一帖秒删

[复制链接]

2

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
79
金钱
79
注册时间
2015-11-24
在线时间
32 小时
发表于 2016-1-19 10:15:16 | 显示全部楼层 |阅读模式
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "pwm.h"
#include "math.h"
#include "stdlib.h"
volatile long ix = 0;
volatile long ixi = 0;
volatile typedef struct band
        {
        long Bandf;
        long Bandp;
        long Bandarr;
        float dn;
        }xaxis;
static xaxis  xaccelerate[31]={{0},{0},{0}};
static  xaxis *px=xaccelerate;       
       
static long Stav=180,Movv=2160;
long Staf;
       
void BandTabCreat()
        {
        int i=0;
        float T=0.25;
    float st=T/32;
        //float Ti=0;
    float a=(Movv-Stav)/T;
        float k = 8.8888;
    //long Movf=Movv*k;
                Staf=Stav*k;
       

while(i<31)
{
        if(i==0)
        {
        px[i].Bandf=(i+1)*st*a*k+Staf;
    px[i].Bandarr=84000000.0/(2*px[i].Bandf);
    px[i].dn=84000000.0/(2*px[i].Bandf)-px[i].Bandarr;
        px[i].Bandp=st*px[i].Bandf;
        i++;
    }
        else
    {
        px[i].Bandf=(i+1)*st*a*k+Staf;
    px[i].Bandarr=84000000.0/(2*px[i].Bandf);
    px[i].dn=84000000.0/(2*px[i].Bandf)-px[i].Bandarr+px[i-1].dn;
        if (px[i].dn<1)
        {
     px[i].Bandp=px[i].Bandp=st*px[i].Bandf;
         i++;
        }
        else
        {
     px[i].Bandp=px[i].Bandp=st*px[i].Bandf+1;
    px[i].dn=px[i].dn-1;
        i++;
        }
        }
}
        }

void TIM2_IRQHandler(void)
{

if(TIM_GetITStatus(TIM2,TIM_IT_Update)==SET)
{
       
       
        if (ix==0&&ixi==0)
        {
    TIM_SetAutoreload(TIM2,1/px[ixi].Bandarr);
                ix+=1;
                TIM_ClearFlag(TIM2, TIM_FLAG_Update);
        }
        else if(ix<px[ixi].Bandp&&ixi<32)
        {
        ix+=1;
                        TIM_ClearFlag(TIM2, TIM_FLAG_Update);
        }
        else if(ix==px[ixi].Bandp&&ixi<32)
        {
                TIM_SetAutoreload(TIM2,1/px[ixi+1].Bandarr);
                ixi+=1;
                ix=0;
                        TIM_ClearFlag(TIM2, TIM_FLAG_Update);
        }
        else if(ixi==32)
        {
        ixi=40;
        }
}
}




int main(void)
{
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
        BandTabCreat();
        delay_ms(50);
        TIM2_PWM_Init(px[1].Bandarr,2);          
   while(1)
        {

       
        }
}


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-26 00:08

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表