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

 
 
> scmRTOSv310 на STM32F217
Acvarif
сообщение Dec 27 2011, 12:35
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 998
Регистрация: 27-08-08
Пользователь №: 39 850



Установил 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 ( 683.64 килобайт ) Кол-во скачиваний: 16
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
sonycman
сообщение Dec 27 2011, 14:08
Сообщение #2


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(Acvarif @ Dec 27 2011, 16:35) *
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 ...
}

Почитайте лучше мануал к ОС, там всё разжёвано.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 1st September 2025 - 12:19
Рейтинг@Mail.ru


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