Чт дек 05, 2019 16:31:49
#include "stm32f1xx.h"
int main()
{
RCC->APB2ENR |= RCC_APB2ENR_IOPCEN; // Разрешить тактирование PORTC
RCC->APB1ENR |= RCC_APB1ENR_TIM2EN; //Разрешить тактирование TIM
GPIOC->CRH |= GPIO_CRH_MODE15; // Вывод светодиодана выход.
GPIOC->CRH &=~GPIO_CRH_CNF15; // Двухтактный выход
//GPIOC->ODR |= 32768;
RCC->APB1ENR |= RCC_APB1ENR_TIM2EN;
TIM2->PSC = 80 - 1; // Настраиваем делитель что таймер тикал 1000 раз в секунду
TIM2->ARR = 1000 ; // Чтоб прерывание случалось раз в секунду
TIM2->DIER |= TIM_DIER_UIE; //разрешаем прерывание от таймера
TIM2->CR1 |= TIM_CR1_CEN; // Начать отсчёт!
NVIC_EnableIRQ(TIM2_IRQn); //Разрешение TIM2_IRQn прерывания
while (1)
{
}
}
void TIM2_IRQHandler(void)
{
TIM2->SR &= ~TIM_SR_UIF; //Сбрасываем флаг UIF
GPIOC->ODR |= 32768; // зажечь светодиод
}
Чт дек 05, 2019 17:59:16
TEPEM писал(а): в обработчик прерывания не входит
__enable_irq ();
Чт дек 05, 2019 18:17:13
Чт дек 05, 2019 18:42:37
Потом убрали разрешение прерываний? Не стоитTEPEM писал(а):Пробовал,без толку.
Чт дек 05, 2019 18:47:44
Чт дек 05, 2019 18:51:02
Чт дек 05, 2019 19:00:57
Чт дек 05, 2019 19:43:40
TEPEM писал(а):Светодиод отдельно работает, мигал пустым циклом.
Чт дек 05, 2019 19:51:22
#include "stm32f1xx.h"
int i,j;
int main()
{
RCC->APB2ENR |= RCC_APB2ENR_IOPCEN; // Разрешить тактирование PORTC
RCC->APB1ENR |= RCC_APB1ENR_TIM2EN; //Разрешить тактирование TIM
GPIOC->CRH |= GPIO_CRH_MODE15; // Вывод светодиодана выход.
GPIOC->CRH &=~GPIO_CRH_CNF15; // Двухтактный выход
//GPIOC->ODR |= 32768;
RCC->APB1ENR |= RCC_APB1ENR_TIM2EN;
TIM2->PSC = 80 - 1; // Настраиваем делитель что таймер тикал 1000 раз в секунду
TIM2->ARR = 1000 ; // Чтоб прерывание случалось раз в секунду
TIM2->DIER |= TIM_DIER_UIE; //разрешаем прерывание от таймера
TIM2->CR1 |= TIM_CR1_CEN; // Начать отсчёт!
__enable_irq ();
//NVIC_EnableIRQ(TIM2_IRQn); //Разрешение TIM2_IRQn прерывания
while (1)
{
for(j = 0 ; j < 100000; j++) __NOP();
if (i==0)
{
i=1;
GPIOC->ODR |= 32768;
}
else
{
i=0;
GPIOC->ODR &= ~32768;
}
}
}
/*void TIM2_IRQHandler(void)
{
GPIOC->ODR |= 32768;
TIM2->SR &= ~TIM_SR_UIF; //Сбрасываем флаг UIF
}*/
Чт дек 05, 2019 19:52:18
extern "C" void TIM2_IRQHandler(void)
Чт дек 05, 2019 19:53:19
Чт дек 05, 2019 19:54:47
Чт дек 05, 2019 19:57:53
Чт дек 05, 2019 20:00:08
Мне кажется что он положен, но по умолчанию на кварц настроен. Опять же вроде светодиод мигает...VladislavS писал(а):И это, startup то положил в проект?
Чт дек 05, 2019 20:01:38
extern "C" void TIM2_IRQHandler(void)
Чт дек 05, 2019 20:04:14
Чт дек 05, 2019 20:08:38
Чт дек 05, 2019 20:11:28
Чт дек 05, 2019 20:14:46
Чт дек 05, 2019 20:15:09
Откуда диззасеблер знает такие метки как HardFault? Они разве не из стартапа?VladislavS писал(а):Положен говоришь? А картинку посмотреть?