dimir 2 12 февраля Опубликовано 12 февраля · Жалоба В 11.02.2024 в 09:15, tonyk_av сказал: Так и есть. Я один и тот же вопрос от этого ivan dimir вижу на многих сайтах. У него подход к делу такой: прикинуться шлангом, выложить какой-нибудь бред, а потом ждать, пока грамотные челы ему всё разжуют и напишут. При этом он сам даже напрягаться не хочет, чтобы изучить теорию. Поэтому я удивляюсь, что многие до сих пор ведутся и тратят на него своё время. Я нашёл пример на ютубе.И автор скинул на мою почту.Правда компилятор пишет ошибки.Пока не проверял рабочий он или нет.Правда в режиме ШИМ производится регулировка.У меня один вопрос к вам спецам или профисианалам .Для чего создаются форумы?Цель и задача форума .Мои цели вам известны. Вот человек поделился.Если надо и я поделюсь чем могу.А так как то не по человечески.Ведь информация должна передаваться из руки в руки. Иначе не имеет всё это смысла.Спасибо конечно за внимание. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimir 2 12 февраля Опубликовано 12 февраля · Жалоба Спойлер /* * timers.c * * Created on: 22 черв. 2023 р. * Author: Admin */ #include "stm32f103xb.h" #include "stm32f1xx.h" #include "timers.h" extern volatile float TIM_Pulse; extern int i; extern volatile int d ; extern volatile float TIM_Per; // F=72000/47+1= 1500 kHz extern volatile float Zapoln; extern volatile uint16_t PR; void timer1_init(void) { RCC->APB2ENR |= RCC_APB2ENR_TIM1EN; // NVIC_EnableIRQ (TIM2_IRQn); //TIM2->CR1&=~ TIM_CR1_CEN; TIM1->PSC = 2400 - 1; // ����������� �������� ��� ������ ����� 1000 ��� � ������� TIM1->ARR = 100-1; TIM1->RCR = 5 - 1; TIM1->DIER |= TIM_DIER_UIE; TIM1->EGR = TIM_EGR_UG; TIM1->CR1 |= TIM_CR1_CEN; NVIC_EnableIRQ(TIM1_UP_IRQn); } void timer2_init_PWM(void) { //RCC->APB2ENR|=RCC_APB2ENR_IOPAEN; RCC->APB1ENR |= RCC_APB1ENR_TIM2EN; RCC->APB2ENR |= RCC_APB2ENR_AFIOEN; // GPIOA->CRH&=~GPIO_CRH_CNF15_1; // GPIOA->CRH|=GPIO_CRH_CNF15_1; // GPIOA->CRH&=~GPIO_CRH_MODE15; // GPIOA->CRH|=GPIO_CRH_MODE15; // AFIO-> MAPR|=AFIO_MAPR_TIM2_REMAP ; // NVIC_EnableIRQ (TIM2_IRQn); //TIM2->CR1&=~ TIM_CR1_CEN; TIM2->PSC =0; // ����������� �������� ��� ������ ����� 1000 ��� � ������� TIM2->ARR = 1000; // TIM2->DIER |= TIM_DIER_UIE; TIM2->EGR |= TIM_EGR_UG; TIM2->CCMR1 = TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1; // TIM2->CCMR1 = TIM_CCMR1_OC2M_2 | TIM_CCMR1_OC2M_1; // TIM2->CCMR2 = TIM_CCMR2_OC3M_2 | TIM_CCMR2_OC3M_1; // TIM2->CCMR2 = TIM_CCMR2_OC4M_2 | TIM_CCMR2_OC4M_1; TIM2->CCER |= TIM_CCER_CC1E; // TIM2->CCER =TIM_CCER_CC2E; // TIM2->CCER =TIM_CCER_CC3E; // TIM2->CCER =TIM_CCER_CC4E; TIM2->CCER &= ~TIM_CCER_CC1P; TIM2->CR1 &= ~TIM_CR1_DIR; // NVIC_EnableIRQ (TIM2_IRQn); // TIM2->CCR1=0; // TIM2->CCR2=0; // TIM2->CCR3=0; // TIM2->CCR4=0; TIM2->CR1 |= TIM_CR1_CEN; // NVIC_EnableIRQ (TIM2_IRQn); } void timer_2_init(void) { //RCC->APB2ENR|=RCC_APB2ENR_IOPAEN; GPIOA->CRL |= GPIO_CRL_CNF0_1; GPIOA->CRL &= ~GPIO_CRL_CNF0_0; GPIOA->CRL|=GPIO_CRL_MODE0; RCC->APB2ENR |= RCC_APB2ENR_AFIOEN; // AFIO->MAPR &= ~AFIO_MAPR_TIM2_REMAP; RCC->APB1ENR |= RCC_APB1ENR_TIM2EN; // TIM2->PSC =0; // ����������� �������� ��� ������ ����� 1000 ��� � ������� //TIM2->ARR = 200 - 1; //65535 TIM2->PSC =0; TIM2->CCR1=TIM_Pulse; TIM2->ARR =TIM_Per; TIM2->CCMR1&=~TIM_CCMR1_CC1S; //TIM2->CCMR1|=_VAL2FLD(TIM_CCMR1_OC1M,6); TIM2->CCMR1|=TIM_CCMR1_OC1M_2|TIM_CCMR1_OC1M_1; TIM2->CCMR1|=TIM_CCMR1_OC1PE; TIM2->CCER|=TIM_CCER_CC1P; TIM2->CCER|=TIM_CCER_CC1E; //TIM2->EGR |= TIM_EGR_UG; //TIM2->DIER |=TIM_DIER_CC1IE; //TIM2->DIER |= TIM_DIER_UIE; TIM2->CR1 |= TIM_CR1_CEN; //NVIC_EnableIRQ(TIM2_IRQn); //NVIC_GetPriority(TIM2_IRQn,0.0); } void timer3_init(void) { RCC->APB1ENR |= RCC_APB1ENR_TIM3EN; TIM3->PSC = 9; // ����������� �������� ��� ������ ����� 1000 ��� � ������� TIM3->ARR = 7000; TIM3->EGR |= TIM_EGR_UG; TIM3->CR1 |= TIM_CR1_CEN; } void timer3_encoder(void) { /* GPIOA->MODER|=GPIO_MODER_MODER6_1; GPIOA->MODER|=GPIO_MODER_MODER7_1; GPIOA->PUPDR|=GPIO_PUPDR_PUPDR6_0; GPIOA->PUPDR|=GPIO_PUPDR_PUPDR7_0 ; GPIOA->AFR[0]|=_VAL2FLD(GPIO_AFRL_AFSEL6,2); GPIOA->AFR[0]|= _VAL2FLD(GPIO_AFRL_AFSEL7,2); */ GPIOA->CRL &= ~(GPIO_CRL_MODE7 | GPIO_CRL_MODE6); GPIOA->CRL &= ~(GPIO_CRL_CNF7_1 | GPIO_CRL_CNF6_1); GPIOA->CRL |= GPIO_CRL_CNF7_0 | GPIO_CRL_CNF6_0; RCC->APB1ENR |= RCC_APB1ENR_TIM3EN; TIM3->CCMR1 |= TIM_CCMR1_IC1F | TIM_CCMR1_IC2F; TIM3->CCMR1 |= TIM_CCMR1_CC1S_0 | TIM_CCMR1_CC2S_0; TIM3->CCER &= ~(TIM_CCER_CC1P | TIM_CCER_CC2P); TIM3->SMCR |= TIM_SMCR_SMS_1 | TIM_SMCR_SMS_0; TIM3->ARR = 100; TIM3->CR1 |= TIM_CR1_CEN; TIM3->CNT = 0; } void timer4_init(void) { RCC->APB1ENR |= RCC_APB1ENR_TIM4EN; TIM4->PSC = 2500- 1; // ����������� �������� ��� ������ ����� 1000 ��� � ������� TIM4->ARR = 100 - 1; TIM4->EGR |= TIM_EGR_UG; TIM4->DIER |= TIM_DIER_UIE; TIM4->CR1 |= TIM_CR1_CEN; NVIC_EnableIRQ(TIM4_IRQn); } void init_pwm_timer4(void) { //RCC->APB2ENR|=RCC_APB2ENR_IOPBEN ; GPIOB->CRL |= GPIO_CRL_CNF6_1; GPIOB->CRL &= ~GPIO_CRL_CNF6_0; GPIOB->CRL |= GPIO_CRL_MODE6_1; GPIOB->CRL |= GPIO_CRL_MODE6_0; //--��������� ������� ������ ���-����7------// GPIOB->CRL |= GPIO_CRL_CNF7_1; GPIOB->CRL &= ~GPIO_CRL_CNF7_0; GPIOB->CRL |= GPIO_CRL_MODE7_1; GPIOB->CRL |= GPIO_CRL_MODE7_0; GPIOB->CRH |= GPIO_CRH_CNF8_1; GPIOB->CRH &= ~GPIO_CRH_CNF8_0; GPIOB->CRH |= GPIO_CRH_MODE8_1; GPIOB->CRH |= GPIO_CRH_MODE8_0; //--��������� ������� ������ ���-����9------// GPIOB->CRH |= GPIO_CRH_CNF9_1; GPIOB->CRH &= ~GPIO_CRH_CNF9_0; GPIOB->CRH |= GPIO_CRH_MODE9_1; GPIOB->CRH |= GPIO_CRH_MODE9_0; // RCC->APB2ENR|=RCC_APB2ENR_AFIOEN; AFIO->MAPR &= ~AFIO_MAPR_TIM4_REMAP; RCC->APB1ENR |= RCC_APB1ENR_TIM4EN; TIM4->PSC = 0; TIM4->ARR = 4095; //TIM4->CCMR1&=~TIM_CCMR1_CC1S;//��������� ������ 1 �� �����. TIM4->CCMR1 &= ~TIM_CCMR1_CC2S; //��������� ������ 2 �� �����. TIM4->CCMR2 &= ~TIM_CCMR2_CC3S; TIM4->CCMR2 &= ~TIM_CCMR2_CC4S; //TIM4->CR1&=~TIM_CR1_DIR; TIM4->CCMR1 |= TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1; //|TIM_CCMR1_OC1M_0;//;// TIM4->CCMR1 |= TIM_CCMR1_OC2M_2 | TIM_CCMR1_OC2M_1; //|TIM_CCMR1_OC2M_0;// TIM4->CCMR2 |= TIM_CCMR2_OC3M_2 | TIM_CCMR2_OC3M_1; //|TIM_CCMR1_OC2M_0;// TIM4->CCMR2 |= TIM_CCMR2_OC4M_2 | TIM_CCMR2_OC4M_1; TIM4->CCMR1 |= TIM_CCMR1_OC1PE; TIM4->CCMR1 |= TIM_CCMR1_OC2PE; TIM4->CCMR2 |= TIM_CCMR2_OC3PE; TIM4->CCMR2 |= TIM_CCMR2_OC4PE; TIM4->CCER |= TIM_CCER_CC1E; TIM4->CCER |= TIM_CCER_CC2E; TIM4->CCER |= TIM_CCER_CC3E; TIM4->CCER |= TIM_CCER_CC4E; // TIM4->CCER &=~TIM_CCER_CC1P; TIM4->CCER &= ~TIM_CCER_CC2P; TIM4->CCER &= ~TIM_CCER_CC3P; TIM4->CCER &= ~TIM_CCER_CC4P; // TIM4->CR1|=TIM_CR1_ARPE; //TIM4->EGR|= TIM_EGR_UG; // TIM4->CCR1=30000; TIM4->CR1 |= TIM_CR1_CEN; } Спойлер /* * main.c * * Created on: 20 ���. 2020 �. * Author: Ivan */ #include "main.h" #define RT #define SYSCLOCK 72000000U //#define TIM_Pulse TIM2->CCR1 volatile unsigned int adc_data1 = 0; volatile unsigned int adc_data2 = 0; volatile unsigned int pauza = 0; volatile uint16_t PR; __IO uint32_t SysTick_CNT = 0; //int bufer=TIM4->CCR1*16; volatile float TIM_Pulse =50; int i; int d = 10; volatile float TIM_Per = 100; // F=72000/47+1= 1500 kHz volatile float Zapoln; struct { volatile unsigned int menu_lcd; volatile unsigned int menu_btn; volatile unsigned int a; volatile uint16_t PR; char buf1[50]; char buf2[50]; volatile unsigned char flag0; volatile unsigned int pauza_2; volatile unsigned int pauza_4; } danie, *Danie; struct { volatile unsigned int pauza1; } timer, *Timer; void pauzat(int T) //���� ����� �����(���������) ��� �������� �������� � ���������� #include "paua.h"����� ������ � �������� ����� pauza()� ������ ����� ���������� T { int i = 0; //�������� ��������������� i char t = 0; // �������� ������������ ���������� t ������� ����� ��������������� for (i = 0; i < T; t++) //���������� � ����� { if (t == 255) i = i + 1; // ������� ������ ����� ����� ����������� i ������������ ��������� TCCR2 ������������ 0.1.2 ������ ��� ��������� ������� ������ ������� } } void TIM1_UP_IRQHandler(void) { TIM1->SR &= ~ TIM_SR_UIF; //PR++; //TIM2->PSC =PR-1; //IWDG->KR = 0xAAAA; /* pauza++; if(pauza==50) { GPIOC->ODR|=GPIO_ODR_ODR13 ; } if(pauza==100) { GPIOC->ODR&=~GPIO_ODR_ODR13 ; pauza=0; } */ } void TIM2_IRQHandler(void) { /* if(TIM2->SR & TIM_SR_UIF) { TIM2->SR &= ~ TIM_SR_UIF; pauza++; if (pauza ==40) { GPIOC->BSRR |= GPIO_BSRR_BS13; GPIOA->BSRR |= GPIO_BSRR_BS0; //GPIOA->ODR |= GPIO_ODR_ODR1; } if (pauza == 80) { GPIOC->BSRR |= GPIO_BSRR_BR13; //GPIOA->ODR &= ~GPIO_ODR_ODR1; GPIOA->BSRR |= GPIO_BSRR_BR0; pauza = 0; } } */ if (TIM2->SR & TIM_SR_CC1IF) { TIM2->SR|=TIM_SR_CC1OF; } } void TIM4_IRQHandler(void) { if (TIM4->SR & TIM_SR_UIF) { TIM4->SR &= ~ TIM_SR_UIF; pauza++; if (pauza ==40) { PR++; GPIOC->BSRR |= GPIO_BSRR_BS13; // GPIOC->ODR |= GPIO_ODR_ODR13; } if (pauza == 80) { //PR=1000; GPIOC->BSRR |= GPIO_BSRR_BR13; //GPIOC->ODR &= ~GPIO_ODR_ODR13; pauza = 0; } /* pauza++; if(pauza>20) { GPIOA->BSRR|=GPIO_BSRR_BS5; } if(pauza>40) { GPIOA->BSRR|=GPIO_BSRR_BR5; pauza=0; } */ } } void delay(__IO uint32_t tck) { while (tck) { tck--; } } void delay_ms(uint32_t ms) { MODIFY_REG(SysTick->VAL, SysTick_VAL_CURRENT_Msk, SYSCLOCK / 1000 - 1); SysTick_CNT = ms; while (SysTick_CNT) { } } void NMI_Handler(void) { if ((RCC->CIR & RCC_CIR_CSSF) != 0) // HSE fail { RCC->CIR |= RCC_CIR_CSSC; // Clear CSSF flag } } void SysTick_Handler(void) { if (SysTick_CNT > 0) SysTick_CNT--; } void init_systimer(void) { MODIFY_REG(SysTick->LOAD, SysTick_LOAD_RELOAD_Msk, SYSCLOCK / 1000 - 1); CLEAR_BIT(SysTick->VAL, SysTick_VAL_CURRENT_Msk); SET_BIT(SysTick->CTRL, SysTick_CTRL_CLKSOURCE_Msk | SysTick_CTRL_ENABLE_Msk | SysTick_CTRL_TICKINT_Msk); } void RCC_init(void) { FLASH->ACR |= FLASH_ACR_PRFTBE; FLASH->ACR |= FLASH_ACR_LATENCY_2; RCC->CR |= RCC_CR_HSEON; while (!(RCC->CR & RCC_CR_HSERDY)) { } RCC->CR |= RCC_CR_CSSON; RCC->CFGR |= RCC_CFGR_PLLMULL9; RCC->CFGR |= RCC_CFGR_HPRE_DIV1; //_VAL2FLD(RCC_CFGR_HPRE,1); RCC->CFGR |= RCC_CFGR_PPRE1_DIV2; //_VAL2FLD(RCC_CFGR_PPRE1,2); RCC->CFGR |= RCC_CFGR_PPRE2_DIV1; //_VAL2FLD(RCC_CFGR_PPRE2,1); RCC->CFGR |= RCC_CFGR_ADCPRE_DIV6; RCC->CFGR |= RCC_CFGR_PLLSRC; RCC->CFGR |= RCC_CFGR_PLLXTPRE_HSE; RCC->CR |= RCC_CR_PLLON; while (!(RCC->CR & RCC_CR_PLLRDY)) { } RCC->CFGR |= RCC_CFGR_SW_PLL; while ((RCC->CFGR & RCC_CFGR_SWS) != RCC_CFGR_SWS_PLL) { } } void RCC_DeInit(void) { SET_BIT(RCC->CR, RCC_CR_HSION); while (READ_BIT(RCC->CR, RCC_CR_HSIRDY == RESET)) { } MODIFY_REG(RCC->CR, RCC_CR_HSITRIM, 0x80U); CLEAR_REG(RCC->CFGR); while (READ_BIT(RCC->CFGR, RCC_CFGR_SWS) != RESET) { } CLEAR_BIT(RCC->CR, RCC_CR_PLLON); while (READ_BIT(RCC->CR, RCC_CR_PLLRDY) != RESET) { } CLEAR_BIT(RCC->CR, RCC_CR_HSEON | RCC_CR_CSSON); while (READ_BIT(RCC->CR, RCC_CR_HSERDY) != RESET) { } CLEAR_BIT(RCC->CR, RCC_CR_HSEBYP); //Reset all CSR flags SET_BIT(RCC->CSR, RCC_CSR_RMVF); } void SetSysClockTo72(void) { SET_BIT(RCC->CR, RCC_CR_HSEON); while (READ_BIT(RCC->CR, RCC_CR_HSERDY == RESET)) { } //Enable the Prefetch Buffer CLEAR_BIT(FLASH->ACR, FLASH_ACR_PRFTBE); SET_BIT(FLASH->ACR, FLASH_ACR_PRFTBE); MODIFY_REG(FLASH->ACR, FLASH_ACR_LATENCY, FLASH_ACR_LATENCY_2); MODIFY_REG(RCC->CFGR, RCC_CFGR_HPRE, RCC_CFGR_HPRE_DIV1); MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, RCC_CFGR_PPRE2_DIV1); MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_CFGR_PPRE1_DIV2); MODIFY_REG(RCC->CFGR, RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMULL, RCC_CFGR_PLLSRC | RCC_CFGR_PLLMULL9); SET_BIT(RCC->CR, RCC_CR_PLLON); while (READ_BIT(RCC->CR, RCC_CR_PLLRDY) != (RCC_CR_PLLRDY)) { } MODIFY_REG(RCC->CFGR, RCC_CFGR_SW, RCC_CFGR_SW_PLL); while (READ_BIT(RCC->CFGR, RCC_CFGR_SWS) != RCC_CFGR_SWS_PLL) { } } void adc1_init(void) { // RCC->CFGR &=~ RCC_CFGR_ADCPRE; // RCC->APB2ENR|=RCC_APB2ENR_IOPAEN; GPIOA->CRL&=~GPIO_CRL_CNF1; GPIOA->CRL&=~ GPIO_CRL_MODE1; GPIOA->CRL&=~GPIO_CRL_CNF2; GPIOA->CRL&=~ GPIO_CRL_MODE2; RCC->APB2ENR |= RCC_APB2ENR_ADC1EN; // RCC->APB2ENR |= RCC_APB2ENR_ADC2EN; //RCC->CFGR |= RCC_CFGR_ADCPRE_DIV2; //������ ������������ ��� ADC1->CR2 |= ADC_CR2_RSTCAL; while (!(ADC1->CR2 & ADC_CR2_RSTCAL)) { } ADC1->CR2 |= ADC_CR2_CAL; // while (!(ADC1->CR2 & ADC_CR2_CAL)); // { // } ADC1->CR2 |=ADC_CR2_CONT;//�������� ��� ADC1->CR2 |= ADC_CR2_EXTSEL; // ADC1->CR1|=ADC_CR1_SCAN ; ADC1->CR2 |= ADC_CR2_EXTTRIG; // ADC1->CR1&=~ADC_CR1_DUALMOD; ADC1->SMPR2&=~ ADC_SMPR2_SMP1_0; //1 ADC1->SMPR2&=~ADC_SMPR2_SMP1_1; //1 ADC1->SMPR2 &=~ ADC_SMPR2_SMP1_2; //1 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; ADC1->CR2 |= ADC_CR2_ADON; ADC1->CR2 |= ADC_CR2_SWSTART; //} //void adc2_init(void) //{ //RCC->CFGR &=~ RCC_CFGR_ADCPRE; //RCC->APB2ENR|=RCC_APB2ENR_IOPAEN; // GPIOA->CRL&=~GPIO_CRL_CNF2; // GPIOA->CRL&=~ GPIO_CRL_MODE2; // RCC->APB2ENR |= RCC_APB2ENR_ADC2EN; // RCC->CFGR |= RCC_CFGR_ADCPRE_DIV2; // ADC2->CR2 |= ADC_CR2_RSTCAL; // while (!(ADC2->CR2 & ADC_CR2_RSTCAL)) // { // } // ADC2->CR2 |= ADC_CR2_CAL; //ADC2->CR2 |=ADC_CR2_CONT;//�������� ��� //ADC2->CR2 |= ADC_CR2_EXTSEL; // ADC2->CR2 |= ADC_CR2_EXTTRIG; //ADC2->SMPR2&=~ ADC_SMPR2_SMP2_0; //1 // ADC2->SMPR2&=~ADC_SMPR2_SMP2_1; //1 // ADC2->SMPR2 &=~ ADC_SMPR2_SMP2_2; //1 // ADC2->SQR3 &=~ ADC_SQR3_SQ1_0; //1 IN1 // ADC2->SQR3 |= ADC_SQR3_SQ1_1; //0 // ADC2->SQR3 &= ~ADC_SQR3_SQ1_2; //0 // ADC2->SQR3 &=~ ADC_SQR3_SQ1_3; //0 // ADC2->SQR3 &= ~ADC_SQR3_SQ1_4; // ADC2->CR2 |= ADC_CR2_ADON; } void DMA_init(void) { RCC->AHBENR|=RCC_AHBENR_DMA1EN; DMA1_Channel1->CPAR=(uint32_t)&ADC1->DR; DMA1_Channel1->CMAR=(uint32_t)&TIM4->CCR1; DMA1_Channel1->CNDTR=1; DMA1_Channel1->CCR|=DMA_CCR_CIRC; DMA1_Channel1->CCR&=~DMA_CCR_PINC ; DMA1_Channel1->CCR&=~DMA_CCR_MINC; DMA1_Channel1->CCR|=DMA_CCR_PSIZE_0 ; DMA1_Channel1->CCR|=DMA_CCR_MSIZE_0; DMA1_Channel1->CCR&=~DMA_CCR_DIR ; DMA1_Channel1->CCR|=DMA_CCR_EN ; ADC1->CR2|=ADC_CR2_DMA; } void IWDT_init(void) { RCC->CSR |= RCC_CSR_LSION; IWDG->KR = 0x5555; // Access to registers IWDG->PR &= ~(IWDG_PR_PR_0 | IWDG_PR_PR_1 | IWDG_PR_PR_2); // 4096 IWDG->RLR = 3000; //0x7FF; while (!((IWDG->SR & IWDG_SR_PVU) && (IWDG->SR & IWDG_SR_RVU))) { } // wait while bist of PVU and RVU will be set. IWDG->KR = 0xCCCC; // Start count down; } int main(void) { //Danie = &danie; //IWDT_init(); RCC_init(); init_systimer(); APB_init(); GPIO_init(); //IWDT_init(); //timer1_init(); timer_2_init(); //timer3_encoder(); timer4_init(); I2C1_Init(); LCD_ini(); LCD_Clear(); while (1) { //timer_2_init(); Zapoln = TIM_Per/TIM_Pulse; if((GPIOB->IDR&GPIO_IDR_IDR5)==0) { if (TIM_Per < 65535) TIM_Per = TIM_Per+d; TIM2->ARR = TIM_Per; TIM_Pulse = TIM_Per/Zapoln; TIM2->CCR1 = TIM_Pulse; // menyaem pwm vmeste s F //for(i=0;i<0x300000;i++); } pauzat(100); //for(i=0;i<0x300000;i++); /* switch(Danie->menu_btn) { case 0: IWDG->KR= 0xAAAA; TIM3->CNT=Danie->a; if(Danie->a>=100) { Danie->a=0; } Danie->a++; if(Danie->a<=0) { Danie->a=100; } Danie->a--; Danie->a=TIM3->CNT; break; case 1: IWDG->KR= 0xAAAA; TIM3->CNT=Danie->b; if(Danie->b>=100) { Danie->b=0; } Danie->b++; if(Danie->b<=0) { Danie->b=100; } Danie->b--; Danie->b=TIM3->CNT; break; case 2: Danie->menu_btn=0; break; } switch (Danie->menu_lcd) { case 0: IWDG->KR = 0xAAAA; // sprintf(Danie->buf0,"a=%2d ",Danie->a); LCD_SetPos(0, 0); LCD_String("Mama"); LCD_SendChar('M'); LCD_SendChar('a'); LCD_SendChar(0xBC); LCD_SendChar('a'); LCD_SendChar(' '); break; case 1: IWDG->KR = 0xAAAA; // sprintf(Danie->buf1,"b=%2d ",Danie->b); LCD_SetPos(0, 0); LCD_SendChar(0xA8); LCD_SendChar('a'); LCD_SendChar(0xBE); LCD_SendChar('a'); LCD_SendChar(' '); LCD_String("Papa"); break; case 2: Danie->menu_lcd = 0; break; } */ // LCD_SetPos(0,1); // LCD_String("Mama"); } } Вот он код только немного видоизменённый.Так как на SPL был написан и моя задержка. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться