Срисовал код инита, пытаюсь подать на выход PC6,PC7 импульсы, но что-то наверное не так или недоделано.
CODE
void pwm_init(void)
{
RCC->APB2ENR |= RCC_APB2ENR_IOPCEN; // Enable GPIOC clocking
RCC->APB1ENR |= RCC_APB1ENR_TIM3EN; // Enable TIM3 clocking
RCC->APB2ENR |= RCC_APB2ENR_AFIOEN; // Enable AFIO clocking
////////////////////////// GPIO
GPIOC->CRL = (GPIO_CRL_MODE7 |
GPIO_CRL_CNF7_1); // PC7 - Output mode 50 MHz
GPIOC->CRL &= (~GPIO_CRL_CNF7_0); // and alternate push-pull
//----------------------------------------
GPIOC->CRL |= (GPIO_CRL_MODE6 |
GPIO_CRL_CNF6_1); // PC6 - Output mode 50 MHz
GPIOC->CRL &= (~GPIO_CRL_CNF6_0); // and alternate push-pull
//----------------------------------------
GPIOC->CRL |= (GPIO_CRL_MODE6 |
GPIO_CRL_MODE7 |
GPIO_CRL_CNF6_1 |
GPIO_CRL_CNF7_1); // PC6, PC7 - Output mode 50 MHz
GPIOC->CRL &= (~(GPIO_CRL_CNF6_0 |
GPIO_CRL_CNF7_0)); // and alternate push-pull
GPIOC->ODR = 0x0000;
//---------------------------------------
AFIO->MAPR |= AFIO_MAPR_TIM3_REMAP_0;
AFIO->MAPR &= (~AFIO_MAPR_TIM3_REMAP_1);
//////////////////////////////// PWM Timer 3
TIM3->CR1 = TIM_CR1_ARPE;
TIM3->PSC = 8;
TIM3->ARR = 0x00FF;
TIM3->CCR1 = 100;
TIM3->CCR2 = 0xFF;
TIM3->CCR3 = 0x00;
TIM3->CCR4 = 0x00;
TIM3->CCMR1 = (TIM_CCMR1_OC1PE | TIM_CCMR1_OC1M |
TIM_CCMR1_OC2PE | TIM_CCMR1_OC2M);
TIM3->CCER = (TIM_CCER_CC1E | /*TIM_CCER_CC1P |*/
TIM_CCER_CC1NE | /*TIM_CCER_CC1NP |*/
TIM_CCER_CC2E | /*TIM_CCER_CC2P |*/
TIM_CCER_CC2NE /*| TIM_CCER_CC2NP*/);
TIM3->BDTR = (TIM_BDTR_MOE | ((4<<5) | 10));
TIM3->CR1 |= TIM_CR1_CEN;
}
// Задать скважность (0-0xFFFF)
void pwm_Set(uint16_t wert)
{
TIM3->CCR1 = wert;
}
{
RCC->APB2ENR |= RCC_APB2ENR_IOPCEN; // Enable GPIOC clocking
RCC->APB1ENR |= RCC_APB1ENR_TIM3EN; // Enable TIM3 clocking
RCC->APB2ENR |= RCC_APB2ENR_AFIOEN; // Enable AFIO clocking
////////////////////////// GPIO
GPIOC->CRL = (GPIO_CRL_MODE7 |
GPIO_CRL_CNF7_1); // PC7 - Output mode 50 MHz
GPIOC->CRL &= (~GPIO_CRL_CNF7_0); // and alternate push-pull
//----------------------------------------
GPIOC->CRL |= (GPIO_CRL_MODE6 |
GPIO_CRL_CNF6_1); // PC6 - Output mode 50 MHz
GPIOC->CRL &= (~GPIO_CRL_CNF6_0); // and alternate push-pull
//----------------------------------------
GPIOC->CRL |= (GPIO_CRL_MODE6 |
GPIO_CRL_MODE7 |
GPIO_CRL_CNF6_1 |
GPIO_CRL_CNF7_1); // PC6, PC7 - Output mode 50 MHz
GPIOC->CRL &= (~(GPIO_CRL_CNF6_0 |
GPIO_CRL_CNF7_0)); // and alternate push-pull
GPIOC->ODR = 0x0000;
//---------------------------------------
AFIO->MAPR |= AFIO_MAPR_TIM3_REMAP_0;
AFIO->MAPR &= (~AFIO_MAPR_TIM3_REMAP_1);
//////////////////////////////// PWM Timer 3
TIM3->CR1 = TIM_CR1_ARPE;
TIM3->PSC = 8;
TIM3->ARR = 0x00FF;
TIM3->CCR1 = 100;
TIM3->CCR2 = 0xFF;
TIM3->CCR3 = 0x00;
TIM3->CCR4 = 0x00;
TIM3->CCMR1 = (TIM_CCMR1_OC1PE | TIM_CCMR1_OC1M |
TIM_CCMR1_OC2PE | TIM_CCMR1_OC2M);
TIM3->CCER = (TIM_CCER_CC1E | /*TIM_CCER_CC1P |*/
TIM_CCER_CC1NE | /*TIM_CCER_CC1NP |*/
TIM_CCER_CC2E | /*TIM_CCER_CC2P |*/
TIM_CCER_CC2NE /*| TIM_CCER_CC2NP*/);
TIM3->BDTR = (TIM_BDTR_MOE | ((4<<5) | 10));
TIM3->CR1 |= TIM_CR1_CEN;
}
// Задать скважность (0-0xFFFF)
void pwm_Set(uint16_t wert)
{
TIM3->CCR1 = wert;
}