Проблемы с Blue Pill (stm32f103c8t6) прямое манипулирование регистрами

Я пытаюсь получить доступ к регистрам, но постоянно получаю сообщение "не было объявлено в этой области" сообщение об ошибке. В настоящее время я использую платы STM32F1xx из http://dan.drown.org/stm32duino/package_STM32duino_index.json.

Пакет платы, похоже, не распознает ни один из регистров из справочного руководства, в основном пытаясь получить доступ к регистрам АЦП, таким как «ADC_CR2». Кто-нибудь знает, где я могу найти имена регистров, которые работают в Arduino IDE?

, 👍2

Обсуждение

Возможно, вам придется включить какой-то специальный заголовок. Не знаю, что, так как это не имеет ничего общего с Arduino., @Majenko

@Majenko Я использую платы «stm32duino», я думал, что они подключены к Arduino? :С, @Beacon of Wierd

stm32duino — это сторонний пакет, созданный Роджером Кларком. Ничего общего с Ардиуно. Роджер — это парень, с которым вам нужно поговорить об этом ядре — может быть, через проблемы с github, если оно там размещено, или найти его собственный форум, если он есть., @Majenko

https://www.stm32duino.com/, @Juraj


1 ответ


Лучший ответ:

0

вам нужно использовать что-то вроде этого:

ADC1->CR2 = ... ;

обратите внимание на 2 вещи:

  • вам нужно использовать ADC1, ADC2... для доступа к регистрам. не только ADC.
  • для доступа к регистрам необходимо использовать оператор со стрелкой (->)

и вам может понадобиться включить заголовочный файл, что-то вроде этого:

#include <stm32f030x6.h>

найдите правильный заголовочный файл для вашего MCU. (это не то же самое, что stm32f1xx, но если где-то сделать правильные определения, это тоже может работать)

,

Для всех, кто столкнулся с этой проблемой, регистры были названы, неожиданно для всех, «regs», поэтому ADC1->regs->CR2. Я все еще хотел бы знать, есть ли какой-нибудь простой способ увидеть, что содержит структура, для будущих проблем :), @Beacon of Wierd