Я работаю над платой разработки, на которой установлен 32-битный микротроллер на базе ARM (а именно плата Atmel SAM D21J18A). Я все еще нахожусь на этапе обучения, и мне еще многое предстоит сделать, но я действительно увлекаюсь встроенными системами.
У меня есть некоторый опыт в C. Однако этого явно недостаточно. Я просматривал коды примера проекта Atmel и не понял некоторых его частей. Вот один из них:
#define PORT ((Port *)0x41004400UL) /**< \brief (PORT) APB Base Address */
Порт определяется как:
typedef struct {
PortGroup Group[2]; /**< \brief Offset: 0x00 PortGroup groups [GROUPS] */
} Port;
и PortGroup определяется как:
typedef struct {
__IO PORT_DIR_Type DIR; /**< \brief Offset: 0x00 (R/W 32) Data Direction */
__IO PORT_DIRCLR_Type DIRCLR; /**< \brief Offset: 0x04 (R/W 32) Data Direction Clear */
__IO PORT_DIRSET_Type DIRSET; /**< \brief Offset: 0x08 (R/W 32) Data Direction Set */
__IO PORT_DIRTGL_Type DIRTGL; /**< \brief Offset: 0x0C (R/W 32) Data Direction Toggle */
__IO PORT_OUT_Type OUT; /**< \brief Offset: 0x10 (R/W 32) Data Output Value */
__IO PORT_OUTCLR_Type OUTCLR; /**< \brief Offset: 0x14 (R/W 32) Data Output Value Clear */
__IO PORT_OUTSET_Type OUTSET; /**< \brief Offset: 0x18 (R/W 32) Data Output Value Set */
__IO PORT_OUTTGL_Type OUTTGL; /**< \brief Offset: 0x1C (R/W 32) Data Output Value Toggle */
__I PORT_IN_Type IN; /**< \brief Offset: 0x20 (R/ 32) Data Input Value */
__IO PORT_CTRL_Type CTRL; /**< \brief Offset: 0x24 (R/W 32) Control */
__O PORT_WRCONFIG_Type WRCONFIG; /**< \brief Offset: 0x28 ( /W 32) Write Configuration */
RoReg8 Reserved1[0x4];
__IO PORT_PMUX_Type PMUX[16]; /**< \brief Offset: 0x30 (R/W 8) Peripheral Multiplexing n */
__IO PORT_PINCFG_Type PINCFG[32]; /**< \brief Offset: 0x40 (R/W 8) Pin Configuration n */
RoReg8 Reserved2[0x20];
} PortGroup;
Итак, мы смотрим на адрес 0x41004400UL, получаем туда данные, а дальше что происходит?
Я искал это, но не нашел ничего полезного. Если у вас есть какие-либо предложения (учебники, книги и т. д.), пожалуйста, дайте мне услышать.
and then what happens
- смотрите инструкцию к вашему устройству. Для общего ознакомления вам может понравиться, например. superuser.com/q/703695/52365 - person GSerg   schedule 07.07.2015