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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Мелкие вопросы
=L.A.=
сообщение Dec 14 2015, 07:51
Сообщение #16


Знающий
****

Группа: Участник
Сообщений: 794
Регистрация: 4-09-06
Из: Москва(ЗелАО), РФ
Пользователь №: 20 055



Цитата(Сергей Борщ @ Dec 14 2015, 09:58) *
SysTick timer и использует. Из ядра. И его описание, соответственно, в описании ядра. Кстати, и вектор SysTick_Handler находится среди векторов ядра (всяких xxxAbort_Handler и т.п.).
.

Спасибо. Главное для меня, что это отдельный от всех остальных таймер и если включено SysTick, то другие таймеры можно использовать. В доках на ядро F0 о таймере SysTick написано крайне мало. Даже Гугль ничего не находит sm.gif

А вектор ( приоритет SysTick ) попробую переставить пониже в файле startup_stm32f051.s Вдруг подействует?


--------------------
-Кто-то работает на совесть, а кто-то на других заказчиков.-
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Dec 14 2015, 08:38
Сообщение #17


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(=L.A.= @ Dec 14 2015, 10:51) *
В доках на ядро F0 о таймере SysTick написано крайне мало. Даже Гугль ничего не находит sm.gif

PM0215, "STM32F0xxx Cortex-M0 programming manual", раздел 4.4, 4 страницы с картинками.
Гугль. Результатов: примерно 18 600. Попробуйте сменить интернет.

Цитата(=L.A.= @ Dec 14 2015, 10:51) *
А вектор ( приоритет SysTick ) попробую переставить пониже в файле startup_stm32f051.s Вдруг подействует?
В файле вы можете перставлять что угодно, а в кристалле вектора прибиты к своим адресам гвоздями. Про приоритеты написано в том же описании в разделе 2.2, этот раздел аж из 6 страниц.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
=L.A.=
сообщение Dec 14 2015, 12:53
Сообщение #18


Знающий
****

Группа: Участник
Сообщений: 794
Регистрация: 4-09-06
Из: Москва(ЗелАО), РФ
Пользователь №: 20 055



Цитата(Сергей Борщ @ Dec 14 2015, 11:38) *
PM0215, "STM32F0xxx Cortex-M0 programming manual", раздел 4.4, 4 страницы с картинками.


Эту доку читал, но интересовался не описанием регистров, а связью SysTick c другими таймерами, о чем в
в Programming manual не написали. Можно сравнить адреса регистров, но надо обратить специальное внимание, что я уже сделал.

Теперь добавил в программу инициализацию TIM6 и установку прерывания по этому таймеру. ИАР выдает ошибку
Error while running Linker :

Error[Li005]: no definition for "NVIC_Init" [referenced from C:\ARM\2_PROJ\1Prb32F0\EWARMv5\Release\Obj\01PrbDsc.o]

Что ему не нравится?

Код
*
//#########################    
// /* TIM6 is used to  */
//
  NVIC_InitTypeDef            NVIC_InitStructure;
  TIM_TimeBaseInitTypeDef     TIM_TimeBaseStructure;
//
/* TIMER clock enable */
//
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM6 , ENABLE);

/* Enable the TIMER global Interrupt */

  NVIC_InitStructure.NVIC_IRQChannel = TIM6_DAC_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
//
  NVIC_Init(&NVIC_InitStructure);
//
  TIM_TimeBaseStructure.TIM_Period = 5000;
  TIM_TimeBaseStructure.TIM_Prescaler = 32;
  TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
//
  TIM_TimeBaseInit(TIM6, &TIM_TimeBaseStructure);
//
/* TIM IT enable */
  TIM_ITConfig(TIM6, TIM_IT_Update , ENABLE);
//
/* TIM enable counter */
//
   TIM_Cmd(TIM6, ENABLE);    
//-------


Сообщение отредактировал =L.A.= - Dec 14 2015, 13:18


--------------------
-Кто-то работает на совесть, а кто-то на других заказчиков.-
Go to the top of the page
 
+Quote Post
=L.A.=
сообщение Dec 14 2015, 15:01
Сообщение #19


Знающий
****

Группа: Участник
Сообщений: 794
Регистрация: 4-09-06
Из: Москва(ЗелАО), РФ
Пользователь №: 20 055



Цитата(=L.A.= @ Dec 14 2015, 15:53) *
Error while running Linker :

Error[Li005]: no definition for "NVIC_Init" [referenced from C:\ARM\2_PROJ\1Prb32F0\EWARMv5\Release\Obj\01PrbDsc.o]


Нашел. Оказалось, что функция void NVIC_Init(....) спрятана в файле
stm32f0xx_misc.c

