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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

我的STM32 ADC采集模塊不能顯示 附程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:999382 發表于 2022-3-19 14:04 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
根據STM32103F實戰指南寫的程序,結果不能在12864屏上顯示,求各位大神幫我看看,是哪個環節寫錯了呢?

#include "stm32f10x.h"                  // Device header

#define ADC_APBxClock_FUN                RCC_APB2PeriphClockCmd
#define ADCx                                                                ADC1
#define ADC_CLK                                                        RCC_APB2Periph_ADC1

#define        ADC_GPIO_APBxClock_FUN        RCC_APB2PeriphClockCmd
#define        ADC_GPIO_CLK                                RCC_APB2Periph_GPIOA
#define        ADC_PORT                                                GPIOA
#define        ADC_PIN                                                        GPIO_Pin_1
#define        ADC_CHANNEL                                        ADC_Channel_1
#define        ADC_IRQ                                                        ADC1_2_IRQn
#define        ADC_IRQHandler                        ADC1_2_IRQHandler

float ADC_ConvertedValue;
static void ADCx_GPIO_Config(void)                                                                //ADC GPIO初始化
{
        GPIO_InitTypeDef GPIO_InitStructure;
        ADC_GPIO_APBxClock_FUN (ADC_GPIO_CLK ,ENABLE );        //打開ADC IO 端口
        
        GPIO_InitStructure.GPIO_Pin =ADC_PIN;                                   //配置ADC IO引腳模式,必須為模擬輸入
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN ;        
        GPIO_Init (ADC_PORT ,&GPIO_InitStructure);                        //初始化ADC IO
}

static void ADCx_Mode_Config(void)
{
        ADC_InitTypeDef ADC_InitStructure;                                                
        
        ADC_APBxClock_FUN(ADC_CLK,ENABLE );                                                        //打開ADC時鐘
        ADC_InitStructure.ADC_Mode = ADC_Mode_Independent ;                                //ADC模式配置,只使用一個ADC,屬于獨立模式
        ADC_InitStructure.ADC_ScanConvMode = DISABLE;                                                        //禁止掃描模式,多通道需要,單通道不需要
        ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;                                //連續轉換模式
        ADC_InitStructure.ADC_DataAlign = ADC_ExternalTrigConv_None;                  //不用外部觸發,軟件開啟即可
        ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;                        //轉換結果右對齊
        ADC_InitStructure.ADC_NbrOfChannel = 1;                                                                                        //轉換同道1個                        
        ADC_Init(ADCx,&ADC_InitStructure);                                                                                                        //初始化ADC
        
        
        RCC_ADCCLKConfig(RCC_PCLK2_Div8);                                        //配置ADC時鐘為CLK2的8分頻,即9MHz
        
        
        ADC_RegularChannelConfig (ADCx,ADC_CHANNEL,1,ADC_SampleTime_55Cycles5 );        
      //配置ADC通道轉換順序為1,第一個轉換,采樣時間為55.5個時鐘周期
        ADC_ITConfig(ADCx,ADC_IT_EOC,ENABLE);                                                                                                                                                        
      //ADC轉換結束產生中斷,在中斷服務程序中讀取轉換值
        ADC_Cmd(ADCx,ENABLE);                                                                                                                //        開啟ADC,并開始轉換               
        ADC_ResetCalibration(ADCx);                                                                                                        //校準寄存器初始換
                while(ADC_GetResetCalibrationStatus (ADCx));                                                                        //等待寄存器初始化完成
                ADC_StartCalibration(ADCx);                                                                                        //ADC開始校準
                while(ADC_GetCalibrationStatus(ADCx));                                                                                //等待校準完成
                ADC_SoftwareStartConvCmd(ADCx,ENABLE);                                        //由于沒有采用外部觸發,所以使用軟件觸發ADC轉換
}
static void ADC_NVIC_Config(void)
{
        
        NVIC_InitTypeDef NVIC_InitStructure;
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
        NVIC_InitStructure.NVIC_IRQChannel = ADC_IRQ;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
        
        NVIC_Init(&NVIC_InitStructure);
        }        
float ConvertedValue_Get(void)
{
        return
        ADC_ConvertedValue;
}

void ADC_IRQHandler(void)
{
        if(ADC_GetITStatus(ADCx,ADC_IT_EOC) == SET)
        {
               
                ADC_ConvertedValue = ADC_GetConversionValue(ADCx);
        
        }
        ADC_ClearITPendingBit(ADCx,ADC_IT_EOC);
}

void ADCx_Init(void)
{
        ADCx_GPIO_Config();
        ADCx_Mode_Config();
        ADC_NVIC_Config();        
        
}


然后我在主程序調用ConvertedValue_Get變量,顯示屏一點反應也沒,請教各位大神,是什么問題?

#include "stm32f10x.h"
#include "12864.h"
#include "Delay.h"
#include "Value.h"


extern  void PutString(char *str,u8 line);                                        //在第line行輸出字符串
extern void PutIntNum(int value,u8 num,u8 choose);               //在第line行輸出整數
extern void PutFloatNum(float value,u8 num1,u8 num2);    //在第line行輸出小數
float DisNum=0,DisNum1=0;
uint32_t CountSenser_Get(void);
float ConvertedValue_Get(void);
uint8_t FLAG = 0;
int main(void)
{        
       ADCx_Init();
        ChipHalInit();                        //片內硬件初始化
        LCD_Init ();                    //LCD初始化
        while(1)
        {                 
                        
                DisNum1 =  ConvertedValue_Get()/4096*3.3;        
                PutString("電壓: ",3);
                PutFloatNum(DisNum1,5,5);        
                PutChar("V");

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

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