Перейти к содержанию
    

STM32H7 поведение буфера при передаче в функцию

Интересно, как вы, позиционирующие себя как профи (ну судя по щедро выдаваемым вами оценкам) шли к своим знаниям? Изучение примеров от ST помогает не особо: они там щедро пользуются флагами, которые тащат по библиотекам, перемещают данные не думая об оптимальности (примера с перемещением данных по указателю я не встречал, хотя пересмотрел их десятки), да и задачи такие как у меня там не решаются (нарезка и перекладывание данных, например). В Кернигане рассматриваются возможности языка си и стандартной библиотеки, не особо подходит (что ни умаляет значимости книги). Может конференции, более опытные наставники, специфическая литература, например, Хезфилд?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 08.08.2024 в 02:31, Turgenev сказал:

Может конференции, более опытные наставники, специфическая литература, например, Хезфилд?

Мне понравилась вот эта: Стивен Прата Язык программирования C. Лекции и упражнения

Ну и надо читать много чужого кода, пытаться понять почему делают так и не эдак, думать и потом задавать вопросы)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 25.07.2024 в 11:53, Turgenev сказал:

 В таком виде функция заполнит экземпляр структуры не полностью:

  Показать контент

image.png.1d77533f095fcabaff9b226aec0dc458.png

Но если пройти пошагово в отладчике по этой функции или поставить точку останова сразу после строчки int32_t res = MT25QL512ABB_ReadSTR_DMA..., а потом продолжить выполнение или раскомментировать 3 строчки после /* ЗАКОММЕНТИРОВАНО!!! */, то заполняется правильно (видно инкремент во всех полях):

  Показать контент

image.png.7c732665bb3ba3f2bc4ee469fdae8667.png

Не могу понять в чем дело, указатель на массив вроде передал правильно (смотрел примеры на этом форуме), читает данные из памяти в массив rx_data_QSPI всегда правильно. Не посоветуете в чем тут может быть дело? Буду признателен за любые советы и критику (за конструктивную так особенно).

В кейле поставьте галку Periodic Window Update во вкладке View при отладке. И не забывайте, что если в Watch структура "раскрыта", то после того как в ней данные обновились - "скройте" и "раскройте" обратно ее - и данные там обновятся. Это помимо всяких гонок с DMA, в суть которых я не вникал.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...