|
Несколько вопросов по ARM Cortex M3 |
|
|
|
Nov 22 2011, 16:41
|

Twilight Zone
  
Группа: Свой
Сообщений: 454
Регистрация: 17-02-09
Из: Челябинск
Пользователь №: 44 990

|
Цитата(inventor @ Nov 22 2011, 20:12)  ..... откуда можно взять нормальную документацию, ну как у атмела-там по крайней мере нормальный дадашыт: показана периферия и сразу примеры на асме и C. А для ST я что-то не могу найти подобного. "периферия и сразу примеры на асме и C." - такого на официальном сайте не найдете. А в общем то Смотрите тут
--------------------
Magic Friend
|
|
|
|
|
Nov 23 2011, 09:24
|

Знающий
   
Группа: Свой
Сообщений: 511
Регистрация: 24-08-07
Из: БРЕСТ
Пользователь №: 30 053

|
Дабы не плодить темы задам вопрос тут. Разбираю инициализацию STM32F10x Есть строка: CODE /* 2 wait states required on the flash. */ *( ( unsigned portLONG * ) 0x40022000 ) = 0x02; Я не понимаю зачем она? Последовательность такая: CODE RCC_HSEConfig( RCC_HSE_ON ); //Enable HSE (high speed external clock). while( RCC_GetFlagStatus( RCC_FLAG_HSERDY ) == RESET ){} //Wait till HSE is ready.
/* 2 wait states required on the flash. */ *( ( unsigned portLONG * ) 0x40022000 ) = 0x02;
--------------------
Если хочешь вбить гвоздь, не ищи обходных путей, просто бери молоток и бей по этому чёртовому гвоздю!
|
|
|
|
|
Nov 23 2011, 14:45
|
Знающий
   
Группа: Свой
Сообщений: 524
Регистрация: 25-12-08
Из: Москва
Пользователь №: 42 748

|
Сегодня посмотрел примеры для других плат, что-то переделал и запустил прерывание на своей, заморгало:
void TIM_Config(void) { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; //TIM_OCInitTypeDef TIM_OCInitStructure; NVIC_InitTypeDef NVIC_InitStructure;
/* Enable TIM2 */ RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
/* TIM1 config */ TIM_TimeBaseStructure.TIM_Period = 0x4AF; TIM_TimeBaseStructure.TIM_Prescaler = ((SystemCoreClock/1200) - 1); TIM_TimeBaseStructure.TIM_ClockDivision = 0x0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
#if 0 /* Output Compare Timing Mode configuration: Channel1 */ TIM_OCStructInit(&TIM_OCInitStructure); TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_Timing; TIM_OCInitStructure.TIM_Pulse = 0x0; TIM_OC1Init(TIM1, &TIM_OCInitStructure); #endif /* Immediate load of TIM2 Precaler values */ TIM_PrescalerConfig(TIM2, ((SystemCoreClock/1200) - 1), TIM_PSCReloadMode_Immediate);
/* Clear TIM2 update pending flags */ TIM_ClearFlag(TIM2, TIM_FLAG_Update);
/* Enable the TIM2 Interrupt */ NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure);
/* Enable TIM2 Update interrupts */ TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE); /* TIM2 enable counters */ TIM_Cmd(TIM2, ENABLE); }
void TIM2_IRQHandler(void) { /* Clear TIM3 update interrupt */ TIM_ClearITPendingBit(TIM2, TIM_IT_Update); /* Toggle LED2 */ STM32vldiscovery_LEDToggle(LED3); }
поясните мне пожалуйста, зачем в обработчике нужно вот это: TIM_ClearITPendingBit(TIM2, TIM_IT_Update);
И еще, там где закоментировано if 0 endif в этом случае выход таймера подсоединяется на внешнюю ногу, я прав?
и еще последний вопрос, все эти обработчики уже объявлены в ассемблерном файле boot и чтобы вызвать что то из обработчика нужно или внутрь него писать или вызвать из него внешнюю функцию. не накладно ли? (push pop...)-так сделано в примерах.
|
|
|
|
|
Nov 23 2011, 15:42
|
Профессионал
    
Группа: Свой
Сообщений: 1 719
Регистрация: 13-09-05
Из: Novosibirsk
Пользователь №: 8 528

|
Цитата(inventor @ Nov 23 2011, 21:45)  и еще последний вопрос, все эти обработчики уже объявлены в ассемблерном файле boot и чтобы вызвать что то из обработчика нужно или внутрь него писать или вызвать из него внешнюю функцию. не накладно ли? (push pop...)-так сделано в примерах. Не нужно, достаточно просто написать свою функцию с тем же именем и, если это С++, то ещё и extern "C" добавить. Объявления в ассемблерном файле сделаны так, что ругани по поводу переопределения не будет.
--------------------
Russia est omnis divisa in partes octo.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|