Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
2 / 2 / 3
Регистрация: 20.12.2015
Сообщений: 336
1

Stm32f051 (ADC&DMA)

27.03.2016, 17:37. Показов 2435. Ответов 25
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Ребята помогите с проблемой. В программе он ругает на этот
C
1
.\project.axf: Error: L6218E: Undefined symbol assert_param (referred from stm32f0xx_adc.o).
C
1
.\project.axf: Error: L6218E: Undefined symbol f_adcsample (referred from main.o).
вот полный код программы
Кликните здесь для просмотра всего текста

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
#include "stm32f0xx.h"
#include "stm32f0xx_gpio.h"
#include "stm32f0xx_rcc.h"
#include "stm32f0xx_adc.h"
#include "stm32f0xx_dma.h"
#include "stm32f0xx_tim.h"
#include "stm32f0xx_misc.h"
 
#define TIM_ADC TIM1 
#define SYSCLK 16000000          
#define ptimer_int 10       
#define Prescaler 127         
 
const uint16_t _Period =  ((SYSCLK/(Prescaler + 1))/ptimer_int)/2; 
#define ADC1_DR_Address    ((uint32_t)0x40012440)
 
volatile uint16_t ADCConvertedValue[16];   
uint16_t dmacounter; 
uint16_t dmacounter2;
extern volatile uint8_t f_adcsample; 
 
/*----------------------------------------------------------------------------
                                 ADC-DMA
*---------------------------------------------------------------------------*/
 
void adcdma_init(){
   
   GPIO_InitTypeDef              GPIO_InitStructure; 
   ADC_InitTypeDef                ADC_InitStructure;
   DMA_InitTypeDef                DMA_InitStructure;
   NVIC_InitTypeDef                NVIC_InitStructure;
   TIM_TimeBaseInitTypeDef   TIM_TimeBaseStructure;
   
   RCC_ADCCLKConfig(RCC_ADCCLK_PCLK_Div4 );      
   /* Enable DMA1 clock */
   RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);
   /* Enable ADC1 and GPIOA B clock */
   RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 , ENABLE);   
   RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);   
   RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE);   
   RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);
      
   /* Configure PA (ADC Channel) as analog input -------------------------*/
   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
   GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ;
   GPIO_Init(GPIOA, &GPIO_InitStructure);   
 
   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
   GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ;
   GPIO_Init(GPIOA, &GPIO_InitStructure);
 
   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
   GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ;
   GPIO_Init(GPIOA, &GPIO_InitStructure);
 
   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
   GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ;
   GPIO_Init(GPIOA, &GPIO_InitStructure);
 
   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
   GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ;
   GPIO_Init(GPIOA, &GPIO_InitStructure);
 
   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
   GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ;
   GPIO_Init(GPIOB, &GPIO_InitStructure);
 
   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
   GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ;
   GPIO_Init(GPIOB, &GPIO_InitStructure);      
      
   /* DMA1 channel1 configuration ----------------------------------------------*/
   DMA_DeInit(DMA1_Channel1);   
   
   DMA_InitStructure.DMA_PeripheralBaseAddr = ADC1_DR_Address;
   DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)ADCConvertedValue;
   DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;
   DMA_InitStructure.DMA_BufferSize = 16;
   DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
   DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
   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_Low;
   DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;
   DMA_Init(DMA1_Channel1, &DMA_InitStructure);
 
   DMA_ITConfig(DMA1_Channel1, DMA_IT_TC, ENABLE);
   DMA_ITConfig(DMA1_Channel1, DMA_IT_HT, ENABLE);
   NVIC_EnableIRQ(DMA1_Channel1_IRQn);
     /* DMA1 Channel1 enable */
     DMA_Cmd(DMA1_Channel1, ENABLE);  
     /* ADC DMA request in circular mode */
   ADC_DMARequestModeConfig(ADC1, ADC_DMAMode_Circular);  
   /* Enable ADC_DMA */
   ADC_DMACmd(ADC1, ENABLE); 
   
  NVIC_InitStructure.NVIC_IRQChannel = DMA1_Channel1_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPriority = 1;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
 
     /* ADC1 configuration ------------------------------------------------------*/
   ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b;
   ADC_InitStructure.ADC_ContinuousConvMode = DISABLE; 
   ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_Falling;
   ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T1_TRGO;
   ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
   ADC_InitStructure.ADC_ScanDirection = ADC_ScanDirection_Upward;
   ADC_Init(ADC1, &ADC_InitStructure);   
 
