*(__IO uint32_t*)0x40000000 = 0x5555AAAA;
Получается 0x40000000 это тот адрес, который лежит в указателе, а *(__IO uint32_t*)0x40000000 это обращение по этому адресу, который лежит в указателе?
Код: Выделить всё
volatile uint32_t *ptr;
ptr = 0x40000004;
*ptr = 0x5555AAAA;Код: Выделить всё
volatile uint32_t *ptr = 0x40000004;
*ptr = 0x5555AAAA;Код: Выделить всё
*(volatile uint32_t*)0x40000004 = 0x5555AAAA;Вы так говорите, как будто не использовали никогда константных строк или константных массивов.СКАЗОЧНИК писал(а):Именно это никто не говорит в курсах про Си. Там явно и однозначно говорят, что указатель это такая переменная, которая.. бла бла
Код: Выделить всё
//*(__IO uint32_t*)0x40000000 = 0x5555AAAA;
MOVS R0,#+128
LSLS R0,R0,#+23
LDR R1,??DataTable1
STR R1,[R0, #+0]
//*((__IO uint32_t*)0x40000000+1) = 0x5555AAAA;
STR R1,[R0, #+4]
//*(__IO uint32_t*)0x40000004 = 0x5555AAAA;
STR R1,[R0, #+4]
??DataTable1:
DATA32
DC32 0x5555aaaa Код: Выделить всё
//__IO uint32_t *adr = (uint32_t *)0x40000000;
// *adr = 0x5555AAAA;
MOVS R0,#+128
LSLS R0,R0,#+23
LDR R1,??DataTable1
STR R1,[R0, #+0]
//*(adr+1) = 0x5555AAAA;
STR R1,[R0, #+4]
??DataTable1:
DATA32
DC32 0x5555aaaa Код: Выделить всё
*(__IO uint32_t*)0x40000000 = 0x5555AAAA;
*(__IO uint16_t*)0x40000000 = 0x5555AAAA;
*(__IO uint8_t*)0x40000000 = 0x5555AAAA;
Код: Выделить всё
*(__IO uint32_t*)0x40000000 = 0x5555AAAA;
*(__IO uint16_t*)0x40000000 = 0x5555AAAA;
*(__IO uint8_t*)0x40000000 = 0x5555AAAA;
Код: Выделить всё
#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)