2019-07-15 10:32发布
人中狼 发表于 2017-6-7 11:28 C语言的单片机编程会有对应芯片的头文件,里面定义了单片机寄存器的名称和其地址对应关系,比如51单片机的P0口的寄存器地址是0X80,所有对P0口的操作都是对这个地址进行的,不如读或写。 在头文件里的定义是sfr P0 = 0x80;,定义了P0在程序里代表的地址是0X80,当然你自己也可以重新定义,比如#define LED_PORT P0,这就 ...
最多设置5个标签!
谢谢解答啦!这么说我就理解了。
看STM32的芯片手册,可以看到寄存器的基址还有偏移量什么的。
然后再去看一下,ST提供的头文件,就可以看到他们用C语言的指针把这些变量
直接定义在了相应的地址上。这样我们改变这些变量值时,就直接把值赋值在相应的地址。
不知道你仔细翻看单片机的“REG52.h”没有,是不是有很多端口地址定义?
不知道你看到过C语言里面的SFR寄存器映射没有,是不是对应了相应的单片机地址?
上面有人说了,“SFR”是对应单片机特殊寄存器的申明。
实际上,我们要写的地址寄存器很多,但是,为了方便,把寄存器定义在头文件里面是一种很省事的做法,程序里面直接用就ok,其实,直接写"P0=xxxxx;"就已经是往寄存器里面给值了,然后每个寄存器地址控制着某位端口,是不是很方便?
一周热门 更多>