Был собран проект на плате STM32F103C8T6 BluePrill где всё прекрасно работает, но потребление тока оставляло желать лучшего.
Купил чип STM32L151C8T6A и запаял его вместо F103C8T6.
По даташиту ноги идут в "pin to pin", по рекомендации соеденил 1 и 48 ноги (на плате это VBAT и 3,3в) хотя и без этого работало..
Заливаю Blink просто изменив в ArduinoIDE плату на STM32L151C8T6A -- диод PC13 мигает как и положено.
Заливаю свой проект -- где подключено и РАБОТАЕТ:
--A2, A3 (Serial2 - SIM800L) приём вызова, приём/отправка смс
--B10, B11 (Software Serial - GPS) получение координат
--A0, A1 (цифровые выходы для управления нагрузкой) - ОСТАЛЬНЫЕ не хотят, как и диод на PC13 работающий из под блинка(
--A8 (Buzzer)
--B4 (датчик температуры DS18B20)
--B6,B7 (Дисплей HD44780)
НЕ РАБОТАЕТ:
--B0 аналоговый вход (Контроль напряжения) очень важный элемент. Пробовал разные пины не пашет(.
Может как-то связано с Vref
PS:
Вывод -- в FLPROG нет контроллера STM32L151, а используя F103CBT6 получаем какое-то внутреннее несоответствие, но если писать код непосредственно в ArduinoIDE то работает.
Предлагали сделать минимум два действия: в CubeMX сравнить распиновку питания и потом в конфигурационных файлах библиотеки ядра (типа variant_generic.h , PeripheralPins.c и подобных) сравнить назначение пинов (портов), установил попробовал не понял)) (ну не силён я в програмировании, поэтому и юзаю FLPROG)
Может есть знающие люди сделать описание в файл STM32L151C8T6A.cdl
Вот мой недоделанный
STM32F103C8T6 BluePrill замена чипа на STM32L151C8T6A
STM32F103C8T6 BluePrill замена чипа на STM32L151C8T6A
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Полковник
- Сообщения: 4183
- Зарегистрирован: 12 фев 2016, 11:40
- Откуда: Шатура
- Имя: Энвер
- Благодарил (а): 173 раза
- Поблагодарили: 219 раз
Re: STM32F103C8T6 BluePrill замена чипа на STM32L151C8T6A
"Вывод -- в FLPROG нет контроллера STM32L151" - Ваш вывод верен.mmn71 писал(а): 07 сен 2025, 10:57 PS:
Вывод -- в FLPROG нет контроллера STM32L151, а используя F103CBT6 получаем какое-то внутреннее несоответствие, но если писать код непосредственно в ArduinoIDE то работает.
Вот мой недоделанный stm32l1.cdl
В RT_HW_Base.h потребуется добавить этот контроллер, например по аналогии в файле BOARD_0103_STM32F103Cx.
У меня нет в наличии такого чипа, добавлять без тестирования и изучения не стоит.
Попробуйте самостоятельно.
С уважением, ecoins.
Re: STM32F103C8T6 BluePrill замена чипа на STM32L151C8T6A
RT_HW_BASE.h
Строка 109, какой ставить API_**** (#include "API_0361_BOARD_STM32L1/BOARD_0151_STM32L151Cx.hpp" //--STM32L151Cx;)
BOARD_0151_STM32L151Cx.hpp
Строка 12, менять что-нибудь надо? (#define RT_HW_BOARD_CODE (uint8_t)70 //--Идентификатор выбора платы;)
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Полковник
- Сообщения: 4183
- Зарегистрирован: 12 фев 2016, 11:40
- Откуда: Шатура
- Имя: Энвер
- Благодарил (а): 173 раза
- Поблагодарили: 219 раз
Re: STM32F103C8T6 BluePrill замена чипа на STM32L151C8T6A
В основном Вы разобрались - но эта тема немного сложнее:mmn71 писал(а): 12 сен 2025, 15:42RT_HW_BASE.h
Строка 109, какой ставить API_**** (#include "API_0361_BOARD_STM32L1/BOARD_0151_STM32L151Cx.hpp" //--STM32L151Cx;)
BOARD_0151_STM32L151Cx.hpp
Строка 12, менять что-нибудь надо? (#define RT_HW_BOARD_CODE (uint8_t)70 //--Идентификатор выбора платы;)
RT_HW_BASE.h
BOARD_0151_STM32L151Cx.hpp
1.В Arduino нет плат BluePill L151C8T6A - соответственно Вы не сможете в Arduino IDE такую плату.
2.На скорую руку поправил Ваш файл и добавил его в RT_HW_BASE.h(вер.6.4.7 - приклеплен к сообщению)
3.В саму RT_HW_BASE.h добавлено не только описание, но и ссылка на него.
//=================================================================================================
// 0362. Выбор плат STM32L1
//=================================================================================================
#include "API_0362_BOARD_STM32L1/BOARD_0101_STM32L151Cx.hpp" //--STM32L151Cx;
4.При работе в Arduino IDE выбирать:
Generic L151C8Tx или Generic L151C8Tx
5.Пробуйте, вникайте, разбирайтесь, тестируйте.
Может быть полезен тест из меню Примеры: RT_HW_BASE -> 0601->DEBUG_Serialx->CORE10+RT_HW_BASE_Serial_v10_090125
С уважением, ecoins.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Re: STM32F103C8T6 BluePrill замена чипа на STM32L151C8T6A
Да, согласен, не всё так гладко получается.
Для моего случая (запустить один аналоговый вход) пришлось задействовать "костыль" в виде пользовательского блока.
Теперь весь проект работает
Единственное, что дискретность вместо 4096 работает на 1024, но это не критично
Вот блок измерения напряжения на входе B0 для L151Cx, мож кому пригодится)
Для моего случая (запустить один аналоговый вход) пришлось задействовать "костыль" в виде пользовательского блока.
Теперь весь проект работает

Единственное, что дискретность вместо 4096 работает на 1024, но это не критично
► Показать
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Полковник
- Сообщения: 4183
- Зарегистрирован: 12 фев 2016, 11:40
- Откуда: Шатура
- Имя: Энвер
- Благодарил (а): 173 раза
- Поблагодарили: 219 раз
Re: STM32F103C8T6 BluePrill замена чипа на STM32L151C8T6A
Хорошо что у Вас получилось, поздравляю.mmn71 писал(а): 14 сен 2025, 11:53 Да, согласен, не всё так гладко получается.
Для моего случая (запустить один аналоговый вход) пришлось задействовать "костыль" в виде пользовательского блока.
Теперь весь проект работает![]()
Единственное, что дискретность вместо 4096 работает на 1024, но это не критичноВот блок измерения напряжения на входе B0 для L151Cx, мож кому пригодится)► Показать
U_IN_(Code_-_Basic).ubi
Несколько ремарок:
1.Вы используете прямое обращение.
Возможно использовать и штатные возможности FLProg - тогда и значение с ADC будет 0-4095.
Библиотеки настраивают на этот диапазон независимо от выбранного в Arduino IDE (!!!) контроллера.
При желании диапазон может быть изменен.
2.В блоке Вы применили "запрещенную" функцию delay()
u_in = analogRead(PB0);
delay(100);
u_out = u_in;
По проекту у Вас проект по сути в каждом цикле loop() будет "тормозить" на 100ms.
3.В проекте выводите на дисплей старый. Он тоже достаточно "тормозной".
Используйте новый LCD из левого меню, раздел "Отображение". Он и проще, не требует блока конвертации, работает в фоновом режиме и потому практически не влияет на быстродействие контроллера (не "тормозит").
4."Тормозы" начинают неприятно и значительно начинают проявляться при росте проекта и добавление сложных методов, например при использование Modbus и прочего.
-----
Еще раз поздравляю что Вы не через простой путь достигли желаемого для Вас результата.
С уважением, ecoins.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей