stm32f103c8t6
Поставил цель запустить преобразование ацп1 от сравнения 1 канала 1 таймера и потом передавать через DMA. Есть опыт запуска от 3 таймера по TIM3_TRGO на SPL.
Думаю заодно будут исходник для начинающих
Пока хочу запустить без DMA. Поделился исходником NewWriter,но возник вопрос не будет ли управление выводом PA8 от сравнения 1 канала 1 таймера ? Мне просто нужен запуск от таймера ацп,а вывод оставлю свободным.
#include "adc.h"
void adc_init(void)
{
// АЦП у нас 1 канал,он на PA0 , запуск от внешнего тригера TRM1 1 канала
RCC->AHBENR|=RCC_AHBENR_DMA1EN;
RCC->APB2ENR|=RCC_APB2ENR_AFIOEN|RCC_APB2ENR_IOPAEN|RCC_APB2ENR_ADC1EN|RCC_APB2ENR_TIM1EN;
// тактирование ацп
RCC->CFGR&=~(RCC_CFGR_ADCPRE);
RCC->CFGR|=RCC_CFGR_ADCPRE_1;
// аналоговый вход
GPIOA->CRL&= ~(GPIO_CRL_MODE0);
GPIOA->CRL&= ~(GPIO_CRL_CNF0);
// настройка ацп:
ADC1->SMPR2 |= ADC_SMPR2_SMP0_2 ; // AN0: 41.5 мкс
ADC1->CR2 |= ADC_CR2_ADON; // включаем
/* регулярная группа */
ADC1->SQR3 = 1; // 1 канал в первую группу
// Калибровка ацп
ADC1->CR2 |= ADC_CR2_CAL; // запуск калибровки
while (ADC1->CR2 & ADC_CR2_CAL); // ожидаем конца калибровки
ADC1->CR2 |=ADC_CR2_EXTTRIG; // запуск от сравнения по TIM1_CC1
ADC1->CR2 &=~(ADC_CR2_EXTSEL); // 000 это по TIM1_CC1
// дма передача
//ADC1->CR2 |=ADC_CR2_DMA;
// прерывание от ацп1
ADC1->SR&=~ADC_SR_EOC; // очищаем флаг преобразования
ADC1->CR1|=ADC_CR1_EOCIE; // включаем прерывание
NVIC_SetPriority(ADC1_2_IRQn,0);
NVIC_EnableIRQ(ADC1_2_IRQn);
////////////////////////////////////////////////////////////////
// Настраиваем таймер 1 для ацп1
///////////////////////////////////////////////////////////////
TIM1->PSC = (SystemCoreClock/1000)-1; // 1 ms
TIM1->ARR = 2000; // 2 секунды период
TIM1->CCR1 = 700; // через 0.7 начать преобразование
TIM1->CCMR1 |= TIM_CCMR1_OC1M; // Ch1: PWM mode2
TIM1->CCER |= TIM_CCER_CC1E; //<! Ch1 out enable
TIM1->BDTR |= TIM_BDTR_MOE; //<! main out enable (!!!)
TIM1->CR1 |= TIM_CR1_CEN; // TIM1 enable
/* ---- АЦП запущен, с AN1 измеряется ---- */
}
ацп работает от таймера. А вот почему на выходе PA8 нет,может порт не настроен,буду смотреть дальше.
Отредактировано CERGEI (2017-04-08 04:35:46)



все нах в помойку и пишем по новой. шучу - беру старое, запускаю - довожу, переделываю.