Vlad_G 8 1 декабря, 2023 Опубликовано 1 декабря, 2023 · Жалоба Вот спрошу, но прошу не посылать. STM32F030R8, впрочем это роли не играет. Воспользовался встроенным автоконфигуратором для первоначальной настройки железа, типа надоело мне вручную всё делать, а тут быстро, но непонятно. Итак, система выдала код, как пример, относится к любому другому железу внутри мк: static void MX_SPI1_Init(void) { /* SPI1 parameter configuration*/ hspi1.Instance = SPI1; hspi1.Init.Mode = SPI_MODE_MASTER; hspi1.Init.Direction = SPI_DIRECTION_2LINES; hspi1.Init.DataSize = SPI_DATASIZE_8BIT; hspi1.Init.CLKPolarity = SPI_POLARITY_LOW; hspi1.Init.CLKPhase = SPI_PHASE_1EDGE; hspi1.Init.NSS = SPI_NSS_SOFT; hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_4; hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB; hspi1.Init.TIMode = SPI_TIMODE_DISABLE; hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; hspi1.Init.CRCPolynomial = 7; hspi1.Init.CRCLength = SPI_CRC_LENGTH_DATASIZE; hspi1.Init.NSSPMode = SPI_NSS_PULSE_DISABLE; if (HAL_SPI_Init(&hspi1) != HAL_OK) { Error_Handler(); } } К примеру, возьмём строчку: hspi1.Init.NSSPMode = SPI_NSS_PULSE_DISABLE; По смыслу это: SPI1->CR2 бит 3 (NSSP). По записи: SPI_NSS_PULSE_DISABLE я нашел в системе к какому биту относится. Но вот, что запись: hspi1.Init.NSSPMode относится к SPI1->CR2 я не нашел. Можно ли найти к какому регистру относится: hspi1.Init.NSSPMode ? И где искать? И как искать? Пункт меню - Open Declaration - в данном случае не помогает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrYuran 29 1 декабря, 2023 Опубликовано 1 декабря, 2023 · Жалоба Это инициализация структуры хендла, а собственно инициализацию смотрите в HAL_SPI_Init() % тот неловкий момент, когда даже не знаешь, что такое CubeIDE 1.8 )) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Obam 38 1 декабря, 2023 Опубликовано 1 декабря, 2023 · Жалоба ...типа надоело мне вручную всё делать, а тут быстро, но непонятно. Почему-то припомнился ныне неживой юморист Арлазоров \пришепётывая\: "Мужик, тебе как пошчитать: быстро или точно?" Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EdgeAligned 85 2 декабря, 2023 Опубликовано 2 декабря, 2023 (изменено) · Жалоба 20 часов назад, Vlad_G сказал: И где искать? И как искать В референс-мануале RM0360, в главе SPI А так же следует почитать мануал на HAL, он есть на сайте st.com. И так же можно посмотреть исходные тексты самого HAL, там как раз четко будет написано, что как и куда. Неоднократно уже подмечено - кто использует Cube HAL, тот никогда не читает мануалов вообще. Это, кагбе, модус вивенди, диагносс... Изменено 2 декабря, 2023 пользователем EdgeAligned Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vlad_G 8 4 декабря, 2023 Опубликовано 4 декабря, 2023 · Жалоба В 02.12.2023 в 08:28, EdgeAligned сказал: В референс-мануале RM0360, в главе SPI Вы невнимательно прочитали мой пост. Ну да ладно, бывает. В 01.12.2023 в 12:06, MrYuran сказал: собственно инициализацию смотрите в HAL_SPI Это чума какая-то... Накопал: Instance->CR2, Instancе - базовый адрес SPI. Получается, что халовское Instance->CR2 соответствует сээмсисному SPI1->CR2. Проблема решилась и без HAL. SPI при моей инициализации "вылетал-зависал" вскорости после запуска, а инициализация автоконфигуратором работала нормально. Битики, которые на первый взгляд кажутся таксебешными, играют роль. Работает уже три с половиной часа, погоняю до пятницы, если не глюкнет, значит - ОК. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться