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

 
 
> Как я накололся с stm32f10x.h, врагу не пожелаю
ViKo
сообщение Feb 9 2014, 09:29
Сообщение #1


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Cоздаю свои SystemInit функции (как и все остальные, по мере понимания). Очередная - не работает! Процессор вылетает неизвестно куда, в фаулты, даже до обработчика HardFault не добирается! В Кейле, в отладчике, на реальной плате вижу.
Хотя предыдущая функция (в том же файле была, повезло) - работает. Ищу отличия - не нахожу! Смотрю в отладчике - все биты RCC одинаковые.
Там с десяток выражений, что только не сравниваю, заменяю, комментирую - везде одинаково. Добрался до латентности. В нерабочей:
Код
/* Задать использовать буфер предвыборки Flash, 2 цикла ожидания */
    FLASH->ACR =
    FLASH_ACR_LATENCY_0 * 2 |  // LATENCY[2:0] bits (Latency)
    FLASH_ACR_HLFCYA    * 0 |      // Flash Half Cycle Access Enable
    FLASH_ACR_PRFTBE    * 1;      // Prefetch Buffer Enable

В рабочей:
Код
/* Задать использовать буфер предвыборки Flash и 2 цикла ожидания
   (half cycle access can only be used with a low-frequency clock of less than 8 MHz
   that can be obtained with the use of HSI or HSE but not of PLL) */
  FLASH->ACR = FLASH_ACR_PRFTBE
             | FLASH_ACR_LATENCY_1;    // 2 WS

Смотрю в stm32f10x.h. А там биты заданы так:
Код
#define  FLASH_ACR_LATENCY                   ((uint8_t)0x03)               /*!< LATENCY[2:0] bits (Latency) */
#define  FLASH_ACR_LATENCY_0                 ((uint8_t)0x00)               /*!< Bit 0 */
#define  FLASH_ACR_LATENCY_1                 ((uint8_t)0x01)               /*!< Bit 0 */
#define  FLASH_ACR_LATENCY_2                 ((uint8_t)0x02)

То есть, не так, как везде, описываются именно биты, как, например:
Код
#define  RCC_CFGR_PLLMULL_0                  ((uint32_t)0x00040000)

а состояния латентности.
В результате, латентность у меня не устанавливалась, доступ к памяти сбоил. Когда задал
Код
    FLASH->ACR =
    FLASH_ACR_LATENCY_2 |    // LATENCY[2:0] bits (Latency)
    FLASH_ACR_HLFCYA    * 0 |    // Flash Half Cycle Access Enable
    FLASH_ACR_PRFTBE    * 1;    // Prefetch Buffer Enable

все заработало.
Что интересно, и вторая функция была с неправильной установкой латентности = 1, но, тем не менее каким-то чудом работала. На 72 MHz, STM32F103.
Уже чешутся руки взяться за правку stm32f10x.h, но боюсь запутаться между проектами.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
A. Fig Lee
сообщение Feb 9 2014, 14:13
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 974
Регистрация: 4-04-08
Из: далека
Пользователь №: 36 467



А зачем все это?
Я сразу беру main() и поехал.
Вроде ж все по дефоулту уже придумано


--------------------
Верить нельзя никому, даже себе. Мне - можно.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Feb 9 2014, 14:57
Сообщение #3


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(A. Fig Lee @ Feb 9 2014, 17:13) *
А зачем все это?
Я сразу беру main() и поехал.
Вроде ж все по дефоулту уже придумано

В библиотеку не хожу. Не хочу пользоваться. У меня - просто, понятно...
Еще прикол - биты USB_CNTR_FRES и т.д. - описаны, а самой структуры USB в stm32f10x.h - нет! w00t.gif
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- ViKo   Как я накололся с stm32f10x.h   Feb 9 2014, 09:29
- - SII   Так здесь же уже не отдельные биты, а целое битово...   Feb 9 2014, 11:21
|- - ViKo   Цитата(SII @ Feb 9 2014, 14:21) Так здесь...   Feb 9 2014, 11:43
|- - Сергей Борщ   Пишу так: Код2 * (FLASH_ACR_LATENCY & ~FLA...   Feb 9 2014, 12:28
|- - ViKo   Цитата(Сергей Борщ @ Feb 9 2014, 15:28) П...   Feb 9 2014, 12:47
|- - Сергей Борщ   Цитата(ViKo @ Feb 9 2014, 14:47) Видимо, ...   Feb 9 2014, 17:59
|- - mantech   Цитата(ViKo @ Feb 9 2014, 18:57) В библио...   Feb 9 2014, 16:09
||- - _Артём_   Цитата(mantech @ Feb 9 2014, 19:09) А что...   Feb 9 2014, 19:15
||- - mantech   Цитата(_Артём_ @ Feb 9 2014, 23:15) Если ...   Feb 10 2014, 12:43
|- - Boriska   Цитата(ViKo @ Feb 9 2014, 18:57) В библио...   Feb 12 2014, 14:00
|- - ViKo   Цитата(Boriska @ Feb 12 2014, 17:00) А мо...   Feb 12 2014, 14:08
|- - mantech   Цитата(ViKo @ Feb 12 2014, 18:08) RCC-...   Feb 12 2014, 17:27
||- - ViKo   Цитата(mantech @ Feb 12 2014, 20:27) ...   Feb 12 2014, 17:34
|- - Boriska   Цитата(ViKo @ Feb 12 2014, 18:08) Преимущ...   Feb 13 2014, 05:57
- - ViKo   Еще хотите ужасов? - В stm32f10x.h напрочь отсутст...   Feb 10 2014, 09:52
- - ViKo   Плетясь в хвосте у библиописателей, всегда огранич...   Feb 10 2014, 12:49
|- - MrYuran   Цитата(ViKo @ Feb 10 2014, 16:49) Плетясь...   Feb 12 2014, 11:46
|- - kolobok0   Цитата(MrYuran @ Feb 12 2014, 15:46) ..Та...   Feb 12 2014, 12:41
- - ViKo   Мелкий аргумент. CppCheck только что выдала замеча...   Feb 12 2014, 10:03
|- - mantech   Цитата(ViKo @ Feb 12 2014, 14:03) Мелкий ...   Feb 12 2014, 11:16
|- - ViKo   Цитата(mantech @ Feb 12 2014, 14:16) Вида...   Feb 12 2014, 11:21
- - ViKo   Если хотите очевидного, продемонстрируйте инициали...   Feb 13 2014, 07:00
|- - Boriska   Цитата(ViKo @ Feb 13 2014, 11:00) Если хо...   Feb 13 2014, 12:50
- - ViKo   Для STM32F100, 103. Такты задаю раньше, одной кома...   Feb 13 2014, 13:35
|- - Falkon_99   от стандартных CMSIS предпочитаю не отказыватся, т...   Feb 14 2014, 09:31
|- - Boriska   Цитата(ViKo @ Feb 13 2014, 17:35) Для STM...   Feb 14 2014, 11:20
|- - ViKo   Цитата(Boriska @ Feb 14 2014, 14:20) В пр...   Feb 14 2014, 11:25
- - andrewlekar   ЦитатаМеня подмывает перенести все дефайны распред...   Feb 17 2014, 05:13
- - _Pasha   libopencm3 как вариант.   Feb 17 2014, 06:11


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

 


RSS Текстовая версия Сейчас: 20th August 2025 - 09:26
Рейтинг@Mail.ru


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