Это значит, что в результате смены типа изменится значение.
А что ещё это может значить?
Код: Выделить всё
#include <avr/io.h>
typedef struct{
uint8_t PIN;
uint8_t DDR;
uint8_t PORT;
}GPIO;
#define GPIOB ((volatile GPIO*)(0x0036))
#define GPIOC ((volatile GPIO*)(0x0033))
#define GPIOD ((volatile GPIO*)(0x0030))
int main(){
GPIOB->DDR = 1;
GPIOB->PORT = 2;
GPIOB->PIN = 3;
}Код: Выделить всё
// iom8.h
/* Port D */
#define PIND _SFR_IO8(0x10)
#define DDRD _SFR_IO8(0x11)
#define PORTD _SFR_IO8(0x12)
/* Port C */
#define PINC _SFR_IO8(0x13)
#define DDRC _SFR_IO8(0x14)
#define PORTC _SFR_IO8(0x15)
/* Port B */
#define PINB _SFR_IO8(0x16)
#define DDRB _SFR_IO8(0x17)
#define PORTB _SFR_IO8(0x18)а если добавить одну звездочку, то можно вместо -> использовать точкуCOKPOWEHEU писал(а):Вот например как можно организовать порты для ATmega8
Код: Выделить всё
#define GPIOB (*(volatile GPIO*)(0x0036))
#define GPIOC (*(volatile GPIO*)(0x0033))
#define GPIOD (*(volatile GPIO*)(0x0030))
int main(){
GPIOB.DDR = 1;
GPIOB.PORT = 2;
GPIOB.PIN = 3;
}
Код: Выделить всё
typedef struct
{
__IO uint16_t CRH;
uint16_t RESERVED0;
__IO uint16_t CRL;
uint16_t RESERVED1;
__IO uint16_t PRLH;
uint16_t RESERVED2;
__IO uint16_t PRLL;
uint16_t RESERVED3;
__IO uint16_t DIVH;
uint16_t RESERVED4;
__IO uint16_t DIVL;
uint16_t RESERVED5;
__IO uint16_t CNTH;
uint16_t RESERVED6;
__IO uint16_t CNTL;
uint16_t RESERVED7;
__IO uint16_t ALRH;
uint16_t RESERVED8;
__IO uint16_t ALRL;
uint16_t RESERVED9;
} RTC_TypeDef;
Код: Выделить всё
ypedef struct
{
__IO uint32_t CRH;
__IO uint32_t CRL;
...
Код: Выделить всё
typedef struct
{
__IO uint32_t CRL;
__IO uint32_t CRH;
__IO uint32_t IDR;
__IO uint32_t ODR;
__IO uint32_t BSRR;
__IO uint32_t BRR;
__IO uint32_t LCKR;
} GPIO_TypeDef;
...
typedef struct
{
__IO uint32_t CRH;
__IO uint32_t CRL;
__IO uint32_t PRLH;
__IO uint32_t PRLL;
__IO uint32_t DIVH;
__IO uint32_t DIVL;
__IO uint32_t CNTH;
__IO uint32_t CNTL;
__IO uint32_t ALRH;
__IO uint32_t ALRL;
} RTC_TypeDef;
Код: Выделить всё
typedef struct
{
uint16_t RESERVED0;
__IO uint16_t CRH;
uint16_t RESERVED1;
__IO uint16_t CRL;
...Код: Выделить всё
typedef struct
{
__IO uint32_t CRL;
__IO uint32_t CRH;
.....
} GPIO_TypeDef;
...
typedef struct
{
__IO uint32_t CRH;
__IO uint32_t CRL;
__IO uint32_t PRLH;
__IO uint32_t PRLL;
__IO uint32_t DIVH;
__IO uint32_t DIVL;
__IO uint32_t CNTH;
__IO uint32_t CNTL;
__IO uint32_t ALRH;
__IO uint32_t ALRL;
} RTC_TypeDef;