/* ADC1 regular channel configuration */ 
  ADC_ChannelConfig(ADC1, ADC_Channel_3 , ADC_SampleTime_55_5Cycles);
  ADC_ChannelConfig(ADC1, ADC_Channel_4 , ADC_SampleTime_55_5Cycles); 
  ADC_ChannelConfig(ADC1, ADC_Channel_5 , ADC_SampleTime_55_5Cycles); 
  ADC_ChannelConfig(ADC1, ADC_Channel_6 , ADC_SampleTime_55_5Cycles); 
  ADC_ChannelConfig(ADC1, ADC_Channel_7 , ADC_SampleTime_55_5Cycles); 
  ADC_ChannelConfig(ADC1, ADC_Channel_8 , ADC_SampleTime_55_5Cycles); 
  ADC_ChannelConfig(ADC1, ADC_Channel_9 , ADC_SampleTime_55_5Cycles); 
   
  ADC_ChannelConfig(ADC1, ADC_Channel_TempSensor , ADC_SampleTime_55_5Cycles);  
  ADC_TempSensorCmd(ENABLE);   
   
    /* ADC Calibration */
  ADC_GetCalibrationFactor(ADC1);   
   
   /* Enable ADC1 */
   ADC_DMACmd(ADC1, ENABLE);   
   /* Enable ADC1 */
   ADC_Cmd(ADC1, ENABLE);
  
/* Timer configuration ------------------------------------------------------*/   
   
   TIM_DeInit(TIM_ADC);
   TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);  
   
   /* Time Base configuration */
   TIM_TimeBaseStructInit(&TIM_TimeBaseStructure); 
   TIM_TimeBaseStructure.TIM_Period = _Period;          
   TIM_TimeBaseStructure.TIM_Prescaler = Prescaler;       
   TIM_TimeBaseStructure.TIM_ClockDivision = 0;    
   TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; 
   TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;   
   TIM_TimeBaseInit(TIM_ADC, &TIM_TimeBaseStructure);
   TIM_SelectOutputTrigger(TIM_ADC, TIM_TRGOSource_Update);
   
   /* TIM1 counter enable */
   TIM_Cmd(TIM_ADC, ENABLE);   
   ADC_StartOfConversion(ADC1);    
}   
 
/*----------------------------------------------------------------------------
                                         DMA 
*---------------------------------------------------------------------------*/
 
void DMA1_Channel1_IRQHandler(){   
   if (DMA_GetITStatus(DMA1_IT_HT1))   {
      dmacounter++;
      f_adcsample = 1;
      DMA_ClearITPendingBit(DMA1_IT_HT1);   
   }
   if (DMA_GetITStatus(DMA1_IT_TC1))   {
      dmacounter2++;
      f_adcsample = 2;
      DMA_ClearITPendingBit(DMA1_IT_TC1);   
     }      
}
 
/*-------------------------------------------------------------------------*/
 
int main(void)
    {
        adcdma_init();
        DMA1_Channel1_IRQHandler();
        while(1)
            {
        }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.03.2016, 17:37
Ответы с готовыми решениями:

stm32f051 (ADC&DMA)
Ребята помогите в программе ругает так .\project.axf: Error: L6218E: Undefined symbol ossirt_param...

STM32F4Discovery - ADC DMA и FSMC DMA
Привет всем. Вынужден опять обратиться за Вашей помощью :) Ситуация такая. 1. Дисплей...

stm32f407+ADC+DMA. Проблема с DMA
Доброго дня! Новичок в stm, первый проект, начальные наброски, не понимаю,почему не работает эта...

STM32F051 Проблема с запуском ADC от Timer1 по TRGO
Не могу завести АЦП. Все работает, если ацп запускать в автозапуске, но по таймеру1 запустить не...

