欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1299|回復: 4
打印 上一主題 下一主題
收起左側

STM32單片機ADC使用TIM3 TRGO轉換

[復制鏈接]
跳轉到指定樓層
樓主
ID:1114858 發表于 2024-5-13 21:22 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
STM32 ADC使用TIM3 TRGO 轉換模式時為什么配置好了定時器和觸發通道ADC無法正常啟用,在程序中加一個軟件觸發就可以正常使用(ADC配置為單次轉換),關閉定時器后ADC轉換無法啟用,可以看出觸發的來源來自定時器的TRGO  ,為什么必須要加一個軟件觸發 ,麻煩大佬幫忙看下


#include "stm32f10x.h"                  // Device header


void ADCdma_Init( )
{
        RCC_APB2PeriphClockCmd (RCC_APB2Periph_GPIOA,ENABLE);
        RCC_APB1PeriphClockCmd (RCC_APB1Periph_TIM3,ENABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE );
        RCC_ADCCLKConfig (RCC_PCLK2_Div6);
        
        
        GPIO_InitTypeDef GPIO_InitStructure;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN;
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 ;
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_Init(GPIOA,&GPIO_InitStructure);
        
        
        TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
        TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1;
        TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up;
        TIM_TimeBaseInitStructure.TIM_Period=2-1;
        TIM_TimeBaseInitStructure.TIM_Prescaler=72-1;
        TIM_TimeBaseInitStructure.TIM_RepetitionCounter=0;
        TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitStructure);
        
        TIM_SelectOutputTrigger(TIM3,TIM_TRGOSource_Update);
        
        
        ADC_RegularChannelConfig(ADC1,ADC_Channel_0,1,ADC_SampleTime_55Cycles5);
        ADC_InitTypeDef ADC_InitStructure;
        ADC_InitStructure.ADC_ContinuousConvMode=DISABLE ;
        ADC_InitStructure.ADC_DataAlign=ADC_DataAlign_Right;
        ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_T3_TRGO;
        ADC_InitStructure.ADC_Mode=ADC_Mode_Independent;
        ADC_InitStructure.ADC_NbrOfChannel=1;
        ADC_InitStructure.ADC_ScanConvMode=DISABLE ;
        ADC_Init(ADC1,&ADC_InitStructure);
        

        ADC_Cmd(ADC1,ENABLE );
        TIM_Cmd(TIM3,ENABLE );
        ADC_ResetCalibration(ADC1);
        while(ADC_GetResetCalibrationStatus(ADC1)==SET );
        ADC_StartCalibration(ADC1);
        while(ADC_GetCalibrationStatus(ADC1)==RESET);
        
        
}



#include "stm32f10x.h"                  // Device header
#include "ADCdma.h"
#include "OLED.h"

int main(void)
{
        uint16_t ADC_Date1[4]={0};
        OLED_Init();
        ADCdma_Init();
        ADC_SoftwareStartConvCmd(ADC1,ENABLE );//  必須加這條才可以正常使用
        while(1)
        {

                OLED_ShowNum(1,1,ADC_GetConversionValue(ADC1),5);
               
        }
      
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:421260 發表于 2024-5-14 08:04 | 只看該作者
ADC_SoftwareStartConvCmd(ADC1,ENABLE );//使能指定的ADC通道。
回復

使用道具 舉報

板凳
ID:421260 發表于 2024-5-14 08:07 | 只看該作者
使能指定的ADC的軟件轉換啟動功能
回復

使用道具 舉報

地板
ID:1114858 發表于 2024-5-14 16:30 來自觸屏版 | 只看該作者
szqinyi 發表于 2024-5-14 08:04
ADC_SoftwareStartConvCmd(ADC1,ENABLE );//使能指定的ADC通道。

這個函數不是使能軟件開始的嗎?跟硬件有什么關系
回復

使用道具 舉報

5#
ID:1114858 發表于 2024-5-14 16:32 來自觸屏版 | 只看該作者
szqinyi 發表于 2024-5-14 08:07
使能指定的ADC的軟件轉換啟動功能

是的,可以不使用這句,需要用函數開啟ADC外部觸發就可以不使用開始軟件轉換函數。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表