CODE
#include "stm32f4xx.h"
void TIM5_IRQHandler()
{
GPIOB->ODR^=GPIO_ODR_ODR_8;
TIM5->SR&= ~TIM_SR_UIF; //Сбрасываем флаг UIF
}
int main(void)
{
//***********TIM5***************
RCC->APB1ENR |= RCC_APB1ENR_TIM5EN; // тактирование таймера
TIM5->PSC = 16000; // предделитель
TIM5->ARR = 1000; // переполнение
TIM5->DIER |= TIM_DIER_UIE; // прерывание по переполнению
TIM5->CR1 |= TIM_CR1_CEN; // запуск счета
NVIC_EnableIRQ(TIM5_IRQn);
NVIC_SetPriority(TIM5_IRQn,15);
RCC->AHB1ENR |= RCC_AHB1ENR_GPIOBEN;
GPIOB->MODER |= GPIO_MODER_MODER8_0;
GPIOB->ODR |= GPIO_ODR_ODR_8;
//***********MCO2**************
RCC->AHB1ENR |= RCC_AHB1ENR_GPIOCEN;
RCC->CFGR &=~RCC_CFGR_MCO2; // вывод System clock (SYSCLK) на PC9
RCC->CFGR |= (RCC_CFGR_MCO2PRE_1|RCC_CFGR_MCO2PRE_2);// 110: division by 4
GPIOC->MODER |= GPIO_MODER_MODER9_1; // output
GPIOC->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR9; // 100Mhz I/O
while(1)
{
}
}
void TIM5_IRQHandler()
{
GPIOB->ODR^=GPIO_ODR_ODR_8;
TIM5->SR&= ~TIM_SR_UIF; //Сбрасываем флаг UIF
}
int main(void)
{
//***********TIM5***************
RCC->APB1ENR |= RCC_APB1ENR_TIM5EN; // тактирование таймера
TIM5->PSC = 16000; // предделитель
TIM5->ARR = 1000; // переполнение
TIM5->DIER |= TIM_DIER_UIE; // прерывание по переполнению
TIM5->CR1 |= TIM_CR1_CEN; // запуск счета
NVIC_EnableIRQ(TIM5_IRQn);
NVIC_SetPriority(TIM5_IRQn,15);
RCC->AHB1ENR |= RCC_AHB1ENR_GPIOBEN;
GPIOB->MODER |= GPIO_MODER_MODER8_0;
GPIOB->ODR |= GPIO_ODR_ODR_8;
//***********MCO2**************
RCC->AHB1ENR |= RCC_AHB1ENR_GPIOCEN;
RCC->CFGR &=~RCC_CFGR_MCO2; // вывод System clock (SYSCLK) на PC9
RCC->CFGR |= (RCC_CFGR_MCO2PRE_1|RCC_CFGR_MCO2PRE_2);// 110: division by 4
GPIOC->MODER |= GPIO_MODER_MODER9_1; // output
GPIOC->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR9; // 100Mhz I/O
while(1)
{
}
}
зашил в МК! светодиод то зажегся, но не моргает((((( но если присмотреться, он все время как-то подмигивает!
В итоге, если в debug-ере установить breakpoint в начале программы и нажать run то контроллер без проблем туда возращается, при учете что вконце программы есть while(1) -бесконечный цикл!Дело в том что если зашить этуже программу в stm32f4discovery то все работает корректно и при установке breakpoint он к нему никогда не доходит!!!!!
Подскажите из-за чего может происходить прерывание, или что еще это может быть???????????
как определить, какое именно прерывание произошло?
Кстати я еще не совсем уверен в правильности обвязки МК: по 0.1 и 1 мкФ на каждый VDD,по 2.2мкФ на GND от vcap1 и vcap2, NRST через 100к на VDD, BOOT0 и BOOT1 по 10к на VDD и 510 Ом на GND, ну и для SWD вывел VDD,PA14,GND,PA13,NRST,PB3.Правильно?