Кто любит RISC в жизни, заходим, не стесняемся.
Ответить

STM32F030F4P6 и сигнал SysTick (проблемы с HAL_Delay)

Вт июн 20, 2017 13:15:48

Захотелось мне побаловаться с самым дешевым контроллером от STM (Value-line). Сделал простейшую плату с гребенкой выводов, предусмотрел на ней регулятор напряжения, блокировочные конденсаторы, кварц с обвязкой и светодиод с резистором.

Припаял МК со светодиодом и решил проверить в работе, сгенерировал типовой проект в STM32Cube и добавил в while-цикл типичные две команды:

Код:
HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin);
HAL_Delay(500);


Кварц пока подключать не стал, оставил в проекте настройку тактирования от внутренней RC-цепочки МК HSI (как это в есть в проекте по-умолчанию).
Подключил к St-link и стал ждать мигания. Светодиод загорелся, а мигать почему-то не стал. Полез с отладчиком и обнаружил, что в HAL_Delay МК уходит в бесконечный цикл. Google подсказал, что не приходит прерывание по SysTick, поэтому внутренний счетчик не увеличивается и контроллер не знает, что время идет.

Подпаял кварц с обвязкой, подключил в Cube и тактирование от HSE и не меняя эти две строчки перекомпилировал проект. Светодиод замигал.

Облазил кучу статей и не понимаю, почему в данном случае от HSE системный таймер сам собой работает, а в случае HSI - не хочет.

На контроллерах STM32F100C4T6 все работало без внешнего генератора (подключал вообще без обвязки)
Вложения
IMG_7376_small.jpg
(170.39 KiB) Скачиваний: 823

Re: STM32F030F4P6 и сигнал SysTick (проблемы с HAL_Delay)

Вт июн 20, 2017 14:11:32

У меня STM32F030F4P6 с HSI отлично мигает от SysTick. Правда я не пользуюсь кубом.

Re: STM32F030F4P6 и сигнал SysTick (проблемы с HAL_Delay)

Вт июн 20, 2017 14:17:43

У этого МК не так много памяти. Лучше вместо куба и HAL взять SPL.

Проверьте работу прошивки из архива (находится в папке bin\Release). Светодиод нужно подключить к PB1.
Вложения
STM32F030F4P6_Blink.zip
(319.51 KiB) Скачиваний: 363

Re: STM32F030F4P6 и сигнал SysTick (проблемы с HAL_Delay)

Ср июн 21, 2017 11:25:18

Попробовал ваши прошивки - все работает.

Создал новый проект с тактированием от HSI и с теми же командами как были в первом случае - и снова работает. Бред какой-то, не может же впаянный кварц так влиять на МК...

Сорри за беспокойство

Re: STM32F030F4P6 и сигнал SysTick (проблемы с HAL_Delay)

Сб сен 29, 2018 19:29:25

Апну тему.

Обзавелся вот такой платкой на сабже:
https://github.com/STM32-base/STM32-bas ... BOARD-V1.1
Светодиод к ней подключен на порт PA4. Правильно ли я понимаю, что мне придется скорректировать часть строк кода мигалки светодиодом так?
Код:
#include "stm32f0xx_conf.h"
#include "SysTimer.h"

void GPIO_Conf(void) // Конфигурация портов ввода / вывода.
{
    GPIO_InitTypeDef s;

    RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE); // Включаем тактирование порта PA

    s.GPIO_Pin   = GPIO_Pin_4;       // Настройка вывода PA4.
    s.GPIO_Mode  = GPIO_Mode_OUT;     // Вывод настроен на одну из альтернативных функций.
    s.GPIO_OType = GPIO_OType_PP;    // Двухтактный выход (т. е. не открытый сток).
    s.GPIO_PuPd  = GPIO_PuPd_NOPULL; // Подтягивающие резисторы отключены.
    s.GPIO_Speed = GPIO_Speed_8MHz;

    GPIO_Init(GPIOA, &s);            // Инициализация порта.
}

int main(void)
{

    GPIO_Conf();
    SystemCoreClockUpdate();
    SysTim_Init(100);

    while(1)
    {
       GPIOA->ODR ^= GPIO_Pin_4;
       SysTim_DelayMS(500);
    }
}


И еще такой вопрос. Использовать хочу Atollic STM32 TrueStudio. Можно ли через эту среду запрограммировать такую плату через RS232? Или придется обзавестись программатором типа ST-Link? Мне просто не хочется связываться с коммерческими средами разработки.

Re: STM32F030F4P6 и сигнал SysTick (проблемы с HAL_Delay)

Сб сен 29, 2018 19:52:44

slyubez писал(а): Мне просто не хочется связываться с коммерческими средами разработки.
Для STM32 кроме TrueStudio есть много других бесплатных сред.

Re: STM32F030F4P6 и сигнал SysTick (проблемы с HAL_Delay)

Сб сен 29, 2018 19:58:22

Забыл. У меня одно важное условие - Linux. Эта студия имеет версию под пингвина.

Re: STM32F030F4P6 и сигнал SysTick (проблемы с HAL_Delay)

Сб сен 29, 2018 20:00:16

slyubez, SES однозначно...

Re: STM32F030F4P6 и сигнал SysTick (проблемы с HAL_Delay)

Сб сен 29, 2018 20:12:15

Спасибо за вариант. В понедельник у меня уже будет STLink. Хочу попробовать начать с ТруСтудией, а уже затем подумаю о других вариантах. Раньше не доводилось иметь дела с STMками, это первая проба.

Re: STM32F030F4P6 и сигнал SysTick (проблемы с HAL_Delay)

Пн окт 01, 2018 18:36:29

Можете ещё собрать Eclipse + ARM Plugin + OpenOCD. Отладка шустрая, хотя сама среда, работающая на Яве не очень быстро исполняется (возможно проблема с моим ПК, но тем не менее).
ST-Link понимается без проблем.

Re: STM32F030F4P6 и сигнал SysTick (проблемы с HAL_Delay)

Пн окт 01, 2018 19:00:36

Не стоит привыкать ни к клипсине ни ее производных (True studio), это наихудший вариант для нубов.

Re: STM32F030F4P6 и сигнал SysTick (проблемы с HAL_Delay)

Вт окт 02, 2018 20:38:34

С Эклипсом я уже работал на Джаве, так что он мне не в новинку. Нравится мне даже больше Идеи, хотя НетБинс понравился ещё больше.
Ответить