Перейти к содержанию
    

В 11.02.2024 в 09:15, tonyk_av сказал:

Так и есть. Я один и тот же вопрос от этого ivan dimir вижу на многих сайтах. У него подход к делу такой: прикинуться шлангом, выложить какой-нибудь бред, а потом ждать, пока грамотные челы ему всё разжуют и напишут. При этом он сам даже напрягаться не хочет, чтобы изучить теорию. Поэтому я удивляюсь, что многие до сих пор ведутся и тратят на него своё время.

Я нашёл пример на ютубе.И автор скинул на мою почту.Правда компилятор пишет ошибки.Пока не проверял рабочий он или нет.Правда в режиме ШИМ производится регулировка.У меня один вопрос к вам спецам или профисианалам .Для чего создаются форумы?Цель и задача форума .Мои цели вам известны. Вот человек поделился.Если надо и я поделюсь чем могу.А так как то не по человечески.Ведь информация должна передаваться из руки в руки. Иначе не имеет всё это смысла.Спасибо конечно за внимание.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спойлер
/*
 * 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 был написан и моя задержка.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...