久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1744|回復: 4
收起左側

stm32單片機+proteus+adc采集電壓仿真顯示為零

[復制鏈接]
ID:875228 發表于 2023-4-2 15:57 | 顯示全部樓層 |閱讀模式
求助一下大佬!因為板子上的oled不是ssd1306驅動的所以現在只能學習跑仿真,在學adc采集電壓的實驗,OLED顯示沒問題,現在的問題是采集不到電壓,顯示總是0。。。麻煩好心人幫我看看是哪里出了問題。
軟件用的keil mdk5.24   proteus8.13 單片機是STM32F103C8
————————————————
1.仿真圖: 屏幕截圖 2023-04-02 124237.jpg


2.adc.c
  1. #include "adc.h"

  2. vu16 ADC_DMA_IN5; //ADC數值存放的變量


  3. void ADC_DMA_Init(void){ //DMA初始化設置
  4.         DMA_InitTypeDef DMA_InitStructure;//定義DMA初始化結構體
  5.         DMA_DeInit(DMA1_Channel1);//復位DMA通道1
  6.         DMA_InitStructure.DMA_PeripheralBaseAddr = ADC1_DR_Address; //定義 DMA通道外設基地址=ADC1_DR_Address
  7.         DMA_InitStructure.DMA_MemoryBaseAddr = (u32)&ADC_DMA_IN5; //定義DMA通道ADC數據存儲器(其他函數可直接讀此變量即是ADC值)
  8.         DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;//指定外設為源地址
  9.         DMA_InitStructure.DMA_BufferSize = 1;//定義DMA緩沖區大小(根據ADC采集通道數量修改)
  10.         DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;//當前外設寄存器地址不變
  11.         DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Disable;//當前存儲器地址:Disable不變,Enable遞增(用于多通道采集)
  12.         DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;//定義外設數據寬度16位
  13.         DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord; //定義存儲器數據寬度16位
  14.         DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;//DMA通道操作模式位環形緩沖模式
  15.         DMA_InitStructure.DMA_Priority = DMA_Priority_High;//DMA通道優先級高
  16.         DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;//禁止DMA通道存儲器到存儲器傳輸
  17.         DMA_Init(DMA1_Channel1, &DMA_InitStructure);//初始化DMA通道1
  18.         DMA_Cmd(DMA1_Channel1, ENABLE); //使能DMA通道1
  19. }
  20. void ADC_GPIO_Init(void){ //GPIO初始化設置
  21.         GPIO_InitTypeDef  GPIO_InitStructure;         
  22.     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC,ENABLE);      
  23.         RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);//使能DMA時鐘(用于ADC的數據傳送)
  24.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);//使能ADC1時鐘
  25.     GPIO_InitStructure.GPIO_Pin = ADC_CH5; //選擇端口                        
  26.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; //選擇IO接口工作方式為模擬輸入      
  27.         GPIO_Init(ADCPORT, &GPIO_InitStructure);                        
  28. }
  29. void ADC_Configuration(void){ //初始化設置
  30.         ADC_InitTypeDef ADC_InitStructure;//定義ADC初始化結構體變量
  31.         ADC_GPIO_Init();//GPIO初始化設置
  32.         ADC_DMA_Init();//DMA初始化設置
  33.         ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;//ADC1和ADC2工作在獨立模式
  34.         ADC_InitStructure.ADC_ScanConvMode = ENABLE; //使能掃描
  35.         ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;//ADC轉換工作在連續模式
  36.         ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;//有軟件控制轉換
  37.         ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;//轉換數據右對齊
  38.         ADC_InitStructure.ADC_NbrOfChannel = 1;//順序進行規則轉換的ADC通道的數目(根據ADC采集通道數量修改)
  39.         ADC_Init(ADC1, &ADC_InitStructure); //根據ADC_InitStruct中指定的參數初始化外設ADCx的寄存器
  40.         //設置指定ADC的規則組通道,設置它們的轉化順序和采樣時間
  41.         //ADC1,ADC通道x,規則采樣順序值為y,采樣時間為28周期                 
  42.         ADC_RegularChannelConfig(ADC1, ADC_Channel_5, 1, ADC_SampleTime_28Cycles5);//ADC1選擇信道x,采樣順序y,采樣時間n個周期

  43.         ADC_DMACmd(ADC1, ENABLE);// 開啟ADC的DMA支持(要實現DMA功能,還需獨立配置DMA通道等參數)
  44.         ADC_Cmd(ADC1, ENABLE);//使能ADC1
  45.         ADC_ResetCalibration(ADC1); //重置ADC1校準寄存器
  46.         while(ADC_GetResetCalibrationStatus(ADC1));//等待ADC1校準重置完成
  47.         ADC_StartCalibration(ADC1);//開始ADC1校準
  48.         while(ADC_GetCalibrationStatus(ADC1));//等待ADC1校準完成
  49.         ADC_SoftwareStartConvCmd(ADC1, ENABLE); //使能ADC1軟件開始轉換
  50. }