25
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,523
31.03.2016, 00:36 21
Author24 — интернет-сервис помощи студентам
Umar Egamberdie, не надо плодить темы, быстрей все равно не ответят
0
2 / 2 / 3
Регистрация: 20.12.2015
Сообщений: 336
31.03.2016, 06:29  [ТС] 22
Вот код и ругается на
C
1
source\main.c(12): warning:  #177-D: variable "NVIC_InitStructure" was declared but never referenced
Кликните здесь для просмотра всего текста
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include "stm32f0xx.h"
#include "stm32f0xx_adc.h"
#include "stm32f0xx_dma.h"
#include "stm32f0xx_gpio.h"
#include "stm32f0xx_dac.h"
#include "stm32f0xx_tim.h"
#include "stm32f0xx_rcc.h"
#include "stm32f0xx_misc.h"
 
void Init_ADC()
    {
        NVIC_InitTypeDef   NVIC_InitStructure;
        ADC_InitTypeDef ADC_InitStructure; 
        GPIO_InitTypeDef gpstruct;
        
        RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE);
        
        GPIO_StructInit(&gpstruct);
    gpstruct.GPIO_Pin = GPIO_Pin_1;     
        gpstruct.GPIO_Mode = GPIO_Mode_AN;
        gpstruct.GPIO_PuPd = GPIO_PuPd_NOPULL;
        GPIO_Init(GPIOB, &gpstruct);
        
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);
        
        ADC_StructInit(&ADC_InitStructure);   
        ADC_InitStructure.ADC_Resolution = ADC_Resolution_8b;
        ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;
        ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None;
        ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
        ADC_InitStructure.ADC_ScanDirection = ADC_ScanDirection_Upward;
    ADC_Init(ADC1, &ADC_InitStructure);
    ADC_ChannelConfig(ADC1, ADC_Channel_9, ADC_SampleTime_239_5Cycles);
        
        ADC1->IER|=ADC_IER_EOCIE;   
    NVIC_EnableIRQ(ADC1_COMP_IRQn);
    ADC_Cmd(ADC1,ENABLE);
}
 
int main(void)
    {
        while(1)
            {
                
        }
}
0
1976 / 1275 / 130
Регистрация: 04.01.2010
Сообщений: 4,607
31.03.2016, 07:40 23
Цитата Сообщение от Umar Egamberdie Посмотреть сообщение
Вот код и ругается на
правильно делает. Вот что гугел об этом знает.
PS: в данном случае ничего страшного. Вы просто объявили переменную, но не использовали ее. Нужно закомментить или просто удалить это объявление и жить дальше.
1
2 / 2 / 3
Регистрация: 20.12.2015
Сообщений: 336
31.03.2016, 07:58  [ТС] 24
спасибо с этим разобрался, как дать функцию что бы АЦП работал, все тактирование и настройки сделал.

Добавлено через 1 минуту
Так пробовал но ничего не происходит
Кликните здесь для просмотра всего текста
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
#include "stm32f0xx.h"
#include "stm32f0xx_adc.h"
#include "stm32f0xx_dma.h"
#include "stm32f0xx_gpio.h"
#include "stm32f0xx_dac.h"
#include "stm32f0xx_tim.h"
#include "stm32f0xx_rcc.h"
#include "stm32f0xx_misc.h"
#include "stm32f0xx_usart.h"
 
