Доброго времени суток!
В Stm32cubeide почему то не видится заголовок. С заголовком транслируется, но даёт ошибку. Второй раз транслируется без ошибки, но заголовка не видит.
Короче вставлю программу, может поможете:
#ifndef MCP23S17_H_
#define MCP23S17_H_
#include <stdint.h>
#include "stm32l4xx_hal.h"
#include "MCP23S17.h"
// --------- Register list ---------
// ---------------------------------
// Using IOCON.BANK = 0
#define IODIRA 0x00
#define IODIRB 0x01
#define IPOLA 0x02
#define IPOLB 0x03
#define GPIINTENA 0x04
#define GPIINTENB 0x05
#define DEFVALA 0x06
#define DEFVALB 0x07
#define INTCONA 0x08
#define INTCONB 0x09
#define IOCON 0x0A
#define GPPUA 0x0C
#define GPPUB 0x0D
#define INTFA 0x0E
#define INTFB 0x0F
#define INTCAPA 0x10
#define INTCAPB 0x11
#define GPIOA_MCP 0x12
#define GPIOB_MCP 0x13
#define OLATA 0x14
#define OLATB 0x15
// --------- IOCON configs ---------
// ---------------------------------
// Using IOCON.BANK = 0
#define BANK_ON 0x80
#define BANK_OFF 0x00
#define MIRROR_ON 0x40
#define MIRROR_OFF 0x00
#define SEQOP_ON 0x20
#define SEQOP_OFF 0x00
#define DISSLW_ON 0x10
#define DISSLW_OFF 0x00
#define HAEN_ON 0x08
#define HAEN_OFF 0x00
#define ODR_ON 0x04
#define ODR_OFF 0x00
#define INTPOL_ON 0x02
#define INTPOL_OFF 0x00
#define ADDR_FIX_BIT 0b01000000
typedef struct MCP23S17 {
uint8_t hardware_addr;
uint8_t opcode;
uint16_t CS;
uint16_t t_buffer;
uint16_t r_buffer;
GPIO_TypeDef* peripheral;
SPI_HandleTypeDef spi_handler;
// int (*read_REG)(struct MCP23S17* mcp23s17, uint8_t reg_opcode, uint8_t reg_addr);
// void (*write_REG)(struct MCP23S17* mcp23s17, uint8_t reg_opcode, uint8_t reg_addr);
// int (*check_REG)(uint8_t reg_addr);
} MCP23S17;
void MCP23S17_Init(MCP23S17* mcp23s17, uint8_t hardware_addr, uint16_t CS, GPIO_TypeDef* peripheral, SPI_HandleTypeDef spi_handler);
uint8_t MCP23S17_read_REG(MCP23S17* mcp23s17, uint8_t reg_addr);
void MCP23S17_write_REG(MCP23S17* mcp23s17, uint8_t reg_addr, uint8_t config);
int MCP23S17_check_REG(uint8_t reg_addr);
#endif
BOOM
29.Ноябрь.2025 16:16:56
3
Ничего не понял. Что за ошибка? Когда появляется?
.h-файл положил в Inc, .c-файл в src?
Привет! При компилировании выдаёт ошибку - нет файла. Файлы положил в доступные каталоги, причём делал в разные. И нихера.
BOOM
29.Ноябрь.2025 16:25:46
5
Это как так? о_0
Для h-файлов определен один каталог - Inc.
Ну не совсем так. Там определяются доступные каталоги. К примеру /Drivers. Да хер с ним, я клал и в Core/Inc и в Drivers/Inc. Прописывал все пути. Нихера. Ошибка в программе или я эльфийка с грудями третьего размера.
BOOM
29.Ноябрь.2025 16:37:36
7
Ну ты вроде бы не новичок, должен понимать что нужно детально проблему описывать. Иначе все это как «гадание на хрустальном шаре» будет.
ЗЫ: Какой мк использовал в проекте?
А не могу… Если есть Stm32cubeide создай SPI1 и подключи класс из ГитХаба. Или я идиот.
Ну на блю пилл
BOOM
29.Ноябрь.2025 16:52:50
9
Подключил.
Только у меня нет репозитория для L4xx, я подключил к F4xx (соответственно поменял инклюд в .h-файле)…
#ifndef MCP23S17_H_
#define MCP23S17_H_
#include <stdint.h>
//#include "stm32l4xx_hal.h"
#include "stm32f4xx_hal.h"
// --------- Register list ---------
// ---------------------------------
// Using IOCON.BANK = 0
#define IODIRA 0x00
#define IODIRB 0x01
Ну и после компиляции на “выхлопе” вот это:
19:51:49 **** Incremental Build of configuration Debug for project 401_Blink ****
make -j12 all
arm-none-eabi-gcc "../Core/Src/main.c" -mcpu=cortex-m4 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F401xE -c -I../Core/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I../Drivers/CMSIS/Include -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Core/Src/main.d" -MT"Core/Src/main.o" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Core/Src/main.o"
arm-none-eabi-gcc -o "401_Blink.elf" @"objects.list" -mcpu=cortex-m4 -T"D:\STM32\workspace_1.6.0\401_Blink\STM32F401RETX_FLASH.ld" --specs=nosys.specs -Wl,-Map="401_Blink.map" -Wl,--gc-sections -static --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -Wl,--start-group -lc -lm -Wl,--end-group
Finished building target: 401_Blink.elf
arm-none-eabi-size 401_Blink.elf
arm-none-eabi-objdump -h -S 401_Blink.elf > "401_Blink.list"
arm-none-eabi-objcopy -O binary 401_Blink.elf "401_Blink.bin"
text data bss dec hex filename
8020 20 1732 9772 262c 401_Blink.elf
Finished building: default.size.stdout
Finished building: 401_Blink.bin
Finished building: 401_Blink.list
19:51:50 Build Finished. 0 errors, 0 warnings. (took 919ms)
Так что ищи где у тебя “косяк”, библиотека точно рабочая.
BOOM
29.Ноябрь.2025 16:53:51
10
mykaida:
Ну на блю пилл
Так может быть оно ругалось тоже на файл “stm32l4xx_hal.h”? Ты же вывод так и не показал… ))
Ну халавская библиотека вроде уже стандарт для STM32? Или я что-то пропустил?
Если бы чего не показал, так ответил бы “нет данных”, а он говорит, что нет файла.
BOOM
29.Ноябрь.2025 17:02:07
13
Не понял эту фразу. Если речь идет о “stm32l4xx_hal.h”, то этот заголовочный файл подключается если:
При создании проекта был выбран чип stm32l 4xx
По нажатии кнопки завершения создания проекта, если данный чип был выбран впервые, ИДЕ скачивает репозиторий с сайта ST. Если ты находишься в России, то скачать напрямую сейчас не получится (через VPN только).
Но, опять таки, библиотека “заточена” под чипы серии stm32l 4xx, причем тут блюпил со своим stm32f 103 ??
Спасибо!
Вот что значит зашоренность. stm32l 4xx - вот проблема. Разницы с stm32f 103 по SPI никакой. Спасибо - зашорен был!
BOOM
29.Ноябрь.2025 17:17:22
16
Ну и коль я скрин всё равно сделал )))
Ну коль скрин ты сделал, то и сделай скрин справа, там где про подключение файлов. Случаем там нет проблем?
За идиота меня не держите
BOOM
29.Ноябрь.2025 17:32:51
19
А что с ними не так?
Ну держи…
BOOM
29.Ноябрь.2025 17:35:09
20
Мда…
Отдохни, сделай перерыв до завтра. А завтра эту тему перечитай и сделай так как сделал я. Но опять таки… Библиотека “заточена” под stm32L 4xx, блюпил не катит. Даже в F 4xx пришлось инициализацию менять, так как она отличается.