OpenEdv-开源电子网

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

大佬帮看一下程序哪错了,这个是用来测50Hz的交流电压,一个周期采64个点,现在程序0错误0警告

[复制链接]

4

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2022-3-25
在线时间
12 小时
发表于 2022-5-3 11:01:10 | 显示全部楼层 |阅读模式
5金钱
下载到战舰版上试测一下板子上的直流,显示0000.0000V,测不出来


void  Adc_Init(void)
{        
        ADC_InitTypeDef ADC_InitStructure;
        GPIO_InitTypeDef GPIO_InitStructure;

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |RCC_APB2Periph_ADC1,ENABLE);         

        RCC_ADCCLKConfig(RCC_PCLK2_Div6);                        
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;               
        GPIO_Init(GPIOA, &GPIO_InitStructure);       

        ADC_DeInit(ADC1);

        ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;       
        ADC_InitStructure.ADC_ScanConvMode = DISABLE;       
        ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;       
        ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T3_CC1;       
        ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;       
        ADC_InitStructure.ADC_NbrOfChannel = 1;       
        ADC_Init(ADC1, &ADC_InitStructure);         

        ADC_RegularChannelConfig(ADC1, ADC_Channel_0, 1, ADC_SampleTime_239Cycles5 );       
       
        ADC_Cmd(ADC1, ENABLE);       
        ADC_DMACmd(ADC1, ENABLE);
       
        ADC_ResetCalibration(ADC1);                 
        while(ADC_GetResetCalibrationStatus(ADC1));       
        ADC_StartCalibration(ADC1);         
        while(ADC_GetCalibrationStatus(ADC1));
       
}



extern u16 value;
extern u16        sum;
extern u16        j;

void MYDMA_Config(DMA_Channel_TypeDef* DMA_CHx,u32 cpar,u32 cmar,u16 cndtr)
{          
  DMA_InitTypeDef DMA_InitStructure;
  NVIC_InitTypeDef NVIC_InitStructure;
       
        RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);       
        DMA_DeInit(DMA_CHx);

       
        DMA_InitStructure.DMA_PeripheralBaseAddr = cpar;  
        DMA_InitStructure.DMA_MemoryBaseAddr = cmar;  
        DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;  
        DMA_InitStructure.DMA_BufferSize = cndtr;  
        DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;  
        DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Disable;  
        DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;
        DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;
        DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;  
        DMA_InitStructure.DMA_Priority = DMA_Priority_High;
        DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;  
        DMA_Init(DMA_CHx, &DMA_InitStructure);          
  
        NVIC_InitStructure.NVIC_IRQChannel = DMA1_Channel1_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
        NVIC_Init(&NVIC_InitStructure);
       
}

void DMA1_Channel1_IRQHander(void)
        {  
                if(DMA_GetITStatus(DMA1_IT_TC1)!=RESET)
                        {
                         sum+=value;
                                j++;
            }
       
        }


void TIM3_PWM_Init(u16 arr,u16 psc)
{  
        GPIO_InitTypeDef GPIO_InitStructure;
        TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
        TIM_OCInitTypeDef  TIM_OCInitStructure;
       

        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);       
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);  

   
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOA, &GPIO_InitStructure);

        TIM_TimeBaseStructure.TIM_Period = arr;
        TIM_TimeBaseStructure.TIM_Prescaler =psc;
        TIM_TimeBaseStructure.TIM_ClockDivision = 0;
        TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
        TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);
       
        TIM3 Channel2 PWMģ꽠        
        TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
        TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
        TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
        TIM_OCInitStructure.TIM_Pulse=1562.5;
        TIM_OC1Init(TIM3, &TIM_OCInitStructure);  

        TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable);  

        TIM_Cmd(TIM3, ENABLE);  





u16 value;
float aftervalue;
u16 avalue;
u16        sum=0;
u16        j=0;


int main(void)
{
       
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
        delay_init();                       
        uart_init(115200);                
        LED_Init();                         
        LCD_Init();
        Adc_Init();                                 
       
        POINT_COLOR=BLUE;
       
        LCD_ShowString(60,168,200,16,16,"CH0_V: 0000.0000 V");       
       
        TIM3_PWM_Init(3124,6.2);
        MYDMA_Config(DMA1_Channel1,(u32)&ADC1->DR,(u32)&value,1);
        ADC_ExternalTrigConvCmd(ADC1, ENABLE);       
        DMA_Cmd(DMA1_Channel1, ENABLE);       

  while(1)
        {       
               
                if(j==64)
                {
                        aftervalue=(float)sum/j;
                        avalue= aftervalue*(3.3/4096);
                        aftervalue=avalue;
   
                       POINT_COLOR=BLUE;
                       LCD_ShowxNum(116,166, aftervalue,4,16,0);
               

               
                         avalue-=aftervalue;
                         avalue*=10000;
   
       
                        LCD_ShowxNum(156,166,avalue,4,16,0X80);
               
                LED0=!LED0;         
                delay_ms(200);               
       
                        j=0;       
                }
   
                       
        }               
          
}

ADC-DMA定时器.zip

4.36 MB, 下载次数: 8

程序

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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2022-5-4 10:52:48 | 显示全部楼层
回复

使用道具 举报

0

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
152
金钱
152
注册时间
2019-5-19
在线时间
47 小时
发表于 2022-6-11 17:05:19 | 显示全部楼层
定时器312.5uS,采样64次,累加每次平方值,停止采样。
回复

使用道具 举报

0

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
152
金钱
152
注册时间
2019-5-19
在线时间
47 小时
发表于 2022-6-11 17:07:10 | 显示全部楼层
Sqrt(累加平方和值)*系数,开始采样。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-26 22:54

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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