А как? У меня не получилось. Вообще что CR, что ID_CODE в DBGMCU нули при включении без ПК.
к тому, что у меня не получилось включить режим отладки из пользовательской программы, может у кого получится, поделиться как это сделать
Вы реально верите что получите в Arduino IDE чистый эксперимент?
Даже пустой код в Stm32cubeide получается не маленьким. Хз что там и как в arduino ide инициализируется.
На gd32f103 могу эксперимент сделать, но никак не раньше ноября.
ну я не знаю, библиотеки те же, CMSIS, LL, HAL
Тоже верно, пишите, если будут новости по эксперименту.
откопал у себя CH32F103C8T6, не получилось у меня получить нулевой ID CODE.
/**
******************************************************************************
* @file : main.c
* @author : Auto-generated by STM32CubeIDE
* @brief : Main program body
******************************************************************************
* @attention
*
* Copyright (c) 2025 STMicroelectronics.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
* in the root directory of this software component.
* If no LICENSE file comes with this software, it is provided AS-IS.
*
******************************************************************************
*/
#include <stdint.h>
#include "stm32f10x.h"
constexpr unsigned int periodTog = 100000;
int main(void) {
// init PC13 led
RCC->APB2ENR |= RCC_APB2ENR_IOPCEN; // GPIO port C
GPIOC->CRH |= GPIO_CRH_MODE13_0; // 01: Output mode, max speed 10 MHz.
// off debug mode
DBGMCU->CR = 0x00000000; //POR Reset: 0x0000 0000 (not reset by system reset)
AFIO->MAPR = AFIO_MAPR_SWJ_CFG_DISABLE; // JTAG-DP Disabled and SW-DP Disabled
// test id chip
if ((DBGMCU->IDCODE & DBGMCU_IDCODE_DEV_ID) == 0x410)
GPIOC->BSRR |= GPIO_BSRR_BR13; // PC13 LOW // build led on
else
GPIOC->BSRR |= GPIO_BSRR_BS13; // PC13 HIGH // build led off
/* Loop forever */
while (1) {
}
}
Етить-колотить, ты периодически на марс телепортируешься или что? ))
При ПОДКЛЮЧЕННОМ ПК и у нас НЕ нулевой ID_CODE.
Ты на дисплей выведи (передернув питание после прошивки).
Код посмотрите, там светодиод загорается при правильном ID.
И да, конечно, я проверил и просто подключив комп через USB и просто подав питание и подключив ST-Link → во всех случайх IDCODE считывается корректно.
И это не настоящий СТМ, а копия от Гигадевайс.
Могу предположить, что GD просто исправили “косяк ST” в своих мк…
@andycat , а в какой IDE ты пишешь для GD?
А как куб у тебя не ругается, что МК “не настоящий”? )))
пофиг, я elf файл загружаю в МК с помощью STM32CubeProgrammer
три лишних щелчка мыши
Понял. Но так отладка не работает же?
а я ей не пользуюсь, давно.
Проще поднять какой нибудь uart и в него лог кидать printf.
#define USE_UART_AS_PRINT
extern "C" int __io_putchar(int ch) {
#ifdef USE_UART_AS_PRINT
f4uartWrite(ch);
#else
ITM_SendChar(ch);
#endif
return ch;
}
опять же, встроенный светодиод на плате - самый простой индикатор работоспособности и тем более зависания какого нибудь прерывания.
Абалдеть.
GD дороже ST…
так это патамушта DEVICE_ID читается без проблем))
читаю с интересом.
Я правильно понял, что достаточно подключить к ПК по USB-UART, чтобы регистр начал отдавать ненулевые значения?
Это что же, любое подключение к ПК активирует дебаг-мод?


