13.11.2013, 14:28
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: STM32F05x TIM6 IRQ
Я что-то не посмотрел. У вас проц другой. Я вам под stm32f10x дал алгоритм. Впрочем, не думаю, что сильно различается.
|
|
|
|
13.11.2013, 14:28
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: STM32F05x TIM6 IRQ
Сообщение от Easyrider83
|
1. включить тактирование таймера (описание в stm32f10x_rcc.c)
2. сконфигурировать таймер (stm32f10x_tim.c)
3. запустить таймер
4. включить прерывание таймера
5. дать команду NVIC на работу прерыния таймера (описание в misc.c)
|
И
7. Засунуть SPL в аналы...
__________________
Осторожно , злой кот
|
|
|
|
13.11.2013, 14:31
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: STM32F05x TIM6 IRQ
Учится лучше на SPL, чтобы потом не было вопросов, как элементарный таймер запустить. А потом уже каждый для себя сам решит - жалко ему лишних 100 байт на десятикратное улучшение читаемости кода или нет.
|
|
|
|
13.11.2013, 14:31
|
|
Вид на жительство
Регистрация: 05.04.2008
Адрес: Украина, Ахтырка
Сообщений: 302
Сказал спасибо: 148
Сказали Спасибо 31 раз(а) в 30 сообщении(ях)
|
Re: STM32F05x TIM6 IRQ
С компилировалось - но прерывания нету.
Код:
|
void TIM6_IRQHandler(void)
{
static volatile uint32_t ulTim6Cnt;
if (TIM6-›SR & TIM_SR_UIF)
{
TIM6-›SR &= ~TIM_SR_UIF;
indication_func();
}
} |
Код:
|
void Init_RCC(void)
{
RCC-›AHBENR |= RCC_AHBENR_GPIOCEN;
RCC-›APB1ENR |= RCC_APB1ENR_TIM6EN;
TIM6-›PSC =1000 - 1;
TIM6-›ARR = 50 - 1;
TIM6-›DIER |= TIM_DIER_UIE;
TIM6-›CR1 = TIM_CR1_CEN | TIM_CR1_ARPE;
NVIC_SetPriority(TIM6_DAC_IRQn, 15);
NVIC_EnableIRQ(TIM6_DAC_IRQn); // PC6 output PP for strob
GPIOC-›MODER &=~GPIO_MODER_MODER6;
GPIOC-›MODER|=GPIO_MODER_MODER6_0;
GPIOC-›OSPEEDR|=GPIO_OSPEEDER_OSPEEDR6;
} |
|
|
|
|
13.11.2013, 14:31
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: STM32F05x TIM6 IRQ
artyomugr,
Код:
|
NVIC_SetPriority(TIM6_DAC_IRQn, 15);
NVIC_EnableIRQ(TIM6_DAC_IRQn); |
И
Код:
|
void TIM6_IRQHandler(void) |
сменить на
Код:
|
void TIM6_DAC_IRQHandler (void) |
__________________
Осторожно , злой кот
Последний раз редактировалось dosikus; 13.11.2013 в 14:35.
|
|
|
Сказали "Спасибо" dosikus
|
|
|
13.11.2013, 14:32
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: STM32F05x TIM6 IRQ
Все возможные прерывания перечислены в стартапе. Поставьте точку остановки на обработчик прерывания и убедитесь, что программа туда попадает. Если нет, проверьте состояние регистров счета вашего таймера. А идет ли вообще счет?
|
|
|
|
13.11.2013, 14:49
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Ну дык , ускоренный копипаст с рабочего проекта , но там TIM3 ...
Сообщение от artyomugr
|
Код:
|
void Init_RCC(void)
{
RCC-›AHBENR |= RCC_AHBENR_GPIOCEN;
RCC-›APB1ENR |= RCC_APB1ENR_TIM6EN;
TIM6-›PSC =1000 - 1;
TIM6-›ARR = 50 - 1;
TIM6-›DIER |= TIM_DIER_UIE;
TIM6-›CR1 = TIM_CR1_CEN | TIM_CR1_ARPE;
NVIC_SetPriority(TIM6_DAC_IRQn, 15);
NVIC_EnableIRQ(TIM6_DAC_IRQn);
GPIOC-›MODER &=~GPIO_MODER_MODER6;
GPIOC-›MODER|=GPIO_MODER_MODER6_0;
GPIOC-›OSPEEDR|=GPIO_OSPEEDER_OSPEEDR6;
} |
|
Сие можешь убрать :
Код:
|
RCC-›AHBENR |= RCC_AHBENR_GPIOCEN;
...
GPIOC-›MODER &=~GPIO_MODER_MODER6;
GPIOC-›MODER|=GPIO_MODER_MODER6_0;
GPIOC-›OSPEEDR|=GPIO_OSPEEDER_OSPEEDR6; |
Это настройка PC6 на выход ...
Кстати вызов функции в прерывании есть моветон.
Установка флага в прерывании, его поллинг со сбросом в main - рассово верное ...
Сообщение от Easyrider83
|
Учится лучше на SPL, чтобы потом не было вопросов, как элементарный таймер запустить.
|
А приведи-ка нам Паша простыню на SPL в контраст ...
__________________
Осторожно , злой кот
|
|
|
|
13.11.2013, 14:54
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: STM32F05x TIM6 IRQ
Код:
|
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;
TIM_TimeBaseInitStruct.TIM_Prescaler = 1000;
TIM_TimeBaseInitStruct.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInitStruct.TIM_Period = 0xFF;
TIM_TimeBaseInitStruct.TIM_ClockDivision = TIM_CKD_DIV1;
TIM_TimeBaseInitStruct.TIM_RepetitionCounter = 0;
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseInitStruct);
TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);
TIM_Cmd(TIM2, ENABLE);
NVIC_EnableIRQ(TIM2_IRQn); |
Код:
|
void TIM2_IRQHandler (void)
{
TIM_ClearITPendingBit(TIM2 , TIM_FLAG_Update);
} |
|
|
|
|
13.11.2013, 15:01
|
|
Вид на жительство
Регистрация: 05.04.2008
Адрес: Украина, Ахтырка
Сообщений: 302
Сказал спасибо: 148
Сказали Спасибо 31 раз(а) в 30 сообщении(ях)
|
Re: STM32F05x TIM6 IRQ
Да, я заметил уже удалил кусок кода ввода/вывода.
Странный SPL.... писать *ля больше чем если обращаться к регистрам напрямую...
По моему - через попу сделано.
|
|
|
|
13.11.2013, 15:03
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: STM32F05x TIM6 IRQ
Сообщение от artyomugr
|
Странный SPL.... писать *ля больше чем если обращаться к регистрам напрямую...
|
А если еще взглянуть на листинг...
__________________
Осторожно , злой кот
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 12:03.
|
|