Пт дек 06, 2013 22:40:25
Сб дек 07, 2013 00:18:56
Сб дек 07, 2013 00:23:45
#define APBCLK 8000000UL // частота мк
Сб дек 07, 2013 00:33:50
Сб дек 07, 2013 10:13:56
Сб дек 07, 2013 10:18:55
USART1->CR1 |= USART_CR1_RXNEIE; //прерывание по приему данных
NVIC_EnableIRQ (USART1_IRQn); //разрешить прерывания от USART1
if((USART1->ISR & USART_ISR_RXNE)!=0)
Сб дек 07, 2013 10:26:55
Сб дек 07, 2013 10:29:27
GARMIN писал(а):здесь есть NVIC, который для меня пока чёрный ящик.
Если программа переходит по вектору прерываний, значит прерывание отрабатывается, а если из вектора не возвращается, значит проблема или со стеком, или с адресом возврата, то есть с настройками NVIC.
Пн дек 09, 2013 14:06:21
Пн дек 09, 2013 14:29:10
Kvasshtain писал(а):Дальше буду пробовать наверное с АЦП. НО ТАМ … ВОЩПЕ ОХРИНЕТЬ НАЩАЛЬНИКА
Пн дек 09, 2013 17:17:07
Пн дек 09, 2013 17:18:34
void USART1_IRQHandler(void)
{
if((USART1->ISR & USART_ISR_RXNE)!=0)
{
usart_temp = USART1->RDR;
}
if (USART1->ISR & USART_ISR_ORE)
{
USART1->ICR |= USART_ICR_ORECF;
}
}
GPIOC->MODER |= GPIO_MODER_MODER8_0 | GPIO_MODER_MODER9_0;
GPIOC->OTYPER &= ~GPIO_OTYPER_OT_8 & ~GPIO_OTYPER_OT_9;
GPIOC->OSPEEDR &= ~GPIO_OSPEEDER_OSPEEDR8 & ~GPIO_OSPEEDER_OSPEEDR9;
GPIOC->PUPDR &= ~GPIO_PUPDR_PUPDR8 & ~GPIO_PUPDR_PUPDR9;
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_8;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_Level_2;
GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;
GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init ((GPIO_TypeDef *) GPIOC, (GPIO_InitTypeDef *) &GPIO_InitStruct);
Пн дек 09, 2013 17:20:37
Пн дек 09, 2013 19:35:39
GARMIN писал(а):И пару размышлений.
Первое.
Почему вы не советуете использовать CMSIS (он же SPL)?
Неужели код
более понятен и более безопасен, чем код:
Пн дек 09, 2013 20:47:18
Пн дек 09, 2013 21:40:14
Пн дек 09, 2013 23:00:07
GARMIN писал(а):Дело не в лёгкости. Например, установка приоритетов прерываний в совмещённых полях 32-битного слова.
Или регистры альтернативных функций портов ВВ.
Тут довольно легко ошибиться с определением нужного бита. Намного понятнее использовать структуру управления и функцию установки.
NVIC_SetPriority(TIM3_IRQn, 15);
NVIC_EnableIRQ(TIM3_IRQn);
Пн дек 09, 2013 23:38:43
Пн дек 09, 2013 23:41:15
Вт дек 10, 2013 13:16:55