реклама на сайте
подробности

 
 
> Проблема с прерыванием, Мигание светодиодами посредством прерывания
Rudthaky
сообщение Jul 14 2015, 19:53
Сообщение #1





Группа: Новичок
Сообщений: 9
Регистрация: 6-05-15
Пользователь №: 86 548



Здравствуйте уважаемые форумчане. Такой вопрос: не работает прерывание на плате stm32f3discavery, ниже код:
CODE
#include "stm32f30x.h" // Device header


#define LED_ON() GPIO_SetBits(GPIOE, GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_1
4|GPIO_Pin_15)
#define LED_OFF() GPIO_ResetBits(GPIOE, GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_1
4|GPIO_Pin_15)
//-------------------------
#define RED_OFF() GPIO_ResetBits (GPIOE, GPIO_Pin_9|GPIO_Pin_13)
#define RED_ON() GPIO_SetBits(GPIOE, GPIO_Pin_9|GPIO_Pin_13)
//-------------------------
#define BLUE_OFF() GPIO_ResetBits (GPIOE, GPIO_Pin_8|GPIO_Pin_12)
#define BLUE_ON() GPIO_SetBits(GPIOE, GPIO_Pin_8|GPIO_Pin_12)
//--------------------------
#define GREEN_OFF() GPIO_ResetBits (GPIOE, GPIO_Pin_11|GPIO_Pin_15)
#define GREEN_ON() GPIO_SetBits(GPIOE, GPIO_Pin_11|GPIO_Pin_15)
//--------------------------
#define ORANGE_OFF() GPIO_ResetBits (GPIOE, GPIO_Pin_10|GPIO_Pin_14)
#define ORANGE_ON() GPIO_SetBits(GPIOE, GPIO_Pin_10|GPIO_Pin_14)
//--------------------------

static volatile uint16_t msTick= 0;

void SisTick_Handler(void)
{
msTick++;
}

void delay_ms(uint16_t ms)
{
uint16_t startTicks;
startTicks = msTick;
while((msTick - startTicks)< ms);
}

void LEDs_ini(void)
{
GPIO_InitTypeDef GPIO_InitType_LED;

//RCC_AHBPeriph_GPIOE

RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOE,ENABLE);

GPIO_InitType_LED.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_1
4|GPIO_Pin_15;
GPIO_InitType_LED.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitType_LED.GPIO_Speed = GPIO_Speed_Level_2;
GPIO_InitType_LED.GPIO_OType = GPIO_OType_PP;
GPIO_InitType_LED.GPIO_PuPd = GPIO_PuPd_NOPULL;

GPIO_Init(GPIOE, &GPIO_InitType_LED);
}




int main(void)
{
SysTick_Config(SystemCoreClock/1000);
// uint32_t i;
LEDs_ini();


while(1)
{
RED_ON();
delay_ms(100);

RED_OFF();
delay_ms(100);


}
}
Выполняет только функция RED_ON(), соответственно диоды не моргают. Пробовал вариант:
вместо:
Код
static volatile uint16_t msTick= 0;

void SisTick_Handler(void)
{
    msTick++;
}

void delay_ms(uint16_t ms)
{
    uint16_t startTicks;
    startTicks = msTick;
    while((msTick - startTicks)< ms);
}
делать через
Код
uint16_t delay_count = 0;

void SysTick_Handler(void)
{
    if(delay_count > 0)
    {
        delay_count--;
    }
}

void delay_ms(uint16_t delay_temp)
{
    delay_count = delay_temp;
    while(delay_count){}
}
Keil выдает ошибку:
Цитата
..\Objects\project2.axf: Error: L6200E: Symbol SysTick_Handler multiply defined (by hal_cm4.o and main.o).
Где находятся (by hal_cm4.o and main.o) я не нашел. Помогите пожалуйста разобраться новичку с прерываниями crying.gif

