OpenEdv-开源电子网

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

求助:stm8L151K4定时器2触发不了AD采样,DMA传输。

[复制链接]

8

主题

29

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
235
金钱
235
注册时间
2015-1-22
在线时间
71 小时
发表于 2021-7-20 17:01:04 | 显示全部楼层 |阅读模式
1金钱
void Timer2_Config_Init(void)
{
    CLK_PeripheralClockConfig(CLK_Peripheral_TIM2,ENABLE);  //时钟配置
    TIM2_DeInit();
    TIM2_TimeBaseInit(TIM2_Prescaler_1, TIM2_CounterMode_Up, 16*624); //1分频,向上计数,每625us定时中断一次     
    TIM2_ARRPreloadConfig(ENABLE);
    TIM2_SelectOutputTrigger(TIM2_TRGOSource_Update);
//    TIM2_ITConfig(TIM2_IT_Update , ENABLE);
    TIM2_ITConfig(TIM2_IT_Update , DISABLE);
}

void Ad_Config_Init(void)
{
    ADC_DeInit(ADC1);
    CLK_PeripheralClockConfig(CLK_Peripheral_ADC1, ENABLE);//打开ADC1外设的时钟
    GPIO_Init(GPIOA, GPIO_Pin_6, GPIO_Mode_In_FL_No_IT);//电源
    GPIO_Init(GPIOB, GPIO_Pin_0, GPIO_Mode_In_FL_No_IT);//电流采样
    GPIO_Init(GPIOB, GPIO_Pin_1, GPIO_Mode_In_FL_No_IT);//参考电压采样
    delay_us(20);
    ADC_Init(ADC1, ADC_ConversionMode_Single, ADC_Resolution_12Bit, ADC_Prescaler_1);//初始化ADC1,模式,12位分辨率,ADC时钟1分频
    ADC_SamplingTimeConfig(ADC1, ADC_Group_SlowChannels, ADC_SamplingTime_384Cycles);//配置ADC采样时间,384个时钟周期
    ADC_VrefintCmd(DISABLE); //禁止内部电压基准源
    ADC_ITConfig(ADC1, ADC_IT_EOC, DISABLE);

    ADC_DMACmd(ADC1, ENABLE);
    ADC_Cmd(ADC1,ENABLE); //使能ADC1     
    ADC_ChannelCmd(ADC1, ADC_Channel_0, ENABLE);//打开ADC1的0通道
    ADC_ChannelCmd(ADC1, ADC_Channel_17, ENABLE);//打开ADC1的17通道
    ADC_ChannelCmd(ADC1, ADC_Channel_18, ENABLE);//打开ADC1的18通道       
}


#define ADC1_DR_ADDRESS        ((uint16_t)0x5344)
#define BUFFER_SIZE                 ((uint8_t) 0x03)
#define BUFFER_ADDRESS          ((uint32_t)(&Buffer))
uint16_t Buffer[3];

void DMA1_Config_Init(void)
{
    CLK_PeripheralClockConfig(CLK_Peripheral_DMA1, ENABLE);  
    DMA_DeInit(DMA1_Channel0);
    DMA_GlobalDeInit();
    DMA_Init(DMA1_Channel0,BUFFER_ADDRESS,
             ADC1_DR_ADDRESS,BUFFER_SIZE,
             DMA_DIR_PeripheralToMemory,
             DMA_Mode_Circular,
             DMA_MemoryIncMode_Inc,
             DMA_Priority_High,
             DMA_MemoryDataSize_HalfWord );
    DMA_Cmd(DMA1_Channel0, ENABLE);                                   //DMA Channel0 enable
    DMA_ITConfig(DMA1_Channel0, DMA_ITx_TC, ENABLE);        // Enable DMA1 channel0 Transfer complete interrupt
    DMA_GlobalCmd(ENABLE);                                            //DMA enable
}



INTERRUPT_HANDLER(DMA1_CHANNEL0_1_IRQHandler,2)
{
    unsigned char i=0;
//    ADC_Cmd(ADC1,DISABLE);
    if(DMA_GetFlagStatus(DMA1_FLAG_TC0)!= RESET)
    {
    }
    DMA_ClearITPendingBit(DMA1_IT_TC0);
}



INTERRUPT_HANDLER(TIM2_UPD_OVF_TRG_BRK_USART2_TX_IRQHandler,19)
{
      if(flg==0)
       {
           Vcc_Swich_On;
           flg=1;
       }
       else
       {
           Vcc_Swich_Off;
           flg=0;
       }

    TIM2_ClearITPendingBit(TIM2_IT_Update);
}

void Time_Adc_Dma_Init(void)
{
    Timer2_Config_Init();
    Ad_Config_Init();
    DMA1_Config_Init();

    ADC_ExternalTrigConfig(ADC1,ADC_ExtEventSelection_Trigger2,ADC_ExtTRGSensitivity_Falling);
    TIM2_SelectOutputTrigger(TIM2_TRGOSource_OC1);
    TIM2_Cmd(ENABLE);
}

void main(void)
{
    sim();//关中断
    CLK_DeInit();

    CLK_HSICmd(ENABLE);//开始内部高频RC 16M
    CLK_SYSCLKSourceConfig(CLK_SYSCLKSource_HSI);//HSI为系统时钟
    CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1);       //1分频,8M


    GPIO_Init(Vcc_PORT, Vcc_Swich_PIN, GPIO_Mode_Out_OD_Low_Fast);
    Vcc_Swich_On;

    Time_Adc_Dma_Init();

    enableInterrupts();

    while (1)
    {
    }
}


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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2021-7-21 01:43:31 | 显示全部楼层
回复

使用道具 举报

8

主题

29

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
235
金钱
235
注册时间
2015-1-22
在线时间
71 小时
 楼主| 发表于 2021-7-22 14:16:56 | 显示全部楼层
有兄弟做过吗
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-22 14:14

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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