Перейти к содержанию
    

STM32F0+Keil=простой старт

глобальная переменная. Декремент смотреть в прерывании системного таймера

объявлена в main.c (как вы ищите - непонятно)

 

Переменную нашел в мейн .

Теперь не найду где выполняется декремент..

 

Все, нашел! Урааааааааа! :)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Все по своим отдельным файлам, не люблю когда все в одном в виде каши. Думаю так удобнее.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Все по своим отдельным файлам, не люблю когда все в одном в виде каши. Думаю так удобнее.

 

А скажите пожалуйста, с какой частотой происходит прерывание системного таймера?

И как например задействовать

 

void TIM17_IRQHandler(void)
{
    
}

 

Это прерывание?

Достаточно вбить туда переменную? Подозреваю, что нужны еще дополнительные телодвижения :)

 

Посмотрел даташит на МК, и я просто в шоке :)

Такая куча возможностей!!!

Таймеров дофига и всего прочего :)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А скажите пожалуйста, с какой частотой происходит прерывание системного таймера?

И как например задействовать

 

void TIM17_IRQHandler(void)
{
    
}

 

Это прерывание?

Достаточно вбить туда переменную? Подозреваю, что нужны еще дополнительные телодвижения :)

 

Прерывание системного таймера происходит согласно указанию

SysTick_Config(SystemCoreClock / 1000); //1ms

Если делить на 10000, то будет 0.1ms.

Здесь можно изменить значение по своему усмотрению, в пределах возможного.

В Keil нажав правую кнопку на непонятной переменной или функции, выбираете в меню "Go To Definition Of '...' " и попадаете в место ее определения. Очень удобно.

Да это прерывание, Прерывание Timer17 и для этого сначала нужно проинициализировать таймер, включить режим прерываний и так далее.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Прерывание системного таймера происходит согласно указанию

SysTick_Config(SystemCoreClock / 1000); //1ms

Если делить на 10000, то будет 0.1ms.

Здесь можно изменить значение по своему усмотрению, в пределах возможного.

В Keil нажав правую кнопку на непонятной переменной или функции, выбираете в меню "Go To Definition Of '...' " и попадаете в место ее определения. Очень удобно.

Да это прерывание, Прерывание Timer17 и для этого сначала нужно проинициализировать таймер, включить режим прерываний и так далее.

 

Спасибо Вам за помощь!

 

 

 

 

Буду дальше пробовать разбираться :)

 

А сколько времени происходит вход в прерывание и его выполнение а потом выход из него?

 

Изменено пользователем Artos5

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А сколько времени происходит вход в прерывание и его выполнение а потом выход из него?

Когда отладку включал с платой на stm32f103 через JTAG отладчик, то видел время каждого шага. Сейчас на этой плате не знаю. Я сам только учусь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Бедаааа.... отвалился программатор.

Не хочет шить . Выскакивает ошибка: "No target connected"

Хотя программатор видется.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я имел в виду на компе из кейла шьёшь?

Попробуй ST-шную утилиту - http://www.st.com/web/en/catalog/tools/PF258168#header поставить. Только кейл перед этим закрой.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я имел в виду на компе из кейла шьёшь?

Попробуй ST-шную утилиту - http://www.st.com/web/en/catalog/tools/PF258168#header поставить. Только кейл перед этим закрой.

Блин... закрыл Кейл. Запустил СТ Линк. И он отказывается дружить с программатором... все равно не видит программатор. Хотя система видит устройство прекрасно.

 

Начал шить СТ Линк, после шаманства...

Поставил в настройках Connect under reset.

Что то не могу вкурить что это произошло... кейл по прежнему отказывается шить...

 

 

 

Теперь Кейл пишет такую херню: flash download failed - Target DLL has been canсelled

Что то СТМ начинает тошнить :)

 

Что ему то не хватает?!

Изменено пользователем Artos5

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В свойствах проекта, на вкладке Utilites, в св-вах St-Link (settings), выбран STM32F05x Flash?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В свойствах проекта, на вкладке Utilites, в св-вах St-Link (settings), выбран STM32F05x Flash?