void INIT_USORT(void) 
    {
        GPIO_InitTypeDef intports;
        USORT_InitTypeDef initusart;
        RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA,ENABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_USORT1,ENABLE);
        GPIO_StructInit(&intports);
    
        intports.GPIO_Mode=GPIO_Mode_AF;
        intports.GPIO_Pin=GPIO_Pin_10|GPIO_Pin_9;
        intports.GPIO_Speed=GPIO_Speed_50MHz;
        intports.GPIO_OType=GPIO_OType_PP;
        GPIO_Init(GPIOA,&intports);
        GPIO_PinAFConfig(GPIOA, GPIO_PinSource9,GPIO_AF_1);
        GPIO_PinAFConfig(GPIOA, GPIO_PinSource10,GPIO_AF_1);
 
        USORT_StructInit(&initusart);
        initusart.USORT_BaudRate=9600;
        initusart.USORT_Mode=USORT_Mode_Rx|USORT_Mode_Tx;
        initusart.USORT_Parity=USORT_Parity_No;
        initusart.USORT_StopBits=USORT_StopBits_1;
        initusart.USORT_WordLength=USORT_WordLength_8b;
        initusart.USORT_HardwareFlowControl=USORT_HardwareFlowControl_None;
        USORT1->CR1 = USORT_CR1_TE | USORT_CR1_UE|USORT_CR1_RXNEIE | USORT_CR1_RE ; 
 
        NVIC_SetPriority(USORT1_IRQn, 0); 
 
        NVIC_EnableIRQ(USORT1_IRQn);
 
        USORT_Init(USORT1, &initusart);
        USORT_Cmd(USORT1, ENABLE);
}
 
 void INIT_ADC()
    {
    //NVIC_InitTypeDef   NVIC_InitStructure;
        ADC_InitTypeDef ADC_InitStructure; 
        GPIO_InitTypeDef gpstruct;
        
        RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE);
        
        GPIO_StructInit(&gpstruct);
    gpstruct.GPIO_Pin = GPIO_Pin_1;     
        gpstruct.GPIO_Mode = GPIO_Mode_AN;
        gpstruct.GPIO_PuPd = GPIO_PuPd_NOPULL;
        GPIO_Init(GPIOB, &gpstruct);
    
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);/* ADC1 Periph clock enable */
    ADC_DeInit(ADC1);/* ADC1 DeInit */
  
    ADC_StructInit(&ADC_InitStructure);   
        ADC_InitStructure.ADC_Resolution = ADC_Resolution_8b;
        ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;
        ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None;
        ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
        ADC_InitStructure.ADC_ScanDirection = ADC_ScanDirection_Upward;
    ADC_Init(ADC1, &ADC_InitStructure);
    ADC_ChannelConfig(ADC1, ADC_Channel_9, ADC_SampleTime_239_5Cycles);
    
    ADC1->IER|=ADC_IER_EOCIE;
    NVIC_EnableIRQ(ADC1_COMP_IRQn);
        
    ADC_GetCalibrationFactor(ADC1);
    ADC_Cmd(ADC1,ENABLE);
    ADC_StartOfConversion(ADC1);
 
}
 
void USORT_CHAR(uint8_t Dat)
    { 
        while(!USORT_GetFlagStatus(USORT1,USORT_FLAG_TXE));
        USORT_SendData(USORT1,Dat);
}
 
void USORT1_IRQHandler(void) 
    {
        uint8_t RX = 0;
        if((USORT1->ISR & USORT_ISR_RXNE) == USORT_ISR_RXNE) 
            {
                RX = (uint8_t)(USORT1->RDR);
                USORT_CHAR(RX);
                //RESSIVER_USORT(RX);
        }
}
 
void ADC1_COMP_IRQHandler(void) 
    {
        uint8_t ADC_result=0;
        ADC_result = ADC1->DR;
        USORT_CHAR(ADC_result);
}
 
int main()
    {
    uint8_t ADC_result;
    
    INIT_ADC();
    INIT_USORT();
        __enable_irq();
    ADC_Cmd(ADC1,ENABLE);
    while(1)
            {
                while(ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC) == RESET);
                ADC_ClearFlag(ADC1, ADC_FLAG_EOC);
                ADC_result = ADC_GetConversionValue(ADC1);
                USORT_CHAR(ADC_result);
        USORT_CHAR(113);
    }  
}
0
2 / 2 / 3
Регистрация: 20.12.2015
Сообщений: 336
31.03.2016, 08:57  [ТС] 25
(камень stm32f051) Он ругается на это
C
1
ADC_RegularChannelConfig(ADC1, channel, 1, ADC_SampleTime_3Cycles); //настройка - канал 1, время преобразования 3 цикла
Кликните здесь для просмотра всего текста

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#include "stm32f0xx.h"
#include "stm32f0xx_adc.h"
#include "stm32f0xx_dma.h"
#include "stm32f0xx_gpio.h"
#include "stm32f0xx_dac.h"
#include "stm32f0xx_tim.h"
#include "stm32f0xx_rcc.h"
#include "stm32f0xx_misc.h"
#include "stm32f0xx_usart.h"
 
int result;
 
