|
Мелкие вопросы |
|
|
|
Dec 14 2015, 07:51
|

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

|
Цитата(Сергей Борщ @ Dec 14 2015, 09:58)  SysTick timer и использует. Из ядра. И его описание, соответственно, в описании ядра. Кстати, и вектор SysTick_Handler находится среди векторов ядра (всяких xxxAbort_Handler и т.п.). . Спасибо. Главное для меня, что это отдельный от всех остальных таймер и если включено SysTick, то другие таймеры можно использовать. В доках на ядро F0 о таймере SysTick написано крайне мало. Даже Гугль ничего не находит  А вектор ( приоритет SysTick ) попробую переставить пониже в файле startup_stm32f051.s Вдруг подействует?
--------------------
-Кто-то работает на совесть, а кто-то на других заказчиков.-
|
|
|
|
|
Dec 14 2015, 08:38
|

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

|
Цитата(=L.A.= @ Dec 14 2015, 10:51)  В доках на ядро F0 о таймере SysTick написано крайне мало. Даже Гугль ничего не находит  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)
|
|
|
|
|
Dec 14 2015, 12:53
|

Знающий
   
Группа: Участник
Сообщений: 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
--------------------
-Кто-то работает на совесть, а кто-то на других заказчиков.-
|
|
|
|
|
Dec 14 2015, 15:01
|

Знающий
   
Группа: Участник
Сообщений: 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". Что бы это значило?  Гугля спросить или интернет поменять?
--------------------
-Кто-то работает на совесть, а кто-то на других заказчиков.-
|
|
|
|
|
Jan 11 2016, 18:16
|

Знающий
   
Группа: Участник
Сообщений: 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
--------------------
-Кто-то работает на совесть, а кто-то на других заказчиков.-
|
|
|
|
|
Jan 12 2016, 14:09
|

Профессионал
    
Группа: Свой
Сообщений: 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. Ремап ножек там очень убогий, пришлось много резать, к сожалению. Собственно, предложений два: - проверить (демо-плата есть?), что низкий уровень на отключенной ремапом ножке не приводит к фатальным последствиям - инициализировать один раз, и потом просто сидеть и ждать прерывания от хоста. Правда, это не очень красиво, если устройство супер-малопотребляющее.
--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|