Посмотрите на изображение ниже, показывающее блок-схему процессора STM32 Cortex-M4. Я выделил ядро процессора (вверху слева); и другие компоненты, которые вы можете найти внутри микроконтроллера.
«Ядро» CPU, как следует из его названия, является просто «ядром»; но микроконтроллер также включает в себя память Fla sh, ОЗУ и ряд периферийных устройств; доступ ко всему внешнему ядру (кроме линий отладки) осуществляется через матрицу шин, это в равной степени относится к ПЗУ, ОЗУ и встроенным периферийным устройствам.
Обратите внимание, что основное различие между «микропроцессором» и «Микроконтроллер» - это то, что последний имеет выделенные периферийные устройства на плате.
Периферийные устройства на устройствах STM32 доступны ЦПУ через отображаемые в памяти входы / выходы, посмотрите на рисунок ниже:
Как видите, несмотря на линейное адресное пространство от 0x00000000 до 0xFFFFFFFF, адресное пространство разделено на «сегменты», например, память программы начинается с 0x00000000, SRAM - 0x20000000 периферийные устройства на 0x40000000. Специфические c периферийные регистры могут считываться / записываться указателями с указанными c смещениями от базового адреса.
Для этого устройства USARTS отображаются в область APB1, то есть в диапазон адресов 0x40000000-0x4000A000. Обратите внимание, что фактические периферийные адреса могут отличаться для разных устройств.