Выбран ST Link debugger и его поменять нельзя, он не активный

 

Оно шилось нормально , шилось-шилось пока не "заглючило" резко . Резко начал ругаться Кейл...

post-77613-1374425087_thumb.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нажать левой кнопкой на Use Target Drive for Flash Programming.

Спасибо Вам за наводку! Заработало!

Только не могу понять почему оно заглючило! :(

 

Есть еще серьезная проблема...

Не работает полностью PORTB

 

инициализирую так:

 

void Init_GPIO(void)
{
    /* Private typedef ---------------------------------------------------------*/
    GPIO_InitTypeDef GPIO_InitStruct_butt;
    GPIO_InitTypeDef GPIO_InitStruct_led;
    //GPIO_InitTypeDef GPIO_InitStruct_led1;
    
    /*Enable or disable the AHB peripheral clock */
    RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
    RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC, ENABLE);
    
    /** Configure pins as GPIO for USER button
         PA0     ------> GPIO_Input
    */

  /* Configure Button pin as input */
  GPIO_InitStruct_butt.GPIO_Mode = GPIO_Mode_IN;
  GPIO_InitStruct_butt.GPIO_PuPd = GPIO_PuPd_NOPULL;
  GPIO_InitStruct_butt.GPIO_Pin = GPIO_Pin_0;
  GPIO_Init(GPIOA, &GPIO_InitStruct_butt);
    
    /** Configure pins as GPIO for led
         PC8     ------> GPIO_Output  blue
         PC9     ------> GPIO_Output    green
    */

    /*Configure GPIO pin */
    GPIO_InitStruct_led.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11;
    GPIO_InitStruct_led.GPIO_Mode = GPIO_Mode_OUT;
    GPIO_InitStruct_led.GPIO_OType = GPIO_OType_PP;
    GPIO_InitStruct_led.GPIO_PuPd = GPIO_PuPd_NOPULL;
    GPIO_InitStruct_led.GPIO_Speed = GPIO_Speed_2MHz;
    GPIO_Init(GPIOC, &GPIO_InitStruct_led);
    
        /*Configure GPIO pin PORTB*/
    GPIO_InitStruct_led.GPIO_Pin = GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;
    GPIO_InitStruct_led.GPIO_Mode = GPIO_Mode_OUT;
    GPIO_InitStruct_led.GPIO_OType = GPIO_OType_PP;
    GPIO_InitStruct_led.GPIO_PuPd = GPIO_PuPd_NOPULL;
    GPIO_InitStruct_led.GPIO_Speed = GPIO_Speed_2MHz;
    GPIO_Init(GPIOB, &GPIO_InitStruct_led);
}

 

и

 

#define LED_Greeen_On (GPIOC->BSRR = GPIO_Pin_9)
#define LED_Blue_On (GPIOC->BSRR = GPIO_Pin_8)
#define LED_Greeen_Off (GPIOC->BRR = GPIO_Pin_9)
#define LED_Blue_Off (GPIOC->BRR = GPIO_Pin_8)
#define LED_Green_Toggle (GPIOC->ODR ^= GPIO_Pin_9)
#define LED_Blue_Toggle (GPIOC->ODR ^= GPIO_Pin_8)
#define Butt_User_Get_State (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0))
// led out config
#define DATA_LED_1 (GPIOB->BSRR = GPIO_Pin_13)
#define DATA_LED_0 (GPIOB->BRR = GPIO_Pin_13)
#define CLOCK_LED_1 (GPIOB->BSRR = GPIO_Pin_14)
#define CLOCK_LED_0 (GPIOB->BRR = GPIO_Pin_14)
#define LATCH_LED_1 (GPIOB->BSRR = GPIO_Pin_15)
#define LATCH_LED_0 (GPIOB->BRR = GPIO_Pin_15)

 

Если настраиваю другой порт например: PORTA

То все работает...

 

Подозреваю что умер у меня в отладчике порт В :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...