провожу кусок кода
Код: Выделить всё
void TIM_Config(void)
{
RCC->APB1ENR|=RCC_APB1ENR_TIM2EN|RCC_APB1ENR_TIM3EN|RCC_APB1ENR_TIM4EN|RCC_APB1ENR_TIM5EN|RCC_APB1ENR_TIM2EN|RCC_APB1ENR_TIM6EN|RCC_APB1ENR_TIM7EN;
RCC->APB2ENR|=RCC_APB2ENR_TIM9EN;
TIM2->ARR=20000;
TIM2->PSC=8400-1;
TIM2->DIER=0x00000001;
TIM2->CR2=0x00000020;
TIM2->CR1=0x00000085;
TIM3->ARR=20000;
TIM3->PSC=8400-1;
TIM3->DIER=0x00000001;
TIM3->CR2=0x00000020;
TIM3->CR1=0x00000085;
TIM4->ARR=20000;
TIM4->PSC=8400-1;
TIM4->DIER=0x00000001;
TIM4->CR2=0x00000020;
TIM4->CR1=0x00000085;
TIM5->ARR=20000;
TIM5->PSC=8400-1;
TIM5->DIER=0x00000001;
TIM5->CR2=0x00000020;
TIM5->CR1=0x00000085;
TIM6->ARR=10;
TIM6->PSC=8400-1;
TIM6->DIER=0x00000001;
TIM6->CR2=0x00000020;
TIM6->CR1=0x00000085;
TIM7->ARR=50;
TIM7->PSC=840-1;
TIM7->DIER=0x00000001;
TIM7->CR2=0x00000020;
TIM7->CR1=0x00000085;
TIM9->ARR=20000;
TIM9->PSC=8400-1;
TIM9->DIER=0x00000001;
TIM9->CR2=0x00000020;
TIM9->CR1=0x00000085;
}
void NVIC_Config(void)
{
SetIrq(TIM2_IRQn,2);
SetIrq(TIM3_IRQn,2);
SetIrq(TIM4_IRQn,2);
SetIrq(TIM5_IRQn,2);
SetIrq(TIM1_BRK_TIM9_IRQn,5);
SetIrq(TIM6_DAC_IRQn,3);
SetIrq(TIM7_IRQn,4);
SetIrq(USART3_IRQn,1);
}
void SetIrq(uint32_t irqn, uint32_t prio)
{
NVIC->IP[irqn] = (prio&0x0F)<<4;
NVIC->ISER[(uint32_t)((int32_t)irqn)>>5]=(uint32_t)(1<<((uint32_t)((int32_t)irqn)&(uint32_t)0x1F));
}
void TIM2_IRQHandler(void)
{
if(GPIOC->ODR&(1<<9))GPIOC->BRR=1<<9;else GPIOC->BSRR=1<<9;
TIM2->SR=0;
}
void TIM3_IRQHandler(void)
{
if(GPIOC->ODR&(1<<8))GPIOC->BRR=1<<8;else GPIOC->BSRR=1<<8;
TIM3->SR=0;
}
void TIM4_IRQHandler(void)
{
TIM4->SR=0;
}
void TIM5_IRQHandler(void)
{
TIM5->SR=0;
}
void TIM1_BRK_TIM9_IRQHandler(void)
{
TIM9->SR=0;
}
void RCC_Config(void)
{
SCB->CPACR|=((3UL<<10*2)|(3UL<<11*2));
RCC->APB1ENR|=RCC_APB1ENR_PWREN;
PWR->CR|=PWR_CR_VOS;
RCC->CR|=RCC_CR_HSEON;
while(RCC->CR&RCC_CR_HSERDY);//ждать запуска HSE
RCC->PLLCFGR=(7<<24)|RCC_PLLCFGR_PLLSRC_HSE|(336<<6)|8;
RCC->CR|=RCC_CR_PLLON;
while(!(RCC->CR & RCC_CR_PLLRDY));//ждать запуска PLL
FLASH->ACR=FLASH_ACR_ICEN|FLASH_ACR_DCEN|FLASH_ACR_LATENCY_5WS;
RCC->CFGR=(8<<16)|(4<<13)|(5<<10)|RCC_CFGR_SW_PLL;
while(!(RCC->CFGR&RCC_CFGR_SWS));//ждать переключения на PLL
SysTick->CTRL=3;
SysTick->LOAD=21000;
}


