Здравствуйте. Наконец-то решил попробовать STM32. Лучше поздно,чем
никогда.Программка помигать светодиодом. Задержка с помощью таймера 2.
Почему-то не входит в прерывание по переполнению. Светодиод горит
постоянно. Кто может-объясните в чём ошибка. МК-STM32F100,
среда CooCox.
#include ‹stm32f10x.h›
#include ‹stm32f10x_conf.h›
#include ‹stm32f10x_rcc.h›
#include ‹stm32f10x_gpio.h›
#include ‹stm32f10x_tim.h›
int main(void)
{
RCC_DeInit();
RCC-›CFGR &= ~RCC_CFGR_PLLSRC; //Источником сигнала для PLL выбран HSI с делением на 2
RCC-›CR &= ~RCC_CR_PLLON; //Отключить генератор PLL
RCC-›CFGR &= ~RCC_CFGR_PLLMULL; //Очистить PLLMULL
RCC-›CFGR |= RCC_CFGR_PLLMULL6; //Коефициент умножения = 6
RCC-›CR |= RCC_CR_PLLON; //Включить генератор PLL
//Переключиться на тактирование от PLL
RCC-›CFGR &= ~RCC_CFGR_SW; //Очистка битов выбора источника тактового сигнала
RCC-›CFGR |= RCC_CFGR_SW_PLL; //Выбрать источником тактового сигнала PLL
while((RCC-›CFGR&RCC_CFGR_SWS)!=0x0
//Ожидание переключения на PLL
{}
GPIO_InitTypeDef GPIO_InitStructure ;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB , ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_Init(GPIOB , &GPIO_InitStructure);
TIM_TimeBaseInitTypeDef TIM_TimeInitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
TIM_TimeInitStructure.TIM_Prescaler=8000;
TIM_TimeInitStructure.TIM_Period=1000;
TIM_TimeBaseInit(TIM2,&TIM_TimeInitStructure);
TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE); //прерывание по переполнению
TIM_Cmd(TIM2,ENABLE); //включение таймера
NVIC_SetPriority(TIM2_IRQn,1);
NVIC_EnableIRQ (TIM2_IRQn);
while(1)
{}
}
//прерывание по переполнению
void TIM2_IRQHandler(void)
{
TIM_ClearITPendingBit(TIM2, TIM_IT_Update);//очистка флага прерывания
GPIOB-›ODR^=GPIO_ODR_ODR1;
}