Цитата(Сергей Борщ @ Dec 14 2015, 11:38) *
В файле вы можете перставлять что угодно, а в кристалле вектора прибиты к своим адресам гвоздями. Про приоритеты написано в том же описании в разделе 2.2, этот раздел аж из 6 страниц.
.

Насчет "прибитых гвоздями" векторов. Прочитал доку. Вижу таблицу с непонятными словами "settable". Что бы это значило? sm.gif Гугля спросить или интернет поменять?




--------------------
-Кто-то работает на совесть, а кто-то на других заказчиков.-
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Dec 14 2015, 15:49
Сообщение #20


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(=L.A.= @ Dec 14 2015, 18:01) *
Что бы это значило?

Что приоритет можно установить, что же еще? Позиция вектора от этого не изменится.
Go to the top of the page
 
+Quote Post
Ruslan1
сообщение Dec 15 2015, 13:35
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025



Вопрос по определению USB подключения на STM32F0:

Обязательно ли нужно в STM32F0 (STM32F070) для работы с USB задействовать какой-то вывод МК кроме DP,DM для определения факта подключения (наличия VBUS) и начала инициализации USB соединения? Отдельный вывод под контроль VBUS очень не хочется, ножек не хватает.

Для DFU программатора ему это не нужно: только DP и DM, внешний pull-up резистор на DP не нужен- есть свой управляемый внутри МК.
A как для обычной работы, делать периодическое сканирование? USB планирую использовать просто как консоль, то есть пауза от подключения до детектирования может быть хоть 10 секунд, это не проблема. Но жалко много ресурсов МК тратить на сканирование интерфейса, который обычно выключен.
Много ли вычислительных ресурсов периодическое сканирование на предмет наличия USB подключения занимает?
Go to the top of the page
 
+Quote Post
=L.A.=
сообщение Jan 11 2016, 18:16
Сообщение #22


Знающий
****

Группа: Участник
Сообщений: 794
Регистрация: 4-09-06
Из: Москва(ЗелАО), РФ
Пользователь №: 20 055



STM32F0xxx

Приоритет SysTick устанавливается программно. Тактовая частота - как в примерах: HSE (HSI) на 8 МГц, умножитель на 6, то есть имеем 48 МГц тактирование ядра.

Код
//**************************************************************************//
//  Установка периода SysTick  5 мс  
//==========================================================================//
    SysTick_Config(SystemCoreClock/200);
//
    NVIC_SetPriority(SysTick_IRQn, 2);  // IRQ Priority = 2

//
//
.....................
//
//**************************************************************************//
//  IRQ  SysTickTimer  с периодом 5 мс
//==========================================================================//
void SysTick_Handler(void)
{
//
....trtrtrtrtrtrtrtrtrtrtr....
//
}


Сообщение отредактировал =L.A.= - Jan 12 2016, 06:34


--------------------
-Кто-то работает на совесть, а кто-то на других заказчиков.-
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jan 11 2016, 21:35
Сообщение #23


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(=L.A.= @ Jan 11 2016, 20:16) *
Приоритет SysTick устанавливается программно.
Да. Это влияет на адрес вектора? Или вы о чем-то другом хотели сказать?


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
esaulenka
сообщение Jan 12 2016, 14:09
Сообщение #24


Профессионал
*****

Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877



Цитата(Ruslan1 @ Dec 15 2015, 16:35) *
Вопрос по определению USB подключения на STM32F0:
Обязательно ли нужно в STM32F0 (STM32F070) для работы с USB задействовать какой-то вывод МК кроме DP,DM для определения факта подключения (наличия VBUS) и начала инициализации USB соединения? Отдельный вывод под контроль VBUS очень не хочется, ножек не хватает.


Про F0 ничего не скажу, не работал.
А вот в USB OTG более "толстых" камней есть чудная грабля - VBUS им обязателен. При низком уровне на этой ноге соединение само собой гасится, при появлении высокого - восстанавливается.
Я столкнулся с этим на F105, на ногу VBUS удобно лёг передатчик UART'а. Пока по UART'у ничего не передавалось, всё работало. Зато сразу после написания драйвера на этот UART начались произвольные пропадания данных в USB. Ремап ножек там очень убогий, пришлось много резать, к сожалению.

Собственно, предложений два:
- проверить (демо-плата есть?), что низкий уровень на отключенной ремапом ножке не приводит к фатальным последствиям
- инициализировать один раз, и потом просто сидеть и ждать прерывания от хоста. Правда, это не очень красиво, если устройство супер-малопотребляющее.


--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 19th July 2025 - 16:34
Рейтинг@Mail.ru


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