Jump to content

Ivan Rusev

Members
  • Content Count

    38
  • Joined

  • Last visited

Community Reputation

0 Обычный

About Ivan Rusev

  • Rank
    Новенький
  • Birthday 04/25/1974

Информация

  • Пол
    Мужчина
  • Город
    Belgorod-Dnestrovskiy

Электроника

  • Стаж в электронике
    Не связан с электроникой
  • Сфера радиоэлектроники
    программист любитель
  • Оборудование
    AVR STM32

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Ребята я понял как он работает .Спасибо вам учителя.
  2. AVR прошёл atmel studio7
  3. Вас я понял.Это камень в мой огород.Но у меня камень не такой быстрый как у стм
  4. Это референс мануал а пример? cmsis?
  5. Как настроить таймер вач дог?.В AVR всё понятно и куча примеров в stm32 какие то ключи ?
  6. Я имею ввиду что такое стрим? канал я знаю
  7. У меня вопрос что такое DMA и FIFO второе если можно поподробнее прошу проконсультировать.Заранее говорю спасибо.
  8. Тактирование я не настраивал только прописываю в Atolic Truestudio.Инверсия есть только после нажатия RESET.B Halтоже самое.
  9. не плате стоит 8 но у меня нет настройки тактирования. я пишу в опциях parths and symbol HSE_VALUE 25000000U.И у меня файле system c отключается внешнее тактирование. хотя в хале там всё автоматом но прерывания по инжектируемого ацп оно также работает не так.
  10. У меня мастера паяльника возникла проблема есть прерывание по ацп инжектированных каналов я или неправильно делаю что в хале что в ручную прерывание работает после нажатия reset как в одну так и в другу сторону.Диод загорается как в одну так и в другу гаснет после ресета. /* * main.c * * Created on: 8 лист. 2019 р. * Author: Ivan */ #include"main.h" #include "stm32f4xx.h" #include "stm32f407xx.h" volatile unsigned int pauza=0; volatile unsigned char flag=0; volatile unsigned char n=0; volatile unsigned int adc_data=0; void EXTI1_IRQHandler(void) { EXTI->PR |=EXTI_PR_PR1; n++; } void ADC_IRQHandler(void) { if(ADC1->SR & ADC_SR_JEOC) //ждем пока первое преобразование завершится { ADC1->SR &=~ ADC_SR_JEOC; adc_data = ADC1->JDR1; if(adc_data > 2024) { GPIOC->BSRR |= GPIO_BSRR_BS13; } else { GPIOC->BSRR |= GPIO_BSRR_BR13; } } } void TIM3_IRQHandler (void) { if(TIM3->SR & TIM_SR_UIF) { TIM3->SR &= ~ TIM_SR_UIF; pauza++; if(pauza>20) { GPIOC-> BSRR |=GPIO_BSRR_BS0; } if(pauza>40) { GPIOC-> BSRR |=GPIO_BSRR_BR0; pauza=0; } } //TIM2->SR &= ~ TIM_SR_UIF; } void EXTI_Init(void) { // RCC->AHB1ENR|=RCC_AHB1ENR_GPIOAEN; GPIOA->MODER &=~ GPIO_MODER_MODER1_1; GPIOA->MODER &=~ GPIO_MODER_MODER1_0; GPIOA->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR1_1; //бит1 GPIOA->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR1_0; GPIOA->PUPDR &=~GPIO_PUPDR_PUPDR1_1; GPIOA->PUPDR |= GPIO_PUPDR_PUPDR1_0; RCC->APB2ENR |=RCC_APB2ENR_SYSCFGEN ; SYSCFG->EXTICR[1] |= SYSCFG_EXTICR1_EXTI1_PA; EXTI->IMR|=EXTI_IMR_MR1; EXTI->RTSR|=EXTI_RTSR_TR1; EXTI->FTSR&=~EXTI_FTSR_TR1 ; NVIC_EnableIRQ (EXTI1_IRQn); // SYSCFG->EXTICR[3] |= SYSCFG_EXTICR1_EXTI1_PB; //RCC->AHB1ENR |= } void adc_init(void) { //RCC->AHB1ENR|= // RCC->AHB1ENR|=RCC_AHB1ENR_GPIOAEN; // GPIOA->MODER |= GPIO_MODER_MODER0; RCC->APB2ENR|=RCC_APB2ENR_ADC1EN; ADC1->CR2 |=ADC_CR2_CONT;//включить АЦП ADC1->CR2|=ADC_CR2_JEXTSEL; ADC1->CR2 |=ADC_CR2_JEXTEN; ADC1->SMPR2 &=~ ADC_SMPR2_SMP1_0; //1 ADC1->SMPR2&=~ADC_SMPR2_SMP1_1; //1 ADC1->SMPR2 &=~ ADC_SMPR2_SMP1_2; //1 ADC1->JSQR &=~ADC_JSQR_JSQ1; // ADC1->SQR3 &=~ADC_SQR3_SQ1_0; //1 IN1 // ADC1->SQR3 &= ~ ADC_SQR3_SQ1_1; //0 // ADC1->SQR3 &= ~ADC_SQR3_SQ1_2; //0 // ADC1->SQR3 &=~ ADC_SQR3_SQ1_3; //0 // ADC1->SQR3 &= ~ADC_SQR3_SQ1_4; } void GPIO_init(void) { RCC->AHB1ENR|=RCC_AHB1ENR_GPIOAEN; GPIOA->MODER |= GPIO_MODER_MODER0; GPIOA->MODER |= GPIO_MODER_MODER1; RCC->AHB1ENR|=RCC_AHB1ENR_GPIOCEN; // GPIOC->MODER &=~ GPIO_MODER_MODER13; GPIOC->MODER &=~ GPIO_MODER_MODER13_1; GPIOC->MODER |= GPIO_MODER_MODER13_0; GPIOC ->OTYPER &=~GPIO_OTYPER_OT13; //бит0 определяет скорость работы GPIO GPIOC->OSPEEDR &=~ GPIO_OSPEEDER_OSPEEDR13_1; //бит1 GPIOC->OSPEEDR &=~ GPIO_OSPEEDER_OSPEEDR13_0; GPIOC->PUPDR |=GPIO_PUPDR_PUPDR13_1; GPIOC->PUPDR &=~ GPIO_PUPDR_PUPDR13_0; GPIOC->MODER &=~ GPIO_MODER_MODER0_1; GPIOC->MODER |= GPIO_MODER_MODER0_0; GPIOC ->OTYPER &=~GPIO_OTYPER_OT0; //бит0 определяет скорость работы GPIO GPIOC->OSPEEDR &=~ GPIO_OSPEEDER_OSPEEDR0_1; //бит1 GPIOC->OSPEEDR &=~ GPIO_OSPEEDER_OSPEEDR0_0; GPIOC->PUPDR |= GPIO_PUPDR_PUPDR0_1; GPIOC->PUPDR &=~ GPIO_PUPDR_PUPDR0_0; GPIOC->MODER &=~ GPIO_MODER_MODER0_1; GPIOC->MODER &=~ GPIO_MODER_MODER0_1; GPIOC->MODER |= GPIO_MODER_MODER2_0; GPIOC ->OTYPER &=~GPIO_OTYPER_OT2; //бит0 определяет скорость работы GPIO GPIOC->OSPEEDR &=~ GPIO_OSPEEDER_OSPEEDR2_1; //бит1 GPIOC->OSPEEDR &=~ GPIO_OSPEEDER_OSPEEDR2_0; GPIOC->PUPDR |= GPIO_PUPDR_PUPDR2_1; GPIOC->PUPDR &=~ GPIO_PUPDR_PUPDR2_0; GPIOC->MODER &=~ GPIO_MODER_MODER2_1; } void init_systimer(void) { SysTick->LOAD|=1000 - 1; SysTick->VAL=0; //SysTick->CTRL|=CLKSOURCE; } void timer_3_init(void) { RCC->APB1ENR |=RCC_APB1ENR_TIM3EN; //NVIC_SetPriority(TIM3_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(),0, 0)); // TIM3->CNT=0; // TIM3->CR1=0; //TIM3->CR1&=~ TIM_CR1_CEN; TIM3->PSC=3500 - 1; // Настраиваем делитель что таймер тикал 1000 раз в секунду TIM3->ARR = 100; TIM3->DIER = TIM_DIER_UIE; TIM3->EGR = TIM_EGR_UG ; TIM3->CR1|= TIM_CR1_CEN; NVIC_EnableIRQ(TIM3_IRQn); } int main(void) { GPIO_init(); // EXTI_Init(); timer_3_init(); adc_init(); ADC1->CR1|= ADC_CR1_JEOCIE; ADC1->CR2 |= ADC_CR2_ADON; NVIC_EnableIRQ ( ADC_IRQn); ADC1->CR2 |= ADC_CR2_JSWSTART; while(1) { //if(n==1) // { // GPIOC-> BSRR |=GPIO_BSRR_BS13; //} //if(n==2) //{ // GPIOC-> BSRR |=GPIO_BSRR_BR13; // n=0; //} // if(adc_data > 2024) // { // GPIOC->BSRR |= GPIO_BSRR_BS13; // } // else // { // GPIOC->BSRR |= GPIO_BSRR_BR13; // } } } извените за назойливость.
  11. Программирование контроллеров-женщина
  12. Я учился в ftmel Studio avr. Там меньше но тоже есть.А СТМ тут полный атас.
  13. void adc_IRQhanler(void) в этом вся причина спасибо я потерял бдительность .С НОВЫМ ГОДОМ! ПРЕРЫВАНИЕ ЗАРАБОТАЛО.Я ВАМ БЛАГОДАРЕН,УКРАИНА ВСЕГДА БУДЕТ С РОССИЕЙ ВМЕСТЕ,БОЛЬШОЕ ВАМ СПАСИБО. void ADC_IRQHandler(void) Вот так правильно. Извините я ученик.
  14. Нет тут другое .Ацп работает в основном цикле.А в прерывании в майне прописываю ADC1->CR2|= ADC_CR2_SWSTART; и все прерывания перестают работать .Почему? Значить я что то не то делаю. Может проблема с тактированием.А может не всё я прописал.Вообще С Новым 2020 годом!
  15. я думаю учителя скорее всего в коде или в компиляторе.У меня таких две платы от разных производителей.А если в камне.То какой контроллер тогда вы мне посоветуете? если cortexm3 он у меня есть там всё как часы. Есть проект можете посмотреть.
×
×
  • Create New...