03.01.2015, 19:35
|
|
Временная регистрация
Регистрация: 24.11.2010
Сообщений: 82
Сказал спасибо: 20
Сказали Спасибо 7 раз(а) в 7 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
еще одно открытие
а где ж его взять то...., ткните носом
|
|
|
|
03.01.2015, 20:02
|
|
Заблокирован
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Да фигня это всё! Зарядите пару простых примеров, подключите ЛА или цифровой осциллограф и поиграйтесь битами/регистрами. Без практики не будет ни понимания, ни результата.
|
|
|
|
03.01.2015, 20:18
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от FreshManGood
|
еще одно открытие
а где ж его взять то...., ткните носом
|
Учитесь гуглить
|
|
|
|
03.01.2015, 20:20
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
|
|
|
|
03.01.2015, 20:49
|
|
Заблокирован
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Учитесь не поощрять лень!
|
|
|
|
03.01.2015, 21:07
|
|
Временная регистрация
Регистрация: 24.11.2010
Сообщений: 82
Сказал спасибо: 20
Сказали Спасибо 7 раз(а) в 7 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
именно с этого мануала я давал цитатту
посмотрите 441 страницу
это мануал не на конкретный камень а нав семейство !
|
|
|
|
05.01.2015, 00:24
|
|
Гражданин KAZUS.RU
Регистрация: 03.07.2010
Сообщений: 843
Сказал спасибо: 156
Сказали Спасибо 378 раз(а) в 190 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Требуется настроить прерывание по таймеру. Прерывание происходит, но счёт идёт без учёта предделителя (36000), и программа зависает почти в постоянном срабатывание прерывания. Что не так указал?
Код:
|
//------------------------------------------
void Timer2_init(void)
{
/* TIM2 clock enable */
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
/* Time base configuration */
TIM_TimeBaseStructure.TIM_Period = 20000;
TIM_TimeBaseStructure.TIM_Prescaler = 36000;
TIM_TimeBaseStructure.TIM_ClockDivision = 0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);
/* TIM2 enable counter */
TIM_Cmd(TIM2, ENABLE);
/* Enable the TIM2 global Interrupt */
NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriori ty = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
//---------------------------------------------- |
а да МК STM32F101C4T6A
|
|
|
|
05.01.2015, 00:55
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Попробуйте вместо этого вставить следующий код:
PHP код:
|
RCC-›APB1ENR |= RCC_APB1ENR_TIM2EN; //Тактирование Timer2 TIM2-›PSC = 35999; //Настройка предделителя таймера TIM2-›ARR = 20000; //Загружаем число миллисекунд в регистр автоперезагрузки TIM2-›DIER |= TIM_DIER_UIE; //Разрешаем прерывание при переполнении счетчика // TIM2-›CR1 |= TIM_CR1_ARPE ; //использование буферного регистра для регистра автоматической перезагрузки TIMx_ARR TIM2-›CR1 |= TIM_CR1_CEN; //Запускаем счет NVIC_SetPriority(TIM2_IRQn,1); NVIC_EnableIRQ (TIM2_IRQn);
|
|
|
|
|
05.01.2015, 01:09
|
|
Гражданин KAZUS.RU
Регистрация: 03.07.2010
Сообщений: 843
Сказал спасибо: 156
Сказали Спасибо 378 раз(а) в 190 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
тоже самое счётчик насчитывает за десяток операторов операторов
кстати сам обработчик
Код:
|
//====================Таймер задержки индикации дуги==================
void TIM2_IRQHandler(void)
{
unsigned int Total_Show_bow_led = 0;
unsigned int Group_1_Show_bow_led = 0;
unsigned int Group_2_Show_bow_led = 0;
unsigned int Group_3_Show_bow_led = 0;
if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET)
{
TIM_ClearITPendingBit(TIM2, TIM_IT_Update);
Total_Show_bow_led = (Revolutions / 333);
if (Total_Show_bow_led ›=8){
Group_1_Show_bow_led = 8;
if (Total_Show_bow_led ‹ 16) Group_2_Show_bow_led = Total_Show_bow_led - 8; else Group_2_Show_bow_led = 8;
if (Total_Show_bow_led ›= 17) Group_3_Show_bow_led = Total_Show_bow_led - 16;
}
else Group_1_Show_bow_led = Total_Show_bow_led;
//
if (Group_1_Show_bow_led ›=1){
Led_bow(1, Group_1_Show_bow_led);
PWM_Show_Delay(PWM_Show_Delay_On);
Led_bow_all_off();}
if (Group_2_Show_bow_led ›=1){
Led_bow(2, Group_2_Show_bow_led);
PWM_Show_Delay(PWM_Show_Delay_On);
Led_bow_all_off();}
if (Group_3_Show_bow_led ›=1){
Led_bow(3, Group_3_Show_bow_led);
PWM_Show_Delay(PWM_Show_Delay_On);
Led_bow_all_off();}
}
} |
Последний раз редактировалось С.М.С; 05.01.2015 в 01:13.
|
|
|
|
05.01.2015, 01:25
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Млин, ну очччень лениво ковырять дебри SPL...
Если ничего не путаю, вот это:
Цитата:
|
if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET)
{
TIM_ClearITPendingBit(TIM2, TIM_IT_Update);
|
предназначено для сброса флага прерывания. Я его просто сбрасываю.
Цитата:
|
TIM2-›SR &= ~TIM_SR_UIF; //очистка флага прерывания
|
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 15:19.
|
|