Jump to content
    

scmRTOSv310 на STM32F217

Установил scmRTOS на STM32F217 (платка от stаrterkit). Проект для IAR6.21 прилагается.

Порт для stm32f2xx взял от stm32f10x (особо и переделыватьл ничего не пришлось)

Вроде все работает.

Наблюдаются холостой ход, прерывания системного таймера, даже USART1 работает по прерываниям.

Но всеравно возникают вопросы.

1. В файле scmRTOS_TARGET_CFG.h Как правильно выставить параметры если системная частота 120 мГц

// Define SysTick clock frequency and its interrupt rate in Hz.
#define SYSTICKFREQ     8000000
#define SYSTICKINTRATE  500

 

2.Прерывания работают без участия ОС

Подключение (отключение) к проекту файла stm32f10x_vector.c никак на работе прерываний не сказывается

Похоже, что операционка вообще в этом не учавствует.

Правда для работы прерываний пришлось к проекту подключить startup_stm32f2xx.s

 

Вобщем основная непонятка с прерываниями.

Ведь они должны пропускаться через ОС. Или все не так?

GnrScmRtos310IarArmv6Prj.rar

Share this post


Link to post
Share on other sites

1. В файле scmRTOS_TARGET_CFG.h Как правильно выставить параметры если системная частота 120 мГц

// Define SysTick clock frequency and its interrupt rate in Hz.
#define SYSTICKFREQ     8000000
#define SYSTICKINTRATE  500

 

2.Прерывания работают без участия ОС

Подключение (отключение) к проекту файла stm32f10x_vector.c никак на работе прерываний не сказывается

Похоже, что операционка вообще в этом не учавствует.

Правда для работы прерываний пришлось к проекту подключить startup_stm32f2xx.s

 

Вобщем основная непонятка с прерываниями.

Ведь они должны пропускаться через ОС. Или все не так?

1. По аналогии - указываете частоту процессора в герцах и желаемую частоту прерываний таймера, к примеру:

#define SYSTICKFREQ     120000000
#define SYSTICKINTRATE  200

где частота процессора 120 МГц, частота прерывания системного таймера - 200 Гц.

 

2. С прерываниями, скорее, наоборот - ОС "пропускается" через нужные прерывания, точнее её сервисы.

Необходимо только одно прерывание - системного таймера, чтобы ОС могла отсчитывать временные промежутки и переключать процессы.

 

Для использования сервисов ОС в любых других прерываниях - нужно включить в код обработчика "обёртку" TISRW:

void    DMAC_IrqHandler(void)
{
    OS::TISRW isr;

    ... code ...
    
    dmac_cbtc_mci.signal_isr();
    
    ... code ...
}

Почитайте лучше мануал к ОС, там всё разжёвано.

Share this post


Link to post
Share on other sites

Спасибо.

Мануал прочитал. В общих чертах все понятно.

Сделал новый проектик. Все работает без startup_stm32f2xx.s

 

Но один вопрос так и непонимаю.

 

Как запускается система тактирования stm32 в ОС?

 

Получается, что по умолчанию все рабртает от внутреннего генератора (вроде на частоте 8 мГц).

ST для управления системой тактирования предлагает файл system_stm32f2xx.c, где можно управлять разными клоками и их частотой. Но для его запуска нужен также startup_stm32f2xx.s

где какраз вызывается инициализация клоков. Но там есть еще и установка стеков, прописка векторов прерываний. Не помешает ли это правильной работе прерываний в ОС? Ведь порт имеет свой файл со списком векторов stm32f10x_vector.c.

 

Подключил пока только system_stm32f2xx.c и перед запуском ОС вызвал SystemInit();

Клок изменился. Сомневаюсь все ли я правильно сделал...

Edited by Acvarif

Share this post


Link to post
Share on other sites

Как запускается система тактирования stm32 в ОС?

Вообще-то, тактирование процессора - есть вещь ортогональная к ОС. Настройка аппаратуры процессора - это зона ответственности прикладного проекта, а не кода системы. Инициализация объектов системы происходит в конструкторах оных объектов. Конструкторы по стандарту вызываются после статической инициализации (которая отвечает за инициализацию объектов встроенных типов) до вызова main(). Как я понимаю, там же должен быть рабочий пример (и не один, а целых три), почему не посмотреть, как там люди сделали?

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...