復制代碼
3.adc.h
  1. #ifndef __ADC_H
  2. #define __ADC_H                           
  3. #include "sys.h"


  4. #define ADC1_DR_Address    ((uint32_t)0x4001244C) //ADC1這個外設的地址(查參考手冊得出)

  5. #define ADCPORT                GPIOA        //定義ADC接口
  6. #define ADC_CH4                GPIO_Pin_4        //定義ADC接口 電壓電位器
  7. #define ADC_CH5                GPIO_Pin_5        //定義ADC接口 光敏電阻
  8. #define ADC_CH6                GPIO_Pin_6        //定義ADC接口 搖桿X軸
  9. #define ADC_CH7                GPIO_Pin_7        //定義ADC接口 搖桿Y軸


  10. void ADC_DMA_Init(void);
  11. void ADC_GPIO_Init(void);
  12. void ADC_Configuration(void);

  13. #endif
復制代碼
4.main.c
  1. #include "stm32f10x.h"
  2. #include "sys.h"
  3. #include "delay.h"
  4. #include "oled.h"
  5. #include "adc.h"

  6. extern vu16 ADC_DMA_IN5;
  7. int main()
  8. {
  9.         delay_ms(500);
  10.         RCC_Configuration();//系統時鐘初始化
  11.         ADC_Configuration();//ADC初始化
  12.         OLED_Init();//OLED初始化
  13.         OLED_ColorTurn(0);//0正常顯示,1 反色顯示
  14.     OLED_DisplayTurn(0);//0正常顯示,1 屏幕翻轉顯示
  15.         //
  16.         
  17.         
  18.         while(1)
  19.         {
  20.                 OLED_Refresh();
  21.                 //分清楚起始位置和間隔 仿真設置芯片頻率為8M!
  22.             
  23.                 OLED_ShowString(0,0,"Voltage Measure",16,1);
  24.                 OLED_ShowString(0,16,"U1:",16,1);
  25.                 OLED_ShowNum(22,16,ADC_DMA_IN5,4,16,1);
  26.                 delay_ms(200);
  27.                
  28.         }

  29. }
復制代碼


屏幕截圖 2023-04-02 124237.png
回復

使用道具 舉報

ID:291668 發表于 2023-4-2 17:00 | 顯示全部樓層
是不是gpio時鐘沒有配置正確啊?
回復

使用道具 舉報

ID:875228 發表于 2023-4-2 17:16 | 顯示全部樓層
li64331218 發表于 2023-4-2 17:00
是不是gpio時鐘沒有配置正確啊?

是adc的gpio時鐘配置那里嗎
回復

使用道具 舉報

ID:883242 發表于 2023-4-2 17:16 | 顯示全部樓層
li64331218 發表于 2023-4-2 17:00
是不是gpio時鐘沒有配置正確啊?

GPIO時鐘配置正確。
回復

使用道具 舉報

ID:1069599 發表于 2023-4-3 09:05 | 顯示全部樓層
我記得proteus里的C8T6要模數轉換必須要外接ADC芯片,不然代碼無效
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 一区二区三区免费 | 国产高清视频 | 欧美精品一区三区 | 国产精品成人一区二区 | 亚洲一区欧美一区 | 人人做人人澡人人爽欧美 | 免费成人高清在线视频 | 日韩午夜电影在线观看 | 久久99精品久久久久久 | 国产精品黄视频 | 久久精品亚洲精品国产欧美 | 午夜久久久久久久久久一区二区 | 亚洲色片网站 | 日韩av看片| 日韩成人一区 | 国产一区二区三区视频在线观看 | 国内精品久久久久久 | 一级片在线播放 | 国产成人精品综合 | 亚洲精品区| 男人天堂午夜 | 日韩小视频在线 | 天天夜天天操 | 亚洲精品一区二三区不卡 | 亚洲精品9999| 一色桃子av一区二区 | 黄视频网址 | 亚洲福利在线观看 | 一区二区视频在线观看 | 免费三级黄 | 欧美一区二不卡视频 | 美女久久久久久久 | 欧美精品一区在线 | 国产aa | jdav视频在线观看免费 | 国产一区二区不卡 | 婷婷色网| 精品一区二区在线观看 | 色婷婷综合久久久久中文一区二区 | 日韩一| wwwww在线观看 |