Помогите найти ошибку. Хочу менять яркость диода с помощью ШИМ.
Таймер запускается, но диод не горит.
У TMER 3 канал 3 и 4 выходят на порты PB0, PB1?
Раздел: STM32
Таймер запускается, но диод не горит.
У TMER 3 канал 3 и 4 выходят на порты PB0, PB1?
#include "stm32f10x.h"
int i;
int q=1000;
int main()
{
RCC->CR|=RCC_CR_HSEON; // включить генератор HSE.
while (!(RCC->CR & RCC_CR_HSERDY)) {}; // ожидание готовности HSE.
RCC->CFGR &=~RCC_CFGR_SW; // сбросить биты SW0, SW1.
RCC->CFGR |= RCC_CFGR_SW_HSE; // выбрать HSE для тактирования SW0=1.
RCC->APB2ENR |= RCC_APB2ENR_IOPCEN; //ВКЛЮЧЕНИЕ ТАКТИРОВАНИЕ ПОРТА С
RCC->APB2ENR |= RCC_APB2ENR_IOPBEN; //ВКЛЮЧЕНИЕ ТАКТИРОВАНИЕ ПОРТА B
RCC->APB1ENR |= RCC_APB1ENR_TIM3EN; //ВКЛЮЧЕНИЕ ТАКТИРОВАНИЕ ТАЙМЕРА
//НАСТРОЙКА ПОРТОВ
GPIOC->CRH &= ~GPIO_CRH_MODE9;
GPIOC->CRH |= GPIO_CRH_MODE9_1;
GPIOC->CRH &= ~GPIO_CRH_CNF9;
GPIOB->CRL &= ~GPIO_CRL_MODE0;
GPIOB->CRL |= GPIO_CRL_MODE0_1;
// GPIOB->CRL |= GPIO_CRL_CNF1;
GPIOB->CRL &= ~GPIO_CRL_CNF0;
GPIOB->CRL |= GPIO_CRL_CNF0_1;
GPIOB->CRL &= ~GPIO_CRL_MODE1;
GPIOB->CRL |= GPIO_CRL_MODE1_1;
GPIOB->CRL |= GPIO_CRL_CNF1;
// GPIOC->CRL &= ~GPIO_CRL_CNF1;
// GPIOC->CRL |= GPIO_CRL_CNF1_1;
//НАСТРОЙКА ТАЙМЕРА
TIM3->CCER |= (TIM_CCER_CC3E|TIM_CCER_CC4E); //определяем на каких портах будет шим
TIM3->CCMR2 &= ~(TIM_CCMR2_OC3M | TIM_CCMR2_OC4M); //сбрасываем биты в 0
TIM3->CCMR2|=(TIM_CCMR2_OC3M_1 | TIM_CCMR2_OC3M_2 | TIM_CCMR2_OC4M_1 | TIM_CCMR2_OC4M_2); //настраиваем на прямой шим
TIM3->CCR3= q;
TIM3->CCR4= q;
TIM3->CR1 |= TIM_CR1_CEN; //Запускаем таймкр!
//LED
for (;;)
{
GPIOC->BSRR = GPIO_BSRR_BS9;
for (i=0; i<125000; i++);
GPIOC->ODR = 0;
TIM3->CCR3= q+100;
TIM3->CCR4= q+100;
for (i=0; i<125000; i++);
GPIOC->BSRR = GPIO_BSRR_BR9;
}
}
Раздел: STM32