Чт апр 04, 2013 20:43:41
#include "stm32f10x.h"
void wait(__IO uint32_t nCount)
{
for(; nCount != 0; nCount--);
}
int main(void)
{
/*Инициализация GPIOA.
Вывод PA1 настраивается для работы с выходом TIM2_CH2*/
RCC->APB2ENR |= RCC_APB2ENR_IOPAEN; //Тактирование порта GPIOA
RCC->APB2ENR |= RCC_APB2ENR_AFIOEN;//Тактирование альтернативных функций
/*НАСТРОЙКА ЧАСТОТЫ*/
GPIOA->CRL |= GPIO_CRL_MODE1_0;//1
GPIOA->CRL |= GPIO_CRL_MODE1_1;//1 11: Максимальная скорость порта = 50 MHz
/*НАСТРОЙКА РЕЖИМА РАБОТЫ*/
GPIOA->CRL &= ~GPIO_CRL_CNF1_0;//0
GPIOA->CRL |= GPIO_CRL_CNF1_1;//1 10: Выход Push-Pull в режиме альтернативной функции
/*Инициализация таймера TIM2 Для формирования сигнала ШИМ используется канал 2 (TIM2_CH2)*/
RCC->APB1ENR |= RCC_APB1ENR_TIM2EN;//Тактирование таймера TIM2
TIM2->CR1 |= TIM_CR1_ARPE;//Включен режим предварительной записи регистра автоперезагрузки
TIM2->CCMR1 |= TIM_CCMR1_OC2PE;//Включен режим предварительной загрузки регистра сравнения
TIM2->CCMR1 |= (TIM_CCMR1_OC2M_2 | TIM_CCMR1_OC2M_1);// 110 - PWM mode 1
/*ЧАСТОТА ТАЙМЕРА 24 MHz*/
TIM2->ARR = 6000;//Период выходного сигнала T = 6mS
TIM2->CCR2 =3000;//Длительность импульса. В данном случае Duty cycle = 50%
TIM2->CCER |= TIM_CCER_CC2E;//Выход канала захвата/сравнения включен
TIM2->CR1 |= TIM_CR1_CEN;//Старт счета таймера
wait(74000);
while(1);
{ if ((TIM2->ARR)<=(TIM2->CNT)) { TIM2->CCR2 = 1332;
TIM2->CNT=0;}
wait(74000);
TIM2->ARR = 6000;//Период выходного сигнала T = 6mS
TIM2->CCR2 =3000;//Длительность импульса. В данном случае Duty cycle = 50%
TIM2->CCER |= TIM_CCER_CC2E;//Выход канала захвата/сравнения включен
TIM2->CR1 |= TIM_CR1_CEN;//Старт счета таймера
//TIM2->CCR2 = 1332;
wait(74000);
//TIM2->CCR2 =3000;
wait(74000);
/*
(TIM2->CNT)=(TIM2->CNT)*0;
TIM2->CCR2 = 1992;
wait(74000);
/*
TIM2->CCR2 =2664 ;
wait(74000);
TIM2->CCR2 =3324 ;
wait(74000);
TIM2->CCR2 =4656 ;
wait(74000);
TIM2->CCR2 =3996 ;
wait(74000);
TIM2->CCR2 =5328 ;
wait(74000);
TIM2->CCR2 =5999 ;
wait(74000);
TIM2->CCR2 =0 ;
wait(74000); */
}
}
Чт апр 04, 2013 21:25:19
TIM2->CR1 |= TIM_CR1_CEN;//Старт счета таймера
wait(74000);
while(1); // ????????????????????????
}
Пт апр 05, 2013 09:31:43
Пт апр 05, 2013 09:43:24
Пт апр 05, 2013 15:24:26