Сообщение отредактировал IgorKossak - Jul 15 2015, 05:30
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!!!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
smk
сообщение Jul 28 2017, 16:34
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



Хотелось бы поднять тему. Не вызывается HAL_IncTick(); Куда ни добавлял - бесполезно. HAL_SYSTICK_Callback тоже не вызывается. Прерывание от системного таймера включено. Где-то определен обработчик но найти его не удается. Демоплата STM32746G-Discovery. Keil5. Проект генерировался средствами кейла. Смотрел примеры так они все на основе ОС. Мне нужно без нее. Хочу поинтересоваться как выйти из этой ситуации. Проблема ранее в этой теме описана но решение никто не привел. Может кто уже сталкивался и поборол эту ситуацию? Спасибо.


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Jul 29 2017, 20:19
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(smk @ Jul 28 2017, 19:34) *
Может кто уже сталкивался и поборол эту ситуацию?

Наблюдал аналогичное на другом контроллере вообше.
На четвертый день заработало само по тем же исходникам.
Подозрения есть, но достоверного объяснения нет.
Ну разве что обработчик не искал sm.gif, но программа туда не заходила. Таймер считал.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Rudthaky   Проблема с прерыванием   Jul 14 2015, 19:53
- - veteq   Надо искать с расширением С раз уж на то пошло, а ...   Jul 14 2015, 20:23
- - Mihey_K   Кодvoid SisTick_Handler(void) это что тако...   Jul 14 2015, 21:41
- - Golikov A.   HAL вставляет свой обработчик прерывания системног...   Jul 15 2015, 03:55
- - Rudthaky   По поводу :Кодvoid SisTick_Handler(void), ...   Jul 15 2015, 06:22
- - Golikov A.   не ctrl+f а ctrl+shift+f если кеил.. если нет, то ...   Jul 15 2015, 06:38
- - Rudthaky   поп поиску SysTick_Handler выдает: ЦитатаSearching...   Jul 15 2015, 06:55
- - bugdesigner   Если вы пользуетесь HAL-ом, то не нужно переопреде...   Jul 15 2015, 07:10
- - Rudthaky   Спасибо за HAL, наконец знаю куда заглянуть, но пр...   Jul 15 2015, 07:45
- - bugdesigner   Для начала объявить переменную так: volatile uint1...   Jul 15 2015, 07:59
- - Rudthaky   Поменял- эффект то же... светодиоды просто горят.....   Jul 15 2015, 12:53
|- - Tanya   Цитата(Rudthaky @ Jul 15 2015, 15:53) Пом...   Jul 15 2015, 14:41
|- - bugdesigner   Цитата(Rudthaky @ Jul 15 2015, 15:53) Нап...   Jul 15 2015, 14:42
- - veteq   uint16_t delay_count = 0; Попробовать добавить vo...   Jul 15 2015, 15:09
- - Rudthaky   ЦитатаВы бы написали, что хотите сделать... Кажетс...   Jul 15 2015, 15:48
|- - Tanya   Цитата(Rudthaky @ Jul 15 2015, 18:48) Бан...   Jul 15 2015, 15:57
- - Rudthaky   ЦитатаПосмотрите пример GPIO_IOToggle и на базе не...   Jul 16 2015, 06:12
- - RusikOk   подскажите новенькому как часто будет вызываться о...   Sep 10 2016, 18:12
- - aaarrr   Смотря что записано в регистры LOAD и CTRL SysTick...   Sep 10 2016, 18:31
|- - jcxz   Цитата(smk @ Jul 28 2017, 19:34) Где-то о...   Jul 29 2017, 02:25
- - ivan24190   smk, обработчик прерывания системного таймера нахо...   Jul 29 2017, 06:44
- - Lagman   Документ Description of STM32F7 HAL and Low-layer ...   Jul 30 2017, 10:14


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 04:38
Рейтинг@Mail.ru


Страница сгенерированна за 0.01398 секунд с 7
ELECTRONIX ©2004-2016