ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Вторник
26 ноября
503741 Топик полностью
KLIM83 (04.04.2014 14:58 - 15:07, просмотров: 148) ответил Codavr на А поподробнее?
Нужно сконфигурировать таймер так, чтобы выходная цепь давала то, что нам нужно. При этом режим работы порта должен быть настроен на работу с соответствующей функцией. Вот кусок исходника, который инициализировал таймер, дабы он пищал динамиком.  RCC->APB1ENR |= RCC_APB1ENR_TIM2EN; TIM2->PSC = 12; // 1 kHz TIM2->ARR = 255; // период ШИМ //TIM2->DIER |= TIM_DIER_UIE; TIM2->CCR2 = 127 ; // длительность TIM2->CCMR1&= ~TIM_CCMR1_CC2S; // capture/compare select - compare TIM2->CCMR1&=~TIM_CCMR1_OC2M_0; // PWM channel2 TIM2->CCMR1|= TIM_CCMR1_OC2M_1; TIM2->CCMR1|= TIM_CCMR1_OC2M_2; TIM2->CCMR1|= TIM_CCMR1_OC2PE; TIM2->CCER |= TIM_CCER_CC2E|TIM_CCER_CC2P; // cc2e - enable, cc2p-polarity TIM2->CR1 |= TIM_CR1_ARPE; //TIM2->CR1 |= TIM_CR1_CEN; Когда настаёт пора пищать, меняем режим порта c GPIO на альтернативную функцию. GPIO_InitTypeDef GPIO_Config; GPIO_Config.GPIO_Pin = GPIO_Pin_1; GPIO_Config.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Config.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_Config); TIM2->CR1 |= TIM_CR1_CEN; Когда надо прекратить пищать, меняем обратно на GPIO и переводим в требуемый логический уровень. TIM2->CR1 &= ~TIM_CR1_CEN; GPIOA->CRL &= ~(GPIO_CRL_MODE1 | GPIO_CRL_CNF1); GPIOA->CRL |= GPIO_CRL_MODE1_0; GPIO_SetBits( GPIOA, GPIO_Pin_1); Сейчас я бы сделал иначе, но на STM уже не работаю, поэтому- как есть.