uint16_t readADC1(uint8_t channel)
{
  
  ADC_RegularChannelConfig(ADC1, ADC_Channel_1, ADC_SampleTime_3Cycles);
  
  ADC_StartOfConversion(ADC1);
  
  while(ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC) == RESET);
  
  return ADC_GetConversionValue(ADC1);
}
 
int main(void)
{
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE);
    ADC_DeInit(ADC1);
 
    RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE); 
    GPIO_InitTypeDef porta_setup;                          
    GPIO_StructInit(&porta_setup);
    porta_setup.GPIO_Mode = GPIO_Mode_AN;
    porta_setup.GPIO_Pin = GPIO_Pin_1;
    GPIO_Init(GPIOA, &porta_setup);
 
    ADC_InitTypeDef adc_setup;
    adc_setup.ADC_ContinuousConvMode = DISABLE;
    adc_setup.ADC_Resolution = ADC_Resolution_12b;
    adc_setup.ADC_ScanDirection = ADC_ScanDirection_Upward;
    adc_setup.ADC_ExternalTrigConv = ADC_ExternalTrigConvEdge_None;
    adc_setup.ADC_DataAlign = ADC_DataAlign_Right;
 
    ADC_Init(ADC1, &adc_setup);
    ADC_Cmd(ADC1,ENABLE);
 
 
    GPIO_InitTypeDef port_setup;
    RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC, ENABLE);
    port_setup.GPIO_Mode = GPIO_Mode_OUT;
    port_setup.GPIO_OType = GPIO_OType_PP;
    port_setup.GPIO_PuPd = GPIO_PuPd_DOWN;
    port_setup.GPIO_Pin = GPIO_Pin_All;
    port_setup.GPIO_Speed = GPIO_Speed_2MHz;
    GPIO_Init(GPIOD, &port_setup);
 
    while(1)
    {
        result = readADC1(ADC_Channel_1);
        if(result > 512) // (3,3/4096)*512 = 0,4125V
        {
            GPIO_SetBits(GPIOC,GPIO_Pin_8);
        }
        else
        {
            GPIO_ResetBits(GPIOC,GPIO_Pin_8);
        }
            if(result > 1024) //0,825V
        {
            GPIO_SetBits(GPIOC,GPIO_Pin_9);
        }
        else
        {
            GPIO_ResetBits(GPIOC,GPIO_Pin_9);
        }
        }
}
0
1976 / 1275 / 130
Регистрация: 04.01.2010
Сообщений: 4,607
31.03.2016, 10:48 26
Цитата Сообщение от ValeryS Посмотреть сообщение
Umar Egamberdie, не надо плодить темы, быстрей все равно не ответят
всецело поддерживаю. Umar Egamberdie, последнее китайское предупреждение.

Ловить блох в вашем куске кода, который вы вообще не понимаете наврядли кто-то будет. Научитесь писать на сях, разберитесь, вконец, с компилятором, линкером и сообщениями, которые он выводит и что с этими сообщениями делать (это общий раздел Си) и тогда переходите к ковырянию чужих проектов и SDK. Иначе у вас постоянно будут возникать костыли по не знанию.
0
31.03.2016, 10:48
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.03.2016, 10:48
Помогаю со студенческими работами здесь

ADC->DMA->SDIO (или NAND через FSMC) без остановки в обработчике прерываний DMA на STM32F407VG, реально или нет?
Добрый день. Столкнулся с необходимостью писать большой объём данных АЦП с высокой скоростью....

ADC +DMA
может кому то понадобится буфер приема данных необходимо выравнивать по 32х битному типу

ADC+DMA+TIMER
Эта тема уже подымалась на форме, но все используют стандартную библиотеку, а я пытаюсь это...

STM32F0 ADC+DMA
Есть кто-то кто программировал АЦП с несколькими каналами STM32F0? Я настроил АЦП с DMA что бы...

STM32f413zh DMA ADC
Добрый день. Пробую осилить DMA+ADC на плате Nucleo-stm32f413zh. Проект сгенерирован Cube32MX, ...

ADC + DMA +TIM
Добрый вечер. Есть таймер которым я генерю ШИМ таймер TIM_TimeBaseStructure.TIM_Pressotir = 0;...

stm32f4 + ADC + DMA
Доброго времени суток. Вопрос такой... Сделал АЦП на плате ф4дискавери, и получается что когда...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
26
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru