STM32CubeIDE (вопросы и ответы)

А как? У меня не получилось. Вообще что 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

три лишних щелчка мыши

1 лайк

Понял. Но так отладка не работает же?

а я ей не пользуюсь, давно.

Проще поднять какой нибудь 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;
}


1 лайк

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

Абалдеть.
GD дороже ST…

так это патамушта DEVICE_ID читается без проблем))

2 лайка

читаю с интересом.
Я правильно понял, что достаточно подключить к ПК по USB-UART, чтобы регистр начал отдавать ненулевые значения?
Это что же, любое подключение к ПК активирует дебаг-мод?