ST не рекомендует использовать хардварный сигнал NSS. Зачем вы в него упёрлись?
Сами управляйте выбором кристалла.
Я тут согласен, логика работы простейшая - проще и надежнее программно контролировать. Уже даже банально на обсуждение и поиск информации на порядок больше времени потрачено, чем заняла бы реализация.
Почитайте на досуге.
Лежат, пока админу место не потребуется.
Это он сам будет решать.
Как выставить пробел для выделенного текста в Keil?
Выделил несколько строчек кода и хочу для всех этих строчек кода применить пробел оптом.
Шифт+Таб работает в Keil, но в результате применения убираются пробелы в начале каждой строки.
@stm tab должен добавлять значит, я Keil просто сам не использую, не могу проверить.
Подключаю usb флеш накопитель к STM32.
STM32 настроен как хост.
f_mount, f_mkfs возвращают FR_DISK_ERR.
Событие HOST_USER_CLASS_ACTIVE наступает, то есть подключение флеш накопителя распознаётся.
Переходник Мини USB - USB до флеш накопителя короткий.
Пробовал с разными флеш накопителями.
Keil компилятор 6.19
Может у кого такое было?
В интернете возникала эта проблема у некоторых, но решение непонятное.
Некоторые пишут, что связано с программным обеспечением. Я переустановил Keil, поставил другой компилятор, ничего не меняется.
Нашёл решение.
Я долго пытался это исправить.
И это я уже тоже пробовал, что сейчас мне помогло.
Но почему то не срабатывало раньше это решение, не знаю почему.
Решение:
Вам надо для,
USB_OTG_FS_DM
USB_OTG_FS_DP
сделать Pull - up
Нет, это не причина.
Просто совпадение было. Что то не так с циклом while
Я нашёл причину:
Если я в main.c в цикле while пишу HAL_Delay(1000);
то f_mount возвращает FR_DISK_ERR.
Не важно до MX_USB_HOST_Process(); я пишу HAL_Delay или после MX_USB_HOST_Process();
Это можно как то исправить?
Это можно как то исправить?
Убрать задержку из цикла while() и вообще в основной цикл не ставить HAL_Delay(), тем более с таким огромным периодом.
По сути как это может работать, если обслуживание USB происходит раз в секунду.
Здесь
https://kkmspb.ru/development/microcontrollers/USB/USB-Device/Keil5-STM32CubeMX-Usb-Hid-working-fine.php
говорится об этой проблеме, но к сожалению причины не объяснены.
Предлагается задежки заменять таймером, но это ведь неудобно.
>По сути как это может работать, если обслуживание USB происходит раз в секунду.
И как мне работать с другими задачами без HAL_Delay, когда в цикле есть MX_USB_HOST_Process(); ?
Например мне надо работать с LCD дисплеем параллельно.
А без задержек там никак.
@stm FreeRTOS и разные задачи в разные таски.
Либо неблокирующие задержки, принцип такой - простейший вариант:
#define CALL_PERIOD 1000 uint32_t lastCallTimestampMs = 0; int main(void) { while (1) { if ((uwTick - lastCallTimestampMs) >= CALL_PERIOD) { // Call task every 1000 ms lastCallTimestampMs = uwTick; } // Other processes } }
Либо неблокирующие задержки
В данном случае, если при работе с дисплеем все на задержках, то нужно будет делать машину состояний для операций с дисплеем.