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

 
 
> Проблема с прерыванием, Мигание светодиодами посредством прерывания
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
Ответов
Rudthaky
сообщение Jul 15 2015, 15:48
Сообщение #2





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



Цитата
Вы бы написали, что хотите сделать... Кажется, что Вы это сами не знаете... Русским языком...

Банально помигать светодиодами на плате STM32F3 discavery... есть видео уроки на youtube-е
Цитата

вот по ним пытаюсь освоить Keil и ARM. Да, в уроках используется плата stm32f4xx discavery, но я думаю это не суть вещей. Адекватной литературы на тему "Самоучитель для чайников ARM" я не нашел, либо старье либо не для keil. Может быть плохо искал, не знаю. По этому и спрашиваю, уважаемых Вас, что бы ткнули пальцем, как слепому котенку. Типа делай так и так и будет тебе счастье...
Не поняв как работать, вызывать прерывание через hel или нет, дальше смотреть туториалы и побывать по ним писать код - не вижу смысла так как это основа-основ.
Цитата
uint16_t delay_count = 0; Попробовать добавить volatile к нему...
делал, результат тот же...
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
|- - 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
- - smk   Хотелось бы поднять тему. Не вызывается HAL_IncTic...   Jul 28 2017, 16:34
|- - jcxz   Цитата(smk @ Jul 28 2017, 19:34) Где-то о...   Jul 29 2017, 02:25
|- - Dog Pawlowa   Цитата(smk @ Jul 28 2017, 19:34) Может кт...   Jul 29 2017, 20:19
- - 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 Текстовая версия Сейчас: 19th July 2025 - 03:44
Рейтинг@Mail.ru


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